2012-01-21 11 views
4

私はAndroidでTranslateAnimationを使用してプロジェクトを行っています。私は画像を正常に翻訳していますが、画像にonClickListenerを追加する必要があります。つまり、翻訳中に画像をクリックして値を取得したが、画像にonClickアクションが表示されていることを意味します。TranslateAnimationのOnClickListener

私は、次のコードを使用しています:

public class SampleGame extends Activity implements OnClickListener { 

    int x10, x20, y10, y20; 

    ImageView img; 

    Button animation; 
    Handler transHandler; 
    RelativeLayout layout; 
    Random rand; 
    int mSpeedX, mSpeedY; 
    int width, height; 
    Thread thread; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     layout = (RelativeLayout) findViewById(R.id.layout); 
     animation = (Button) findViewById(R.id.animation); 

     animation.setOnClickListener(this); 

     rand = new Random(); 

     width = getWindow().getWindowManager().getDefaultDisplay().getWidth() - 20; 
     height = getWindow().getWindowManager().getDefaultDisplay().getHeight() - 70; 

     x10 = width - rand.nextInt(width); 
     y10 = height; 

     x20 = width; 
     y20 = height - rand.nextInt(height); 

     thread = new Thread(); 

     img.setOnClickListener(this); 

    } 

    public void onPause() { 
     super.onPause(); 
     thread = null; 
    } 

    @Override 
    public void onClick(View v) { 

     if (v.equals(img)) { 
      Log.e("img clicked :", "yaaaaaaaaa"); 
     } 

     if (v.equals(animation)) { 
      animation.setVisibility(View.INVISIBLE); 
      callTransform(); 
     } 
    } 

    public void callTransform() { 
     if (thread != null) { 
      thread = new Thread() { 
       public void run() { 

// Log.e("X1 value  :",String.valueOf(x10));  
// Log.e("X2 value  :",String.valueOf(x20));  
// Log.e("Y1 value  :",String.valueOf(y10));  
// Log.e("Y2 value  :",String.valueOf(y20));  

        transformAnimation(x10, x20, y10, y20, img, 4000); 

        try { 
         Thread.sleep(4000); 
        } catch (Exception e) { 
        } 
// Message msg=transHandler.obtainMessage(); 
// transHandler.sendMessage(msg); 
        x10 = x20; 
        y10 = y20; 

        if (x10 == width) { 
         x20 = width - rand.nextInt(width); 
         y20 = 0; 
        } else if (y10 == 0) { 
         x20 = 0; 
         y20 = height - rand.nextInt(height); 
        } else if (x10 == 0) { 
         x20 = width - rand.nextInt(width); 
         y20 = height; 
        } else if (y10 == height) { 
         x20 = width; 
         y20 = height - rand.nextInt(height); 
        } 

        callTransform(); 
       } 
      }; 
      thread.start(); 
     } 
    } 


    public void transformAnimation(int xFrom, int xTo, int yFrom, int yTo, final ImageView image, int time) { 
     TranslateAnimation anim = new TranslateAnimation(xFrom, xTo, yFrom, yTo); 
     anim.setDuration(time); 
     image.setAnimation(anim); 
    } 

} 

をし、私はまた、次の例を試してみました - 2D-Tutorial Exampleを。

しかし、これも画像のonClickアクションはありませんでした。

翻訳中に画像上でonClickアクションを取得するにはどうすればよいですか?

または

クリックアクション上で画像を変換するための他の方法はありますか?

ありがとうございました。

答えて

0

アニメーション中にオブジェクトは元の位置にとどまりますが、アニメーション中にレイアウトパラメータを手動で更新する必要があるため、アニメーションが翻訳されます