2011-07-25 23 views
0

現在我想在每個觸摸事件中更改img1的頂部邊距(每個觸摸事件下降10 px)。下面是我的代碼。我已將此代碼放入我的觸摸事件中活動。更改每個觸摸事件中的佈局邊距

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 PX

回答

0

如果上面的代碼中每一個觸摸事件執行......地方「地方」變量將每次初始化爲-300,因此place = place + 10總是會導致-290 px,請在類級別聲明位置變量,如count變量。希望,這會對你有用。

+0

thanx這個工作........ –

0

這裏有一點需要注意,每次觸摸事件觸發時,您都會聲明「count」變量爲0,以免您想知道爲什麼它不會增加。

你在這裏有效地做的是在每個觸摸事件中創建一個新的ImageView。如果你想持續處理那個對象,你應該引用相同的ImageView,而不是每當你想對它做些什麼時都聲明它。

嘗試在活動類的頂部聲明它:

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; 

     }