Можно ли перемещать компоненты вокруг экрана, используя стандартный андроид APIs?

голоса
5

Я хотел бы, чтобы произвести androidпользовательский интерфейс , который позволяет пользователю перемещаться добавлен components/ widgetsвокруг экрана, выбрав их , а затем перетащить их вокруг.

Возможно ли это с помощью стандартных андроид APIs?

Задан 31/03/2009 в 09:25
источник пользователем
На других языках...                            


3 ответов

голоса
6

Да. Это зависит от того, что вы пытаетесь достичь.

Это может быть сделано с помощью стандартных интерфейсов API, но эта функция не является частью стандартных API. То есть, нет widget.DragOverHere()способа , если вы пишете один.

Тем не менее, это не будет очень сложным сделать. Как минимум, вам нужно будет написать пользовательский подкласс View и реализовать два метода: onDraw(Canvas c)а onTouch(MotionEvent e). Грубый эскиз:

class MyView extends View {

    int x, y;  //the x-y coordinates of the icon (top-left corner)
    Bitmap bitmap; //the icon you are dragging around

    onDraw(Canvas c) {
      canvas.drawBitmap(x, y, bitmap);
    }

    onTouch(MotionEvent e) {
      switch(e.getAction()) {
      case MotionEvent.ACTION_DOWN:
        //maybe use a different bitmap to indicate 'selected'
        break;
      case MotionEvent.ACTION_MOVE:
        x = (int)e.getX();
        y = (int)e.getY();
        break;
      case MotionEvent.ACTION_UP:
        //switch back to 'unselected' bitmap
        break;
      }
      invalidate(); //redraw the view
    }
}
Ответил 31/03/2009 d 18:29
источник пользователем

голоса
0

То, как я сделал это, чтобы иметь абсолютное расположение, а затем просто обновить положение объекта, как тащится. Вы должны выполнить перетаскивание себя. Если виджеты имеют естественный порядок (панель инструментов, где вы хотите, чтобы иметь возможность перетаскивать кнопки вокруг) вы можете сложить абсолютное расположение на верхней панели инструментов и при запуске перетаскивания, вы добавляете его к абсолютному макете и когда он закончится, вы добавляете его обратно в исходное расположение в новом положении.

Ответил 31/03/2009 d 18:45
источник пользователем

голоса
0

До некоторой степени. Это зависит от того, какая степень свободы вы хотите, чтобы дать пользователю. Одно решение, которое приходит на ум, это TableLayout с предустановленными ячейками. Затем пользователь может нажать и компоненты сопротивления. При перетаскивании компоненты вы просто хотите, чтобы нарисовать изображение его под пальцем пользователя, но когда они выпускают, удалите компонент из его предыдущего родителя и добавить его к новому родителю с помощью ViewGroup добавить / удалить методы.

В то время как вы можете программно переместить Просмотров вокруг, было бы трудно / невозможно переключать раскладки на лету, насколько я могу видеть.

Ответил 31/03/2009 d 16:49
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more