Nueva interfaz de la tarjeta Google Now y Google+

Google Now y Google+ (Android) hacen uso de una interfaz tipo tarjeta.

Introduzca aquí la descripción de la imagen

Me preguntaba si alguien tenía alguna idea de cómo esta interfaz se puede replicar en Android.

Ambos tienen animaciones bastante interesantes para mostrar nuevas tarjetas también; Cualquier pensamiento sería genial.

He publicado un tutorial sobre cómo replicar / crear el diseño de Google Cards de estilo aquí .

Pasos clave

  1. Crear un diseño personalizado
  2. Añadir observador para dibujar niños
  3. Animar tarjetas alternadas

Heres un fragmento de código

@Override public void onGlobalLayout() { getViewTreeObserver().removeGlobalOnLayoutListener(this); final int heightPx = getContext().getResources().getDisplayMetrics().heightPixels; boolean inversed = false; final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { View child = getChildAt(i); int[] location = new int[2]; child.getLocationOnScreen(location); if (location[1] > heightPx) { break; } if (!inversed) { child.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.slide_up_left)); } else { child.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.slide_up_right)); } inversed = !inversed; } } 

Echa un vistazo a http://ryanharter.com/blog/2013/01/31/how-to-make-an-android-card-list/

Copia del ejemplo:

/res/drawable/bg_card.xml:

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" android:dither="true"> <corners android:radius="2dp"/> <solid android:color="#ccc" /> </shape> </item> <item android:bottom="2dp"> <shape android:shape="rectangle" android:dither="true"> <corners android:radius="2dp" /> <solid android:color="@android:color/white" /> <padding android:bottom="8dp" android:left="8dp" android:right="8dp" android:top="8dp" /> </shape> </item> </layer-list> 

Utilícela como el fondo de su disposición:

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" android:padding="12dp"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginLeft="6dp" android:layout_marginRight="6dp" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" android:background="@drawable/bg_card"> <!-- Card Contents go here --> </LinearLayout> </FrameLayout> 

==== Comenzar la actualización 2014-09-29 ====

Utilice CardView desde la biblioteca de compatibilidad de Google (desde Android 2.1 o superior):

 <!-- A CardView that contains a TextView --> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_gravity="center" android:layout_width="200dp" android:layout_height="200dp" card_view:cardCornerRadius="4dp"> <TextView android:id="@+id/info_text" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v7.widget.CardView> 

Consulte https://developer.android.com/preview/material/ui-widgets.html

==== Actualización final ====

(Al menos) dos opciones:

o

Consulte https://github.com/afollestad/Cards-UI/wiki/2.-Intro-Tutorial para una introducción sencilla. Introduzca aquí la descripción de la imagen

Hice un diseño muy similar que puedes ver aquí https://github.com/Nammari/GooglePlusLayout y para una demostración de vídeo aquí http://youtu.be/jvfDuJz4fw4 para la animación que se aplican a los niños, para más detalles, busque Aquí http://nammari.tumblr.com/post/41893669349/goolge-plus-layout para un blog que aclare todo.

Introduzca aquí la descripción de la imagen

La apariencia de la tarjeta no debe ser difícil. Sólo necesita un ListView sin divisores y sus elementos de vista de lista deben tener un margen.

Me gusta esto:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_margin="16dp" android:layout_height="wrap_content" android:background="@android:color/background_light"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="16dp" android:paddingRight="16dp" android:paddingLeft="16dp" android:text="Title" android:textSize="18dp" android:textColor="@android:color/primary_text_holo_light" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingRight="16dp" android:paddingLeft="16dp" android:text="Subtitle" android:textSize="14dp" android:textColor="@android:color/primary_text_holo_light" /> <ImageView android:layout_marginTop="16dp" android:layout_marginBottom="16dp" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/background"/> </LinearLayout> 

Tienen la misma necesidad, y han comenzado a investigar un poco. He estado buscando en la salida de apktool que he podido obtener del apk de com.google.android.googlequicksearchbox. (No hay fuentes sólo las res xmls)

Este diseño (at_place_card.xml) se utiliza para mostrar una ubicación. Tiene tres líneas de texto y dos botones de acciones (detalles y checkin) a la derecha y una imagen a la izquierda.

Desafortunadamente, no puedo conseguir ninguna información del estilo hacia fuera del apk, así que el tamaño de fuente, las dimensiones y los colores son apenas conjeturas.

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout android:orientation="horizontal" android:background="@drawable/card_background" android:layout_width="fill_parent" android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:thegoogle="http://schemas.android.com/apk/res/com.google.android.googlequicksearchbox"> <LinearLayout android:orientation="vertical" android:layout_width="0.0dip" android:layout_height="fill_parent" android:baselineAligned="false" android:layout_weight="1.0"> <FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" style="@style/CardTextBlock"> <TextView android:id="@id/entry_title" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/CardTitle" /> <TextView android:id="@id/open_hours" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@style/CardText" /> <TextView android:textColor="@color/card_light_text" android:id="@id/known_for_terms" android:paddingBottom="4.0dip" android:visibility="gone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="4" style="@style/CardText" /> </LinearLayout> <ImageButton android:layout_gravity="top|right|center" android:id="@id/card_menu_button" android:layout_width="@dimen/card_action_button_height" android:layout_height="@dimen/card_action_button_height" android:contentDescription="@string/accessibility_menu_button" style="@style/CardMenuButton" /> </FrameLayout> <Space android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_weight="1.0" /> <Button android:id="@id/details_button" android:visibility="gone" android:layout_width="fill_parent" android:layout_height="@dimen/card_action_button_height" android:text="@string/more_details" android:drawableLeft="@drawable/ic_action_pin" style="@style/CardActionButtonWithIcon" /> <Button android:id="@id/checkin_button" android:layout_width="fill_parent" android:layout_height="@dimen/card_action_button_height" android:text="@string/check_in" android:drawableLeft="@drawable/ic_action_check_in" style="@style/CardActionButtonWithIcon" /> </LinearLayout> <com.google.android.velvet.ui.CrossfadingWebImageView android:id="@id/place_photo" android:visibility="gone" android:layout_width="0.0dip" android:layout_height="fill_parent" android:scaleType="centerCrop" android:adjustViewBounds="true" android:baselineAligned="false" android:minHeight="@dimen/at_place_card_content_height" android:layout_weight="1.0" android:contentDescription="@string/at_place_card_image_desc" thegoogle:crossfadeDuration="@integer/image_crossfade_duration" /> </LinearLayout> 

Actualización: También fue capaz de obtener información de estilo. Si estás interesado aquí es un archivo zip con la información que tengo actualmente (algunos archivos de recursos de google ahora). https://dl.dropbox.com/u/4379928/android/googlenow2.zip

  • statusCode = DEVELOPER_ERROR en google login
  • "Llamar esto desde su hilo principal puede llevar a deadlock y / o ANRs mientras obtiene accesToken" de GoogleAuthUtil (integración de Google Plus en Android)
  • Google Sign In no funciona después de publicado en playstore
  • No funciona correctamente en el fragmento de Android
  • Plataforma de Google+ para Android - NoClassDefFoundError: com.google.android.gms.samples.plus.SignInActivity
  • Cómo salir completamente de google plus de diferentes actividades en android?
  • La intención de compartir Google+ no puede acceder a la imagen
  • Google Android estilo de botón de inicio de sesión
  • Android google signin y facebook inicio de sesión botón de mirar completamente diferente
  • Iniciar sesión con G + - ¿por qué el ámbito "plus.login" no funciona solo?
  • Acceda a google plus client desde múltiples actividades
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.