移动的游戏背景的简单实现
public class MainActivity extends AppCompatActivity {@Overrideprotected 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; //820public 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(){@Overridepublic void handleMessage(Message msg) {if (msg.what == 1){if (startY <= 3){startY = BACK_HEIGHT - HEIGHT;} else {startY -= 3;}}invalidate();}};new Timer().schedule(new TimerTask() {@Overridepublic void run() {handler.sendEmptyMessage(1); //每0.1秒刷新}} , 0 , 100);}@Overrideprotected 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); //绘制飞机}}}
效果:
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
