2016-12-27 11 views
0

私は最初のゲームアプリで作業しています。ユーザーが画像に触れると、アプリはユーザーにメッセージを表示します(または他の状況では他のことも行います)。 私の写真は100%透明な背景画像ビューの不透明部分に触れるイベントを処理する

like this

(私はフォトショップを使用してPNG形式でそれらを救った。)

で(例えば動物の写真のための)非幾何学的形状です私の問題は、私は必要だということですそれは反応する(そして、メッセージを表示する...)動物の形自体(イメージビューの透明な背景/コーナーではない)がユーザーによってタッチされたとき。

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

試してください: - 期待したもの100%

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

があまりにもこれを試してみましたが、ちょうど私自身のコードのように、それはユーザーのクリックにアプリの反応のように見えるではありません。 100%の透過ピクセルが不透明であると見なしたり、その逆の場合もあります。 – Atieh

関連する問題