ViewPager en un NestedScrollView

Necesito crear una interfaz como Google Newsstand, que es una especie de ViewPager (desplazamiento horizontal) sobre un encabezado de despliegue (desplazamiento vertical). Uno de mis requisitos es usar la nueva Biblioteca de Diseño de Soporte presentada en el Google IO 2015. ( http://android-developers.blogspot.ca/2015/05/android-design-support-library.html )

Sobre la base de la muestra creada por Chris Banes ( https://github.com/chrisbanes/cheesesquare ) he llegado al punto de que soy capaz de hacer el comportamiento de colapso, pero con un LinearLayout básico (sin desplazamiento horizontal).

Intenté substituir el LinearLayout por un ViewPager y conseguí una pantalla en blanco. Jugué con: ancho, peso y todo tipo de grupos de vista, pero …. todavía una pantalla en blanco. Parece que ViewPager y NestedScrollView no se gustan.

He intentado una solución utilizando un HorizontalScrollView: funciona, pero pierdo el beneficio de la característica PagerTitleStrip y el enfoque en un solo panel (puedo detener la horizontal entre 2 paneles).

Ahora no tengo más ideas, si alguien me puede llevar a una solución …

Gracias

Aquí está mi último archivo de diseño:

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="@dimen/header_height" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:layout_width="match_parent" android:layout_height="match_parent" app:contentScrim="?attr/colorPrimary" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <include layout="@layout/part_header" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_collapseMode="parallax"/> <android.support.v7.widget.Toolbar android:id="@+id/activity_main_toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/activity_main_nestedscrollview" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v4.view.ViewPager android:id="@+id/activity_main_viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#FFA0"/> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout> 

Encontré este problema, lo soluciono por setFillViewport (true)

 <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:id="@+id/nest_scrollview" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="mio.kon.yyb.nestedscrollviewbug.ScrollingActivity" tools:showIn="@layout/activity_scrolling"> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent"/> 

En actividad

  NestedScrollView scrollView = (NestedScrollView) findViewById (R.id.nest_scrollview); scrollView.setFillViewport (true); 

Introduzca aquí la descripción de la imagen

Bueno, hice una pequeña demostración con ViewPager y NestedScrollView . El problema que enfrenté fue con la altura de ViewPager y el ListView . Así que hice una pequeña modificación en ViewPager's medición de altura ListView y ViewPager's .

Si alguien quiere ver el código, aquí está el enlace: https://github.com/TheLittleNaruto/SupportDesignExample/

Salida:

Introduzca aquí la descripción de la imagen

Tenía los mismos problemas.

Al poner el NestedScrollView alrededor del ViewPager, no funcionaría.

Lo que DID trabajo sin embargo es poner el NestedScrollView dentro de la disposición del fragmento que estoy cargando dentro de ViewPager.


 <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="fill_parent" android:layout_height="fill_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@id/fragment_detail" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="fill_vertical" android:orientation="vertical"> ...Content... </LinearLayout> </android.support.v4.widget.NestedScrollView> 

Puede probar de esta manera, viewpager funciona bien, pero la altura del viewpager es fijo.

Todavía estoy encontrando la mejor solución …, así que por favor hágamelo saber cualquier punto puede hacerlo mejor, gracias

 <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="800dp" android:orientation="vertical"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"/> </LinearLayout> </android.support.v4.widget.NestedScrollView> 

Tuve el mismo problema, y ​​sólo lo arregló con algunos cambios. ViewPager no funciona en el NestedScrollView . Simplemente coloque su ViewPager como un hijo directo de su CoordinatorLayout . A continuación, el contenido de cada fragmento de ViewPager se debe incluir en NestedScrollView . Eso es.

Añadir android:fillViewport="true" en su NestedScrollView . período.

En lugar de colocar ViewPager dentro de NestedScrollView, hágalo al revés.

Coloque el NestedScrollView en las vistas secundarias dentro del ViewPager que en esencia es el diseño del fragmento. También es muy probable que ni siquiera necesite usar NestedScrollView si el diseño de la lista de su Fragmento es muy simple.

Ejemplos de diseños

Disposición de la actividad:

 <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.design.widget.AppBarLayout android:id="@+id/app_bar" android:layout_width="match_parent" android:layout_height="@dimen/app_bar_height" android:fitsSystemWindows="true" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="@dimen/app_bar_height" android:scaleType="centerCrop" android:src="@drawable/my_bg" app:layout_collapseMode="parallax" app:layout_collapseParallaxMultiplier="0.8" app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.design.widget.TabLayout android:id="@+id/content_tabs" android:layout_width="match_parent" android:layout_height="wrap_content" /> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout> </android.support.design.widget.CoordinatorLayout> 

Si no necesita TabLayout, puede abandonar LinearLayout y hacer ViewPager independiente. Pero asegúrese de usar app:layout_behavior="@string/appbar_scrolling_view_behavior" en los atributos de ViewPager.

Diseño del Fragmento Simple:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> 

Disposición del fragmento complejo:

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:fillViewport="true" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Hello World"/> </RelativeLayout> </android.support.v4.widget.NestedScrollView> 

Ejemplo de aplicación: CollapsingToolbarPoc

Introduzca aquí la descripción de la imagen

Usted no necesita utilizar el NestedScrollView para tener los efectos de paralaje. Probar algo como esto:

 <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:animateLayoutChanges="true"> <android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/my_tab_layout" android:fillViewport="false" app:tabMode="fixed"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/my_view_pager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout> 

Quité NestedScrollView de la disposición principal e insertado como un padre en todos mis diseños del fragmento que se suponía que cargaran en ViewPager fijado este problema para mí.

Lo siguiente debe garantizar la altura adecuada del paginador de vista. El fragmento es el primer fragmento proporcionado por el buscapersonas de vista.

 <android.support.v4.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent"/> <fragment class="com.mydomain.MyViewPagerFragment" android:id="@+id/myFragment" android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone"/> </LinearLayout> </android.support.v4.widget.NestedScrollView> 

Yo estaba teniendo un problema similar (pero sin CollapsingToolbarLayout , sólo una simple Toolbar + TabLayout dentro de AppBarLayout ). Quería que la barra de herramientas se desplazara fuera de la vista al desplazarse hacia abajo el contenido de un ViewPager dentro de la NestedScrollView .

Mi diseño fue algo como esto:

 <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:animateLayoutChanges="true"> <android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/my_tab_layout" android:fillViewport="false" app:tabMode="fixed"/> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" android:layout_gravity="fill_vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v4.view.ViewPager android:id="@+id/my_view_pager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> </android.support.v4.view.ViewPager> </android.support.v4.widget.NestedScrollView> </android.support.design.widget.CoordinatorLayout> 

Este diseño no funcionaba como estaba previsto, pero lo solucioné simplemente deshaciéndome del NestedScrollView y usando un LinearLayout en LinearLayout lugar. Funcionó para mí de inmediato en Android Support Library v23.1.0. Así es como terminó el diseño:

 <android.support.design.widget.CoordinatorLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:animateLayoutChanges="true"> <android.support.v7.widget.Toolbar android:id="@+id/my_toolbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/my_tab_layout" android:fillViewport="false" app:tabMode="fixed"/> </android.support.design.widget.AppBarLayout> <LinearLayout android:orientation="vertical" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="4dp" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.v4.view.ViewPager android:id="@+id/my_view_pager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> </android.support.v4.view.ViewPager> </LinearLayout> </android.support.design.widget.CoordinatorLayout> 

PS: En realidad eran dos archivos de diseño en mi proyecto. Los copié y pegé aquí y traté de estructurarlos como se vería en un solo archivo. Lo siento si he estropeado mientras copiar y pegar, pero por favor avíseme si ese es el caso para poder arreglarlo.

Tenía un diseño con una barra de herramientas de la aplicación con NestedScrollView debajo de él, entonces dentro de la barra de herramientas anidadas era un LinearLayout, debajo de LinearLayout era un paginador de vista. La idea era que el LinearLayout dentro del NestedScrollView estaba fijo – se podía deslizar izquierda / derecha entre las vistas del paginador de vista, pero este contenido no se movería, al menos horizontalmente . Debería poder desplazar todo el contenido verticalmente debido a la vista de desplazamiento anidada. Esa fue la idea. Así que establezco la altura de NestedScrollView anidada en match_parent, fill viewport, y luego todos los layouts / ViewPager para wrap_content.

En mi cabeza eso era correcto. Pero no funcionó – ViewPager me permitió ir izquierda / derecha, pero no desplazamiento vertical, si el contenido de la página viewpager empujado por debajo de la parte inferior de la pantalla actual o no. Resulta que era básicamente porque ViewPager no respeta wrap_content en sus varias páginas.

Conseguí alrededor de esto subclassing el ViewPager para hacer que cambia la altura dependiendo del artículo seleccionado actual, clase de forzarlo para comportarse como layout_height = "wrap_content":

 public class ContentWrappingViewPager extends ViewPager { public ContentWrappingViewPager(Context context) { super(context); } public ContentWrappingViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = 0; if (getChildCount() > getCurrentItem()) { View child = getChildAt(getCurrentItem()); child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); int h = child.getMeasuredHeight(); if(h > height) height = h; } heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } 

La solución se inspiró en esta respuesta . Trabajó para mí!

Tengo el mismo deseo, anidar un ViewPager dentro de un NestedScrollView . Pero tampoco funciona para mí. En mi caso, ViewPager está dentro de un Fragment para poder cambiar el contenido dependiendo de las interacciones con el cajón. Por supuesto, AppBar, colapso, etc y toda nueva característica de la biblioteca de soporte debe funcionar.

Si un usuario desplaza verticalmente una página en el paginador, quiero que otras páginas se desplacen de la misma, para dar al usuario la impresión general de que el buscapersonas se desplazó.

Lo que hice, que funciona, es que ya no incrustar el ViewPager dentro de un NestedScrollView , en su lugar, incrustar el contenido de los fragmentos contenidos dentro de un NestedScrollView .

Entonces, en el caso de un rollo en un fragmento, informo al contenedor de la nueva posición de desplazamiento, que la almacena.

Finalmente, en un golpe a la izquierda oa la derecha detectado desde el buscapersonas (usando addOnPageChangeListener buscando estados de arrastre) informo al fragmento de destino a la izquierda o derecha donde debe desplazarse (basado en el conocimiento del contenedor de la misma) para ser alineado del fragmento de donde vengo .

Conozco una solución de trabajo: Utiliza Actividad, con CoordinatorLayout y utiliza FrameLayout, contenedor. Entonces. Utilizar el gestor de fragmentos para poner fragmento en el contenedor. Por ejemplo mi código:

 <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="wrap_content" app:elevation="0dp"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" app:layout_scrollFlags="scroll|enterAlways" android:layout_height="@dimen/toolbar_height" android:background="?attr/colorPrimary" android:gravity="center"> </android.support.v7.widget.Toolbar> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"> </FrameLayout> 

Y Fragmento:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.improvemdia.inmyroom.MainFragment"> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" /> 

A continuación, utilice FragmentManager

 getSupportFragmentManager().beginTransaction() .replace(R.id.container, new MainFragment()) .commit(); 

Después de pasar horas probado todas las sugerencias anteriores, finalmente lo hice funcionar. La clave es poner NestedScrollView dentro de PageViewer , y establecer layout_behavior en '@string/appbar_scrolling_view_behavior' para BOTH views. El diseño final es como

 <CoordinatorLayout> <ViewPager app:layout_behavior="@string/appbar_scrolling_view_behavior"> <NestedScrollView fillViewport="true" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <Content>...</Content> </NestedScrollView> </ViewPager> <AppBarLayout>...</AppBarLayout> </CoordinatorLayout> 

Acaba de eliminar el NestedScrollView en su xml y agregar este código en su clase

yourGridView.setNestedScrollingEnabled(true);

Utilice la clase personalizada a continuación para resolver su problema. No olvide llamar al método onRefresh () en pagechangelistener.

 public class ContentWrappingViewPager extends ViewPager { private int width = 0; public ContentWrappingViewPager(Context context) { super(context); } public ContentWrappingViewPager(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int height = 0; width = widthMeasureSpec; if (getChildCount() > getCurrentItem()) { View child = getChildAt(getCurrentItem()); child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); int h = child.getMeasuredHeight(); if(h > height) height = h; } heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } public void onRefresh() { try { int height = 0; if (getChildCount() > getCurrentItem()) { View child = getChildAt(getCurrentItem()); child.measure(width, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)); int h = child.getMeasuredHeight(); if(h > height) height = h; } int heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY); ViewGroup.LayoutParams layoutParams = this.getLayoutParams(); layoutParams.height = heightMeasureSpec; this.setLayoutParams(layoutParams); } catch (Exception e) { e.printStackTrace(); } } } 

En realidad, el NestedScrollView no necesita ser hermano directo de CollapsingToolbarLayout en CoordinatorLayout. He logrado algo realmente bizzare. El comando appbar_scrolling_view_behavior funciona en 2 fragmentos anidados.

Mi distribución de actividades:

 <android.support.design.widget.CoordinatorLayout> <android.support.design.widget.AppBarLayout> <android.support.design.widget.CollapsingToolbarLayout> <include layout="@layout/toolbar"/> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <FrameLayout android:id="@+id/container" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout> 

En el frameLayout del "contenedor" he inflado este fragmento:

 <android.support.constraint.ConstraintLayout> ... some content ... <android.support.v4.view.ViewPager/> ... </android.support.constraint.ConstraintLayout> 

Y fragmentos dentro de ese ViewPager se ve así:

 <RelativeLayout> <android.support.v7.widget.RecyclerView/> .... </RelativeLayout> 

Hecho que NestedScrollView puede ser tan profundo en la jerarquía de niños CoordinatorLayout y comportamientos de desplazamiento stil obras me sorprendió.

  • No se puede cambiar ID de contenedor de fragmento
  • ViewPager llamada setUserVisibleHint después de que se carga el primer fragmento
  • Detener Android desde el diseño de todas mis vistas
  • Hay una manera de cargar una imagen predeterminada en picasso
  • Cómo establecer ViewPager dentro de un fragmento
  • TextView dentro de ViewPager intercepta eventos de toque
  • Cómo agregar una vista personalizada en ViewPager para un tutorial
  • Fragmento en ViewPager, no se puede obtener la instancia de fragmento actual
  • ¿Cómo implementar el desplazamiento horizontal dentro de un fragmento?
  • Utilizar un coordinador para colapsar una imagen a pantalla completa y reemplazarla por viewpager con encabezados
  • Resaltar o subrayar seleccionado TabPageIndicator
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.