写点什么

自定义 View:如何实现点击图标旋转的动画效果

作者:Changing Lin
  • 2021 年 12 月 09 日
  • 本文字数:906 字

    阅读完需:约 3 分钟

1.知识点

  • 使用属性动画实现旋转

  • View.animate():This method returns a ViewPropertyAnimator object, which can be used to animate specific properties on this View.返回一个属性动画对象,可以改变 View 的属性

  • ViewPropertyAnimator.rotation(float value):以 Z 轴为中心旋转到指定角度

  • ViewPropertyAnimator.rotationBy(float value):以 Z 轴为中心,在原先角度基础上旋转多少角度

2.原理

  • 属性动画实现方法:

public class EmptyActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_return);
findViewById(R.id.iv_test).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getAnimator(v).start(); // 点击启动旋转动画 } }); }
private ObjectAnimator animator; private ObjectAnimator getAnimator(View view) { if (null == animator) { // 新建一个属性动画,在规定时间内,把View的rotation属性从起始状态0°渐变到结束状态180°,相当于顺时针旋转 animator = ObjectAnimator.ofFloat(view, "rotation", 0, 180); animator.setDuration(1000); animator.setStartDelay(100); } return animator; }}
复制代码
  • 使用 View 自带的属性动画实现方法:

				ivCollapse?.setOnClickListener {            val rotateDegree = when (it.tag) {                null -> {                    180.0f                }                180.0f -> {                    0f                }                else -> 180.0f            }
it.tag = rotateDegree// animate.rotationBy(rotateDegree).start() it.animate().rotation(rotateDegree).setDuration(600).start() }
复制代码

3.总结

从上面两种方法来看,更偏向与使用第一种,逻辑会更加的清晰。


发布于: 4 小时前阅读数: 5
用户头像

Changing Lin

关注

获得机遇的手段远超于固有常规之上~ 2020.04.29 加入

我能做的,就是调整好自己的精神状态,以最佳的面貌去面对那些未曾经历过得事情,对生活充满热情和希望。

评论

发布
暂无评论
自定义View:如何实现点击图标旋转的动画效果