android 小鱼在水中游

来源:互联网 发布:java学生成绩系统 编辑:程序博客网 时间:2024/04/29 08:13

MainActivity.java

package com.zlp.demo;import java.util.Random;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.DisplayMetrics;import android.widget.ImageView;public class MainActivity extends Activity {    private ImageView img;//声明img对象    private Handler handler;//声明handler对象    private Thread thread;//声明thread对象    private int x=200;//设置x值:用于设置图片的位置    private int y=200;//设置y值:用于设置图片的位置    private int screenX;//设置screenX:用于接收屏幕的宽度    private int screenY;//设置screenY:用于接收屏幕的宽度    private boolean flag_x;//设置图片x轴方向的移动条件    private boolean flag_y;//设置图片x轴方向的移动条件    private boolean isDo=true;//设置执行代码的条件,在这一定要先设为true    private int fish[]={            R.drawable.fish0,R.drawable.fish1,            R.drawable.fish2,R.drawable.fish3,            R.drawable.fish4,R.drawable.fish5,            R.drawable.fish6,R.drawable.fish7,            R.drawable.fish8,R.drawable.fish9,    };//建立存储图片的数组    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        img=(ImageView)this.findViewById(R.id.img);//定义img对象        DisplayMetrics dm=new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);//此方法可以获得屏幕宽度和高度        screenX=dm.widthPixels;//获得宽度        screenY=dm.heightPixels;//获得高度        handler=new Handler(){            /*关于handler内的重建方法:             * 按alt+shift+s 选择override/implement methods             * 添加handleMessage             */            @Override            public void handleMessage(Message msg) {                // TODO Auto-generated method stub                super.handleMessage(msg);                int p=msg.what;//接收连续的整数,:用于连续改变图片,实现动图                int move_x=msg.arg1;//接受随机数,用于图片移动                int move_y=msg.arg1;//接受随机数,用于图片移动                if(x<=0){                    flag_x=true;//图片碰到左边时为真                }else{                    flag_x=false;                }                if(flag_x){                    x=480;                    img.setBackgroundResource(fish[p]);                    img.setX(x);//碰到左边,将图片重置到右边                    img.setY(y);                }else{                    img.setBackgroundResource(fish[p]);                    x-=move_x;                    img.setX(x);                    img.setY(y);                }                if(y>(screenY-img.getHeight())){//图片碰到顶部返回                    flag_y=false;                }else if(y<=0){//图片碰到底部返回                    flag_y=true;                }                if(flag_y){                    y+=move_y;                    img.setY(y);                }else{                    y-=move_y;                    img.setY(y);                }            }        };//注意这的分号        thread=new Mythread();//声明一个子线程        thread.start();    }    class Mythread extends Thread{//继承父类        /*关于thread内的重建方法:         * 按alt+shift+s 选择override/implement methods         * 添加run()         */        @Override        public void run() {            // TODO Auto-generated method stub            super.run();            int index;            int what=1;            while(isDo){                index=(new Random()).nextInt(5);//将index设为随机数1-5                Message msg=handler.obtainMessage();//声明msg                msg.arg1=index;//将随机数传入arg1中                handler.sendMessage(msg);                handler.sendEmptyMessage((what++)%10);//what累加并对10取余                //这个取余数应该看与图片的个数而定                try {//try按出提示自动写出框架                    thread.sleep(100);//设置子线程执行间隔                } catch (Exception e) {                    // TODO: handle exception                }            }        }    }}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.zlp.demo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="14" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen" >//全屏        <activity            android:label="@string/app_name"            android:name=".MainActivity" >            <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>    </application></manifest>

main.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    android:background="@drawable/water" >    <ImageView        android:id="@+id/img"        android:layout_width="wrap_content"        android:layout_height="wrap_content"         /></LinearLayout>
0 0