本文内容摘自《疯狂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 Bitmap移动游戏背景_第1张图片

更多相关文章

  1. android图片转换代码
  2. Android 异步从网络上下载图片
  3. android设置背景图片透明
  4. Android上传下载文件(图片)
  5. 安卓隐藏标题栏状态栏 ,实现全屏效果
  6. android界面模糊到清晰,效果去除
  7. Android毛玻璃效果
  8. mono for android 读取网络远程图片
  9. android 将图片转换成黑白图片

随机推荐

  1. Android技术架构演进
  2. 基于Eclipse的Android开发(一)——创建第一
  3. Android操作Excel文件的功能实现
  4. Android开发中的drawable文件:shape、laye
  5. Android设备扫描机制详解
  6. Android(安卓)Handler Looper Message工
  7. android键盘隐藏
  8. 如何在android 中编译alsa-utils工具
  9. Android(安卓)Alarm驱动源代码分析(Alarm.
  10. Android(安卓)USB配件模式