2016-09-28 40 views
0

我有一個預切圖像,即一個基本圖像和基本圖像的多個透明圖層。 我想在基本圖像上添加圖層圖像以選擇圖層並在其上應用不同的顏色。混合圖層圖像上的觸摸事件Android

我試過以下方法來實現它,但無法完成。

  1. ImageView - 我與透明圖像的圖像重疊。它顯示混合圖像,但觸摸事件始終檢測最終重疊的圖像ID。因爲我使用填充父圖像繪製圖像,所有圖層圖像也是一樣的

  2. 圖層可繪製 - 它只允許繪製圖像,但我的用例是從圖庫或其他資源加載預切。即使我無法選擇觸摸圖層。

  3. GPUImage library - 圖像未顯示完整的imageview。

問候 Sathiya

回答

0

擴展視圖類,使的onDraw()函數畫你想畫什麼。 onTouchEvent()函數實現觸摸事件。你試圖做的事情並不包含在已經制作的任何視圖中,但是很容易做出看法。只需使用正確的透明度,以正確的順序在畫布上繪製位圖即可。

@Override 
     protected void onDraw(Canvas canvas) { 
int numLayers = mLayers.size(); 
     for (int i = 0; i < numLayers; i++) { 
      canvas.save(); 
      canvas.concat(matrix); 
      //or 
      canvas.translate(rect.left,rect.top); 
      Bitmap b = mLayers.get(i); 
      canvas.drawBitmap(b, paint); 
      canvas.restore(); 
     }} 

你最終做了這樣的事情,只需在需要的地方添加位圖到畫布上。

+0

你可以分享一些示例代碼。我嘗試過LayeredImageView,但無法獲取動態圖像視圖ID。 – user2508399

+0

這只是繪製應用多次的位圖的代碼。你可以循環它或者只是套用一些數字。只需將這些東西應用到畫布上。 canvas.drawBitmap(位圖,繪畫)併爲相關位置中的每個相關位圖執行此操作。 – Tatarize

+0

@Override 保護無效onDraw(畫布畫布){ super.onDraw(canvas);矩陣矩陣= getImageMatrix();如果(矩陣!=空){ int numLayers = mLayers.size();對於(int i = 0; i user2508399