versiones pie oreo developer caracteristicas android

pie - android versiones



Android SlidingDrawer desde la parte superior? (4)

¿Hay alguna manera de hacer que el cajón se deslice de arriba hacia abajo?


Estaba muy insatisfecho con las soluciones proporcionadas aquí:

  • La clase Panel de http://code.google.com/p/android-misc-widgets/ era muy intuitiva de usar y también tenía fallas visuales y fallas visuales (inutilizable para uso productivo) y ningún documento en absoluto.
  • SlidingTray clase SlidingTray de http://aniqroid.sileria.com/doc/api/ estaba anidada en una lib que necesitaba demasiada dependencia y para mí no conseguí que funcionara en absoluto
  • Usar android:rotation="180" requiere API Nivel 11, y mi objetivo es 10.

(sin ofender a los desarrolladores respectivos, tratando de ser objetivo aquí)

Así que mi solución fue extraer SlidingTray de esta SlidingTray http://aniqroid.sileria.com/doc/api/ (de Ahmed Shakil) y la refactoré un poco, ya que tenía algunos caprichos necesarios para ser utilizada dentro de la lib de Ahmed. SlidingTray se basa en el propio SlidingDrawer Androids, así que supongo que es estable. Mi modificación consiste en 1 clase a la que llamé MultipleOrientationSlidingDrawer y tienes que agregar declare-styleables en tu attrs.xml. Aparte de eso, tiene el mismo uso que SlidingDrawer con el atributo de "orientación" adicional.

Échale un vistazo: MultipleOrientationSlidingDrawer (fuente y ejemplo) @ gist

Aquí hay un ejemplo de uso (también provisto en la esencia)

<your.app.MultipleOrientationSlidingDrawer xmlns:custom="http://schemas.android.com/apk/res-auto/your.app" android:layout_width="match_parent" android:layout_height="match_parent" custom:handle="@+id/handle_c" custom:content="@+id/content_c" custom:orientation="top"> <RelativeLayout android:id="@id/handle_c" android:layout_width="match_parent" android:layout_height="30dp" android:background="#333333"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:text="Handle Text" android:gravity="left|center_vertical"/> </RelativeLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@id/content_c" android:background="#555555"> <ListView android:id="@+id/listview_credits" android:layout_width="match_parent" android:layout_height="match_parent"/> </FrameLayout> </your.app.MultipleOrientationSlidingDrawer>

Descargo de responsabilidad: Todos los créditos van a respectivo dev. No probé esta solución exhaustivamente, funciona muy bien con TOP y BOTTOM establecidos en XML. No intenté usarlo programáticamente.


He encontrado una manera simple de hacer eso. Todo lo que tienes que hacer es establecer la rotación de 180º para el deslizador deslizante, el contenido y el mango. Es más fácil de entender con un ejemplo, así que mira lo que he hecho:

Primero, te mostraré mi viejo SlidingDrawer, de abajo hacia arriba.

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/slidingDrawer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" android:handle="@+id/handle" android:content="@+id/content"> <ImageView android:id="@+id/handle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" /> <ImageView android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FF0000" android:src="@drawable/ic_launcher" /> </SlidingDrawer>

Ahora mira los cambios que hice, configurando la rotación de 180º

<SlidingDrawer xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/slidingDrawer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center_horizontal" android:handle="@+id/handle" android:content="@+id/content" android:rotation="180"> <LinearLayout android:id="@+id/handle" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_launcher" android:rotation="180" /> </LinearLayout> <ImageView android:id="@+id/content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="#FF0000" android:src="@drawable/ic_launcher" android:rotation="180" /> </SlidingDrawer>

Tenga en cuenta que también creé un LinearLayout para establecer como handle, y no cambié su rotación, pero cambié la rotación de su hijo. Esto fue para evitar un pequeño problema que tuve, pero todo está funcionando bien y es simple.