Comment appliquer un effet d'entraînement comme this
j'ai mis les dépendances dans 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" }
Fichier 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>
Fichier de classe 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);
}
});
}
cela fonctionne, mais mon problème est qu'une autre activité s'ouvre avant que l'effet d'entraînement ne se termine et lorsque j'appuie sur le bouton de retour, l'ondulation restante se termine. Comment puis-je le résoudre??
Vous pouvez essayer cette bibliothèque balysv/material-ripple .
Dans votre gradle, ajoutez cette ligne:
compile 'com.balysv:material-ripple:1.0.2'
Et voici comment procéder:
<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>
Pour Lollipop (API> 21), créez le fichier en tant que btn_ripple_effect.xml dans drawable-v21 et mettez le code ci-dessous
<?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>
Pour pré Lollipop (API <21), créez le fichier btn_ripple_effect.xml dans le dossier drawable et mettez le code ci-dessous
<?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>
Créer un bouton comme ci-dessous
<Button
Android:id="@+id/button3"
style="@style/cancel_btn_style"
Android:layout_marginLeft="50dp"
Android:text="Cancel"
/>
Ajoutez ceci dans votre 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>
Pour Lollipop (API> 21), créez le fichier btn_ripple_effect.xml dans drawable-v21 et mettez le code ci-dessous
<?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>
Pour pré Lollipop (API <21), créez le fichier sous btn_ripple_effect.xml dans le dossier drawable et mettez le code ci-dessous
<?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>
l'utiliser sur imageview comme ça
<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"/>
Je sais que c'est ancien mais vous pouvez effectuer votre action dans onRippleCompleteListener fourni par la bibliothèque. Quelque chose comme :
rippleView.setOnRippleCompleteListener(new RippleView.OnRippleCompleteListener() {
@Override
public void onComplete(RippleView rippleView) {
//Your code here...
}
});
J'espère que cela t'aides. :)
Utilisez la bibliothèque appcompat
com.Android.support:appcompat-v7:22.1.1
étendre "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>
appliquer le style
<Button
Android:id="@+id/browseMultimedia"
style="@style/BrowseContentButton"
Android:layout_below="@id/browseGuidelines"
Android:layout_toRightOf="@+id/divider"
Android:text="@string/browse_multimedia"
/>