2016-11-01 5 views
0

リストにアニメーション化されたDrawableオブジェクト(画像)がいくつかあります。 すべてのオブジェクトにonClickListener(またはそのようなもの)を作成して、画面から消えるようにします。 私は、Drawableオブジェクトは非インタラクティブな要素だと読んだことがあります。AndroidのDrawableオブジェクトにonClickListenerを追加する方法は?

この場合、コードをどのように変更する必要がありますか? http://pastebin.com/jNzi3qux

+0

すべての 'Drawable'をループし、それらの座標を' MotionEvent'の座標と照合します。かなりシンプルでなければならない。 –

+0

私はあなたの問題を参照してください。別のクラスを使用して、各スノーフレークを追跡してください。そうすれば、動きを追跡するのがより簡単になります。また、 'Drawable'の代わりに' Bitmap'を使うと、キャンバスを翻訳する必要がなくなります。 –

答えて

0

タッチポイントに対して各スノーフレークの境界をテストするだけで済みます。あなたが持っている雪片の数によっては、遅くなることがあります。その場合は、クワッドまたはkdの木を調べたいかもしれません。https://en.wikipedia.org/wiki/K-d_treeしかしそれはもう少し進んでいます。

@Override 
    public boolean onTouchEvent(MotionEvent event) { 
     for (int i = 0; i < snow_flake_count; i++) { 
      Drawable snowflake = drawables.get(i); 
      if(snowflake.getBounds().contains(event.getX(), event.getY()) 
      { 
       //Do whatever you need to do 
      } 
     } 
     return super.onTouchEvent(event); 
    } 
関連する問題