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
- Android Ripple Effect + Elevación en las vistas que no son de botón
- SetBackgroundResource actúa diferente de setBackground con RippleDrawable
- Efecto de ondulación en los elementos desplegables de Spinner de fondo de color (appcompat-v7 V21)
- Color de fondo ondulado de Android
- Lollipop RippleDrawable vs Selector para Pre-Lollipop
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??
- Android Button Ripple en Lollipop y resaltar en pre lollipop
- Touch feedback con RecyclerView y CardView
- ¿Cómo agregar efecto de rizado a las preferencias en android?
- Android spinner no tiene rizado en el botón en sí, sólo sus opciones
- Desactivar Ripple en ListView
- El efecto Ripple no funciona en RelativeLayout
- El efecto Ripple no va por encima de ImageView
- Android L's Ripple Effect - Touch Feedback para los botones - Uso de XML
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" />
- ¿Cómo obtener el número de teléfono de una llamada entrante?
- Cómo cerrar el diseño de cajones en BackPress en Android?