1

Je fais une activité d'inscription, où j'utilise des ressources drawables pour interagir. TextWatcher et certains codage, alors (par exemple):ProgressDialog comme dessinable? GIF ou quelque chose?

etPass.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_lock_open, 0, R.drawable.icon_close, 0); 

Maintenant, je l'ai fait une tâche pour vérifier e-mail sur la base de données. Je voudrais montrer un ProgressDialog pendant que cette tâche obtient le résultat. J'ai essayé avec un gif, mais ça ne s'anime pas correctement. Je veux quelque chose comme:

Remarque: Je voudrais le faire à travers « setCompoundDrawablesWithIntrinsicBounds », une fois qu'il vient déjà formaté et tenir sur le terrain. Mais je suis ouvert à d'autres moyens.

Merci!

+0

essayer quelque chose comme [ce] (http://androidxref.com/5.1. 1_r6/xref/frameworks/base/core/res/res/dessinable/progress_medium.xml) – pskink

Répondre

1

Voilà comment je le ferais:

Créer un XML personnalisé pour le EditText avec ProgressBar.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" > 
    <EditText 
     android:layout_width="match_parent" 
     android:id="@+id/edit" 
     android:layout_height="wrap_content" 
     android:drawableLeft="@drawable/ic_launcher" 
     android:singleLine="true" /> 
    <ProgressBar 
     style="?android:attr/progressBarStyleLarge" 
     android:id="@+id/progress" 
     android:visibility="invisible" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@id/edit" 
     android:layout_alignBottom="@id/edit" 
     android:layout_alignRight="@id/edit"/> 
</RelativeLayout> 

Ensuite, inclure dans l'activité

<include 
     android:id="@+id/field1" 
     layout="@layout/progress_edittext" 
     android:layout_centerInParent="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

puis récupérer dans onCreate()

public class MainActivity extends ActionBarActivity { 
    private View field1; 
    private EditText edit; 
    private ProgressBar progress; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     field1 = findViewById(R.id.field1); 
     edit = (EditText) field1.findViewById(R.id.edit); 
     progress = (ProgressBar) field1.findViewById(R.id.progress); 
     edit.addTextChangedListener(new TextWatcher() { 
      @Override 
      public void onTextChanged(CharSequence s, int start, int before, int count) { 
       progress.setVisibility(View.VISIBLE); 
      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) {} 

      @Override 
      public void afterTextChanged(Editable s) { 
       // YOUR LOGIC GOES HERE 
      } 
     }); 
    } 
} 
+0

Works! Je vous remercie ! ** Note **: je n'avais pas besoin de 'field1 = findViewById (R.id.field1); edit = (EditText) field1.findViewById (R.id.edit); progress = (ProgressBar) field1.findViewById (R.id.progress); ' Seulement besoin de: ' ProgressBar progress = (ProgressBar) findViewById (R.id.progress_email); progress.setVisibility (View.VISIBLE); ' –

+0

@VictorMilazzo mais vous le feriez si vous aviez plusieurs' ', non? :) –

1

Si vous souhaitez obtenir un format GIF et le diviser en cadres, la classe AnimationDrawable répondra à vos besoins.

+0

Essayé, mais n'a pas fonctionné .. Je pense que c'est parce que setCompoundDrawablesWithIntrinsicBounds a besoin d'un drawable comme paramètre. Merci quand même ! –

+0

AnimationDrawable est un type de Drawable! Peu importe, l'autre réponse vous a donné ce dont vous aviez besoin – JoeyJubb

+0

Vous avez raison! Mais cette méthode n'accepte pas AnimationDrawable comme param:/ –