android rippledrawable

android - Cómo crear un efecto dominó para pre-lollipop



rippledrawable (5)

Cómo aplicar un efecto dominó como this

He puesto las dependencias en app / build.gradle

app / build.gradle

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

build.gradle

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 que otra actividad se abre antes de que se complete el efecto dominó y cuando presiono el botón Atrás se completa la ondulación restante. ¿¿Cómo puedo resolverlo??


Para lollipop (API> 21), cree el archivo como btn_ripple_effect.xml en drawable-v21 y coloque el siguiente 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), cree el archivo como btn_ripple_effect.xml en una carpeta dibujable y coloque el siguiente código

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <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> </selector>

Crear botón como a continuación

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

Agregue esto en su style.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>


Para lollipop (API> 21), cree el archivo como btn_ripple_effect.xml en drawable-v21 y coloque el siguiente 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="#f8c7c9c8" tools:targetApi="lollipop"> <item android:id="@android:id/mask"> <shape android:shape="oval"> <corners android:radius="@dimen/dp10" /> <solid android:color="#f8ced6d2" /> </shape> </item> </ripple>

Para pre lollipop (API <21), cree el archivo como btn_ripple_effect.xml en una carpeta dibujable y coloque el siguiente código

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <shape android:shape="oval"> <solid android:color="#f8ced6d2"/> </shape> </item> <item> <shape> <solid android:color="@color/transparent"/> </shape> </item> </selector>

úsalo en una vista de imagen como esta

<ImageView android:id="@+id/imageViewOffer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:background="@drawable/btn_ripple_effect" android:src="@mipmap/ic_offers"/>


Puede probar esta biblioteca balysv/material-ripple .

En tu gradle, agrega esta línea:

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

Y así es como 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>


Sé que esto es antiguo, pero 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. :)


Use la biblioteca de 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" />