Android 响应键盘移动图标


view plaincopy to clipboardprint?
  1. package rw.SurFace;  
  2.   
  3.   
  4. import Android.app.Activity;  
  5. import android.content.Context;  
  6. import android.graphics.Bitmap;  
  7. import android.graphics.BitmapFactory;  
  8. import android.graphics.Canvas;  
  9. import android.graphics.Color;  
  10. import android.graphics.Paint;  
  11. import android.os.Bundle;  
  12. import android.util.DisplayMetrics;  
  13. import android.util.Log;  
  14. import android.view.KeyEvent;  
  15. import android.view.SurfaceView;  
  16.   
  17. public class Surfaecview01Activity extends Activity {  
  18.     /** Called when the activity is first created. */  
  19.     DisplayMetrics sMetrics;  
  20.      Thread maintThread;  
  21.      MysurfaceView view;  
  22.      boolean up,down,right,left;  
  23.     class MysurfaceView extends SurfaceView implements Runnable{  
  24.         Bitmap bitmap;  
  25.          
  26.         Paint paint=new Paint();  
  27.         long time;  
  28.         int Coord_x,Coord_y;  
  29.         int x,y;  
  30.         public MysurfaceView(Context context) {  
  31.             super(context);  
  32.             // TODO Auto-generated constructor stub   
  33.               
  34.             setFocusable(true);//可以聚焦   
  35.             bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.a);  
  36.             paint.setColor(Color.BLUE);  
  37.             paint.setTextSize(20);  
  38.             x=bitmap.getWidth();  
  39.             y=bitmap.getHeight()/2;  
  40.             maintThread=new Thread(this);  
  41.             maintThread.start();  
  42.         }  
  43.   
  44.         @Override  
  45.         public void run() {  
  46.             // TODO Auto-generated method stub   
  47.             while (true) {  
  48.                 DoDraw();  
  49.             }  
  50.         }  
  51.          void DoDraw()  
  52.             {  
  53.                 Canvas canvas=getHolder().lockCanvas();  
  54.                 if (canvas!=null) {  
  55.                     canvas.drawColor(Color.WHITE);  
  56.                     if (up) Coord_y--;  
  57.                     if(down) Coord_y++;  
  58.                     if(left) Coord_x--;  
  59.                     if (right) Coord_x++;  
  60.                     canvas.drawBitmap(bitmap, Coord_x*10, Coord_y*10null);  
  61.                       
  62.                     long now=System.currentTimeMillis();  
  63.                     canvas.drawText(""+1000/(now-time)+"fps", x, y, paint);  
  64.                     time=now;  
  65.                     getHolder().unlockCanvasAndPost(canvas);  
  66.                 }  
  67.             }  
  68.     }  
  69.     @Override  
  70.     public void onCreate(Bundle savedInstanceState) {  
  71.         super.onCreate(savedInstanceState);  
  72.         sMetrics=new DisplayMetrics();  
  73.         getWindowManager().getDefaultDisplay().getMetrics(sMetrics);  
  74.         /* 
  75.          * 获取屏幕大小 
  76.          */  
  77.         int Met_X=sMetrics.widthPixels;  
  78.         int Met_Y=sMetrics.heightPixels;  
  79.         Log.i("X--------->", Met_X+"");  
  80.         Log.i("Y--------->", Met_Y+"");  
  81.         setContentView(new MysurfaceView(this));  
  82.     }  
  83.       
  84.     @Override  
  85.     public boolean onKeyDown(int keyCode, KeyEvent event) {  
  86.         // TODO Auto-generated method stub   
  87.         switch (keyCode) {  
  88.         case KeyEvent.KEYCODE_DPAD_UP:  
  89.             up=true;  
  90.             break;  
  91.         case KeyEvent.KEYCODE_DPAD_DOWN:  
  92.             down=true;  
  93.             break;  
  94.         case KeyEvent.KEYCODE_DPAD_LEFT:  
  95.             left=true;  
  96.             break;  
  97.         case KeyEvent.KEYCODE_DPAD_RIGHT:  
  98.             right=true;  
  99.             break;  
  100.         default:  
  101.             break;  
  102.         }  
  103.         return super.onKeyDown(keyCode, event);  
  104.     }  
  105.       
  106.     @Override  
  107.     public boolean onKeyUp(int keyCode, KeyEvent event) {  
  108.         // TODO Auto-generated method stub   
  109.         switch (keyCode) {  
  110.         case KeyEvent.KEYCODE_DPAD_UP:  
  111.             up=false;  
  112.             break;  
  113.         case KeyEvent.KEYCODE_DPAD_DOWN:  
  114.             down=false;  
  115.             break;  
  116.         case KeyEvent.KEYCODE_DPAD_LEFT:  
  117.             left=false;  
  118.             break;  
  119.         case KeyEvent.KEYCODE_DPAD_RIGHT:  
  120.             right=false;  
  121.             break;  
  122.         default:  
  123.             break;  
  124.         }  
  125.         return super.onKeyUp(keyCode, event);  
  126.     }  
  127.   
  128.     /* (non-Javadoc) 
  129.      * @see android.app.Activity#onDestroy() 
  130.      */  
  131.     @Override  
  132.     protected void onDestroy() {  
  133.         // TODO Auto-generated method stub   
  134.         Thread.interrupted();  
  135.         super.onDestroy();  
  136.     }  
  137.      
  138. }  

相关内容