我目前正在开发一个Android应用程序,它可以显示多个图像(如ImageView's)堆叠在一起.以下是当前配置图层的方式:
我面临的问题是前景层.我正在将该onClick()方法分配给imageview,但是调用该方法是否它们是否可以看到可见的图像部分以及包含透明度的部分.我只希望在onClick()用户单击该图像视图的一部分不透明时调用前景ImageView 方法.
这是场景的样子:

对角线表示前景图像的透明部分.如果用户触摸此空间,我希望它访问背景图像而不是前景图像.感谢您提供的任何帮助.
这是我实施的解决方案(感谢下面的回答):
//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) …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个讲述故事的应用程序.故事包含"场景",其中包含通过ImageViews显示的多个JPEG和PNG文件.我创建了ImageView并通过以下函数将其添加到布局中:
private ImageView newImage(Show show)
{
ImageView iv = new ImageView(this);
String filePath = comin.generateFilePath(show);
Log.i(TAG, "newImage, filePath = " + filePath + " id = " + show.id);
WeakReference<Bitmap> bmp = new WeakReference<Bitmap>(scaleBitmap(filePath)); //added 4/1/13
//Bitmap bmp = scaleBitmap(filePath);
Log.i(TAG, "newImage, width = " + bmp.get().getWidth() + ", height = " + bmp.get().getHeight());
iv.setImageBitmap(bmp.get());
iv.setScaleType(ImageView.ScaleType.FIT_XY);
iv.setId(show.id);
//set visibility
if (show.visible)
iv.setVisibility(View.VISIBLE);
else
iv.setVisibility(View.INVISIBLE);
//set dimensions
int width = (app.getWidth() * show.dimX) / 100;
int height = (app.getHeight() * show.dimY) …Run Code Online (Sandbox Code Playgroud)