package com.Aina.Android; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.view.KeyEvent; import android.view.View; public class GameView extends View implements Runnable { private Paint mPaint; private Bitmap mBitqq; private Bitmap mBitDestTop; private int movex = 0; private int DisplayWidth;//屏幕宽带 private int DisplayHeight;//屏幕高度 public GameView(Context context,int DisplayWidth,int DisplayHeight) { super(context); this.DisplayWidth = DisplayWidth; this.DisplayHeight = DisplayHeight; mPaint = new Paint(); mBitqq = ((BitmapDrawable) this.getResources().getDrawable( R.drawable.qq)).getBitmap(); mBitDestTop = ((BitmapDrawable) this.getResources().getDrawable( R.drawable.desktop)).getBitmap(); new Thread(this).start(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.BLACK);// 清屏 canvas.drawBitmap(mBitqq, 0, 0, mPaint); this.DrawImage(canvas, mBitDestTop, movex, mBitqq.getHeight() + 2, mBitDestTop.getWidth(), mBitDestTop.getHeight(), 0,0); } @Override public void run() { while (!Thread.interrupted()) { try { Thread.sleep(100); } catch (Exception ex) { ex.printStackTrace(); Thread.currentThread().interrupt(); } this.postInvalidate(); } } /** * x:屏幕上的x坐标 y:屏幕上的y坐标 w:要绘制的图片的宽度 h:要绘制的图片的高度 bx:图片上的x坐标 by:图片上的y坐标 * * @param canvas * @param mBitmap * @param x * @param y * @param w * @param h * @param bx * @param by */ public void DrawImage(Canvas canvas, Bitmap mBitmap, int x, int y, int w, int h, int bx, int by) { Rect src = new Rect();// 图片裁剪区域 Rect dst = new Rect();// 屏幕裁剪区域 src.left = bx; src.top = by; src.right = bx + w; src.bottom = by + h; dst.left = x; dst.top = y; dst.right = x + w; dst.bottom = y + h; canvas.drawBitmap(mBitmap, src, dst, mPaint); src = null; dst = null; } public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) { if (this.movex > 0) { this.movex -= 5; } } else if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) { if (this.movex + this.mBitDestTop.getWidth() < this.DisplayWidth) { this.movex += 5; } } return super.onKeyDown(keyCode, event); } }package com.Aina.Android;
import android.app.Activity; import android.os.Bundle; import android.util.DisplayMetrics; import android.view.KeyEvent; public class Test_DrawBitmap extends Activity { /** Called when the activity is first created. */ private GameView gv = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); DisplayMetrics dm = new DisplayMetrics(); this.getWindowManager().getDefaultDisplay().getMetrics(dm); gv = new GameView(this,dm.widthPixels,dm.heightPixels); setContentView(gv); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { return gv.onKeyDown(keyCode, event); } }