关闭

移动

134人阅读 评论(0) 收藏 举报

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 >

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:32137次
    • 积分:689
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论