Android中的按钮动画

问题描述 投票:2回答:3

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

我们的分析说(上帝“祝福”他们)我们应该实施某种“游戏”机制,所以想要这样的事情:例如,当用户按下“ Not”按钮时,它开始冻结并被冰覆盖,然后断裂,然后显示下一张照片。那不是缩放,旋转或平移动画……按钮本身,它的“ godblessed”内容应该在一小段时间(可能是一两秒钟)内更改。

[这让我很害怕,因为当我考虑在不同设备上缩放这些按钮时,以及可能要制作的带有9,patch和手工制作的帧动画的各种麻烦。

是否有可能制造这种东西?也许有任何解决方法或其他方法。

android android-layout animation android-animation android-button
3个回答
3
投票
  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代替按钮,并将列表设置为xml中的背景,然后在代码中使用AnimationDrawable启动动画

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

0
投票

您可以使用ObjectAnimators和ValueAnimators设置按钮的Alpha,位置以及几乎所有属性的动画。

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

© www.soinside.com 2019 - 2024. All rights reserved.