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