歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 響應鍵盤移動圖標

Android 響應鍵盤移動圖標

日期:2017/3/1 11:07:30   编辑:Linux編程

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