AndroidanimationAlpha

我有animation

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <alpha android:fromAlpha="0.2" android:toAlpha="1.0" android:duration="500"/> </set> 

和ImageView

 <ImageView android:id="@+id/listViewIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/settings" android:alpha="0.2"/> 

和代码:

 final Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha); final ImageView iv = (ImageView) findViewById(R.id.listViewIcon); anim .setFillAfter(true); iv.startAnimation(anim); 

所以在开始时,我有ImageView与alpha 0.2,最后我希望有AlphaView的ImageView。但它不这样工作 – 当animation开始更多的alpha添加和animation完成与alpha 0.2

我需要改变什么来使我的图像从0.2-> 1变成animation?

我已经检查了不同的设置 – 我设置android:alpha =“1.0”,从alpa =“1.0”到alpha =“0.2”,像我期望的那样工作 – 从alpha 1到0.2。 它看起来像来自ImageView的alpha乘以animation的alpha …

尝试这个

 AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); animation1.setDuration(1000); animation1.setStartOffset(5000); animation1.setFillAfter(true); iv.startAnimation(animation1) 

在开始animation之前将alpha设置为1

 AlphaAnimation animation1 = new AlphaAnimation(0.2f, 1.0f); animation1.setDuration(500); iv.setAlpha(1f); iv.startAnimation(animation1); 

至less在我的testing中,由于在开始animation之前设置alpha,所以没有闪烁。 它工作正常。

嗯…

事情是错误的,可能在Android API中animation的正确操作。

事实是,当你在你的代码中设置0.2f的alpha值是基于android的xml文件中的设置,这意味着:

 0.2f = 0.2f of 0.2f (20% from 100%) ie from 0.2f / 5 = 0.04f 1f = 0.2f 

所以你的animation实际上从0.04f到0.2f

flag setFillAfter(true)肯定有效,但是你需要明白,在你的animation结束时, ImageView的alpha值将是0.2f而不是1,因为你在animation中指定了0.2f作为边缘可接受的值(一种最大alpha渠道)。

所以,如果你想要得到理想的结果,就必须把所有的逻辑运用到你的代码中,而不是用xml来确定代码中的animation。

你应该明白,你的animation直接取决于两件事情:

  • animation视图的LayoutParams
  • animation参数。

animation参数在setFillAfter \ setFillBefore方法中处理您的LayoutParams。

 <ImageView android:id="@+id/listViewIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/settings"/> 

从XML-> ImageView中删除android:apha=0.2

如果您希望直接应用animation并准备复制粘贴代码, 请在此处查看