【问题标题】:Button animations in AndroidAndroid中的按钮动画
【发布时间】:2013-02-04 01:49:48
【问题描述】:

我想,今天我得到了一个非常有趣的问题。在我的工作中,我们正在创建一个约会服务,其中一个主要功能将是屏幕,显示不同女孩(或男人)的照片,用户按下“热门”或“不”按钮。这两个按钮都显示在屏幕上的照片下方。

我们的分析表明我们应该实现某种“游戏”机制,因此需要这样的东西:例如,当用户按下“不”按钮时 - 它开始冻结并被冰覆盖,然后它会破裂,然后显示下一张照片。这不是缩放、旋转或平移动画......按钮本身,它的内容应该在一小段时间内(可能一两秒)发生变化。

这让我很害怕,因为当我考虑在不同的设备上缩放这些按钮时,我可能会制作 Ninepatch 和手工制作的帧动画的不同麻烦。

有可能做这样的事情吗?或者也许有任何解决方法或其他东西。

【问题讨论】:

  • 引号中的“祝福”是什么意思?什么是“上帝保佑”的内容?

标签: android android-layout animation android-animation android-button


【解决方案1】:
  1. 为您的动画制作图像并保存在 png 格式的文件夹中。
  2. 使用以下代码为这些图像设置动画。
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
 android:oneshot="true">
 <item android:drawable="@drawable/rocket_thrust1" android:duration="200" />
 <item android:drawable="@drawable/rocket_thrust2" android:duration="200" />
 <item android:drawable="@drawable/rocket_thrust3" android:duration="200" />
 </animation-list>

然后

AnimationDrawable rocketAnimation;

public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  ImageView rocketImage = (ImageView) findViewById(R.id.rocket_image);
  rocketImage.setBackgroundResource(R.drawable.rocket_thrust);
  rocketAnimation = (AnimationDrawable) rocketImage.getBackground();
}

public boolean onTouchEvent(MotionEvent event) {
  if (event.getAction() == MotionEvent.ACTION_DOWN) {
    rocketAnimation.start();
    return true;
  }
  return super.onTouchEvent(event);
}

【讨论】:

    【解决方案2】:

    在可绘制文件夹中创建图像列表:

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/loading" 
    android:oneshot="false" >
    <item android:drawable="@drawable/preloader_01" android:duration="50" />
    <item android:drawable="@drawable/preloader_02" android:duration="50" />
    <item android:drawable="@drawable/preloader_03" android:duration="50" />
    <item android:drawable="@drawable/preloader_04" android:duration="50" />
    

    使用 ImageView img 代替 button 并在 xml 中将列表设置为背景,然后在代码中使用 AnimationDrawable 启动动画

        AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();
         // Start the animation (looped playback by default).
        frameAnimation.start();`
    

    【讨论】:

      【解决方案3】:

      您可以使用 ObjectAnimators 和 ValueAnimators 为按钮的 Alpha、位置和几乎任何属性设置动画。

      如果您想要自定义动画(例如冰效果),则必须自己制作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-14
        • 1970-01-01
        • 1970-01-01
        • 2013-09-18
        • 2017-03-09
        • 2015-01-27
        • 1970-01-01
        • 2023-03-14
        相关资源
        最近更新 更多