跑动的妹子

来源:互联网 发布:遗传算法c语言代码 编辑:程序博客网 时间:2024/04/29 02:23

实现代码如下:

布局文件:main_activity.xml:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:tools="http://schemas.android.com/tools"        android:id="@+id/myframe"        android:layout_width="wrap_content"        android:layout_height="wrap_content"         android:foregroundGravity="center">    </FrameLayout>


MainActivity.java:

package com.jay.example.framelayoutdemo3;        import java.util.Timer;    import java.util.TimerTask;    import android.os.Bundle;    import android.os.Handler;    import android.os.Message;    import android.view.View;    import android.view.View.OnClickListener;    import android.widget.FrameLayout;    import android.app.Activity;    import android.graphics.drawable.Drawable;        public class MainActivity extends Activity {        //初始化变量,帧布局        FrameLayout frame = null;        //自定义一个用于定时更新UI界面的handler类对象            Handler handler = new Handler()            {                int i = 0;                @Override                public void handleMessage(Message msg) {                //判断信息是否为本应用发出的                    if(msg.what == 0x123)                    {                        i++;                        move(i % 8 );                    }                    super.handleMessage(msg);                 }            };                          //定义走路时切换图片的方法        void move(int i)        {            Drawable a = getResources().getDrawable(R.drawable.s_1);            Drawable b = getResources().getDrawable(R.drawable.s_2);            Drawable c = getResources().getDrawable(R.drawable.s_3);            Drawable d = getResources().getDrawable(R.drawable.s_4);            Drawable e = getResources().getDrawable(R.drawable.s_5);            Drawable f = getResources().getDrawable(R.drawable.s_6);            Drawable g = getResources().getDrawable(R.drawable.s_7);            Drawable h = getResources().getDrawable(R.drawable.s_8);            //通过setForeground来设置前景图像            switch(i)            {                case 0:                    frame.setForeground(a);                    break;                case 1:                    frame.setForeground(b);                    break;                case 2:                    frame.setForeground(c);                    break;                case 3:                    frame.setForeground(d);                    break;                case 4:                    frame.setForeground(e);                    break;                case 5:                    frame.setForeground(f);                    break;                case 6:                    frame.setForeground(g);                    break;                case 7:                    frame.setForeground(h);                    break;            }        }                @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);                        frame = (FrameLayout) findViewById(R.id.myframe);            //定义一个定时器对象,定时发送信息给handler            new Timer().schedule(new TimerTask() {                                @Override                public void run() {                    //发送一条空信息来通知系统改变前景图片                    handler.sendEmptyMessage(0x123);                }            }, 0,170);         }    }    

代码解析:代码也很简单,就是定义一个handler对象来刷新帧布局的前景图像,定义一个Timer定时器每隔170毫秒发送定时信息,i++;move(i%8);这里是因为我们使用8个图片作为动画素材!


原创粉丝点击