Android动画与特效.docx
- 文档编号:7056650
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:8
- 大小:17.42KB
Android动画与特效.docx
《Android动画与特效.docx》由会员分享,可在线阅读,更多相关《Android动画与特效.docx(8页珍藏版)》请在冰豆网上搜索。
Android动画与特效
Android动画与特效
一.Android二维动画的分类
1.补间动画(TweenAnimation):
采用对单一的图形逐渐地移动,伸展或旋转来产生动画的效果,也可以逐渐地改变透明度。
2.帧动画(FrameAnimation):
按顺序播放事先规划好的一系列图像来产生动画效果,就如同卡通电影的带子。
二.补间动画TweenAnimation
1.补间动画共同属性
duration[long]动画显示的时间,一毫秒为单位。
fillAfter[boolean]设置为true时,动画结束时,结束状态被应用,且不恢复。
fillBefore[boolean]设置为true时,动画恢复动画开始之前的状态。
Interpolator动画的内插件
accelerate_decelerate_interpolator动画的改变速度逐渐加速再逐渐减速
accelerate_interpolator动画的改变速度逐渐加速
decelerate_interpolator动画的改变速度逐渐减速
cycle_interpolator动画以正弦曲线速度改变
linear_interpolator动画以线性均匀速率改变
repeateCount[int]动画的重复次数
repeateMode[int]动画的重复行为restart:
重新播放
reverse:
反向播放
startOffset[long]动画之间的间隔时间.
zAdajustment[int]定义动画的Z轴模式.
3.alpha透明度动画
android: fromAlpha=“1.0” android: toAlpha=”0.6” android: duration=”3000”/> fromAlpha动画开始时的透明度 toAlpha动画结束时的透明度 0.0表示完全透明 1.0表示完全不透明,数值去0.0-1.0之间的float数字。 4.scale缩放动画 android: fromXScale=”1.6” android: toXScale=”0.6” android: fromYScale=”1.6” android: toYScale=”0.6” android: pivotX=”50%” android: pivotY=”50%” android: duration=”3000”/> 0.0表示收缩到不见 1.0表示正常没有收缩 值小于1.0表示收缩 值大于1.0表示放大 动画相对于对象的X,Y坐标的开始位置,以%来表示。 5.translate移动动画 android: fromXDelta=”0” android: toXDelta=”20” android: fromYDelta=”0” android: toYDelta=”10” android: duration=”3000”/> 动画开始和结束时的X坐标的位置 动画开始和结束时的Y坐标的位置 6.rotate图形旋转的动画效果 android: fromDegrees=”0” android: toDegress=”70” android: pivotX=”50%” android: pivotY=”50%” android: duration=”3000”/> fromDegrees动画开始时的角度 toDegress动画结束时的角度 from负数to正数: 顺时针旋转 from负数to负数: 逆时针旋转 from正数to正数: 顺时针旋转 from正数to负数: 逆时针旋转 三.如何引用res/anim/xxx.xml动画文件 通过AnimationUtils.loadAnimation()方法引用 代码: AnimationSetanimationSet=newAnimationSet(true); Animationanimation=AnimationUtils.loadAnimation(this,R.anim.button_animation); animationSet.addAnimation(animation); 四.一个完整的TweenAnimation动画集合的xxx.xml文件 代码: xmlversion="1.0"encoding="UTF-8"? > shareInterpolator="false" xmlns: android=" android: fromXScale="1" android: toXScale="1.2" android: fromYScale="1" android: toYScale="1.2" android: pivotX="50%" android: pivotY="50%" android: duration="100" /> android: fromAlpha="1" android: toAlpha="0.2" android: duration="100" /> 五: 帧动画绘制对象---FrameAnimation 采用AnimationDrawable类API来写帧动画FrameAnimation程序代码,但是是定义动画XML窗体布局文件内的属性会更简单,这个动画XML窗体布局文件要保存在/res/anim目录内。 按照所规划动画的帧顺序来排列,并用android: duration属性设置每一个帧的停留时间。 动画XML文件窗体布局文件包括有一个主要组件 代码: android=xmlns: android=" android: oneshot="true"> drawable="@drawable/girl_1"android: duration="400"/> drawable="@drawable/girl_2"android: duration="400"/> drawable="@drawable/girl_3"android: duration="400"/> drawable="@drawable/girl_4"android: duration="400"/> drawable="@drawable/girl_5"android: duration="400"/> xxx.java代码部分: publicclassMFrameAnimActivityextendsActivity{ AnimationDrawablemAnimationDrawable; ImageViewmImageView; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); mImageView=(ImageView)findViewById(R.id.mImageView); } @Override protectedvoidonResume(){ super.onResume(); mImageView.setBackgroundResource(R.anim.donghua); mAnimationDrawable=(AnimationDrawable)mImageView.getBackground(); } //StartFrameAnimation动画 publicbooleanonTouchEvent(MotionEventevent){ if(event.getAction()==MotionEvent.ACTION_DOWN){ //mAnimationDrawable.start(); mAnimationDrawable.run(); returntrue; } returnsuper.onTouchEvent(event); } } 五.直接在画布上描绘图形----Canvas 当编写一个绘图应用程序,希望可以做特别的绘图处理或控制图形的动作时,您需要使用称为画布(Canvas)的对象。 Canvas对您实际上绘制的图形表面来说好比是一个界面接口,它会保持住所有“draw”调用方法。 通过Canvas,您的绘图实际上是在Bitmap图形上执行,再放到window上。 您的绘图在采用onDraw()callback方法时,会获得一个Canvas,只要将绘制调用方法放到上面。 当对象是SurfaceView视图时,也可以使用SurfaceHolder.lockCanvas()方法取得一个Canvas。 代码: BitmapmBitmap=Bitmap.createBitmap(100,100,Bitmap.Config.ARGB_8888); CanvasmCanvas=newCanvas(mBitmap); 或放到Canvas的某一位置 BitmapmBitmap=BitmapFactory.decodeResource(getResource(),R.drawable.icon); Canvascanvas=newCanvas(); canvas.drawBitmap(mBitmap,100,100,mPaint); 代码: publicclassMCanvasActivityextendsActivity{ privateBitmapbitmap; privateMViewmView; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher); mView=newMView(this); setContentView(mView); } privateclassMViewextendsView{ privatePaintpaint; privatefloatimageX=0f; privatefloatimageY=0f; publicMView(Contextcontext){ super(context); paint=newPaint(); } @Override protectedvoidonDraw(Canvascanvas){ super.onDraw(canvas); canvas.drawColor(Color.WHITE); paint.setAntiAlias(true); paint.setColor(Color.BLUE); canvas.drawText(getString(R.string.hello),100,20,paint); canvas.drawBitmap(bitmap,imageX-bitmap.getWidth()/2,imageY-bitmap.getHeight()/2,paint); } @Override publicbooleanonTouchEvent(MotionEventevent){ switch(event.getAction()){ caseMotionEvent.ACTION_DOWN: imageX=event.getX(); imageY=event.getY(); break; caseMotionEvent.ACTION_MOVE: imageX=event.getX(); imageY=event.getY(); break; caseMotionEvent.ACTION_UP: imageX=event.getX(); imageY=event.getY(); break; } //再描绘的指示 invalidate(); returntrue; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 动画 特效
![提示](https://static.bdocx.com/images/bang_tan.gif)