Custom Progress Dialog mit Squre Image Rotation mit AsynTask

Ich habe einen benutzerdefinierten Loading Progress Dialog erstellt. Und seine Arbeit gut.

Ich drehe 12 quadratische Bilder hier ist einer von ihnen

  • App-Crashing beim Auswählen / Scrollen von Elementen auf Spinner. (LG Mobile) (java.lang.IllegalStateException: Iteration hat bereits begonnen)
  • Laden von Bild aus der URL in der Benachrichtigung Android
  • Fortsetzen Download funktioniert nicht in Android
  • Gradle error, wenn theme deklarieren-styleable in zwei bibliotheken
  • Android, finden Sie alle Plätze in Code, um Berechtigungen anzufordern
  • WebView zurück Geschichte ohne Umleitungen
  • Bildbeschreibung hier eingeben

    Aber wenn ich es mit AsynTask verwenden möchte, funktioniert die Animation nicht.

    Mein Beispielcode ist unten.

    Aktivität Wo ich anfange Loading … Animation und Stop.

    MainActivity.java

    public class MainActivity extends Activity { AnimationDrawable loadingViewAnim; TextView loadigText; ImageView loadigIcon; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loadigText = (TextView) findViewById(R.id.textView1); loadigText.setText("Loading..."); loadigText.setVisibility(View.GONE); loadigIcon = (ImageView) findViewById(R.id.imageView1); loadigIcon.setVisibility(View.GONE); loadigIcon.setBackgroundResource(R.anim.progress_animation_white); loadingViewAnim = (AnimationDrawable) loadigIcon.getBackground(); } //When User Touch on Screen The Loading... Animation Starts With Image Rotation //If I start below code in AsynTask's onPreExecute method it doesn't work public boolean onTouchEvent(MotionEvent event) { loadigText.setVisibility(View.VISIBLE); loadigIcon.setVisibility(View.VISIBLE); if (event.getAction() == MotionEvent.ACTION_DOWN) { loadingViewAnim.start(); return true; } return super.onTouchEvent(event); } } 

    XML-Layout mit einfachem Text und Bild für Fortschrittsdialog.

    activity_main.xml

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#000000" android:gravity="center" android:orientation="vertical" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/progress_sm_w01" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Loading..." android:textColor="#ffffff" android:textSize="12sp" /> </LinearLayout> 

    Animationsliste mit 12 Bildern Ich drehe mit Angle & Time Duration

    progress_animation_white.xml

     <animation-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/progress_sm_w01" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w02" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w03" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w04" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w05" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w06" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w07" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w08" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w09" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w10" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w11" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w12" android:duration="50" /> </animation-list> 

    Hier ist das Ergebnis Loading Screen ..

    Bildbeschreibung hier eingeben

    Meine Frage ist es sowieso, um die gleiche Loading Animation mit AsynTask zu erreichen.

    Ihre kleine Hilfe wird geschätzt.

  • Android ClickableSpan fängt das Klickereignis ab
  • Legen Sie den Standardwert einer Ganzzahlspalte SQLite fest
  • Unterschied zwischen content_main.xml und activity_main.xml?
  • Verschiedene Auflösung Unterstützung Android
  • Wie man den Android-Fragment-View-Status wiederherstellt
  • Fragment-Aktivität stürzt auf dem Bildschirm ab
  • 3 Solutions collect form web for “Custom Progress Dialog mit Squre Image Rotation mit AsynTask”

    Nun dank @Brontok und @URAndroid für ihre Hilfe. Ich habe mein Problem gelöst. Also lass mich meine eigene Frage beantworten, Hacke, die ich diese benutzerdefinierte Ladeanimation erreicht habe

    Ich habe ein paar Bild für Bilddrehung Animation hinzugefügt

    Schritt 1 – in res / drawable Ordner

    1. progress_sm_w00.png (Standard leeres transparentes Bild)
    2. progress_sm_w01.png (erste animtion position)
    3. progress_sm_w02.png
    4. progress_sm_w03.png
    5. progress_sm_w04.png
    6. progress_sm_w05.png
    7. progress_sm_w06.png
    8. progress_sm_w07.png
    9. progress_sm_w08.png
    10. progress_sm_w09.png
    11. progress_sm_w10.png
    12. progress_sm_w11.png
    13. progress_sm_w12.png (letzte Animationsposition).

    Beispiel: Eines davon ist unten, das ich hinzugefügt habe

    Bildbeschreibung hier eingeben

    Schritt 2 – in res / anim Ordner erstellt Animation Dateiname "loading_animation.xml"

     <item android:drawable="@drawable/progress_sm_w01" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w02" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w03" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w04" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w05" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w06" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w07" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w08" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w09" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w10" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w11" android:duration="50" /> <item android:drawable="@drawable/progress_sm_w12" android:duration="50" /> </animation-list> 

    Schritt 3 – jetzt erstellt benutzerdefinierte Laden Ansicht Layout in meinem Bildschirm (Aktivität) wo immer ich das Laden zu zeigen

    Beispiel. XML-Layout für meinen Facebook-Login-Bildschirm

     <LinearLayout android:id="@+id/LinearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#0D000000" android:gravity="center" android:orientation="vertical" android:visibility="gone" > <ImageView android:id="@+id/imageView111" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/progress_sm_w00" android:visibility="gone" /> <TextView android:id="@+id/textView111" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:text="Searching..." android:textColor="#ffffff" android:textSize="12sp" android:visibility="gone" /> </LinearLayout> 

    Schritt 4 – Im Java-Code (Aktivität) habe ich die Lade-Ansicht erstellt und nach dem Ausfüllen der OnCreate-Methode habe ich Asyn Task gestartet, damit meine Animation richtig funktioniert.

     public class ResultActivity extends Activity { private static final String TAG = "ResultActivity"; private AnimationDrawable loadingViewAnim=null; private TextView loadigText = null; private ImageView loadigIcon = null; private LinearLayout loadingLayout = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_result); loadingLayout = (LinearLayout)findViewById(R.id.LinearLayout1); loadingLayout.setVisibility(View.GONE); loadigText = (TextView) findViewById(R.id.textView111); loadigText.setVisibility(View.GONE); loadigIcon = (ImageView) findViewById(R.id.imageView111); loadigIcon.setVisibility(View.GONE); loadigIcon.setBackgroundResource(R.anim.loading_animation); loadingViewAnim = (AnimationDrawable) loadigIcon.getBackground(); // This line is to start Asyn Task only when OnCreate Method get completed, So Loading Icon Rotation Animation work properly loadigIcon.post(new Starter()); } class Starter implements Runnable { public void run() { //start Asyn Task here new LongOperation().execute(""); } } private class LongOperation extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... params) { //ToDo your Network Job/Request etc. here return "Executed"; } @Override protected void onPostExecute(String result) { //ToDo with result you got from Task //Stop Loading Animation loadingLayout.setVisibility(View.GONE); loadigText.setVisibility(View.GONE); loadigIcon.setVisibility(View.GONE); loadingViewAnim.stop(); } @Override protected void onPreExecute() { //Start Loading Animation loadingLayout.setVisibility(View.VISIBLE); loadigText.setVisibility(View.VISIBLE); loadigIcon.setVisibility(View.VISIBLE); loadingViewAnim.start(); } @Override protected void onProgressUpdate(Void... values) {} } } 

    Schritt 5 – Hier ist der Ergebnisbildschirm mit Fortschritt Laden Animation.

    Bildbeschreibung hier eingeben

    Hoffe das wird dir helfen Prost!!

    Vielleicht kannst du zum Beispiel GLIDE benutzen

     Glide.with(context) .load(imageUrl) .asGif() .placeholder(R.drawable.loading2) .crossFade() .into(imageView); 

    GIF-Datei mit Glide anzeigen (Bildlade- und Caching-Bibliothek)

    Hauptaktivität

     package com.sanjay.activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import com.sanjay.R; public class MainActivity extends AppCompatActivity { CustomProgressDialog customProgressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); customProgressDialog = new CustomProgressDialog(this); } public void onClickShowDialog(View view) { customProgressDialog.show(); } public void onClickDismissDialog(View view) { if (customProgressDialog != null && customProgressDialog.isShowing()) { customProgressDialog.dismiss(); } } } 

    CustomProgressDialog

     package com.sanjay.activity; import android.app.Dialog; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.view.Gravity; import android.view.WindowManager; import android.widget.ImageView; import android.widget.LinearLayout; import com.sanjay.R; public class CustomProgressDialog extends Dialog { private ImageView imageView; private Context mContext; public CustomProgressDialog(Context context) { super(context, R.style.CustomProgressDialog); mContext = context; WindowManager.LayoutParams wlmp = getWindow().getAttributes(); wlmp.gravity = Gravity.CENTER_HORIZONTAL; getWindow().setAttributes(wlmp); setTitle(null); setCancelable(true); //setOnCancelListener(null); LinearLayout layout = new LinearLayout(context); layout.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(400, 400); imageView = new ImageView(context); imageView.setBackgroundResource(R.drawable.custom_dialog); layout.addView(imageView, params); addContentView(layout, params); } @Override public void show() { super.show(); AnimationDrawable frameAnimation = (AnimationDrawable) imageView.getBackground(); frameAnimation.start(); } @Override public void dismiss() { super.dismiss(); } } 

    activity_main.xml

     <?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="match_parent" android:background="#FFFFFF"> <Button android:id="@+id/btn_show_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:onClick="onClickShowDialog" android:text="Show Dialog" /> <Button android:id="@+id/btn_dismiss_dialog" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/btn_show_dialog" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:onClick="onClickDismissDialog" android:text="Dismiss Dialog" /> </RelativeLayout> 

    res / drawable / custom_dialog.xml

     <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/image_1" android:duration="200" /> <item android:drawable="@drawable/image_2" android:duration="200" /> <item android:drawable="@drawable/image_3" android:duration="200" /> <item android:drawable="@drawable/image_4" android:duration="200" /> <item android:drawable="@drawable/image_5" android:duration="200" /> <item android:drawable="@drawable/image_6" android:duration="200" /> <item android:drawable="@drawable/image_7" android:duration="200" /> <item android:drawable="@drawable/image_8" android:duration="200" /> </animation-list> 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.