Координаты imageView

Ответить
Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Координаты imageView

Сообщение Digetix » 24 ноя 2012, 12:21

Доброго времени суток. Как программно установить координаты появления изображения?
У меня есть метод onTouch, с него беру координаты касания event.getX() и event.getY(), так вот нужно их присвоить изображению, чтоб изображение появлялось в месте касания пальца.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Координаты imageView

Сообщение AndreyI » 24 ноя 2012, 18:17

А здесь то в чем проблема? Установить картинку с определенными координатами? Ну так устанавливайте. У любого 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);

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

Re: Координаты imageView

Сообщение Digetix » 26 ноя 2012, 21:48

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 ?

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Координаты imageView

Сообщение AndreyI » 26 ноя 2012, 22:04

Разумеется, тот контейнер куда вы помещаете свою картинку.
RelativeLayout использовался чисто для примера, вы можете использовать любой другой тип контйнера, который вам удобнее.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

Re: Координаты imageView

Сообщение AndreyI » 26 ноя 2012, 22:19

image появляется, но стоит на одном месте.
А она еще и двигаться должна?:)

Я вам показал как вставить View в соответствии с определенными координатами в контейнере. На основе этого вы можете реализовать ее перемещение.
Но это, как говорит Э. Каневский, уже совсем другая история :)

Аватара пользователя
IgNa
Сообщения: 345
Зарегистрирован: 30 сен 2013, 12:18

Re: Координаты imageView

Сообщение IgNa » 14 ноя 2013, 12:40

А как в данном примере быть,если я хочу присвоить картинке 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, плиз
Изображение

terra.nova_s
Сообщения: 1
Зарегистрирован: 26 июл 2020, 14:49

Re: Координаты imageView

Сообщение terra.nova_s » 26 июл 2020, 14:56

Пожалуйста помогите с похожей проблемой. Я тоже новичок. Не получается реализовать изменение координат 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
imageView.png (184.76 КБ) 2359 просмотров

Ответить