Android动画之帧动画

   帧动画的实现主要有两种方式,Android中的xml文件以及代码实现。本篇文章主要介绍利用xml文件实现帧布局的方式。

下面是实现帧布局的步骤:

1. 首先在res文件夹下面创建一个新的文件夹,命名为drawable-hdpi,将帧动画要用到图片加载到该文件夹。

2. 在布局文件中设置ImageView控件以及控制帧动画播放的按钮Button控件。

            <Button
                android:id="@+id/frame"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="10dp"
                android:layout_marginRight="10dp"
                android:layout_marginTop="5dp"
                android:paddingBottom="5dp"
                android:paddingTop="5sp"
                android:text="逐帧动画" />
    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_gravity="center"
        android:src="@mipmap/ic_launcher">
    </ImageView>

3. drawable文件夹下面创建一个xml文件来生成动画,该xml文件名称为anim_list ,使用animation-list标签,将图片及间隔事件设置出来。oneshot设置是否循环播放,true为只播放一次,false为循环播放

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">

    <item
        android:drawable="@drawable/devil"
        android:duration="500"/>
    <item
        android:drawable="@drawable/confused"
        android:duration="500"/>
    <item
        android:drawable="@drawable/cheeky"
        android:duration="500"/>
    <item
        android:drawable="@drawable/angel"
        android:duration="500"/>
    <item
        android:drawable="@drawable/angry"
        android:duration="500"/>
    <item
        android:drawable="@drawable/cool"
        android:duration="500"/>

</animation-list>

4. MainActivity文件中给播放Button按钮设置监听事件。

public class MainActivity extends AppCompatActivity implements OnClickListener{

    private ImageView image;
    private Button frame;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        image = (ImageView) findViewById(R.id.image);
       
        frame=(Button) findViewById(R.id.frame);
        
        frame.setOnClickListener(this);
       
    }

            case R.id.frame:
            {
                image.setImageResource(R.drawable.anim_list);
                AnimationDrawable animationDrawable = (AnimationDrawable) image.getDrawable();
                animationDrawable.start();
                break;

            }


帧动画利用代码的形式实现步骤
    (1)创建图片动画的对象            
      (2) 一帧一帧的添加图片,并且设置显示时间
    (3 设置是否为循环播放 默认的就是只播放一次
    (4)开启动画,或者停止动画

  //动画对象
        mAnimation = new AnimationDrawable();
        for (int i = 1; i < 22; i++) {
            if (i < 10) {
                /*
                获取应用包下的指定资源ID。
                第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名。
                 */
                id = getResources().getIdentifier("bomb0" + i, "mipmap", getPackageName());
            } else {
                id = getResources().getIdentifier("bomb" + i, "mipmap", getPackageName());
            }
            //将id装换成drawable对象
            Drawable drawable = getResources().getDrawable(id);
            //添加动画的drawable对象,设置图片播放的间隔时间
            mAnimation.addFrame(drawable, 100);
        }
        //是否只运行一次
        mAnimation.setOneShot(false);
        //给imageView设置动画
        imageView.setImageDrawable(mAnimation);
        mAnimation.start();

详细步骤可以参考     http://blog.csdn.net/dl10210950/article/details/53835892

注意:xml文件生成的动画默认的是循环播放,java代码生成的动画默认是只播放一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值