初识安卓中的动画

1 帧动画 (加载一系列图片资源)

创建: 在drawable下创建 xml文件 节点改为animatiom-list

       内部的item节点属性drawable 设置图片 duraing 时间

       这是个drawable 一定是使用ImageView进行显示的。

显示:
       首先主activity中找id 获得ImageView对象
       在进行设置背景资源 ImageView对象的setBackGroundResource(定        义的drawable xml)

       通过ImageView的getBackground()强转获得AnimtionDrawable对象

       通过对象的start();开启动画



2 View动画 (补间动画)

3 属性动画

安卓中的逐帧动画:
drawerAnim   xml中定义   ImageView中显示




安卓中的补间动画:  view动画 安卓里的view控件都可以播放

1 透明AlphaAnim
2 旋转 rotateAnim
3 缩放 ScaleAnim
4 位移 translateAnim

还有个动画集合 可以吧这些动画一起执行

一般补间动画是通过变换图片达到动画的效果




demo:::::




public class MainActivity extends AppCompatActivity {

    private ImageView ivImg;
    private AlphaAnimation aa;
    private RotateAnimation ra;
    private ScaleAnimation sa;
    private TranslateAnimation ta;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ivImg = (ImageView) findViewById(R.id.iv_img);

    }

    public void doalpha(View view){
        /*渐变动画    参数 开始时的颜色  结束时的颜色  0.0 完全透明  1.0 完全不透明*/
        aa = new AlphaAnimation(0.0f,1.0f);
        aa.setDuration(5000);//动画执行时间
        //aa.setRepeatCount(1);//动画重复的次数
       // aa.setRepeatMode(Animation.REVERSE);//重复模式
        aa.setFillAfter(true);//保持执行后状态
        ivImg.startAnimation(aa);//开启动画


    }
    public void dorotate(View view){
        //旋转动画  参数 起始旋转的角度  结束时选装的角度   xy相对自身旋转  0.5 代表图片

宽高都是一半 正好相对自身中心旋转
        ra = new RotateAnimation(0,360, 

Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        ra.setDuration(5000);
        ra.setFillAfter(true);
        ivImg.startAnimation(ra);
    }
    public void doscale(View view){
         // 缩放动画 参数x轴开始 结束的缩放比例  参数y轴开始 结束的缩放比例   相对自身中

心点
        sa = new ScaleAnimation(1.0f,0.5f,1.0f,0.5f, 

Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        sa.setDuration(5000);
        sa.setFillAfter(true);
        ivImg.startAnimation(sa);
    }
    public void dotranslate(View view){
         // 位移动画  参数 相对父控件 起始x 参数 相对父控件 结束x
        //相对父控件 起始y参数 相对父控件 结束y(0.2f代表父控件高度0.2倍)
        ta = new TranslateAnimation

(Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARE

NT,0,Animation.RELATIVE_TO_PARENT,0.2f);
        ta.setDuration(5000);
        ta.setFillAfter(true);
        ivImg.startAnimation(ta);
    }
    public void doset(View view){
        AnimationSet as= new AnimationSet(false);

        aa = new AlphaAnimation(0.0f,1.0f);
        aa.setDuration(5000);
        aa.setFillAfter(true);

        ra = new RotateAnimation(0,360, 

Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        ra.setDuration(5000);
        ra.setFillAfter(true);

        sa = new ScaleAnimation(1.0f,0.5f,1.0f,0.5f, 

Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
        sa.setDuration(5000);
        sa.setFillAfter(true);

        ta = new TranslateAnimation

(Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARENT,0,Animation.RELATIVE_TO_PARE

NT,0,Animation.RELATIVE_TO_PARENT,0.2f);
        ta.setDuration(5000);
        ta.setFillAfter(true);
        //  添加到集合
        as.addAnimation(aa);
        as.addAnimation(ta);
        as.addAnimation(sa);
        as.addAnimation(ra);
        //开启动画
        ivImg.startAnimation(as);
    }
   //注 这些动画(补间动画)的效果不会改变控件的真实坐标
    // 属性动画可以
}
   


xml  方式定义补间动画  

res  下 建立anmi  根元素为 各种动画   


java中 findViewbyid 可找到


属性动画 
类 ObjectAnimator(不是 new出来的)   会改变真是坐标    

你可能感兴趣的:(初识安卓中的动画)