在我的Android应用中,我有一个白色背景的TextView
。点击后,通过调用.png
上的setBackgroundResource(R.drawable.icon)
,其背景将更改为某个图标的TextView
图片。这按预期工作,但变化相当突然。我想让图标逐渐显现;点击TextView
后,图标的微小版本应显示在TextView
的中心,然后立即展开并填写整个TextView
。我相信最好的方法是使用动画,Android中哪些可用的动画类型最适合这项任务?
如果不清楚我的意思,我画了一幅草图来说明。第二个序列显示了代码现在如何工作,第一个序列显示了我希望它是如何工作的。
答案 0 :(得分:2)
如果解决了你的问题,请尝试这种方式。
ObjectAnimator
动画(X),听取onAnimationEnd
来电并设置(A)的背景。然后删除(X)。希望这会有所帮助。
答案 1 :(得分:2)
所以,我设法使用ImageView
获得了ScaleAnimation
所需的效果。这就是你要做的事情:
首先,我们的XML ImageView
:
<ImageView
android:id="@+id/scale_anim"
android:layout_width="60dp"
android:layout_height="60dp"
android:background="@android:color/white" />
它有固定的尺寸和白色背景。
动画将以onCreate()
方法中的一次点击开始:
ImageView starImageView = (ImageView) findViewById(R.id.scale_anim);
starImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ScaleAnimation starScaleAnimation =
new ScaleAnimation(0.3f, 1f, 0.3f, 1f,
ScaleAnimation.RELATIVE_TO_SELF, 0.5f,
ScaleAnimation.RELATIVE_TO_SELF, 0.5f);
starScaleAnimation.setDuration(500);
((ImageView) v).setImageResource(R.drawable.star);
ScaleAnimation scaleAnim = starScaleAnimation;
v.startAnimation(scaleAnim);
}
});
我们正在ImageView
上应用缩放动画,其中星星占原始大小的30%,并从其中心点缩放到其大小的100%。这个动画的持续时间是半秒钟。所有这些参数都可以更改。
每次点击ImageView
时,都会应用您的drawable并开始动画。