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

此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;
	@Override
	public 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(); 
		}

		@Override
		protected void onDraw(Canvas canvas) {
			// TODO Auto-generated method stub
			super.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 stub
			while (true) {
				/**刷新**/
                postInvalidate();
                Log.v("MYView HHH", String.valueOf(startX));
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
		}
	}
}



你可能感兴趣的:(android游戏开发)