Координаты imageView
Координаты imageView
Доброго времени суток. Как программно установить координаты появления изображения?
У меня есть метод onTouch, с него беру координаты касания event.getX() и event.getY(), так вот нужно их присвоить изображению, чтоб изображение появлялось в месте касания пальца.
У меня есть метод onTouch, с него беру координаты касания event.getX() и event.getY(), так вот нужно их присвоить изображению, чтоб изображение появлялось в месте касания пальца.
Re: Координаты imageView
А здесь то в чем проблема? Установить картинку с определенными координатами? Ну так устанавливайте. У любого View установленного в layout есть MarginLayoutParams и метод
setMargins (int left, int top, int right, int bottom)
вот и используйте его
int left, int top это ваши X и Y
Можно примерно так:
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
image появляется, но стоит на одном месте.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);
Здесь R.id.layoutID должен быть ID существующего layout ?AndreyI писал(а):Код: Выделить всё
RelativeLayout layout = (RelativeLayout) findViewById(R.id.layoutID)
Re: Координаты imageView
Разумеется, тот контейнер куда вы помещаете свою картинку.
RelativeLayout использовался чисто для примера, вы можете использовать любой другой тип контйнера, который вам удобнее.
RelativeLayout использовался чисто для примера, вы можете использовать любой другой тип контйнера, который вам удобнее.
Re: Координаты imageView
А она еще и двигаться должна?:)image появляется, но стоит на одном месте.
Я вам показал как вставить View в соответствии с определенными координатами в контейнере. На основе этого вы можете реализовать ее перемещение.
Но это, как говорит Э. Каневский, уже совсем другая история
Re: Координаты imageView
А как в данном примере быть,если я хочу присвоить картинке 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, плиз
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, плиз
-
- Сообщения: 1
- Зарегистрирован: 26 июл 2020, 14:49
Re: Координаты imageView
Пожалуйста помогите с похожей проблемой. Я тоже новичок. Не получается реализовать изменение координат imageView по таймеру AsyncTask. Ошибка в строке
ImageView3.setLayoutParams(marginParams);
Нужно вызвать setLayoutParams из UI thread. Как переделать код? Откуда вызывать?
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();
}
}