Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 忽略单击ImageView的透明部分_Android_Imageview - Fatal编程技术网

Android 忽略单击ImageView的透明部分

Android 忽略单击ImageView的透明部分,android,imageview,Android,Imageview,我有两个相互重叠的图像视图,都包含一个带有一些透明部分(PNG)的图像。 当我单击imageView的透明部分时,将为此imageView调用eventListener。我希望仅当单击非透明部分时才调用侦听器! 通过这种方式,可以单击“通过”imageView,并可能调用后面imageView的侦听器。获取imageView并将其与view绑定,将图形缓存设置为enable true 图像视图: ImageView imgView= (ImageView) findViewById(R.id.c

我有两个相互重叠的图像视图,都包含一个带有一些透明部分(PNG)的图像。 当我单击imageView的透明部分时,将为此imageView调用eventListener。我希望仅当单击非透明部分时才调用侦听器!
通过这种方式,可以单击“通过”imageView,并可能调用后面imageView的侦听器。

获取imageView并将其与view绑定,将图形缓存设置为enable true 图像视图:

ImageView imgView= (ImageView) findViewById(R.id.color_blue);
imgView.setDrawingCacheEnabled(true);
imgView.setOnTouchListener(changeColorListener);
private OnTouchListener changeColorListener = new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Bitmap bmp = Bitmap.createBitmap(v.getDrawingCache());
        int color = bmp.getPixel((int) event.getX(), (int) event.getY());
        if (color == Color.TRANSPARENT)
            return false;
        else {
            //click portion without transparent color
            return true;
        }
    }
};
OnTouch Imageview的侦听器:

ImageView imgView= (ImageView) findViewById(R.id.color_blue);
imgView.setDrawingCacheEnabled(true);
imgView.setOnTouchListener(changeColorListener);
private OnTouchListener changeColorListener = new OnTouchListener() {

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Bitmap bmp = Bitmap.createBitmap(v.getDrawingCache());
        int color = bmp.getPixel((int) event.getX(), (int) event.getY());
        if (color == Color.TRANSPARENT)
            return false;
        else {
            //click portion without transparent color
            return true;
        }
    }
};

您能否提供更多信息或一些示例代码:D?请输入您的图像和xml源,目前还没有代码。:)xml非常简单,只在FrameLayout上,里面有两个ImageView。这两个图像视图的宽度和高度都匹配。您还可以考虑图像视图应用于位图的比例矩阵(如果有)来测试原始图像。这有点难,但速度更快。@Leonidos,你能给我详细解释一下吗?或者你能给我举个例子吗?