zoukankan      html  css  js  c++  java
  • Android中的动画效果

    动画的种类

    透明动画alphaAnimation

    在代码中配置动画:

            findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    AlphaAnimation alphaAnimation = new AlphaAnimation(0, 1);
                    alphaAnimation.setDuration(1000);
                    view.startAnimation(alphaAnimation);
                }
            });

    在xml中配置动画:

    <?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
           android:fromAlpha="0"
           android:toAlpha="1"
           android:duration="1000">
    
    </alpha>
            findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                view.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.aa));
                }
            });

    旋转动画RoateAnimation

    在代码中配置动画:

    findViewById(R.id.btnRotateMe).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    RotateAnimation rotateAnimation = new RotateAnimation(0, 360);
    //相对于自身旋转
    //
    RotateAnimation rotateAnimation = new RotateAnimation(0,360, Animation.RELATIVE_TO_SELF, 0.5f,
          Animation.RELATIVE_TO_SELF, 0.5f);
    rotateAnimation.setDuration(1000); view.startAnimation(rotateAnimation); } });

    在xml中配置动画:

    <?xml version="1.0" encoding="utf-8"?>
    <rotate android:fromDegrees="0"
            android:toDegrees="1"
            android:duration="1000"
            android:pivotX="50%"
            android:pivotY="50%"
            xmlns:android="http://schemas.android.com/apk/res/android">
    
    </rotate>
                    view.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.ra));

    移动动画translateAnimation

    在代码中配置动画:

            findViewById(R.id.btnTranslateMe).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    //refer to self position
                    TranslateAnimation ta = new TranslateAnimation(0, 200, 0, 200);
                    ta.setDuration(1000);
                    view.startAnimation(ta);
                }
            });

    在xml中配置动画:

    <?xml version="1.0" encoding="utf-8"?>
    <translate android:fromXDelta="0"
               android:toXDelta="200"
               android:fromYDelta="0"
               android:toYDelta="200"
               android:duration="1000"
               xmlns:android="http://schemas.android.com/apk/res/android">
    
    </translate>
    view.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.ta));

    缩放动画

    在代码中配置动画:

            findViewById(R.id.btnScaleMe).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    //                ScaleAnimation sa = new ScaleAnimation(0, 1, 0, 1);
                    ScaleAnimation sa = new ScaleAnimation(0, 1, 0, 1, Animation.RELATIVE_TO_SELF, 0.5f,
                            Animation.RELATIVE_TO_SELF, 0.5f);
                    sa.setDuration(1000);
                    view.startAnimation(sa);
                }
            });

    在xml中配置动画:

    <scale android:fromXScale="0"
           android:toXScale="1"
           android:fromYScale="0"
           android:toYScale="1"
           android:duration="1000"
           android:pivotX="50%"
           android:pivotY="50%"
           xmlns:android="http://schemas.android.com/apk/res/android">
    
    </scale>
                    view.startAnimation(AnimationUtils.loadAnimation(getApplicationContext(), R.anim.sa));

    动画混合

    在代码中配置动画:

            findViewById(R.id.btnAnimMe).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
    
                    AnimationSet as = new AnimationSet(true);
                    as.setDuration(1000);
    
                    AlphaAnimation aa = new AlphaAnimation(0, 1);
                    aa.setDuration(1000);
                    as.addAnimation(aa);
    
                    TranslateAnimation ta = new TranslateAnimation(200, 0 , 200, 0);
                    ta.setDuration(1000);
                    as.addAnimation(ta);
    
                    view.startAnimation(as);
    
                }
            });

    在xml中配置动画:

    <set xmlns:android="http://schemas.android.com/apk/res/android"
         android:shareInterpolator="true"
         android:duration="1000">
        <alpha
                android:fromAlpha="0"
                android:toAlpha="1"/>
        <translate
                android:fromYDelta="200"
                android:toYDelta="0"
                android:fromXDelta="200"
                android:toXDelta="0"/>
    </set>

    动画效果侦听

                    Animation a = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.sa);
                    a.setAnimationListener(new Animation.AnimationListener() {
                        @Override
                        public void onAnimationStart(Animation animation) {
                            Toast.makeText(MainActivity.this, "Animation Start", Toast.LENGTH_SHORT).show();
                        }
    
                        @Override
                        public void onAnimationEnd(Animation animation) {
                            Toast.makeText(MainActivity.this, "Animation End", Toast.LENGTH_SHORT).show();
                        }
    
                        @Override
                        public void onAnimationRepeat(Animation animation) {
    
                        }
                    });
                    view.startAnimation(a);

    自定义动画效果

    自定义动画需要自定义一个类继承自Animation, 并重写applyTransformation. 在applyTransformation中,第一个参数interpolatedTime是一个0到1的变化范围。

    • 如果调用Transform.setAlpha(interpolatedTime)就是一个透明的AlphaAnimation效果。
    • 如果要设置移位的动画,可以通过getmetrix:
    t.getMatrix().setTranslate(200*interpolatedTime, 200);

    每一个动画执行前都会执行initalize。

  • 相关阅读:
    如何在ASP.NET Core项目启动时执行异步定时任务
    计算机组成原理实验:Cache控制器设计实验 问题解决
    jenkins + gitlab 利用pipeline 完整构建项目
    利用K8S的jenkins动态slave+gitee + dockerhub实现完整的develops
    pycharm 上传代码到码云
    关于CI/CD的实践(二 提交阶段流水线)
    sonarqube-7.8 安装
    关于CI/CD的实践(一 流程规划)
    ubutun 安装nvm管理node
    关于容器的健康检查 Health Check
  • 原文地址:https://www.cnblogs.com/dracohan/p/5990657.html
Copyright © 2011-2022 走看看