Android动画

2022-09-13  本文已影响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
上一篇下一篇

猜你喜欢

热点阅读