2011-07-25 9 views
0

今、すべてのタッチイベントでimg1の上マージン(タッチイベントごとに10ピクセル下)を変更したいと思います。下は自分のコードです。私はこのコードを私のtouchイベントに入れましたアクティビティ。タッチイベントごとにレイアウトマージンを変更する

public static int count=0; 

     int place=-300; 
       System.out.println("Count is:"+count); 
       if(count>0) 
       { 
        LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
        lp.setMargins(0, place, 0, 0); 
         ImageView imageView=(ImageView)findViewById(R.id.img1); 
        // MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams()); 
         //marginLayoutParams.setMargins(0, 500, 0, 0); 
         imageView.setLayoutParams(lp); 
         place=place+10; 

       } 
    count++; 

ここで、マージンは、タッチイベントごとにではなく、ワンタッチイベントでのみ変更されます。

だから私は、コード上で、すべてのタッチイベントが実行のためならば...地元の「場所」変数を、画像が10ピクセル

答えて

0

で降りてくる必要があるユーザーのすべてのタッチが故に、-300にするたびに初期化されることを望みますplace = place + 10は常に-290 pxになります。count変数のように、クラス変数にplace変数を宣言してください。希望、これはあなたのために動作します。

+0

thanxこの仕事........ –

0

ここでは、タッチイベントが発生するたびに「カウント」変数が0になると宣言しています。その理由は、なぜ増加しないのか不思議でした。

ここで効果的にやっていることは、すべてのタッチイベントで新しいImageViewを作成することです。そのオブジェクトで一貫して作業したい場合は、同じImageViewを参照する必要があります。そのオブジェクトを使用したいときはいつでも宣言する必要はありません。

ことはあなたのActivityクラスのトップでそれを宣言してみてください。

public ImageView imageView; 

次に、あなたがあなたのonCreateメソッドでそれをインスタンス化することができます

imageView=(ImageView)findViewById(R.id.img1); 

そして、あなたのタッチイベントにそれに取り組むことができます毎回それを宣言することなく、

if(count>0) 
     { 
      LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT); 
      lp.setMargins(0, place, 0, 0); 
      // MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams()); 
       //marginLayoutParams.setMargins(0, 500, 0, 0); 
       imageView.setLayoutParams(lp); // Note how we havent declared it above. 
       place=place+10; 

     } 
関連する問題