写了一下android中关于动画的一些小demo,传上来分享一下,希望对大家有帮助。
1.xml文件
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="sc.toolPRoject.AnimationsActivity"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/btn_rotate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="旋转"/> <Button android:id="@+id/btn_scale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="缩放"/> <Button android:id="@+id/btn_alpha" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="淡入淡出"/> <Button android:id="@+id/btn_translate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="移动"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/animations_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" android:layout_gravity="center"/> </LinearLayout></LinearLayout>2.Activitypublic class AnimationsActivity extends AppCompatActivity { private Button btnRotate; private Button btnScale; private Button btnAlpha; private Button btnTranslate; private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnRotate = (Button) findViewById(R.id.btn_rotate); btnScale = (Button) findViewById(R.id.btn_scale); btnAlpha = (Button) findViewById(R.id.btn_alpha); btnTranslate = (Button) findViewById(R.id.btn_translate); imageView = (ImageView) findViewById(R.id.animations_image); btnRotate.setOnClickListener(new RotateListener()); btnAlpha.setOnClickListener(new AlphaListener()); btnScale.setOnClickListener(new ScaleListener()); btnTranslate.setOnClickListener(new TranslateListener()); } class RotateListener implements View.OnClickListener{ @Override public void onClick(View v) { //创建一个AnimationSet对象 // 构造方法中如果使用true,表示Animation的Interpolator //如果使用false,表示使用自身的 AnimationSet animationSet = new AnimationSet(true); //构造方法一共包含6个参数, //1:开始角度 //2:结束角度 //3:X轴坐标的类型,在源码注释中,我们可以看到一共有3中方式 //分别是 Animation.ABSOLUTE(绝对坐标), Animation.RELATIVE_TO_SELF(基于自身),Animation.RELATIVE_TO_PARENT(基于父控件) //4:X轴的值,可以使用 //5:Y轴坐标的类型 //6:Y轴的值 RotateAnimation rotateAnimation = new RotateAnimation(0, 360, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); //设置动画的持续时间 rotateAnimation.setDuration(1000); //设置为true,则动画结束后控件停留在执行结束的状态 rotateAnimation.setFillAfter(true); //设置动画之前的等待时间 rotateAnimation.setStartOffset(1000); //设置动画的重复次数 rotateAnimation.setRepeatCount(3); //设置动画的重复模式 rotateAnimation.setRepeatMode(Animation.REVERSE); animationSet.addAnimation(rotateAnimation); imageView.startAnimation(animationSet); } } class AlphaListener implements View.OnClickListener{ @Override public void onClick(View v) { AnimationSet animationSet = new AnimationSet(true); //创建一个AlphaAnimation对象 //构造方法中有两个参数,分别表示起始的透明度和结束时的透明度 AlphaAnimation alphaAnimation = new AlphaAnimation(1,0); //设置动画的执行时间 alphaAnimation.setDuration(500); //将AlphaAnimation对象放到AnimationSet对象中 animationSet.addAnimation(alphaAnimation); //使用ImageView执行该动画 imageView.startAnimation(animationSet); } } class ScaleListener implements View.OnClickListener{ @Override public void onClick(View v) { AnimationSet animationSet = new AnimationSet(true); //构造方法中包含6个值 //1:X轴的初始值 //2:X轴得结束值 //3:Y轴的初始值 //4:Y轴得结束值 //5:X轴坐标的类型,在源码注释中,我们可以看到一共有3中方式 //分别是 Animation.ABSOLUTE(绝对坐标), Animation.RELATIVE_TO_SELF(基于自身),Animation.RELATIVE_TO_PARENT(基于父控件) //6:X的值 //7:Y轴坐标的类型 //8:X的值 ScaleAnimation scaleAnimation = new ScaleAnimation(0,0.1f,0,0.1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); scaleAnimation.setDuration(1000); animationSet.addAnimation(scaleAnimation); imageView.startAnimation(scaleAnimation); } } class TranslateListener implements View.OnClickListener{ @Override public void onClick(View v) { AnimationSet animationSet = new AnimationSet(true); TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,0.5f, Animation.RELATIVE_TO_SELF,0f,Animation.RELATIVE_TO_SELF,0.5f); translateAnimation.setDuration(1000); //设置为true,则动画结束后控件停留在执行结束的状态 translateAnimation.setFillAfter(true); animationSet.addAnimation(translateAnimation); imageView.startAnimation(translateAnimation); } }}
新闻热点
疑难解答