仅为ImageView的“src”alpha属性设置动画,而不是整个视图

时间:2014-05-23 14:26:42

标签: android xml opacity src

我有一个ImageView,最初是空的。它的背景设置为灰色:

<ImageView
  android:background="#333" />

从互联网上获取其位图后,我想将其设置为src属性,但要优雅地淡化它。我见过的动画示例就是这样的:

// fade_in.xml
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <alpha
      android:duration="2000"
      android:fromAlpha="0.0"
      android:interpolator="@android:anim/accelerate_interpolator"
      android:toAlpha="1.0" />

</set>

但这是为整个ImageView的不透明度设置动画。它具有在淡入之前首先隐藏ImageView的效果,因此您在动画开始时看到一个小弹出窗口,首先设置为alpha = 0。

有没有办法为“src”属性的不透明度设置动画而不是整个ImageView?

由于

3 个答案:

答案 0 :(得分:3)

imageView的源图像上的动画很棘手,并且在大多数情况下涉及将imageView包装到某个ViewGroup中,但如果您想要做的就是设置其alpha(淡入/淡出)动画,那么使用TransitionDrawable非常容易:< / p>

TransitionDrawable transitionDrawable = new TransitionDrawable(new Drawable[]{
       new ColorDrawable(Color.TRANSPARENT),
       getResources().getDrawable(R.drawable.my_image)
   });
imageview.setImageDrawable(transitionDrawable);
transitionDrawable.startTransition(300);

答案 1 :(得分:1)

ImageView包裹在ViewGroupLinearLayout wrap_content<LinearLayout android:layout_width='wrap_content' android:layout_height='wrap_content' android:background='#ff0000'> <ImageView src='@drawable/ic_launcher' android:layout_width='wrap_content' android:layout_height='wrap_content'/> </LinearLayout> alpha并保留所有您希望保持可见的设置,例如背景颜色。像这样:

{{1}}

这将导致以下结果,{{1}}分别为0.5和1。

enter image description here

答案 2 :(得分:1)

您有两个选择:

1)将透明的ImageView放入灰色容器中(简单)。最简单的容器是FrameLayout

2)使用ImageView.setAlpha(int)方法为包含图像的alpha设置动画。此方法采用整数作为参数,范围从0(完全透明)到255(完全不透明)。要为此类自定义属性设置动画,您需要使用ObjectAnimatorNineOldAndroids