android底圖局部載入移動

來源:互聯網
上載者:User

public class MapMgr {    public static MapMgr mapMgr = null;    private int map_num = 28;    private int b_x = 0;    private int b_y = 0;    private int width = 0;    private int height = 0;    private Bitmap bmpView = null;    //create by danielinbiti,前提,你圖片確實比螢幕大,如果不比螢幕大,下面注釋行修改一下即可。    public static void init(int width,int height){    if(mapMgr==null){    mapMgr = new MapMgr(width,height);    }    }    public static MapMgr getInstance(){    return mapMgr;    }    public MapMgr(int width,int height){    this.width = width;    this.height = height;    Bitmap bmp = PicMgr.getInstance().getBackGroundBitmap();    b_x = (bmp.getWidth()-width)/2;//保證圖片比螢幕大    b_y = (bmp.getHeight()-height)/2;    bmpView = Bitmap.createBitmap(bmp, b_x, b_y, width, height);    }    public void logic(){            }    public void mapDown(){    Bitmap bmp = PicMgr.getInstance().getBackGroundBitmap();    if(b_y+height<bmp.getHeight()){    b_y = b_y + bmp.getHeight()/map_num;    if(b_y+height>bmp.getHeight()){    b_y = bmp.getHeight() - height;    }    }    bmpView = Bitmap.createBitmap(bmp, b_x, b_y, width, height);    }    public void mapUp(){    Bitmap bmp = PicMgr.getInstance().getBackGroundBitmap();    if(b_y>0){    b_y = b_y - bmp.getHeight()/map_num;    if(b_y<0){    b_y = 0;    }    }    bmpView = Bitmap.createBitmap(bmp, b_x, b_y, width, height);    }    public void mapLeft(){    Bitmap bmp = PicMgr.getInstance().getBackGroundBitmap();    if(b_x>0){    b_x = b_x - bmp.getWidth()/map_num;    if(b_x<0){    b_x = 0;    }    }    bmpView = Bitmap.createBitmap(bmp, b_x, b_y, width, height);    }    public void mapRight(){    Bitmap bmp = PicMgr.getInstance().getBackGroundBitmap();    if(b_x+width<bmp.getWidth()){    b_x = b_x + bmp.getWidth()/map_num;    if(b_x+width>bmp.getWidth()){    b_x = bmp.getHeight() - width;    }    }    bmpView = Bitmap.createBitmap(bmp, b_x, b_y, width, height);    }    public void draw(Canvas canvas){    Paint paint = new Paint();    if(bmpView!=null){    canvas.drawBitmap(bmpView,0, 0, paint);    }    }}

調用

public void onKeyDownDeal(int keyCode){if(keyCode==KeyEvent.KEYCODE_DPAD_UP){MapMgr.getInstance().mapUp();    }else if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN){    MapMgr.getInstance().mapDown();    }else if(keyCode==KeyEvent.KEYCODE_DPAD_LEFT){    MapMgr.getInstance().mapLeft();    }else if(keyCode==KeyEvent.KEYCODE_DPAD_RIGHT){    MapMgr.getInstance().mapRight();    }}

然後使用線程調用draw重新整理即可。

對於觸摸移動只是座標計算方式不同,其它都類似。另外擴充到GIS等,可以根據小圖片粘貼實現局部載入內容。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.