移动

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 >

阅读更多
个人分类: android
上一篇Service的使用
下一篇Broadcast广播的使用
想对作者说点什么? 我来说一句

移动通信原理(手机)

2011年05月18日 460KB 下载

移动IP 移动IP 移动IP 移动IP

2011年05月03日 5.6MB 下载

2016年国内移动学习研究综述

2018年06月04日 2.29MB 下载

dzd格式转换器(移动英语通)

2010年06月28日 96KB 下载

移动笔试题移动笔试题

2010年04月22日 2.73MB 下载

移动通信设备》试题

2010年05月18日 213KB 下载

无线路由器移动的无线路由器

2009年12月12日 294KB 下载

没有更多推荐了,返回首页

关闭
关闭