public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); } class MyView extends View{ //背景图片的实际高度 final int BACK_HEIGHT = 1700; //背景图片 private Bitmap back; //飞机图片 private Bitmap plane; //显示图片的宽度和高度 final int WIDTH = 640; final int HEIGHT = 880; private Matrix matrix = new Matrix(); //背景图片的开始位置 int startY = BACK_HEIGHT - HEIGHT; //820 public MyView(Context context) { super(context); back = BitmapFactory.decodeResource(context.getResources() , R.drawable.back_img); //窗口管理器 WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); DisplayMetrics metrics = new DisplayMetrics(); display.getMetrics(metrics); // float screenwidth = metrics.widthPixels; float screenhight = metrics.heightPixels; float scale = screenwidth/WIDTH; //显示图片的缩放比例 float scale2 = screenhight/HEIGHT; matrix.setScale(scale , scale2); //将显示的图片缩放到屏幕大小 plane = BitmapFactory.decodeResource(context.getResources() , R.drawable.plane); final Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 1){ if (startY <= 3){ startY = BACK_HEIGHT - HEIGHT; } else { startY -= 3; } } invalidate(); } }; new Timer().schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(1); //每0.1秒刷新 } } , 0 , 100); } @Override protected void onDraw(Canvas canvas) { Bitmap bitmap2 = Bitmap.createBitmap(back , 0 , startY , WIDTH , HEIGHT , matrix , false); canvas.drawBitmap(bitmap2 , 0 , 0 ,null); //绘制显示的背景 canvas.drawBitmap(plane , 320 , 700 , null); //绘制飞机 } } }
效果: