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"
/>