处理触摸imageview的非透明部分的事件

时间:2016-12-27 17:56:14

标签: android transparency

我正在开发我的第一个游戏应用程序,当用户触摸图像时,应用程序向用户显示消息(或在其他情况下执行其他操作)。 我的照片是非几何形状(例如动物照片),背景为100%透明

like this

(我使用Photoshop并以PNG格式保存。)

我的问题是,当用户触摸动物形状本身(不是imageview的透明背景/角落)时,我需要它作出反应(并显示消息,......)

我使用this question中提供的解决方案来确定触摸的像素是否透明,但它不能按照我需要的方式工作。这是MainActivity.java中我的onCreate()方法的一部分:

tempIV=(ImageView)findViewById(R.id.birdIV);
final Bitmap bitmap = (BitmapDrawable)tempIV.getDrawable()).getBitmap();
tempIV.setOnTouchListener(new View.OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event){
        int x = (int)event.getX();
        int y = (int)event.getY();
        int transparency = bitmap.getPixel(x,y);
        if (transparency == 0)
             { //Do nothing
              return false;}
        else {
                Toast.makeText(MainActivity.this,
                        "This is an animal!", Toast.LENGTH_LONG).show();
              }
            return true;
    }
  });

我该怎么办?

1 个答案:

答案 0 :(得分:1)

尝试使用: -

if (bitmap.getPixel(x, y) == Color.TRANSPARENT)
{
    return false; //don't react
}
else
{
    return true; //do something like intent
}