Изменение поля макета для каждого сенсорного события - PullRequest
0 голосов
/ 25 июля 2011

Теперь я хочу изменить верхнее поле (на 10 пикселей вниз в каждом событии касания) для img1 в каждом событии касания. Ниже приведен мой код. Я поместил этот код в событие касания своей деятельности.

  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 пикселей

Ответы [ 2 ]

0 голосов
/ 25 июля 2011

Одно замечание: вы объявляете, что ваша переменная "count" равна 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;

        }
0 голосов
/ 25 июля 2011

если для каждого вышеуказанного события касания код выполняется ... локальная переменная "place" будет каждый раз инициализироваться в -300, следовательно, place = place + 10 всегда будет приводить к -290 px, объявите переменную place на уровне класса, напримерВаша переменная счета.Надеюсь, это сработает для вас.

...