2016-12-27 68 views
0

我正在處理我的第一個遊戲應用程序,當用戶觸摸圖像時,應用程序向用戶顯示消息(或在其他情況下執行其他操作)。 我的照片都是非幾何形狀(例如動物照片)以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

嘗試使用這樣的: -

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

試過這種過,但就像我自己的代碼,它看起來像應用程序的反應用戶的點擊是不是100%有什麼預期;有時它認爲100%透明像素不透明,反之亦然。 – Atieh