美文网首页
Android动画

Android动画

作者: 雨来 | 来源:发表于2022-09-13 14:54 被阅读0次

    东西很简单面试的时候你不过一遍还真的答不出来哈

    Android动画分类:
    帧动画:一级图片的集合
    对于帧动画要注意一点是 在res下创建 anima 是无法创建 animation-list的 只能在drawable创建
    参考:https://blog.csdn.net/qq_34471736/article/details/61206629

    image.png

    补间动画(View动画)有translate(平移) 、scale(缩放)、alpha(通明度)、rotate(旋转)
    使用android studio 测的时候 alpha 必须放在anim里面 其它几个要放在drawable根目录下 不然会报错的


    image.png

    Android3.0之后出现了 属性动画

    属性动画相比较View动画是实实在在的改变View的属性 view动画(也称为补间动画)如果是view动画的话 在动画结束后 如果没有停留在view之前的位置的话我点击view是不会响应事件的。而属性动画则可以。

    属性动画主要的几个类:
    ObjectAnimator 有这些函数 image.png

    ViewPropertyAnimator 使用比较简单 如要是View上一些属性 如 translateX rotate 等
    ValueAnimator 一般做数据 通过插值器 设置数据的变化模式 通过调用 addUpdateListener 加调使用
    比如下面代码 一个QQ计步器的部分代码

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            final QQStepView qqStepView = (QQStepView) findViewById(R.id.step_view);
            qqStepView.setStepMax(4000);
            // 属性动画 后面讲的内容
    //        ValueAnimator valueAnimator = ObjectAnimator.ofFloat(0, 3000);  //注意最大步数 这里设置为 3000/4000 也就是0.75 我们再看圆弧
            ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, 3000);  //注意最大步数 这里设置为 3000/4000 也就是0.75 我们再看圆弧
            valueAnimator.setDuration(1000);
            valueAnimator.setInterpolator(new DecelerateInterpolator());
            valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    float currentStep = (float) animation.getAnimatedValue();
                    qqStepView.setCurrentStep((int)currentStep);
                }
            });
            valueAnimator.start();
        }
    }
    
    

    所有参考:
    https://blog.csdn.net/gyh790005156/article/details/88051138

    QQ计步器的实现也很简单 只要思路有了参考:
    https://www.jianshu.com/p/4e0eb9bb09ab
    插个关于Android canvas.drawArc 画圆弧的问题

     canvas.drawArc(rectF,135,270,false,mOutPaint);
    

    这里在没有画之前 如何有个基本的弧度的样式认知呢? 我这里画个图

    image.png image.png

    相关文章

      网友评论

          本文标题:Android动画

          本文链接:https://www.haomeiwen.com/subject/cwhhortx.html