質問

今度は、すべてのタッチイベントで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;

        }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top