1.介绍
补间动画开发者只需指定动画开始,以及动画结束"关键帧", 而动画变化的"中间帧"则由系统计算并补齐!
2.XML布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/bt_touming" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="透明" /> <Button android:id="@+id/bt_xuanzhuan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="旋转" /> <Button android:id="@+id/bt_suofang" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="缩放" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="horizontal"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" app:srcCompat="@mipmap/ic_launcher" /> </LinearLayout> </LinearLayout>
3.java后台
package com.example.administrator.test60donghua; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.view.animation.ScaleAnimation; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends AppCompatActivity { Button bt_touming; Button bt_xuanzhuan; Button bt_suofang; ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt_touming=findViewById(R.id.bt_touming); bt_xuanzhuan=findViewById(R.id.bt_xuanzhuan); bt_suofang=findViewById(R.id.bt_suofang); iv=findViewById(R.id.imageView); //透明动画 bt_touming.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //创建透明动画,1.0为完全不透明,0.0为完全透明 AlphaAnimation aa=new AlphaAnimation(1.0f,0.0f); aa.setDuration(2000);//设置动画执行的时间 aa.setRepeatCount(1); //设置动画重复的次数 aa.setRepeatMode(Animation.REVERSE); //设置重复的模式 iv.startAnimation(aa); //开始执行动画 } }); //旋转效果 bt_xuanzhuan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { RotateAnimation ra=new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); ra.setDuration(2000);//设置动画执行的时间 ra.setRepeatCount(1); //设置动画重复的次数 ra.setRepeatMode(Animation.REVERSE); //设置重复的模式 iv.startAnimation(ra); //开始执行动画 } }); bt_suofang.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ScaleAnimation sa=new ScaleAnimation(1.0f,2.0f,1.0f,2.0f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); sa.setDuration(2000);//设置动画执行的时间 sa.setRepeatCount(1); //设置动画重复的次数 sa.setRepeatMode(Animation.REVERSE); //设置重复的模式 iv.startAnimation(sa); //开始执行动画 } }); } }
4.效果图