すべてのタッチイベントのレイアウトマージンを変更します
-
25-10-2019 - |
質問
今度は、すべてのタッチイベントで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++;
これで、マージンは、すべてのタッチイベントではなく、1回のタッチイベントでのみ変更されます。
だから私はユーザーのすべてのタッチが10 pxでダウンする必要があることを望んでいます
解決
上記のすべてのタッチイベントでコードが実行される場合...ローカル「場所」変数は毎回-300に初期化されます。 。これはあなたのために働くことを願っています。
他のヒント
ここでの1つの注意事項は、なぜタッチイベントが発射するたびに「カウント」変数が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;
}
所属していません StackOverflow