Cómo crear efecto de rizo para pre-lollipop

Cómo aplicar efecto de rizado como este

He puesto las dependencias en app / build.gradle

App / build.gradle

dependencies { compile 'com.github.traex.rippleeffect:library:1.3' } 

Construir un gradiente

 allprojects{ repositories{ jcenter() maven(url "https://jitpack.io" } 

Archivo XML:

 <com.andexert.library.RippleView android:id="@+id/rect1" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:id="@+id/enterButton" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Save your user name" /> </com.andexert.library.RippleView> 

Archivo de clase Java

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.save_user); editText=(EditText) findViewById(R.id.userNameEditText); button=(Button) findViewById(R.id.enterButton); sharedPreferences=getSharedPreferences(SHARED_NAME_STRING, MODE_PRIVATE); String userNameString=sharedPreferences.getString(USER_NAME_STRING, ""); editText.setText(userNameString); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String string=editText.getText().toString(); Intent intent=new Intent(SaveUser.this, MainActivity.class); intent.putExtra("user", string); SharedPreferences.Editor editor=sharedPreferences.edit(); editor.putString(USER_NAME_STRING, string); editor.commit(); startActivity(intent); } }); } 

Funciona, pero mi problema es otra actividad se abre antes de que el efecto de rizo se completa y cuando presiono el botón de volver a la rizada restante se completa. ¿¿Cómo puedo resolverlo??

Puedes probar esta biblioteca balysv / material-ripple .

En su gradle, agregue esta línea:

 compile 'com.balysv:material-ripple:1.0.2' 

Y esto es cómo hacerlo:

 <com.balysv.materialripple.MaterialRippleLayout android:id="@+id/ripple" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Button inside a ripple"/> </com.balysv.materialripple.MaterialRippleLayout> 

Para lollipop (API> 21), haga el archivo como btn_ripple_effect.xml en drawable-v21 y coloque debajo del código

  <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:color="?android:colorAccent" tools:targetApi="lollipop"> <item android:drawable="@color/cancel_btn_clr" /> <!-- default --> <item android:id="@android:id/mask"> <shape android:shape="rectangle"> <solid android:color="?android:colorAccent" /> </shape> </item> </ripple> 

Para pre lollipop (API <21), haga el archivo como btn_ripple_effect.xml en una carpeta dibujable y colóquelo debajo del código

 <item android:state_pressed="true"> <shape> <solid android:color="@color/colorAccent"></solid> </shape> </item> <item> <shape> <solid android:color="@color/cancel_btn_clr"></solid> </shape> </item> 

Crear botón como se muestra a continuación

 <Button android:id="@+id/button3" style="@style/cancel_btn_style" android:layout_marginLeft="50dp" android:text="Cancel" /> 

Agrega esto en tu estilo.xml

  <style name="cancel_btn_style" parent="Theme.AppCompat"> <item name="android:textSize">15sp</item> <item name="android:textColor">#ffffff</item> <item name="android:layout_height">36dp</item> <item name="android:layout_width">90dp</item> <item name="android:background">@drawable/btn_ripple_effect</item> 

Sé que esto es viejo pero usted puede realizar su acción en onRippleCompleteListener proporcionado por la biblioteca. Algo como :

 rippleView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() { @Override public void onComplete(RippleView rippleView) { //Your code here... } }); 

Espero que esto ayude. 🙂

Utilizar la librería appcompat

 com.android.support:appcompat-v7:22.1.1 

Extender "Base.TextAppearance.AppCompat.Button"

 <style name="BrowseContentButton" parent="Base.TextAppearance.AppCompat.Button"> <item name="android:textColor">@color/grey_0</item> <item name="android:layout_width">match_parent</item> <item name="android:layout_height">48dp</item> </style> 

Aplicar el estilo

  <Button android:id="@+id/browseMultimedia" style="@style/BrowseContentButton" android:layout_below="@id/browseGuidelines" android:layout_toRightOf="@+id/divider" android:text="@string/browse_multimedia" /> 
  • Ondulación y fondo sin límites de Android
  • Mantenga la ondulación dentro del trazo
  • Cómo utilizar RippleDrawable programaticamente en código (no xml) con Android 5.0 Lollipop?
  • Android cómo hacer referencia a una nueva clase de la Ripple RippleDrawable
  • Cómo crear efecto de rizo en un diseño sencillo
  • Las ondulaciones no se muestran con selectableItemBackground como primer plano en un CardView con un dispositivo Android 5.0
  • Agregar los efectos de un RippleDrawable y un StateListDrawable a un RecyclerView
  • Botón de Toggle con estilo de botón sin bordes - ¿cómo obtener el fondo en estado marcado?
  • ¿Cómo activar el efecto de rizo en Android Lollipop, en una ubicación específica dentro de la vista, sin desencadenar eventos de touch?
  • Efecto de ondulación de Android anulado por el estado seleccionado
  • RippleDrawable máscara de color, ¿para qué sirve?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.