android游戏开发一:背景图片的移动

来源:互联网 发布:铭牌制作软件 编辑:程序博客网 时间:2024/05/30 05:00

此demo实现屏幕的原理就不每过100毫秒就刷新背景图片显示坐标。

代码如下:

import java.util.Random;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.os.Bundle;import android.util.DisplayMetrics;import android.util.Log;import android.view.View;import android.view.Window;import android.view.WindowManager;public class MainActivity extends Activity {DisplayMetrics metric;float width = 0;float height = 0;private float startX = 0;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//全屏显示requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);metric = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric);width = metric.widthPixels;     // 屏幕宽度(像素)height = metric.heightPixels;   // 屏幕高度(像素)setContentView(new XueshanMap(MainActivity.this));}public class XueshanMap extends View implements Runnable{/**背景图片**/private Bitmap bitmap = null;/**贴图**/private Bitmap bit2 = null;/**计数器**/public int count = 0;float miDTX = 0; // 代表图片左边的横坐标 用来左右移动图片float miDTY = 280; // 代表图片左边的横坐标 用来左右移动图片private float moveX = 0;public XueshanMap(Context context) {super(context);/**获取背景图片**/bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.xueshan);/**获取贴图**/bit2 = BitmapFactory.decodeResource(context.getResources(), R.drawable.frozen1);//startX = bitmap.getWidth() - width;new Thread(this).start(); }@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas);bitmap.getHeight();/**创建背景图片并声明图片的长宽**/Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0                  , bitmap.getWidth() , bitmap.getHeight());/**计数**/count++;/**每次移动位置**/moveX = 0-count*5;Random random1 = new Random();Random random2 = new Random();/**贴图随机屏幕X位置**/int x = random1.nextInt(100);/**贴图随机屏幕Y位置**/int y = random2.nextInt(100);/**绘制显示的背景图片坐标**/canvas.drawBitmap(bitmap2, moveX, 0, null);/**绘制显示的贴图坐标**/canvas.drawBitmap(bit2, x , y  , null);}public void run() {// TODO Auto-generated method stubwhile (true) {/**刷新**/                postInvalidate();                Log.v("MYView HHH", String.valueOf(startX));                try {                    Thread.sleep(100);                } catch (InterruptedException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }            }}}}