Время выполнения, изменяющее положение изображения - PullRequest
0 голосов
/ 18 сентября 2011

Я создаю приложение, в котором я хочу изменить положение своего изображения (изображения) во время выполнения. Я не могу это сделать. Я использую Linear Layout. Пожалуйста, кто-нибудь может дать мне конкретный код для этого.

Я пробовал следующий код (из stackoverflow), но не работает:

ImageView leaf = (ImageView)findViewById(R.id.imageView1);

LayoutParams par = leaf.getLayoutParams();
par.leftMargin += 30;

leaf.setLayoutParams(par);

Не было метода с именем setLayoutParams ()

Ответы [ 5 ]

1 голос
/ 26 марта 2012

Если вы ДОЛЖНЫ использовать Absolute (а вам не следует), и вы ДОЛЖНЫ перемещать что-либо во время выполнения, вы можете просто создать второй ImageView и выбрать в коде, какой из них использовать:

У меня был маленький мультипликационный персонаж, который все время должен был находиться внизу экрана - одна из его анимаций выпрыгивала из меню (это выглядело глупо на устройствах, где его не было рядом). ).

Код выбирает, какой ImageView использовать, в зависимости от разрешения экрана, возвращаемого устройством. Это не элегантно, но работает, и если вы уделяете внимание именам и т. Д., Это должно быть безопасно.

* ПРИМЕЧАНИЕ. В моих тестах до сих пор, пока каждый ImageView не был инициализирован в xml с изображением 'src', ни тот, ни другой не будут видны, пока вы не назначите им что-либо (поэтому не стоит беспокоиться о том, что делать с другим один).

1 голос
/ 18 сентября 2011

Вы можете использовать для этого TranslateAnimation (с fillAfter, установленным в true - см. Пример).В зависимости от того, хотите ли вы какую-либо задержку, установите время задержки на 0 или, если вы хотите, чтобы оно было анимированным, установите его выше.

Пример: перевод анимации

0 голосов
/ 22 августа 2012

Определенно существует метод с именем

android.view.View.setLayoutParams (параметры LayoutParams)

У вас здесь должна быть другая проблема.Я только что проверил его для одного из моих ImageViews и смог изменить размер изображения во время выполнения.

0 голосов
/ 18 сентября 2011

Если вы хотите переместить изображение только до следующего прохода макета, используйте

ImageView leaf = (ImageView)findViewById(R.id.imageView1);
leaf.offsetLeftAndRight(30);

В противном случае создайте новые параметры макета, как предлагали другие.

0 голосов
/ 18 сентября 2011

Вам необходимо создать новый LayoutParams перед его изменением. Я не уверен почему, но у меня это работает:

params = new RelativeLayout.LayoutParams(leaf.getLayoutParams());
par.leftMargin += 30;
leaf.setLayoutParams(params);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...