我已经在我的textView android:drawableLeft="@drawable/ic_launcher"
中使用了这一行
在我的xml文件中。
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="@string/hello_world"
android:textSize="14sp"
android:textStyle="bold"
android:drawableLeft="@drawable/ic_launcher"
>
</TextView>
现在我想为这个drawable添加动画。 我不知道如何访问此图片。
有任何帮助吗? 提前谢谢
答案 0 :(得分:11)
如果您在XML中设置drawable,则无法像ImageView
的{{1}}一样访问它。相反,请从您的XML中省略它,并在getDrawable()
:
Activity/Fragment
如果您的可绘制TextView tv = (TextView) view.findViewById(R.id.textView1);
AnimationDrawable d = (AnimationDrawable) getResources().getDrawable(R.drawable.ic_launcher);
tv.setCompoundDrawables(d, null, null, null);
d.start();
可以像AnimationDrawable一样动画,则应启动动画。致电ic_launcher
停止动画。
答案 1 :(得分:9)
要制作像旋转这样的简单动画,您可以执行以下操作:
假设@drawable/ic_launcher
是您想要动画的可绘制的
使用适当的值定义some_drawable.xml
:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate
android:drawable="@drawable/ic_launcher"
android:pivotX="50%"
android:pivotY="50%"
android:fromDegrees="0"
android:toDegrees="180" />
</item>
</layer-list>
将此drawable作为复合一个分配给TextView:
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawablePadding="5dp"
android:gravity="center_vertical"
android:text="@string/hello_world"
android:textSize="14sp"
android:textStyle="bold"
android:drawableLeft="@drawable/some_drawable"
>
要开始动画:
int MAX_LEVEL = 10000;
Drawable[] myTextViewCompoundDrawables = myTextView.getCompoundDrawables();
for(Drawable drawable: myTextViewCompoundDrawables) {
if(drawable == null)
continue;
ObjectAnimator anim = ObjectAnimator.ofInt(drawable, "level", 0, MAX_LEVEL);
anim.start();
}