android 小鱼在水中游

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值