Android Bitmap移动游戏背景
16lz
2021-01-23
本文内容摘自《疯狂Android 讲义第3版》
package shortcut.song.com.myapplication;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.AttributeSet;import android.util.DisplayMetrics;import android.view.Display;import android.view.View;import android.view.WindowManager;import java.util.Timer;import java.util.TimerTask;public class MoveBack extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MoveBackView(this, null)); } class MoveBackView extends View{ //背景图的实际高度 final int BACK_HEIGHT = 1700; //背景图片Bitmap private Bitmap back; private Bitmap plane; //定义图片的宽高 final int WIDTH = 320; //640 final int HEIGHT = 320; //880 private Matrix matrix = new Matrix(); private int startY = BACK_HEIGHT - HEIGHT; public MoveBackView(Context context, AttributeSet set) { super(context, set); back = BitmapFactory.decodeResource(context.getResources(), R.drawable.back_img); //获取窗口管理器 WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); DisplayMetrics displayMetrics = new DisplayMetrics(); display.getMetrics(displayMetrics); //获得屏幕宽度 float screenWidth = displayMetrics.widthPixels; //获得图片缩放比例 float scale = screenWidth / WIDTH; matrix.setScale(scale, scale); plane = BitmapFactory.decodeResource(context.getResources(), R.drawable.plane); final Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what == 0x123) { if (startY <= 3) { startY = BACK_HEIGHT - HEIGHT; } else { startY -= 3; } } invalidate(); } }; new Timer().schedule(new TimerTask() { @Override public void run() { handler.sendEmptyMessage(0x123); } }, 0, 100); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Bitmap bitmap2 = Bitmap.createBitmap(back, 0, startY, WIDTH, HEIGHT, matrix, false); //绘制新位图 canvas.drawBitmap(bitmap2, 0, 0, null); //绘制飞机 canvas.drawBitmap(plane, 320, 400, null); } }}
运行效果:
更多相关文章
- android图片转换代码
- Android 异步从网络上下载图片
- android设置背景图片透明
- Android上传下载文件(图片)
- 安卓隐藏标题栏状态栏 ,实现全屏效果
- android界面模糊到清晰,效果去除
- Android毛玻璃效果
- mono for android 读取网络远程图片
- android 将图片转换成黑白图片