我想对按钮A,B和C应用相同的alphaanimation,因此实现了以下代码:
public void onCreate(Bundle savedInstanceState)
{
animation = new MutableAlphaAnimation();
animation.setAnimationListener(this);
btn_A.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
animation.setResetBlocked(true);
btn_A.setAnimation(animation);
animation.setResetBlocked(false);
animation.start(0.0f, 0.5f, FADE_IN_DURATION);
btn_A.invalidate();
}
});
}
public class MutableAlphaAnimation extends Animation
{
private float mFromAlpha;
private float mToAlpha;
private boolean resetBlocked;
public MutableAlphaAnimation()
{
}
public void start(float fromAlpha, float toAlpha, long duration)
{
mFromAlpha = fromAlpha;
mToAlpha = toAlpha;
setDuration(duration);
setStartTime(START_ON_FIRST_FRAME);
}
public void setResetBlocked(boolean resetBlocked)
{
this.resetBlocked = resetBlocked;
}
@Override
public void reset()
{
if (! resetBlocked) super.reset();
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t)
{
final float alpha = mFromAlpha;
t.setAlpha(alpha + ((mToAlpha - alpha) * interpolatedTime));
}
@Override
public boolean willChangeTransformationMatrix()
{
return false;
}
@Override
public boolean willChangeBounds()
{
return false;
}
}
btn_A,B和C使用相同的setOnClickListener
实现。然而,当他们被按下时,没有任何事情发生。为什么?如何修改上述内容?
谢谢!
答案 0 :(得分:0)
您没有将转化应用于btn_home。是的你将它设置为动画,但你的动画类永远不会触及btn_home。你的t.setAlpha ...应该是btn_home.setAlpha ...,所以使用构造函数传入视图,然后你可以在将来的任何视图中使用它。