使用ObjectAnimator为TextView的leftDrawable制作动画

时间:2015-06-30 06:16:35

标签: android animation drawable

我想为leftDrawable的{​​{1}}制作动画,我尝试了以下内容:

TextView

但它似乎没有动画,过去我使用ObjectAnimator.ofFloat(drawable, "rotation", 0f, 360f).setDuration(300).start(); button.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); 并且通过在AnimationDrawable中放置几个​​drawable来工作,但是apk大小是一个问题所以我正在尝试避免拥有多个资产来实现这一目标。

如果我做错了或使用<animation-list>无法实现这一点,请告诉我。

感谢。

2 个答案:

答案 0 :(得分:6)

试试这个:

    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>

答案 1 :(得分:0)

我认为问题是你在绘制drawable之前调用动画。 尝试替换行的顺序。也许你可以加一些延迟。