Страница 1 из 1
Координаты imageView
Добавлено: 24 ноя 2012, 12:21
Digetix
Доброго времени суток. Как программно установить координаты появления изображения?
У меня есть метод onTouch, с него беру координаты касания event.getX() и event.getY(), так вот нужно их присвоить изображению, чтоб изображение появлялось в месте касания пальца.
Re: Координаты imageView
Добавлено: 24 ноя 2012, 18:17
AndreyI
А здесь то в чем проблема? Установить картинку с определенными координатами? Ну так устанавливайте. У любого View установленного в layout есть
MarginLayoutParams и метод
setMargins (int left, int top, int right, int bottom)
вот и используйте его
int left, int top это ваши X и Y
Можно примерно так:
Код: Выделить всё
ImageView image = new ImageView(this);
image.setImageResource(R.drawable.icon);
MarginLayoutParams marginParams = new MarginLayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
marginParams.setMargins(x, y, 0, 0);
image.setLayoutParams(marginParams);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layoutID)//Ваш контейнер (можно layout любого другого типа)
layout.addView(image);
Re: Координаты imageView
Добавлено: 26 ноя 2012, 21:48
Digetix
AndreyI писал(а):
Можно примерно так:
Код: Выделить всё
ImageView image = new ImageView(this);
image.setImageResource(R.drawable.icon);
MarginLayoutParams marginParams = new MarginLayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
marginParams.setMargins(x, y, 0, 0);
image.setLayoutParams(marginParams);
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layoutID)//Ваш контейнер (можно layout любого другого типа)
layout.addView(image);
image появляется, но стоит на одном месте.
AndreyI писал(а): Код: Выделить всё
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layoutID)
Здесь R.id.layoutID должен быть ID существующего layout ?
Re: Координаты imageView
Добавлено: 26 ноя 2012, 22:04
AndreyI
Разумеется, тот контейнер куда вы помещаете свою картинку.
RelativeLayout использовался чисто для примера, вы можете использовать любой другой тип контйнера, который вам удобнее.
Re: Координаты imageView
Добавлено: 26 ноя 2012, 22:19
AndreyI
image появляется, но стоит на одном месте.
А она еще и двигаться должна?:)
Я вам показал как вставить View в соответствии с определенными координатами в контейнере. На основе этого вы можете реализовать ее перемещение.
Но это, как говорит Э. Каневский, уже совсем другая история

Re: Координаты imageView
Добавлено: 14 ноя 2013, 12:40
IgNa
А как в данном примере быть,если я хочу присвоить картинке left и botoom
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(new ViewGroup.MarginLayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
lp.setMargins(33, 0, 0, 33);
image14.setLayoutParams(lp);
Поставив ряд экспериментов понимаю что .setMargins вообще считается только с лефт и топ а на райт и боттом тихо забивает
HELP, плиз
Re: Координаты imageView
Добавлено: 26 июл 2020, 14:56
terra.nova_s
Пожалуйста помогите с похожей проблемой. Я тоже новичок. Не получается реализовать изменение координат imageView по таймеру AsyncTask. Ошибка в строке
ImageView3.setLayoutParams(marginParams);
Нужно вызвать setLayoutParams из UI thread. Как переделать код? Откуда вызывать?
Код: Выделить всё
private class ProgressTask extends AsyncTask<Integer, Integer, Integer> {
@Override
protected Integer doInBackground(Integer... integers) {
for (int i = 0; i <= 100; i++) {
ImageView ImageView3 = (ImageView)findViewById(R.id.imageView3);
ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
marginParams.setMargins(i, i, 0, 0);
ImageView3.setLayoutParams(marginParams);
publishProgress((int) i);
SystemClock.sleep(20);
}
return null;
}
protected void onProgressUpdate(Integer... items) {
tv.setText("Загрузка: " + items[0] + "%");
//tv.setText("Загрузка: " + x);
}
@Override
protected void onPostExecute(Integer x) {
super.onPostExecute(x);
Toast.makeText(getApplicationContext(), "Загрузка завершена!", Toast.LENGTH_LONG).show();
}
}

- imageView.png (184.76 КБ) 3509 просмотров