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>