移动
来源:互联网 发布:手机刷基带软件 编辑:程序博客网 时间:2024/04/29 08:27
public class Move extends Activity
{
/*图片的宽度*/
private int intWidth;
/*图片的高度*/
private int intHeight;
/*图片的X坐标*/
private int intButtonX;
/*图片的Y坐标*/
private int intButtonY;
/* 存储屏幕的分辨率 */
private int intScreenX, intScreenY;
/* 按钮位移的平移量 */
private int intShift = 20;
/*运行速度(数值越大,速度越小)*/
private int speen = 1000;
/*图片*/
private ImageView myImage;
/*定时器*/
Timer timer = new Timer(true);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myImage = (ImageView)findViewById(R.id.myImage);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
/* 取得屏幕解析像素 */
intScreenX = dm.widthPixels;
intScreenY = dm.heightPixels;
/* 定义按钮的宽x高 */
intWidth = 20;
intHeight = 20;
/* 初始化按钮位置居中 */
RestoreButton();
/* 当点击按钮,还原初始位置 */
myImage.setOnClickListener(new Button.OnClickListener()
{
public void onClick(View v)
{
// TODO Auto-generated method stub
RestoreButton();
}
});
}
private int flag = 0;
TimerTask task = new TimerTask(){
public void run(){
Message message = new Message();
message.what = flag;
handler.sendMessage(message);
// MoveButtonUp();
}
};
Handler handler = new Handler()
{
public void handleMessage(Message msg)
{
if (intButtonY - intShift <= 0)
{
setTitle("game over " + flag);
} else
{
switch (msg.what)
{
case 1:
MoveButtonUp();
break;
case 2:
MoveButtonDown();
break;
case 3:
MoveButtonLeft();
break;
case 4:
MoveButtonRight();
break;
}
}
super.handleMessage(msg);
}
};
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
// TODO Auto-generated method stub
switch(keyCode)
{
/* 中间按键 */
case KeyEvent.KEYCODE_DPAD_CENTER:
/* keyCode=23 */
RestoreButton();
break;
/* 上按键 */
case KeyEvent.KEYCODE_DPAD_UP:
/* keyCode=19 */
if(flag!=2){
MoveButtonUp();
}
break;
/* 下按键 */
case KeyEvent.KEYCODE_DPAD_DOWN:
/* keyCode=20 */
if(flag!=1){
MoveButtonDown();
}
break;
/* 左按键 */
case KeyEvent.KEYCODE_DPAD_LEFT:
/* keyCode=21 */
if(flag!=4){
MoveButtonLeft();
}
break;
/* 右按键 */
case KeyEvent.KEYCODE_DPAD_RIGHT:
/* keyCode=22 */
if(flag!=3){
MoveButtonRight();
}
break;
}
return super.onKeyDown(keyCode, event);
}
/* 还原按钮位置的事件处理 */
public void RestoreButton()
{
intButtonX = ((intScreenX-intWidth)/2);
intButtonY = ((intScreenY-intHeight)/2);
mMakeTextToast
(
"("+
Integer.toString(intButtonX)+
","+
Integer.toString(intButtonY)+")",true
);
/* 以setLayoutParams方法,重新安排Layout上的位置 */
myImage.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,intButtonX,intButtonY)
);
}
/* 点击DPAD上按键时事件处理 */
public void MoveButtonUp()
{
intButtonY = intButtonY-intShift;
/* 预防按钮到达下边界时的处理 */
if(intButtonY<0)
{
intButtonY = 0;
}
myImage.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,intButtonX,intButtonY)
);
if (flag == 0)
{
flag = 1;
timer.schedule(task, 0, speen);
}
flag = 1;
}
/* 点击DPAD下按键时事件处理 */
public void MoveButtonDown()
{
intButtonY = intButtonY+intShift;
/* 预防按钮到达下边界时的处理 */
if(intButtonY>(intScreenY-70))
{
intButtonY = intScreenY-70;
}
// mMakeTextToast
// (
// "("+Integer.toString(intButtonY)+","+Integer.toString(intScreenY-intHeight)+")",true
// );
myImage.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,intButtonX,intButtonY)
);
if (flag == 0)
{
flag = 2;
timer.schedule(task, 0, speen);
}
flag = 2;
}
/* 点击DPAD左按键时事件处理 */
public void MoveButtonLeft()
{
intButtonX = intButtonX-intShift;
/* 预防按钮到达左边界时的处理 */
if(intButtonX<0)
{
intButtonX = 0;
}
myImage.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,intButtonX,intButtonY)
);
if (flag == 0)
{
flag = 3;
timer.schedule(task, 0, speen);
}
flag = 3;
}
/* 点击DPAD右按键时事件处理 */
public void MoveButtonRight()
{
intButtonX = intButtonX+intShift;
/* 预防按钮到达右边界时的处理 */
if(intButtonX>(intScreenX-intWidth))
{
intButtonX = intScreenX-intWidth;
}
myImage.setLayoutParams
(
new AbsoluteLayout.LayoutParams
(intWidth,intHeight,intButtonX,intButtonY)
);
if (flag == 0)
{
flag = 4;
timer.schedule(task, 0, speen);
}
flag = 4;
}
public void mMakeTextToast(String str, boolean isLong)
{
if(isLong==true)
{
Toast.makeText(Move.this, str, Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(Move.this, str, Toast.LENGTH_SHORT).show();
}
}
}
main.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/white"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:id="@+id/myImage"
android:src="@drawable/a"
android:layout_width="10px"
android:layout_height="10px"
/>
</AbsoluteLayout>
- 移动
- 移动
- 移动
- 移动
- 移动
- 移动
- 移动
- 移动
- 移动
- 移动GPU 移动CPU
- 广东移动:深圳移动
- 移动数据
- 移动术语
- 移动硬盘盒!
- 移动机器人
- 移动商务
- 移动Blog?
- 移动Blog?
- 大数据量高并发的数据库优化
- 关于:为什么简单的一个select查询都要加上事务控制
- Adapter的使用
- 文件数据存储
- Service的使用
- 移动
- Broadcast广播的使用
- Share_Preferences数据存储
- 浅议Oracle的日期与时间
- Oracle 不同用户之间 大量数据转移的方法测试
- DirectSound示例的配置
- 由static引发的关于函数定义顺序与位置的纠结和打算
- 人有失手,继续命令行下的电驴
- struts首页先调用action运行