14 / 15 / 2
Регистрация: 21.04.2012
Сообщений: 192
1

Обработка перемещения объекта на экране - MotionEvent.ACTION_MOVE

23.04.2014, 01:33. Показов 2394. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Когда перемещаю картинку к краю экрана, то её размер уменьшается, а после совсем исчезает.
Нужно сохранять размер постоянным. Как?
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
droid.setOnTouchListener(new View.OnTouchListener() {
 
                @Override
                public boolean onTouch(View v, MotionEvent event) {
 
                    layoutParams = (LayoutParams) v.getLayoutParams();
                    // обрабатываем позиции
                    switch (event.getAction()) {
                    // нажал на экран
                        case MotionEvent.ACTION_DOWN: {
                            int[] hompos = new int[2];
                            droidpos = new int[2];
                            home.getLocationOnScreen(hompos);
                            home_x = hompos[0];
                            //home_y = hompos[1];
                        }
                            break;
                        // перемещаем по экрану яблоко за пальцем
                        case MotionEvent.ACTION_MOVE: {
                            int x_cord = (int) event.getRawX();
                            //int y_cord = (int) event.getRawY();
                            /*if (x_cord > (windowwidth - droid.getWidth())) {
                                x_cord = windowwidth - droid.getWidth();
                            }*/
                            /*if (y_cord > (windowheight - (windowheight / 32))) {
                                y_cord = windowheight - ((windowheight / 32) * 2);
                            }*/
 
                            layoutParams.leftMargin = x_cord;
                            //layoutParams.topMargin = y_cord;
                            //droid.getLocationOnScreen(droidpos);
                            v.setLayoutParams(layoutParams);
                            /*if ((((x_cord - home_x) <= ((windowwidth / 24) * 5)) && ((home_x - x_cord) <= ((windowwidth / 24) * 4)))
                                    /*&& ((home_y - y_cord) <= ((windowheight / 32) * 5))) {
                                v.setVisibility(View.GONE);
                                finish();
                            }*/
                        }
                            break;
                        // убрал палец с экрана, возаращаем на стартовую позицию
                        case MotionEvent.ACTION_UP: {
                            int x_cord1 = (int) event.getRawX();
                            //int y_cord2 = (int) event.getRawY();
                            /*if ((((x_cord1 - home_x) <= ((windowwidth / 24) * 5)) && ((home_x - x_cord1) <= ((windowwidth / 24) * 4)))
                                    && ((home_y - y_cord2) <= ((windowheight / 32) * 5))) {
                                System.out.println("home overlapps");
                                System.out.println("homeee" + home_x + "  " + (int) event.getRawX() + "  "
                                        + x_cord1 + " " + droidpos[0]);
                                System.out.println("homeee" + home_y + "  " + (int) event.getRawY() + "  "
                                        + y_cord2 + " " + droidpos[1]);
                            } else {
                                layoutParams.leftMargin = (windowwidth / 24) * 10;
                                layoutParams.topMargin = (windowheight / 32) * 8;
                                v.setLayoutParams(layoutParams);
                            }*/
                            layoutParams.leftMargin = 0;
                            v.setLayoutParams(layoutParams);
                        }
                    }
Миниатюры
Обработка перемещения объекта на экране - MotionEvent.ACTION_MOVE   Обработка перемещения объекта на экране - MotionEvent.ACTION_MOVE  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2014, 01:33
Ответы с готовыми решениями:

Чувствительность MotionEvent.ACTION_MOVE
Здравствуйте! В SurfaceView сделал тайлы, у них нужно обрабатывать нажатия и перемещение. Проблема...

Обработка MotionEvent
Пишу пытаюсь писать калькулятор. Имеются дцать кнопок для ввода. По три значения на каждую кнопку...

Listener перемещения объекта
Сколько дней рою интернет, никак не могу найти. Я при помощи ObjectAnimator перемещаю...

Зацикливание перемещения объекта
Здравствуйте! Подскажите люди добрые, как зациклить объект в Unity, а то он у меня только в одну...

4
35 / 35 / 2
Регистрация: 12.11.2013
Сообщений: 345
23.04.2014, 07:58 2
это чо апи так делает само или ты там чото не так написал
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
23.04.2014, 10:47 3
кладем все это дело в FrameLayout, далее по move меняем не margin, а делаем setX, setY или же offsetLeftAndRight, offsetTopAndBottom и все будет замечательно
1
14 / 15 / 2
Регистрация: 21.04.2012
Сообщений: 192
24.04.2014, 02:47  [ТС] 4
NiRamz, setX() сработало. Только пришлось версию АПИподнимать до 11.
Есть ли способ для восьмой версии?
0
216 / 216 / 33
Регистрация: 26.12.2010
Сообщений: 691
24.04.2014, 11:12 5
offsetLeftAndRight, только туда надо передавать не то что вытаскиваете из тача, а дистанцию на которую двигаете.
0
24.04.2014, 11:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2014, 11:12
Помогаю со студенческими работами здесь

Маркер перемещения объекта
Всем привет! Недавно с Solidworks`а перешел на NX (Siemens Unigraphics). И в нем есть такая...

Ограничение перемещения объекта
Добрый вечер! import flash.events.MouseEvent; var arr:Array = new Array(); ...

Проблема со скоростью перемещения объекта
Я пишу игру змейку и возникла проблема в алгоритме передвижения когда частей больше чем 1.Проблема...

Ограничение области перемещения объекта
Всем доброго времени суток. У меня есть вот такой вот код (пример кода): &lt;!-- Настройка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru