关于更改ImageButton的ImageBitmap的动画

时间:2013-10-09 12:07:52

标签: android android-animation

假设我有ImageButton btn。我有两个不同的Bitmapbmp1bmp2。默认情况下,btn会显示bmp1,如下所示:

btn.setImageBitmap(bmp1);

在调用以下内容时,我能以某种方式制作一个交叉淡化bmp1bmp2的动画:

btn.setImageBitmap(bmp2);

所以问题是,是否可以 - 如果是,如何 - 动画更改ImageButtons上的位图?

2 个答案:

答案 0 :(得分:7)

我看到它的方式,实现此功能有两种主要方式。请注意,可能还有其他方法可以完全按照您的描述进行此操作,但这些方法将是我的方法。

第一种方法:利用onAnimationEnd()回调

在这里,您希望基本淡出第一个ImageButton,更改onAnimationEnd()回调中的资源,然后将其淡入。要执行此操作,您必须执行以下操作代码。

  1. 在XML中创建一个用于淡化Animation的{​​{1}}资源:

    View
  2. 在XML中创建一个<!-- Filename: fadein.xml --> <set xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Note that you might want to change the duration here--> <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="250"/> </set> 资源,用于淡化Animation

    View
  3. 在代码中加载淡出并淡入<!-- Filename: fadeout.xml --> <set xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Note that you might want to change the duration here--> <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="250"/> </set>

    Animation
  4. 为此// Obtain a reference to the Activity Context Context context = getContext(); // Create the Animation objects. Animation outAnimation = AnimationUtils.loadAnimation(context, R.anim.fadeout); Animation inAnimation = AnimationUtils.loadAnimation(context, R.anim.fadein); 分配一个新的AnimationListener,并按如下方式构建:

    Animation
  5. outAnimation.setAnimationListener(new AnimationListener(){ // Other callback methods omitted for clarity. public void onAnimationEnd(Animation animation){ // Modify the resource of the ImageButton yourImageButton.setImageResource(R.drawable.[your_second_image]); // Create the new Animation to apply to the ImageButton. yourImageButton.startAnimation(inAnimation); } } 分配给Animation,然后开始第一个ImageButton

    Animation
  6. 然后,如果您希望动画回到上一张图片,您只需执行相同操作,但顺序相反。

  7. 第二种方法:叠加第二个yourImageButton.startAnimation(outAnimation);

    对于这种方法,您只需将两个ImageButton分配给屏幕上相同的坐标,并具有相同的宽度。然后,在第一个ImageButton结束后,您将淡出第一个ImageButton并淡出第二个(与上面的示例非常相似)。


    我希望这个答案符合你的期望。如果有任何代码错误,我很抱歉,因为我现在没有编辑器这样做。如果您需要任何其他说明,请与我们联系!

答案 1 :(得分:1)

无法为图像按钮源更改设置动画。解决方法是堆叠两个ImageButton并分别为其alfa通道设置动画以获得预期的行为。