zoukankan      html  css  js  c++  java
  • android帧动画实现方法之一

    好多动画离不开帧动画的使用,下面就实现帧动画的制作方式之一,以后会推出其他方法。

    上面是文件存放位置。

    a.xml文件的代码如下:

    <?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/a1"
            android:duration="500"/>
        <item
            android:drawable="@drawable/a2"
            android:duration="500"/>
        <item
            android:drawable="@drawable/a3"
            android:duration="500"/>
    
    </animation-list>

    好了,进入main.xml(activity_main.xml)代码部分,其实很简单,就有一个ImageView和两个Button。

    <ImageView
            android:id="@+id/img2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:onClick="start"
            android:text="开始帧动画" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:onClick="stop"
            android:text="停止帧动画" />

    然后进入java代码部分,onCreate()方法就省略不写了,直接写有关代码。

    开始帧动画代码如下:

    public void start(View v) {
    		ImageView img2 = (ImageView) this.findViewById(R.id.img2);
    		img2.setBackgroundResource(R.drawable.a);
    		AnimationDrawable frame = (AnimationDrawable) img2.getBackground();
    		frame.start();
    	}
    

      结束帧动画代码如下:

    public void stop(View v) {
            ImageView img2 = (ImageView) this.findViewById(R.id.img2);
            AnimationDrawable frame = (AnimationDrawable) img2.getBackground();
            frame.stop();
        }

    这里需要注意一点,像上面的

    frame.start();如果写到onCreate()方法中则不会出现效果。我亲自测试,代码如下。
    protected void onCreate(Bundle savedInstanceState) {
            ImageView imgView;
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            imgView = (ImageView) this.findViewById(R.id.img);
            imgView.setBackgroundResource(R.drawable.a);
            AnimationDrawable frame = (AnimationDrawable) imgView.getBackground();
            frame.start();
        }

    这样只会出现第一张图片,不会有帧动画的效果。

    好了,第一种帧动画实现方式就到这里,后续还会有其他方法推荐给大家。谢谢观赏,你的评论是我进步的动力。

  • 相关阅读:
    【SICP练习】129 练习3.60
    【SICP练习】128 练习3.59
    【SICP练习】127 练习3.58
    【SICP练习】126 练习3.57
    【SICP练习】125 练习3.56
    【SICP练习】124 练习3.55
    【SICP练习】123 练习3.54
    【SICP练习】122 练习3.53
    【SICP练习】121 练习3.52
    【SICP练习】120 练习3.51
  • 原文地址:https://www.cnblogs.com/linzhichao86/p/linzhichao86.html
Copyright © 2011-2022 走看看