【问题标题】:Animating TextView's leftDrawable using ObjectAnimator使用 ObjectAnimator 为 TextView 的 leftDrawable 设置动画
【发布时间】:2015-06-30 06:16:34
【问题描述】:

我想为TextViewleftDrawable 制作动画,我尝试了以下方法:

ObjectAnimator.ofFloat(drawable, "rotation", 0f, 360f).setDuration(300).start();
button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null);

但它似乎没有动画,过去我使用过AnimationDrawable,它通过将几个drawables放在<animation-list>中来工作,但是apk大小是一个问题,所以我试图避免有多个资产来实现这一目标。

如果我做错了什么或者使用ObjectAnimator 无法实现,请告诉我。

谢谢。

【问题讨论】:

  • 我想你可以从这里得到一些东西!!! chiuki.github.io/advanced-android-textview/#
  • 首先你必须确保drawable 对象有rotation 属性,默认情况下Drawable 没有这样的属性
  • @pskink 谢谢,所以我认为使用ObjectAnimatorDrawable 是无法实现的。让您的评论成为答案,我会接受它:)
  • 有可能:使用RotateDrawable并手动调用setLevel或尝试(未经测试)使用RotateDrawable的“级别”属性
  • ok 测试:你可以使用RotateDrawable"level"属性

标签: android animation drawable


【解决方案1】:

试试这个:

    TextView tv = new TextView(this);
    Drawable left = getResources().getDrawable(R.drawable.rotate);
    tv.setCompoundDrawablesWithIntrinsicBounds(left, null, null, null);
    final ObjectAnimator animator = ObjectAnimator.ofInt(left, "level", 0, 10000).setDuration(1000);
    View.OnClickListener listener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Log.d(TAG, "onClick ");
            animator.start();
        }
    };
    tv.setOnClickListener(listener);
    tv.setGravity(Gravity.CENTER);
    tv.setTextSize(48);
    tv.setText("click me");
    setContentView(tv);

res/drawable/rotate.xml 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0" android:toDegrees="720">
    <bitmap android:src="@drawable/ic_launcher"/>
</rotate>

【讨论】:

  • 不客气,查看其他Drawable 类型以实现不同的动画,如ClipDrawableScaleDrawable 等...
  • 您也可以将旋转标签中的drawable设置为属性android:drawable,实际上如果它不是位图则必须设置,例如如果它是可绘制的矢量。我必须这样做,但其余的都很好,谢谢!
  • @digithree 是的,我知道 标签语法
  • 谁能告诉我level属性是什么??
【解决方案2】:

我认为问题在于您在绘制可绘制对象之前调用动画开始。 尝试替换行的顺序。也许你可以增加一些延迟。

【讨论】:

  • 实际上,如果drawable具有旋转属性,您可以使用可以在Drawable上工作的ObjectAnimator.ofPropertyValuesHolder。为什么不将 TextView 和 Image 分开,以便可以将 drawable 放入 ImageView 并旋转 ImageView 本身?
  • 该按钮实际上是一个自定义视图,并且在任何地方都可以使用,因此添加ProgressBar 意味着我必须将它们中的两个一起包装在另一个父布局中并在任何地方替换当前的。一开始它并没有打算做成动画,所以我一开始就没有包装它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
相关资源
最近更新 更多