移动的游戏背景的简单实现

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); //绘制飞机
        }
    }





}

效果:




猜你喜欢

转载自blog.csdn.net/qq_38261174/article/details/80038304