Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

DragAndDrop free on Layout - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Qt5 (QML) http://www.cyberforum.ru/android-dev/thread1551379.html
Здравствуйте! Как можно из cpp файла перенести переменную в модели(QML) в Qt5?
Программирование Android Как на кнопку назначить ScaleGesture Есть рабочий код для layout public class AndroidScaleGestureDetectorActivity extends Activity { TextView scaleGesture; ScaleGestureDetector scaleGestureDetector; /** Called when the... http://www.cyberforum.ru/android-dev/thread1551372.html
Весь пакет java,gradle,genymotion,android sdk Программирование Android
Добрый день, форумчаны. Я не знаю, как описать проблему, опишу ее как смогу. Итак, я использую lubuntu. До этого использовал mint. Но пришлось переустановить, т.к он был более требовательным к...
Менять xml программно Программирование Android
допустим есть такой файл бэкграунда: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <corners ...
Программирование Android Программное добавление рамки Layout http://www.cyberforum.ru/android-dev/thread1550891.html
Добавляю рамку к Layout с помощью XML файла: <shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="@dimen/border_line_thickness" android:color="#FF000000" />...
Программирование Android Сохранение ImageView Всем привет, У меня такой вопрос, есть код который сохраняет imageview в папку Pictures , все работает и сохраняет ,захожу в проводник в папку Pictures на андройде ,картинка есть, но пытаюсь... подробнее

Показать сообщение отдельно
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 586

DragAndDrop free on Layout - Программирование Android

13.10.2015, 18:56. Просмотров 431. Ответов 7
Метки (Все метки)

Привет, честно искал, но того, что нужно, не нашел.

Я хочу перетаскивать view элементы по экрану, свободно, те примеры что нашел рассказывают как получить событие при перетаскивании элемента из одного laytout в другой.

Значит есть например ImageView. Нарыл в гугле.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
img = (ImageView) findViewById(R.id.imgView);
 
img.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
            String[] mimeTypes = { ClipDescription.MIMETYPE_TEXT_PLAIN };
            ClipData dragData = new ClipData(v.getTag().toString(), mimeTypes, item);
 
            // Instantiates the drag shadow builder.
            View.DragShadowBuilder myShadow = new View.DragShadowBuilder(img);
 
            // Starts the drag
            v.startDrag(dragData, // the data to be dragged
                    myShadow, // the drag shadow builder
                    null, // no need to use local data
                    0 // flags (not currently used, set to 0)
            );
            return true;
        }
    });
Из всего этого понимаю только создание тени и v.startDrag, остальное для меня магия, поясните если кто понимает.
дальше....
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
// Set the drag event listener for the View
    img.setOnDragListener(new View.OnDragListener() {
        @Override
        public boolean onDrag(View v, DragEvent event) {
            switch (event.getAction()) {
                case DragEvent.ACTION_DRAG_STARTED:
                    layoutParams = (RelativeLayout.LayoutParams) v.getLayoutParams();
                    RelativeLayout.LayoutParams.WRAP_CONTENT);
                    x = (int) event.getX();
                    y = (int) event.getY();
                    Log.d(msg, "Action is DragEvent.ACTION_DRAG_STARTED " + x + " " + y);
                    break;
                case DragEvent.ACTION_DRAG_ENTERED:
                    Log.d(msg, "Action is DragEvent.ACTION_DRAG_ENTERED");
                    x = (int) event.getX();
                    y = (int) event.getY();
                    break;
                case DragEvent.ACTION_DRAG_EXITED:
                    Log.d(msg, "Action is DragEvent.ACTION_DRAG_EXITED");
                    x = (int) event.getX();
                    y = (int) event.getY();
                    break;
                case DragEvent.ACTION_DRAG_LOCATION:
                    Log.d(msg, "Action is DragEvent.ACTION_DRAG_LOCATION");
                    break;
                case DragEvent.ACTION_DRAG_ENDED:
                    if (dropEventNotHandled(event)) {
                        layoutParams.setMargins(x, y, 0, 0);
                        Log.d(msg, "end " + v.getX() + " " + v.getY());
                        v.setLayoutParams(layoutParams);
                    }
 
                    break;
                case DragEvent.ACTION_DROP:
                    x= (int) event.getX();
                    y= (int) event.getY();
                    Log.d(msg, "ACTION_DROP event " );
 
                    break;
                default:
                    break;
            }
            return true;
        }
    });
 private boolean dropEventNotHandled(DragEvent dragEvent) {
        return !dragEvent.getResult();
    }
Тут вижу когда происходит то или иное событие, знаю когда пользователь отпустил view, но где он его отпустил координаты получить не могу, на стаке есть не один такой вопрос, но ответа нет.

Еще вопрос, насколько я понял реализовать можно мою задачу только на RelativeLayout. Это так?
И перемещение view осуществлять через setMargins?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru