Je možné přesunout složky po obrazovce pomocí standardních rozhraní API systému Android?

hlasů
5

Chtěl bych produkovat androiduživatelské rozhraní, které umožňuje uživatelům, aby se pohybovala z přidané components/ widgetspo obrazovce tím, že je vyberete a poté přetažením kolem.

Je to možné pomocí standardních rozhraní API systému Android?

Položena 31/03/2009 v 09:25
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
6

Ano. Záleží na tom, co se snažíte dosáhnout.

To může být provedeno s použitím standardních API, ale tato funkce není součástí standardní rozhraní API. To znamená, že neexistuje žádná widget.DragOverHere()metoda, pokud píšete jeden.

To znamená, že by to nemělo být hrozně složité dělat. Přinejmenším budete muset napsat vlastní podtřídy View a realizovat dvěma způsoby: onDraw(Canvas c)a onTouch(MotionEvent e). Hrubý náčrt:

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
    }
}
Odpovězeno 31/03/2009 v 18:29
zdroj uživatelem

hlasů
0

Jak jsem to udělal, je mít absolutní rozložení a pak už jen aktualizaci polohy objektu, jak je přetáhnout. Budete muset implementovat přetažením sami. V případě, že widgety mají přirozený řád (panel nástrojů, kde chcete, aby bylo možné přetáhnout tlačítka kolem) můžete stack absolutní uspořádání na horní liště, a když začne táhnout, můžete jej přidat do absolutní rozložení a když to skončí, ho přidat zpět do původní dispozice v nové pozici.

Odpovězeno 31/03/2009 v 18:45
zdroj uživatelem

hlasů
0

Do určité míry. Záleží na tom, jaký stupeň volnosti chcete dát uživateli. Jedním z řešení, které přijde na mysl, je TableLayout s předdefinovanými buňkami. Uživatel pak může klepnout a táhnout složky. Při přetahování součásti budete jen chtít nakreslit obraz mu podle prstem uživatele, ale když se uvolní, odebrat součást ze je to předchozí rodič a přidat ji do nové mateřské společnosti pomocí ViewGroup přidat / odebrat metody.

I když můžete programově posunout pohledy kolem sebe, bylo by obtížné / nemožné přepnout rozvržení v reálném čase, pokud jde o vidím.

Odpovězeno 31/03/2009 v 16:49
zdroj uživatelem

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