如何在android中创建一个可点击的不规则形状区域?

时间:2017-06-09 19:52:33

标签: android android-layout android-custom-view shape android-vectordrawable

我想在无法填充矩形空间的透明云图像下显示可点击图像。 enter image description here

使用ImageView并点击对象(点击图片)时,点击云端。

最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

采用RelativeLayout并将最前面的图像作为RelativeLayout的最后一个元素,按Z顺序堆叠图像。

然后你可以做的是获取所有图像的onClickListener,并在云图像中不执行任何操作,并将onClick的主体保持为空。

虽然您可以为要执行操作的图像提供正确的onClick。

希望这有帮助

  For Each rowA In tblA
    For Each rowB In tblB
      If rowA!Field3 = rowB!FieldW Then
        If rowA!Field4 = rowB!FieldX Or rowA!Field4 = rowB!FieldY Or rowA!Field4 = rowB!FieldZ Then
          rowA!Field5 = rowB!FieldV
          rowA.Update
        End If
      End If
    Next
  Next

答案 1 :(得分:1)

我可以看到你的矩形有自定义颜色,所以我们可以利用这种状态,对于 ex:,使用onTouch()我们只能点击颜色。

   public boolean onTouch (View v, MotionEvent ev) 
{

    final int action = ev.getAction();

    final int evX = (int) ev.getX();
    final int evY = (int) ev.getY();

    switch (action) {
        case MotionEvent.ACTION_DOWN :
           break;
        case MotionEvent.ACTION_UP :
           ImageView img = (ImageView) findViewById (YOUR_IMG_DRAWABLE);
           img.setDrawingCacheEnabled(true); 
           Bitmap imgbmp = Bitmap.createBitmap(img.getDrawingCache()); 
           img.setDrawingCacheEnabled(false);
           int pxl = imgbmp.getPixel(evX, evY);
           int redComponent = Color.red(pxl);
           int greenComponent = Color.green(pxl);
           int blueComponent = Color.blue(pxl);

           //using color here 

          if(pxl == Color.MAGENTA){
          //do what you want
           } 

           break;
    }

}