700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android开发--图形图像与动画(二)--Animation实现图像的 渐变 缩放 位移 旋转

Android开发--图形图像与动画(二)--Animation实现图像的 渐变 缩放 位移 旋转

时间:2019-04-19 06:31:42

相关推荐

Android开发--图形图像与动画(二)--Animation实现图像的 渐变 缩放 位移 旋转

Android 平台提供了两类动画。 一类是Tween动画,就是对场景里的对象不断的进行图像变化来产生动画效果(旋转、平移、放缩和渐变)。

下面就讲一下Tweene Animations。

主要类:

Animation 动画

AlphaAnimation 渐变透明度

RotateAnimation 画面旋转

ScaleAnimation 渐变尺寸缩放

TranslateAnimation 位置移动

AnimationSet 动画集

一.AlphaAnimation

其中AlphaAnimation类第一个参数fromAlpha表示动画起始时的透明度, 第二个参数toAlpha表示动画结束时的透明度。

setDuration用来设置动画持续时间。

二.RotateAnimation

其中RotateAnimation类第一个参数fromDegrees表示动画起始时的角度, 第二个参数toDegrees表示动画结束时的角度。

另外还可以设置伸缩模式pivotXType、pivotYType, 伸缩动画相对于x,y 坐标的开始位置pivotXValue、pivotYValue等。

三.ScaleAnimation

ScaleAnimation类中

第一个参数fromX ,第二个参数toX:分别是动画起始、结束时X坐标上的伸缩尺寸。

第三个参数fromY ,第四个参数toY:分别是动画起始、结束时Y坐标上的伸缩尺寸。

另外还可以设置伸缩模式pivotXType、pivotYType, 伸缩动画相对于x,y 坐标的开始位置pivotXValue、pivotYValue等。

四.TranslateAnimation

第一个参数fromXDelta ,第二个参数toXDelta:分别是动画起始、结束时X坐标。

第三个参数fromYDelta,第四个参数toYDelta:分别是动画起始、结束时Y坐标。

下面我实现的这个例子是使得图片有上述四个动画效果,且其中第五实现的是两个效果的重叠,具体的实现截图如下:

点击各个按钮会做出相应的反应。

本实例用到的布局文件如下:

<?xml version="1.0" encoding="utf-8"?><AbsoluteLayoutandroid:layout_width="fill_parent"android:layout_height="fill_parent"xmlns:android="/apk/res/android"><Buttonandroid:id="@+id/button_scale"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="scale"android:layout_x="5dp"android:layout_y="383dp" /><Buttonandroid:id="@+id/button_rotate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="rotate"android:layout_x="158dp"android:layout_y="383dp" /><Buttonandroid:id="@+id/button_alpha"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="alpha"android:layout_x="5dp"android:layout_y="331dp" /><Buttonandroid:id="@+id/button_translate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="translate"android:layout_x="160dp"android:layout_y="329dp" /><Buttonandroid:id="@+id/button_alpha_translate"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="alpha_translate"android:layout_x="84dp"android:layout_y="265dp" /><ImageViewandroid:id="@+id/imageview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_x="105dp"android:layout_y="133dp" android:src="@drawable/ic_launcher"/></AbsoluteLayout>

实现本实例的源代码如下:

public class Animations_Activity extends Activity {private Button button1;private Button button2;private Button button3;private Button button4;private Button button5;private ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_animations_);button1=(Button)findViewById(R.id.button_alpha);button2=(Button)findViewById(R.id.button_rotate);button3=(Button)findViewById(R.id.button_scale);button4=(Button)findViewById(R.id.button_translate);button5=(Button)findViewById(R.id.button_alpha_translate);imageView=(ImageView)findViewById(R.id.imageview);button1.setOnClickListener(new MyButton());button2.setOnClickListener(new MyButton());button3.setOnClickListener(new MyButton());button4.setOnClickListener(new MyButton());button5.setOnClickListener(new MyButton());}class MyButton implements OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubswitch (arg0.getId()) {case R.id.button_alpha:Alpha();break;case R.id.button_rotate:Rotata();break;case R.id.button_scale:Scale();break;case R.id.button_translate:Translate();break;case R.id.button_alpha_translate:Alpha_Translate();break;default:break;}}}/** 1.创建一个AnimationSet对象,该对象存储的是动画的集合* 2.根据需要创建相应的Animation对象* 3.根据动画的需求,为Animation对象设置相应的数据(即执行效果)* 4.奖Animation对象添加到AnimationSet对象当中* 5.使用控件对象开始执行AnimationSet*/public void Alpha() {AnimationSet animationSet=new AnimationSet(true);AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0);alphaAnimation.setDuration(2000);animationSet.addAnimation(alphaAnimation);imageView.startAnimation(animationSet);}public void Rotata(){AnimationSet animationSet=new AnimationSet(true);//后面的四个参数定义的是旋转的圆心位置RotateAnimation rotateAnimation=new RotateAnimation(0, 360, Animation.RELATIVE_TO_PARENT, 1f,Animation.RELATIVE_TO_PARENT, 0f);rotateAnimation.setDuration(2000);animationSet.addAnimation(rotateAnimation);imageView.startAnimation(animationSet);}public void Scale() {AnimationSet animationSet=new AnimationSet(true);ScaleAnimation scaleAnimation=new ScaleAnimation(1, 0.1f, 1, 0.1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);scaleAnimation.setDuration(2000);animationSet.addAnimation(scaleAnimation);imageView.startAnimation(scaleAnimation);}public void Translate() {AnimationSet animationSet=new AnimationSet(true);TranslateAnimation translateAnimation=new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, //X轴的开始位置Animation.RELATIVE_TO_SELF, 0.5f, //X轴的结束位置Animation.RELATIVE_TO_SELF, 0f, //Y轴的开始位置Animation.RELATIVE_TO_SELF, 1.0f); //Y轴的结束位置translateAnimation.setDuration(2000);animationSet.addAnimation(translateAnimation);/** 第一行的设置如果为true,则动画执行完之后效果定格在执行完之后的状态* 第二行的设置如果为false,则动画执行完之后效果定格在执行完之后的状态* 第三行设置的是一个long类型的值,是指动画延迟多少毫秒之后执行* 第四行定义的是动画重复几次执行*/animationSet.setFillAfter(true);animationSet.setFillBefore(false);animationSet.setStartOffset(2000);animationSet.setRepeatCount(3);imageView.startAnimation(animationSet);}public void Alpha_Translate() {AnimationSet animationSet=new AnimationSet(true);AlphaAnimation alphaAnimation=new AlphaAnimation(1, 0);alphaAnimation.setDuration(2000);animationSet.addAnimation(alphaAnimation);TranslateAnimation translateAnimation=new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0f, //X轴的开始位置Animation.RELATIVE_TO_SELF, 0.5f, //X轴的结束位置Animation.RELATIVE_TO_SELF, 0f, //Y轴的开始位置Animation.RELATIVE_TO_SELF, 1.0f); //Y轴的结束位置translateAnimation.setDuration(2000);animationSet.addAnimation(translateAnimation);imageView.startAnimation(animationSet);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.activity_animations_, menu);return true;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。