2016-09-28 70 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