0

Ich habe eine tragbare Schublade Layout in meiner Android App. Das Verhalten war, dass die Peek-Ansicht das Peek-Fragment anzeigen würde und wenn der Benutzer hochfiel, würde das Peek-Fragment zum Inhaltsfragment überblenden.Android Wearable: 2.0.5 Breaks Schublade Layout

Ich habe vor kurzem versucht, mein Android-Wear-Projekt von Wearable 2.0.3 zu Wearable 2.0.5 zu aktualisieren. Viele Komponenten müssen von wearable.view zu wear.widget geändert werden.

Nach dem Update zeigen beide Fragmente an, ob die Schublade offen oder geschlossen ist. Ich habe versucht, diese manuell ein- und auszublenden, aber es scheint keinen Weg zu geben, dies reibungslos oder einfach zu machen. Ist das bisherige Verhalten mehr möglich? Ich musste die Dinge ein wenig neu arrangieren, um es zum Laufen zu bringen. Gibt es ein anderes Format, das ich verwenden sollte, das mein vorheriges Verhalten erhält? Vielen Dank!

Zurück Schublade Layout:

<android.support.wearable.view.drawer.WearableActionDrawer 
    android:id="@+id/bottom_action_drawer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="?android:attr/colorPrimary" 
    app:drawer_content="@+id/nowPlayingFragment"> 
    <!-- Peek View --> 
    <fragment 
     android:id="@+id/peekFragment" 
     android:name="com.turndapage.navmusic.ui.fragment.PeekFragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <fragment 
     android:id="@+id/nowPlayingFragment" 
     android:name="com.turndapage.navmusic.ui.fragment.NowPlayingFragment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</android.support.wearable.view.drawer.WearableActionDrawer> 

New Schublade Layout:

<android.support.wear.widget.drawer.WearableActionDrawerView 
    android:id="@+id/bottom_action_drawer" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="?android:attr/colorPrimary" 
    app:drawer_content="@+id/nowPlayingFragment" 
    app:peekView="@+id/peek_view"> 


    <fragment 
     android:id="@+id/nowPlayingFragment" 
     android:name="com.turndapage.navmusic.ui.fragment.NowPlayingFragment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <!-- Peek View --> 
    <fragment 
     android:id="@+id/peekFragment" 
     android:name="com.turndapage.navmusic.ui.fragment.PeekFragment" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

</android.support.wear.widget.drawer.WearableActionDrawerView> 

Antwort

0

fand nie eine Lösung, die mir sehr gut gefallen, aber hier ist eine, die funktioniert.

wearableDrawerLayout.setDrawerStateCallback(new WearableDrawerLayout.DrawerStateCallback() { 

     @Override 
     public void onDrawerStateChanged(WearableDrawerLayout layout, int newState) { 
      super.onDrawerStateChanged(layout, newState); 
      if(nowPlayingUtil != null) { 
       // If the drawer is settling into position and it was opened all the way. 
       if (wearableActionDrawer.getDrawerState() == WearableDrawerView.STATE_SETTLING && nowPlayingUtil != null) { 
        // Transitioning from peek view 
        if (drawerState == "drawerPeeking") 
         nowPlayingUtil.fadeToOpen(); 
        // Transitioning from open view 
        else if (drawerState == "drawerOpen") 
         nowPlayingUtil.fadeToPeek(); 
        else if (drawerState == "drawerClosed") 
         nowPlayingUtil.fadeToPeek(); 
       } 
       if (wearableActionDrawer.getDrawerState() == WearableDrawerView.STATE_IDLE) { 
        // update the previous State 
        if (wearableActionDrawer.isOpened()) { 
         drawerState = "drawerOpen"; 
         nowPlayingUtil.fadeToOpen(); 
        } else if (wearableActionDrawer.isPeeking()) { 
         drawerState = "drawerPeeking"; 
         nowPlayingUtil.fadeToPeek(); 
        } else if (wearableActionDrawer.isClosed()) { 
         drawerState = "drawerClosed"; 
         nowPlayingUtil.fadeToPeek(); 
        } 
       } 
      } 
     } 
    }); 

So in meinem Beispiel, ich habe zwei Funktionen, eine für fadeToOpen und eine für fadeToPeek, die die beiden Ansichten animieren, um sie sichtbar oder unsichtbar zu machen. Ich kann den gleichen Effekt erzielen.

Noch interessiert, wenn es eine eingebaute Möglichkeit gibt, dies zu tun, aber dies wird für jetzt tun.

Verwandte Themen