gpt4 book ai didi

android - 更改 ImageButton 的 ImageBitmap 的动画

转载 作者:行者123 更新时间:2023-12-02 16:09:55 25 4
gpt4 key购买 nike

假设我有一个 ImageButton btn。我有两个不同的位图:bmp1 和 bmp2。默认情况下,btn 显示bmp1,如下所示:

btn.setImageBitmap(bmp1);

我可以以某种方式制作一个动画,在调用以下命令时交叉淡入淡出 bmp1bmp2:

btn.setImageBitmap(bmp2);

所以问题是,是否有可能 - 如果可以,如何 - 为 ImageButtons 上的位图变化设置动画?

最佳答案

在我看来,有两种主要方法可以实现此功能。请注意,可能还有其他方法可以使这种情况完全按照您所描述的那样发生,但这些是我的方法。

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

在这里,您实际上希望淡出第一个 ImageButton,更改 onAnimationEnd() 回调中的资源,然后将其淡入。为此,您必须实现以下代码。

  1. 在 XML 中创建一个 Animation 资源,用于淡入淡出 View:

    <!-- 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>
  2. 在 XML 中创建一个 Animation 资源,用于淡出 View:

    <!-- 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>
  3. 在代码中加载淡出和淡入动画:

    // 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);
  4. 为该 Animation 分配一个新的 AnimationListener,并按如下方式构建它:

    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);
    }
    }
  5. Animation分配给ImageButton,并启动第一个Animation:

    yourImageButton.startAnimation(outAnimation);
  6. 然后,如果您希望以动画方式返回到上一张图像,只需按相反的顺序执行相同的操作即可。

第二种方法:覆盖第二个ImageButton

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

<小时/>

我希望这个答案符合您的期望。如果有任何代码错误,我深表歉意,因为我目前在没有编辑器的情况下执行此操作。如果您需要任何其他说明,请告诉我!

关于android - 更改 ImageButton 的 ImageBitmap 的动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19271575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com