移动

原创 2011年01月24日 01:38:00

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 >

相关文章推荐

移动App性能评测与优化

  • 2017年11月18日 12:27
  • 14.34MB
  • 下载

移动前端,h5 ,viewport 详解

  • 2017年11月13日 13:26
  • 912KB
  • 下载

引用 移动机器人运动控制器的设计

引用 David 的 移动机器人运动控制器的设计 移动机器人运动控制器的设计 http://www.ee365.cn 2005-04-26 23:39 eaw ...

从HTML5移动应用现状谈发展趋势

作者注:此文章原为2013年5月的《程序员》杂志所做,现刊登于此,以飨读者。从HTML5移动应用现状谈发展趋势        时光如梭,自2008年HTML5诞生以来已经过去了5年的时间,作为新一代的...
  • hfahe
  • hfahe
  • 2013年08月08日 22:27
  • 10664

移动版上下拉动加载.rar

  • 2017年11月13日 15:42
  • 44KB
  • 下载

CSDN头版头条 《近匠》 Wijmo 5 CTO:从Web到移动,我的25年编程生涯

《近匠》第64期,Wijmo 5是由GrapeCity旗下ComponentOne公司开发的新一代HTML5/JavaScript控件库。本期近匠采访了Wijmo 5 CTO Bernardo Cas...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:移动
举报原因:
原因补充:

(最多只允许输入30个字)