Android拖動圖片及多層圖片疊加

來源:互聯網
上載者:User

標籤:

移動前:

 

移動後:

 

代碼:

1     // 兩個用來疊加的圖片2     ImageView mIv;3     ImageView mIv2;4     // 顯示繪製後的映像5     ImageView mImageView;6     Canvas    canvas;7     8     int lastX, lastY;
 1     @Override 2     protected void onCreate(Bundle savedInstanceState) { 3         super.onCreate(savedInstanceState); 4         setContentView(R.layout.main); 5  6         mImageView = (ImageView) findViewById(R.id.conta); 7         mImageView.setImageResource(R.drawable.a); 8         mImageView.setDrawingCacheEnabled(true);// 啟用緩衝 9          10         mIv2 = (ImageView) findViewById(R.id.img2);11         mIv2.setDrawingCacheEnabled(true);12         mIv2.setOnTouchListener(this);  13         14         mIv = (ImageView) findViewById(R.id.img);15         mIv.setDrawingCacheEnabled(true);16         mIv.setOnTouchListener(this);   17     }

以下是移動的關鍵代碼

 1     @Override 2     public boolean onTouch(View v, MotionEvent event) { 3  4         switch (event.getAction()) { 5  6         case MotionEvent.ACTION_DOWN: 7             lastX = (int) event.getRawX(); 8             lastY = (int) event.getRawY(); 9 10             break;11         case MotionEvent.ACTION_MOVE:12 13             int dx = (int) event.getRawX() - lastX;14             int dy = (int) event.getRawY() - lastY;15 16             int left = v.getLeft() + dx;17             int top = v.getTop() + dy;18             int right = v.getRight() + dx;19             int bottom = v.getBottom() + dy;20 21           22              Log.i("life", " left = " + left + "  v.getLeft=" + v.getLeft() + " ; event.getRawX = " 
    + event.getRawX() + " ; lastX = " + lastX + " dx = " + dx);26 27 v.layout(left, top, right, bottom);28 29 lastX = (int) event.getRawX();30 lastY = (int) event.getRawY();31 32 break;33 case MotionEvent.ACTION_UP:34 35 break;36 }37 38 return true;39 }

save按鈕的事件處理

 1     @SuppressLint("NewApi") 2     public void save(View view) { 3         // 儲存疊加的圖片 4         Bitmap bitmap = mImageView.getDrawingCache(); 5         if (canvas == null) { 6             canvas = new Canvas(bitmap); 7         } 8         // 根據兩個機器人的位置繪製 9         canvas.drawBitmap(mIv.getDrawingCache(), mIv.getLeft(),mIv.getTop(), null);10         canvas.drawBitmap(mIv2.getDrawingCache(), mIv2.getLeft(),mIv2.getTop(), null);11         12         // 顯示在介面上13         mImageView.setImageBitmap(bitmap);14         15         // 儲存至本地16         File f = new File(getCacheDir().getAbsolutePath() + "/"17                 + SystemClock.currentThreadTimeMillis() + "img.jpg");18         try {19             saveMyBitmap(f, bitmap);20         } catch (IOException e) {21             e.printStackTrace();22         }23         24         // 將兩個機器人設定不可見25         mIv.setVisibility(View.GONE);26         mIv2.setVisibility(View.GONE);27     }

 

源碼下載

 

Android拖動圖片及多層圖片疊加

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.