Как предотвратить метод onClick на прозрачной части PNG-загруженного ImageView

В настоящее время я разрабатываю приложение для Android, которое отображает несколько изображений (какImageView's) накладываются друг на друга. Вот как слои в настоящее время настроены:

Фоновый слой: масштабирует весь экран, должен быть активнымСлой переднего плана: масштабирует весь экран, должен быть интерактивным, содержит прозрачность, которая позволяет пользователю видеть некоторые фоновые слои

Проблема, с которой я сталкиваюсь, связана со слоем переднего плана. Я назначаюonClick() метод для imageview, но метод вызывается независимо от того, попадают ли они в ту часть изображения, которая видна, а также в ту часть, которая содержит прозрачность. Я хочу только передний план ImageViewonClick() метод, который вызывается, когда пользователь щелкает непрозрачную часть изображения.

Вот как выглядит сценарий:

Диагональные линии представляют прозрачную часть изображения переднего плана. Если пользователь касается этого пространства, я хочу, чтобы оно получило доступ к фоновому изображению вместо изображения переднего плана. Спасибо за любую помощь, которую вы можете предоставить.

Вот решение, которое я реализовал (благодаря ответу ниже):

//ontouchlistener - gets X and Y from event
private void setClick(View view)
{
    view.setOnTouchListener(new View.OnTouchListener() 
    {
        public boolean onTouch(View v, MotionEvent event) 
        {
            int imageId = getImageId((int)event.getX(), (int)event.getY());
            if (imageId >= 0)
                performActions(imageId);
            return false;
        }
    });
}

//get the ID of the first imageview (starting from foreground, 
//working backwards) which contains a non-transparent pixel
private int getImageId(int x, int y)
{
    ViewGroup parent = (ViewGroup) findViewById(R.id.relative_layout);
    for (int a = parent.getChildCount()-1; a >= 0; a--)
    {
        if (parent.getChildAt(a) instanceof ImageView)
            if (!checkPixelTransparent((ImageView)parent.getChildAt(a), x, y))
                return parent.getChildAt(a).getId();
    }
    return -1;
}

//get bitmap from imageview, get pixel from x, y coord
//check if pixel is transparent
private boolean checkPixelTransparent(ImageView iv, int x, int y)
{
    Bitmap bitmap = ((BitmapDrawable) iv.getDrawable()).getBitmap();
    if (Color.alpha(bitmap.getPixel(x, y)) == 0)
        return true;
    else
        return false;
}

Ответы на вопрос(2)

Ваш ответ на вопрос