Android动画与特效.docx

上传人:b****6 文档编号:7056650 上传时间:2023-01-16 格式:DOCX 页数:8 大小:17.42KB
下载 相关 举报
Android动画与特效.docx_第1页
第1页 / 共8页
Android动画与特效.docx_第2页
第2页 / 共8页
Android动画与特效.docx_第3页
第3页 / 共8页
Android动画与特效.docx_第4页
第4页 / 共8页
Android动画与特效.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

Android动画与特效.docx

《Android动画与特效.docx》由会员分享,可在线阅读,更多相关《Android动画与特效.docx(8页珍藏版)》请在冰豆网上搜索。

Android动画与特效.docx

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;

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1