移动

来源:互联网 发布:手机刷基带软件 编辑:程序博客网 时间: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>

原创粉丝点击