web-dev-qa-db-fra.com

comment créer un effet d'entraînement pour la pré-sucette

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??

16
Amrita Stha

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>
25
Farouk Touzi

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>
30
user5439728

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"/>
5
Neelu Agrawal

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. :)

3
Varun Ramani

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