android animation 动画

来源:互联网 发布:大数据靠什么盈利 编辑:程序博客网 时间:2024/06/18 13:15

之前写DOME,动画后按钮的点击事件无法触发,所以本文主要是解决UI移动后点击事件的触发。至于动画的属性很多地方都有,下面简单介绍下

四种基本动画:

           JAVA代码                            XML文件

1、AlphaAnimation        ——   alpha(透明度)

2、ScaleAnimation        ——   scale(缩放)

3、TranslateAnimation  ——   translate(移动)

4、RotateAnimation       ——   rotate(旋转)

注:用xml创建动画在项目中建立res/anim目录来存放文件

        在代码中通过AnimationUtils.loadAnimation(context,R.anim);的静态方法调用。


上代码:

public class AnimationDome_Activity extends Activity {private Button but_composer_camera, but_composer_music, but_composer_place,but_composer_sleep, but_composer_thought, but_composer_with,but_friends_delete;private ImageView img_logo;private Animation animation_alpha;private Animation animation_scale;private Animation animation_rotate;private Animation animation_translate;private LayoutParams params = new LayoutParams(0, 0);private int width;private int heigth;private Boolean IsClike = false;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_animationdome);img_logo = (ImageView) this.findViewById(R.id.img_logo);// 获取屏幕的尺寸Display display = getWindowManager().getDefaultDisplay();width = display.getWidth();heigth = display.getHeight();// 设置LayoutParams,控制按钮的初始化大小params.width = 60;params.height = 60;// 初始化控件的位置params.setMargins(10, heigth - 150, 0, 0);but_composer_camera = (Button) this.findViewById(R.id.but_composer_camera);but_composer_camera.setLayoutParams(params);but_composer_music = (Button) this.findViewById(R.id.but_composer_music);but_composer_music.setLayoutParams(params);but_composer_place = (Button) this.findViewById(R.id.but_composer_place);but_composer_place.setLayoutParams(params);but_composer_sleep = (Button) this.findViewById(R.id.but_composer_sleep);but_composer_sleep.setLayoutParams(params);but_composer_thought = (Button) this.findViewById(R.id.but_composer_thought);but_composer_thought.setLayoutParams(params);but_composer_with = (Button) this.findViewById(R.id.but_composer_with);but_composer_with.setLayoutParams(params);but_friends_delete = (Button) this.findViewById(R.id.but_friends_delete);but_friends_delete.setLayoutParams(params);but_friends_delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubif (IsClike == false) {IsClike = true;but_friends_delete.startAnimation(Animation_Rotate(0));but_composer_camera.startAnimation(Animation_Translate(75,0, 75, heigth - 150, 40, but_composer_camera));but_composer_music.startAnimation(Animation_Translate(135,0, 135, heigth - 150, 100, but_composer_music));but_composer_place.startAnimation(Animation_Translate(200,0, 200, heigth - 150, 160, but_composer_place));but_composer_sleep.startAnimation(Animation_Translate(265,0, 265, heigth - 150, 220, but_composer_sleep));but_composer_thought.startAnimation(Animation_Translate(330, 0, 330, heigth - 150, 280,but_composer_thought));but_composer_with.startAnimation(Animation_Translate(395,0, 395, heigth - 150, 340, but_composer_with));} else {IsClike = false;but_friends_delete.startAnimation(Animation_Rotate(1));but_composer_camera.startAnimation(Animation_Translate(-75,0, 10, heigth - 150, 40, but_composer_camera));but_composer_music.startAnimation(Animation_Translate(-135,0, 10, heigth - 150, 100, but_composer_music));but_composer_place.startAnimation(Animation_Translate(-200,0, 10, heigth - 150, 160, but_composer_place));but_composer_sleep.startAnimation(Animation_Translate(-265,0, 10, heigth - 150, 220, but_composer_sleep));but_composer_thought.startAnimation(Animation_Translate(-330, 0, 10, heigth - 150, 280,but_composer_thought));but_composer_with.startAnimation(Animation_Translate(-395,0, 10, heigth - 150, 340, but_composer_with));}animation_alpha = AnimationUtils.loadAnimation(AnimationDome_Activity.this, R.anim.animation_alpha);img_logo.startAnimation(animation_alpha);}});but_composer_camera.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbut_composer_camera.startAnimation(Animation_Scale(0));but_composer_music.startAnimation(Animation_Scale(1));but_composer_place.startAnimation(Animation_Scale(1));but_composer_sleep.startAnimation(Animation_Scale(1));but_composer_thought.startAnimation(Animation_Scale(1));but_composer_with.startAnimation(Animation_Scale(1));}});but_composer_music.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbut_composer_camera.startAnimation(Animation_Scale(1));but_composer_music.startAnimation(Animation_Scale(0));but_composer_place.startAnimation(Animation_Scale(1));but_composer_sleep.startAnimation(Animation_Scale(1));but_composer_thought.startAnimation(Animation_Scale(1));but_composer_with.startAnimation(Animation_Scale(1));}});but_composer_place.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbut_composer_camera.startAnimation(Animation_Scale(1));but_composer_music.startAnimation(Animation_Scale(1));but_composer_place.startAnimation(Animation_Scale(0));but_composer_sleep.startAnimation(Animation_Scale(1));but_composer_thought.startAnimation(Animation_Scale(1));but_composer_with.startAnimation(Animation_Scale(1));}});but_composer_sleep.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbut_composer_camera.startAnimation(Animation_Scale(1));but_composer_music.startAnimation(Animation_Scale(1));but_composer_place.startAnimation(Animation_Scale(1));but_composer_sleep.startAnimation(Animation_Scale(0));but_composer_thought.startAnimation(Animation_Scale(1));but_composer_with.startAnimation(Animation_Scale(1));}});but_composer_thought.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbut_composer_camera.startAnimation(Animation_Scale(1));but_composer_music.startAnimation(Animation_Scale(1));but_composer_place.startAnimation(Animation_Scale(1));but_composer_sleep.startAnimation(Animation_Scale(1));but_composer_thought.startAnimation(Animation_Scale(0));but_composer_with.startAnimation(Animation_Scale(1));}});but_composer_with.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbut_composer_camera.startAnimation(Animation_Scale(1));but_composer_music.startAnimation(Animation_Scale(1));but_composer_place.startAnimation(Animation_Scale(1));but_composer_sleep.startAnimation(Animation_Scale(1));but_composer_thought.startAnimation(Animation_Scale(1));but_composer_with.startAnimation(Animation_Scale(0));}});}/** * 按钮缩放动画,直接调用XML *  * @param TAG *            判断是放大还是缩小,0为放大 * @return */public Animation Animation_Scale(int TAG) {switch (TAG) {case 0:animation_scale = AnimationUtils.loadAnimation(AnimationDome_Activity.this, R.anim.animation_scale);break;case 1:animation_scale = AnimationUtils.loadAnimation(AnimationDome_Activity.this, R.anim.animation_scale_1);break;}return animation_scale;}/** * 按钮的旋转动画 *  * @param TAG *            判断是旋转还是恢复,0为旋转 * @return */public Animation Animation_Rotate(int TAG) {switch (TAG) {case 0:animation_rotate = AnimationUtils.loadAnimation(AnimationDome_Activity.this, R.anim.animation_rotate);break;case 1:animation_rotate = AnimationUtils.loadAnimation(AnimationDome_Activity.this, R.anim.animation_rotate_f);break;}animation_rotate.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {// TODO Auto-generated method stub}@Overridepublic void onAnimationRepeat(Animation animation) {// TODO Auto-generated method stub}@Overridepublic void onAnimationEnd(Animation animation) {// TODO Auto-generated method stub// 在旋转后应用动画animation_rotate.setFillAfter(true);}});return animation_rotate;}/** * 按钮的移动动画 *  * @param toX *            移动到X坐标 * @param toY *            移动到Y坐标 * @param lastX *            按钮事件触发坐标 * @param lastY *            按钮事件触发坐标 * @param dm *            动画速度 * @param button *            动画应用对象 * @return */public Animation Animation_Translate(float toX, float toY, final int lastX,final int lastY, int dm, final Button button) {animation_translate = new TranslateAnimation(0, toX, 0, toY);animation_translate.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {// TODO Auto-generated method stub}@Overridepublic void onAnimationRepeat(Animation animation) {// TODO Auto-generated method stub}@Overridepublic void onAnimationEnd(Animation animation) {// TODO Auto-generated method stub// 给按钮事件触发设置位置,和偏移的位置保持一致params = new LayoutParams(0, 0); params.width = 60; params.height = 60; params.setMargins(lastX, lastY, 0, 0); button.setLayoutParams(params); button.clearAnimation();}});animation_translate.setDuration(dm);return animation_translate;}