Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android L FAB Botón sombra

En las directrices de diseño de material, Google presentó un nuevo estilo de botón , el botón FAB . Encontré instrucciones de cómo hacerlo, pero tengo problemas para añadir la sombra. ¿Cómo se puede lograr esto?

  • INSTALL_FAILED_DUPLICATE_PERMISSION ... C2D_MESSAGE
  • ¿Cuáles son las nuevas API de desplazamiento anidadas para Android-L?
  • Android: ¿Detectar el estado de No molestar?
  • Android 5.0 Lollipop y 4.4 KitKat ignora mi red WiFi, enableNetwork () es inútil
  • Actividad Error de transición, no se puede resolver el símbolo '@ transition / explode'
  • ¿Cómo usar StateListAnimator?
  • ¿Cómo usar StateListAnimator?
  • Cómo importar RecyclerView para Android L-preview
  • Activación del modo de ubicación Alta exactitud o ahorro de la batería, programáticamente, sin necesidad de que el usuario visite Configuración
  • Estilo de la barra de herramientas Android
  • SetSupportProgressBarIndeterminateVisibility que genera java.lang.NullPointerException cuando se utiliza con Android 5.0 SDK (API 21)
  • ¿Cómo manejar el efecto Ripple en 9-patch y CardView, y tener control sobre los estados del selector?
  • 3 Solutions collect form web for “Android L FAB Botón sombra”

    Compruebe hacia fuera el "activity.java", allí es probablemente el código que usted necesita.

    Hice el Fab – Button como este:

    Layout.xml

      <Button style="?android:attr/buttonStyleSmall" android:layout_width="56dp" android:layout_height="56dp" android:text="+" android:textSize="40sp" android:background="@drawable/ripple" android:id="@+id/fabbutton" android:layout_margin="@dimen/activity_horizontal_margin" android:elevation="3dp" android:paddingBottom="16dp" android:fontFamily="sans-serif-light" android:layout_alignParentEnd="true" android:layout_gravity="right|bottom" /> 

    Ripple.xml

     <?xml version="1.0" encoding="utf-8"?> <ripple android:color="#ffb300" xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/fab"></item> </ripple> 

    Fab.xml

     <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/accentColor" /> </shape> 

    Actividad.java

      import android.graphics.Outline; ... Button fab = (Button) rootView.findViewById(R.id.fabbutton); Outline mOutlineCircle; int shapeSize = getResources().getDimensionPixelSize(R.dimen.shape_size); mOutlineCircle = new Outline(); mOutlineCircle.setRoundRect(0, 0, shapeSize, shapeSize, shapeSize / 2); fab.setOutline(mOutlineCircle); fab.setClipToOutline(true); 

    Este código se mostrará como error en android studio v0.8.1, por lo que otros android componentes l. Se arreglará en la próxima versión.

    Resultado:

    Introduzca aquí la descripción de la imagen

    Puede utilizar un botón:

     <ImageButton android:id="@+id/fab" android:background="@drawable/ripple" android:stateListAnimator="@anim/anim" android:src="@drawable/ic_action_add" android:elevation="4dp" /> 

    Donde ic_action_add es tu icono.

    Drawable / ripple.xml es:

     <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="?android:colorControlHighlight"> <item> <shape android:shape="oval"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple> 

    Anim / anim.xml es:

     <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true" android:state_pressed="true"> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueFrom="@dimen/button_elevation" android:valueTo="@dimen/button_press_elevation" android:valueType="floatType" /> </item> <item> <objectAnimator android:duration="@android:integer/config_shortAnimTime" android:propertyName="translationZ" android:valueFrom="@dimen/button_press_elevation" android:valueTo="@dimen/button_elevation" android:valueType="floatType" /> </item> </selector> 

    Dimens.xml es

     <resources> <dimen name="fab_size">56dp</dimen> <dimen name="button_elevation">2dp</dimen> <dimen name="button_press_elevation">4dp</dimen> </resources> 

    Con el atributo de elevación , debe establecer el esquema mediante código:

     public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layoutfab); //Outline Button fab = (Button) findViewById(R.id.fab) ViewOutlineProvider viewOutlineProvider = new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { // Or read size directly from the view's width/height int size = getResources().getDimensionPixelSize(R.dimen.fab_size); outline.setOval(0, 0, size, size); } }; fab.setOutlineProvider(viewOutlineProvider); } } 

    El problema con la sombra circular puede ser fácilmente resuelto sin ningún truco con el Outline : basta con añadir estas propiedades al botón en el diseño XML (además del fondo personalizado):

     android:elevation="5dp" android:stateListAnimator="@null" 

    Aunque Android Studio puede mostrar un error en la vista previa de diseño, funciona bien cuando se inicia en un dispositivo.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.