Изменить маржу макета на каждом туристическом мероприятии
-
25-10-2019 - |
Вопрос
Теперь я хочу изменить верхний край (10 PX вниз в каждом событии Touch) IMG1 в каждом событии Touch. Пока - мой код. Я поместил этот код в событие 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++;
Теперь маржа изменяется только в одном событии Touch, а не на каждом событии Touch.
Поэтому я хочу, чтобы каждое прикосновение пользователя изображение было на 10 пк
Решение
Если для каждого события сенсорного события, выше, выполняется ... локальная переменная «места» будет инициализироваться до -300 каждый раз, следовательно, место = место + 10 всегда будет результатом -290 px, пожалуйста, объявите переменную место на уровне класса, например, ваш счет Анкет Надеюсь, это сработает для вас.
Другие советы
Одна записка здесь, вы заявляете, что ваша переменная «счета» составляет 0 каждый раз, когда вы запускаете событие Touch, если вам интересно, почему это не увеличивается.
То, что вы фактически делаете здесь, - это создание нового ImageView в каждом событии Touch. Вам следует обратиться к одному и тому же изображению, если вы хотите постоянно работать над этим объектом, а не объявлять его каждый раз, когда вы хотите что -то с ним делать.
Попробуйте объявить это в верхней части вашего класса активности:
public ImageView imageView;
Затем вы можете создать его в своем методе Oncreate:
imageView=(ImageView)findViewById(R.id.img1);
И тогда вы можете поработать над этим в своем событии Touch, не объявляя его каждый раз:
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;
}