So zeigen Sie den Fortschrittsbalken (Kreis) in einer Aktivität mit einer Listenansicht an, bevor Sie die Listenansicht mit Daten laden

141

Ich habe ListViewin meinem zweiten activity.OnItemClickeinen Webservice angerufen und versucht, Daten abzurufen. Und danach gehe ich zu der dritten Aktivität über, die auch eine ListViewBeschreibung der vorherigen Aktivitäten enthält ListView.

Ich möchte einen Fortschrittsdialog anzeigen, bevor ich diesen ausfülle ListView.

Ich verstehe nicht, wie es geht ListView? Weiß jemand, wie es geht?

Mein Code-

ThirdActivity.java

   package com.google.iprotect;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParserException;

import com.google.iprotect.layout.TitleBarLayout;

import android.app.Activity;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.content.res.XmlResourceParser;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.TextView;

public class ThirdActivity extends ListActivity implements OnItemClickListener{

    JSONArray jArray1,jArray2;
    String one,two,three,tablename;
    String color,r;
    JSONObject responseJSON;
    TitleBarLayout titlebarLayout;
    final ArrayList<Tables> arraylist = new ArrayList<Tables>();
    TextView tableName;
    ColorStateList colorStateList1;
    String email1,password1;
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.thirdactivity);

        ListView lv=getListView();
        lv.setOnItemClickListener(this);


        tablename=getIntent().getExtras().getString("Table Name");
        email1 = getIntent().getExtras().getString("email");
        password1 =getIntent().getExtras().getString("password");

        titlebarLayout = new TitleBarLayout(ThirdActivity.this);
        titlebarLayout.setLeftButtonText("go Back");
        titlebarLayout.setRightButtonText("Logout");
        titlebarLayout.setTitle(tablename);
        titlebarLayout.setLeftButtonSize(70,40);
        titlebarLayout.setRightButtonSize(70,40);
        //titlebarLayout.setLeftButtonLeftDrawable(R.drawable.refresh);

        //titlebarLayout.setRightButtonLeftDrawable(R.drawable.buttonrefresh);
        //titlebarLayout.setLeftButtonBackgroundColor(Color.rgb(255,255,255));
        //titlebarLayout.setRightButtonBackgroundColor(Color.rgb(34,49,64));
        //titlebarLayout.setLeftButtonTextColor(Color.rgb(255,255,255));
        //titlebarLayout.setRightButtonTextColor(Color.rgb(255,255,0));     

        XmlResourceParser parser1 =getResources().getXml(R.color.colorstatelist);


        try {
            colorStateList1 = ColorStateList.createFromXml(getResources(), parser1);
            titlebarLayout.setRightButtonTextColor(colorStateList1);
        } catch (XmlPullParserException e) {    
            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        }

        OnClickListener listener = new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (v.getId() == R.id.left_button) {
                    Intent intent = new Intent(ThirdActivity.this,SecondActivity.class);
                    intent.putExtra("email", email1);
                    intent.putExtra("password", password1);
                    startActivity(intent);
                    finish();

                } else if (v.getId() == R.id.right_button) {
                    Intent intent = new Intent(ThirdActivity.this,
                            MainActivity.class);
                    //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    intent.setFlags( Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                    ThirdActivity.this.startActivity(intent);

                }
            }
        };
        titlebarLayout.setLeftButtonOnClickListener(listener);
        titlebarLayout.setRightButtonOnClickListener(listener);


        updateTableList();




    }

    private void updateTableList() {
        // TODO Auto-generated method stub
        //final ProgressDialog pd1=ProgressDialog.show(this, "Calling Webservice", "Waiting...", true, false);

        final ProgressBar pbHeaderProgress = (ProgressBar) findViewById(R.id.pbHeaderProgress);

        new AsyncTask<Void, Void, Void>() {


            protected void onPreExecute() {
                // TODO Auto-generated method stub
                super.onPreExecute();
                pbHeaderProgress.setVisibility(View.VISIBLE);
            }



            protected Void doInBackground(Void... params) {
                r = invokeWebService1(tablename);
                //pd1.dismiss();

                try {
                    responseJSON = new JSONObject(r);
                    //json reading
                    jArray1 = responseJSON.getJSONArray("FirstThree");//get JSONArray jArray1 from JSONObject with name FirstThree
                    jArray2 = responseJSON.getJSONArray("Color");//get JSONArray jArray2 from JSONOobject with name Color
                    JSONObject json_data1 = null;
                    JSONObject json_data2 = null;

                    for (int i = 0; i < jArray1.length(); i++) {
                        json_data1 = jArray1.getJSONObject(i);//get JSONObject json_data1 from JSONArray at index i;
                        one = json_data1.getString("One");//get value from JSONObject json_data1 with key "One"
                        two = json_data1.getString("Two");
                        three = json_data1.getString("Three");
                        json_data2 = jArray2.getJSONObject(i);
                        color = json_data2.getString("color");//get value from JSONObject json_data2 with key "color"

                        Tables tables = new Tables();
                        //set value to Tables Class
                        tables.column1 = one;
                        tables.column2 = two;
                        tables.column3 = three;
                        tables.tableName=tablename;
                        tables.color=color;
                        //add Tables object into ArrayList<Tables>
                        arraylist.add(tables);

                        Log.i("ONE", json_data1.getString("One"));
                        Log.i("TWO", json_data1.getString("Two"));
                        Log.i("THREE", json_data1.getString("Three"));
                        Log.i("color",""+ json_data2.getString("color"));
                    }

                } catch (JSONException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                return null;
            }

            protected void onPostExecute(Void result) {
                pbHeaderProgress.setVisibility(View.GONE);

                //Custom Adapter for ListView
                TableDetailAdapter adaptor = new TableDetailAdapter(ThirdActivity.this,
                        R.layout.table_data_list_item, arraylist);
                setListAdapter(adaptor);
            }
        }.execute();

    }

    protected String invokeWebService1(String tablename2) {
        // TODO Auto-generated method stub
        String response = "";
        try {
            WebService webService = new WebService(
            "http://sphinx-solution.com/iProtect/api.php?");

            // Pass the parameters if needed
            Map<String, String> params = new HashMap<String, String>();
            params.put("action", "getTableRecords");
            params.put("tablename", tablename2);
            params.put("email", email1);
            params.put("password", password1);

            // Get JSON response from server the "" are where the method name
            // would normally go if needed example
            response = webService.WebGet("auth", params);

        } catch (Exception e) {
            Log.d("Error: ", e.getMessage());
        }
        return response;
    }


    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        // TODO Auto-generated method stub

        Log.v("", "Click ListItem Number "+position);
        Intent intent = new Intent(ThirdActivity.this,FourthActivity.class);
        intent.putExtra("Json", responseJSON.toString());//sending json Object as a string to next activity
        intent.putExtra("Table Name", tablename);
        intent.putExtra("email", email1);
        intent.putExtra("password", password1);
        intent.putExtra("Item No", position);
        startActivity(intent);

    }

}

Thirdactivity.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/linlaHeaderProgress"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ThirdActivity" >

    <include
        android:id="@+id/titlebar"
        layout="@layout/titlebar_layout" />

    <ProgressBar
        android:id="@+id/pbHeaderProgress"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="2" >
    </ProgressBar>

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="260dp" 
        android:layout_weight="5.04">
    </ListView>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="@dimen/titlebar_height"
        android:layout_alignParentBottom="true"
        android:background="@color/footer_bg_color"
        android:gravity="bottom"
        android:orientation="horizontal" >

        <include
            android:id="@+id/footer"
            android:layout_height="@dimen/titlebar_height"
            android:layout_gravity="bottom|center_horizontal"
            layout="@layout/footer_layout" />
    </LinearLayout>

</LinearLayout>
Ani
quelle
Haben Sie im Internet nach dieser Abfrage gesucht? stackoverflow.com/questions/7061281/…
Pankaj Kumar
4
Pankaj- Ich weiß, wie man den Fortschrittsdialog anzeigt, aber ich möchte nur den Fortschrittsbalkenkreis anstelle des Fortschrittsdialogs anzeigen.
Ani
Überprüfen Sie diese freakyjolly.com/…
Code Spy

Antworten:

175

Es gibt verschiedene Methoden, um einen Fortschrittsbalken (Kreis) beim Laden eines anzuzeigen activity. In Ihrem Fall eine mit einem ListViewdarin.

IN ACTIONBAR

Wenn Sie ein verwenden ActionBar, können Sie das folgende nennen ProgressBar(dies könnte in Ihrem gehenonCreate()

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);  
setProgressBarIndeterminateVisibility(true);

Und nachdem Sie die Liste angezeigt haben, können Sie sie ausblenden.

setProgressBarIndeterminateVisibility(false);

IM LAYOUT (Das XML)

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linlaHeaderProgress"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:orientation="vertical"
        android:visibility="gone" >

        <ProgressBar
            android:id="@+id/pbHeaderProgress"
            style="@style/Spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" >
        </ProgressBar>
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:cacheColorHint="@android:color/transparent"
        android:divider="#00000000"
        android:dividerHeight="0dp"
        android:fadingEdge="none"
        android:persistentDrawingCache="scrolling"
        android:smoothScrollbar="false" >
    </ListView>
</LinearLayout>

Und in Ihrer Aktivität (Java) verwende ich eine AsyncTask, um Daten für meine Listen abzurufen. Also, in den AsyncTask's verwende onPreExecute()ich so etwas:

// CAST THE LINEARLAYOUT HOLDING THE MAIN PROGRESS (SPINNER)
LinearLayout linlaHeaderProgress = (LinearLayout) findViewById(R.id.linlaHeaderProgress);

@Override
protected void onPreExecute() {    
    // SHOW THE SPINNER WHILE LOADING FEEDS
    linlaHeaderProgress.setVisibility(View.VISIBLE);
}

und in onPostExecute(), nach dem Einstellen des Adapters auf ListView:

@Override
protected void onPostExecute(Void result) {     
    // SET THE ADAPTER TO THE LISTVIEW
    lv.setAdapter(adapter);

    // CHANGE THE LOADINGMORE STATUS TO PERMIT FETCHING MORE DATA
    loadingMore = false;

    // HIDE THE SPINNER AFTER LOADING FEEDS
    linlaHeaderProgress.setVisibility(View.GONE);
}

BEARBEITEN: So sieht es in meiner App aus, während eine von mehreren geladen wird ListViews

Geben Sie hier die Bildbeschreibung ein

Siddharth Lele
quelle
1
Ich habe keine Aktionsleiste in meiner Anwendung. Ich möchte den Proressbar-Kreis in der Mitte des Bildschirms anzeigen.
Ani
@Ani: Es ist schon da in der Antwort. Verwenden Sie das Codebeispiel für die Verwendung im Layout. Es hat auch den Code für Ihr XML.
Siddharth Lele
1
@ShajeelAfzal: Ja. Es ist ein Stil. Sie finden das SDK in einer der ICS-APIs. Suchen Sie nach diesem XML: progress_medium_holo.xmlund kopieren Sie die relevanten Bilder in die entsprechenden Zeichenordner.
Siddharth Lele
1
@eddy benutze einfach style = "? android: attr / progressBarStyleLarge" im ProgressBar-Knoten
Paul Gregoire
4
Kannst du uns bitte sagen, wie die Definition lautet @style/Spinner?
Pankaj
36

Sie können dies einfacher machen.
Quelle: http://www.tutorialspoint.com/android/android_loading_spinner.htm
Es hat mir geholfen.

Layout:

<ProgressBar
   android:id="@+id/progressBar1"
   style="?android:attr/progressBarStyleLarge"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true" />

Nachdem Sie es in XML definiert haben, müssen Sie seine Referenz in der Java-Datei über die ProgressBar-Klasse abrufen. Die Syntax ist unten angegeben:

private ProgressBar spinner;
spinner = (ProgressBar)findViewById(R.id.progressBar1);

Danach können Sie es verschwinden lassen und es bei Bedarf über die setVisibility-Methode zurückbringen. Die Syntax ist unten angegeben:

spinner.setVisibility(View.GONE);
spinner.setVisibility(View.VISIBLE);
Sergey Kuchin
quelle
Obwohl dies nicht die beste Antwort auf die Frage ist, hat es mir geholfen, mein Problem zu lösen. Danke dir.
Machado
19

Ich habe diese für das Laden der Listenansicht verwendet, was hilfreich sein kann.

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="5dp"
android:paddingRight="5dp" >

<LinearLayout
    android:id="@+id/progressbar_view"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:orientation="horizontal" >

        <ProgressBar
            style="?android:attr/progressBarStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_vertical|center_horizontal"
            android:text="Loading data..." />
    </LinearLayout>

    <View
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:background="#C0C0C0" />
</LinearLayout>

<ListView
    android:id="@+id/listView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginTop="1dip"
    android:visibility="gone" />

</RelativeLayout>

und meine MainActivity-Klasse ist,

public class MainActivity extends Activity {
ListView listView;
LinearLayout layout;
List<String> stringValues;
ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    listView = (ListView) findViewById(R.id.listView);
    layout = (LinearLayout) findViewById(R.id.progressbar_view);

    stringValues = new ArrayList<String>();

    adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_list_item_1, stringValues);

    listView.setAdapter(adapter);
    new Task().execute();
}

class Task extends AsyncTask<String, Integer, Boolean> {
    @Override
    protected void onPreExecute() {
        layout.setVisibility(View.VISIBLE);
        listView.setVisibility(View.GONE);
        super.onPreExecute();
    }

    @Override
    protected void onPostExecute(Boolean result) {
        layout.setVisibility(View.GONE);
        listView.setVisibility(View.VISIBLE);
        adapter.notifyDataSetChanged();
        super.onPostExecute(result);
    }

    @Override
    protected Boolean doInBackground(String... params) {
        stringValues.add("String 1");
        stringValues.add("String 2");
        stringValues.add("String 3");
        stringValues.add("String 4");
        stringValues.add("String 5");

        try {
            Thread.sleep(3000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
}

Bei dieser Aktivität wird der Fortschritt 3 Sekunden lang angezeigt. Anschließend wird die Listenansicht angezeigt. Anstatt Daten statisch zur stringValues-Liste hinzuzufügen, können Sie Daten vom Server in doInBackground () abrufen und anzeigen.

Srinivas Rampelli
quelle
3
Nur der Vollständigkeit halber: In den Android-Dokumenten wird derzeit angegeben, dass die Verwendung von Text unter dem Fortschrittsbalken nicht empfohlen wird. developer.android.com/design/building-blocks/…
Dennis Stritzke
9

Bitte verwenden Sie das Beispiel unter tutorialspoint.com . Die gesamte Implementierung benötigt nur wenige Codezeilen, ohne Ihre XML-Datei zu ändern. Hoffe das hilft.

SCHRITT 1: Bibliothek importieren

import android.app.ProgressDialog;

SCHRITT 2: Deklarieren Sie die globale Variable ProgressDialog

ProgressDialog loading = null;

SCHRITT 3: Starten Sie den neuen ProgressDialog und verwenden Sie die folgenden Eigenschaften (bitte beachten Sie, dass dieses Beispiel nur die grundlegende Kreisladeleiste ohne den Echtzeit-Fortschrittsstatus abdeckt).

loading = new ProgressDialog(v.getContext());
loading.setCancelable(true);
loading.setMessage(Constant.Message.AuthenticatingUser);
loading.setProgressStyle(ProgressDialog.STYLE_SPINNER);

SCHRITT 4: Wenn Sie AsyncTasks verwenden, können Sie das Dialogfeld in der onPreExecute-Methode anzeigen. Andernfalls platzieren Sie den Code einfach am Anfang Ihrer Schaltfläche onClick-Ereignis.

loading.show();

SCHRITT 5: Wenn Sie AsyncTasks verwenden, können Sie den Fortschrittsdialog schließen, indem Sie den Code in die onPostExecute-Methode einfügen. Andernfalls platzieren Sie einfach den Code, bevor Sie die Schaltfläche onClick-Ereignis schließen.

loading.dismiss();

Getestet mit meinem Nexus 5 Android v4.0.3. Viel Glück!

Chong Chern Dong
quelle
4
ProgressDialog ist seit API Level O developer.android.com/reference/android/app/ProgressDialog.html
Varvara Kalinina
8

Erweitern Sie ListActivity?

Wenn ja, fügen Sie einen zirkulären Fortschrittsdialog mit der folgenden Zeile in Ihre XML ein

<ProgressBar
android:id="@android:id/empty"
...other stuff...
/>

Jetzt wird die Fortschrittsanzeige angezeigt, bis Sie alle Informationen zur Listenansicht haben, und stellen Sie den Adapter ein. An diesem Punkt kehrt es zur Listenansicht zurück und der Fortschrittsbalken verschwindet.

Der Holo Dev
quelle
Ich möchte einen Proressbar-Kreis in der Mitte des Bildschirms anzeigen. Wenn ich einen Fortschrittsbalken hinzufüge, wo kann ich die Listenansicht in XML einfügen.
Ani
Erstellen Sie ein Layout wie gewohnt. Genau das habe ich auf einer meiner Apps gemacht. Wenn ich mich recht erinnere, können Sie die Listenansicht in ein relatives Vollbild-Layout mit Höhe und Breite von einfügen fill_parent. Lassen Sie dann als zweites untergeordnetes Element zu diesem relativen_Layout die Fortschrittsanzeige sowohl horizontal als auch vertikal zentrieren.
Der Holo Dev
Kannst du diese XML dafür haben?
Ani
1
Was aber, wenn das Ergebnis der Ladung leer ist?
dkneller
3
ProgressDialog dialog = ProgressDialog.show(Example.this, "", "Loading...", true);
Neel Kadia
quelle
Dies ist ein sehr einfacher Weg, um das Ziel zu erreichen. wie KISS Keep It Simple
Blöder
2
Dies ist in API 26 veraltet.
Nithin
1

Erstellen Sie eine XML-Datei mit einem beliebigen Namen (z. B. progressBar.xml) in drawable und fügen Sie <color name="silverGrey">#C0C0C0</color>color.xml hinzu.

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="720" >

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="6"
        android:useLevel="false" >
        <size
            android:height="200dip"
            android:width="300dip" />

        <gradient
            android:angle="0"
            android:endColor="@color/silverGrey"
            android:startColor="@android:color/transparent"
            android:type="sweep"
            android:useLevel="false" />

    </shape>
</rotate>

Fügen Sie nun in Ihrer XML-Datei, in der Sie Ihre listView haben, diesen Code hinzu:

 <ListView
            android:id="@+id/list_form_statusMain"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        </ListView>

        <ProgressBar
            android:id="@+id/progressBar"
            style="@style/CustomAlertDialogStyle"
            android:layout_width="60dp"
            android:layout_height="60dp"
            android:layout_centerInParent="true"
            android:layout_gravity="center_horizontal"
            android:indeterminate="true"
            android:indeterminateDrawable="@drawable/circularprogress"
            android:visibility="gone"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"/>

In AsyncTask in der Methode:

@Override
protected void onPreExecute()
{
    progressbar_view.setVisibility(View.VISIBLE);

    // your code
}

Und in onPostExecute:

@Override
protected void onPostExecute(String s)
{
    progressbar_view.setVisibility(View.GONE);

    //your code
}
Vaibhav Joshi
quelle
0

Sie können die ProgressBarFußzeile zur Listenansicht hinzufügen :

private ListView listview;
private ProgressBar progressBar;

...

progressBar = (ProgressBar) LayoutInflater.from(this).inflate(R.layout.progress_bar, null);

listview.addFooterView(progressBar);

layout / progress_bar.xml

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/load_progress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:indeterminate="true"
     />

Wenn die Daten in die Adapteransicht geladen werden, rufen Sie Folgendes auf:

        listview.removeFooterView(progressBar);
Abdulhamid Dhaiban
quelle
0

Ich empfehle Ihnen, bei der Arbeit mit Listview oder Recyclerview SwipeRefreshLayout zu verwenden . So was

    <android.support.v4.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/swiperefresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:id="@+id/card_recycler_view"
            android:scrollbars="vertical"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

</android.support.v4.widget.SwipeRefreshLayout>

Schließen Sie nur Ihre Ansicht ein, und dies erzeugt eine Animation der Aktualisierung, wenn Sie Daten laden oder den Bildschirm nach unten wischen, wie dies in vielen Apps möglich ist.
Hier ist die Dokumentation zur Verwendung:
https://developer.android.com/training/swipe/add-swipe-interface.html https://developer.android.com/training/swipe/respond-refresh-request. html

Viel Spaß beim Codieren!

Gian Gomen
quelle
0

Verwenden Sie diese Schaltfläche innerhalb der Click-Option oder Ihren Anforderungen:

final ProgressDialog progressDialog;
progressDialog = new ProgressDialog(getApplicationContext());
progressDialog.setMessage("Loading..."); // Setting Message
progressDialog.setTitle("ProgressDialog"); // Setting Title
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); // Progress Dialog Style Spinner
progressDialog.show(); // Display Progress Dialog
progressDialog.setCancelable(false);
new Thread(new Runnable() {
    public void run() {
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
            e.printStackTrace();
        }
        progressDialog.dismiss();
    }
}).start();
Herr Saykat
quelle
-1

Prozessleiste:

Abhängigkeit:

     implementation 'com.github.castorflex.smoothprogressbar:library:1.0.0'

XML:

     <fr.castorflex.android.smoothprogressbar.SmoothProgressBar
        xmlns:android="http://schemas.android.com/apk/res/android"                
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/myProcessbar"
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:indeterminate="true" />

In Res-> Farbe

      <color name="pocket_color_1">#ff1635</color>
      <integer-array name="pocket_background_colors">
          <item>@color/pocket_color_1</item>
      </integer-array>

      <color name="pocket_color_stop">#00ff00</color>
      <integer-array name="pocket_background_stop">
          <item>@color/pocket_color_stop</item>
      </integer-array>

In Main:

      public class MainActivity extends AppCompatActivity{
        SmoothProgressBar smoothProgressBar;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          smoothProgressBar=findViewById(R.id.myProcessbar);
          showProcessBar();
          stopAnimation();    // call when required to stop process
        }

        public void showProcessBar(){
          smoothProgressBar.setVisibility(View.VISIBLE);
          smoothProgressBar.setIndeterminateDrawable(new SmoothProgressDrawable.Builder(getApplicationContext())
            .interpolator(new AccelerateInterpolator())
            .progressiveStart(true)
            .progressiveStopSpeed(1000)
            .build());
          smoothProgressBar.setSmoothProgressDrawableBackgroundDrawable(
          SmoothProgressBarUtils.generateDrawableWithColors(
                    getResources().getIntArray(R.array.pocket_background_colors),
                    ((SmoothProgressDrawable)  smoothProgressBar.getIndeterminateDrawable()).getStrokeWidth()));
        }

        public void stopAnimation(){
          smoothProgressBar.setSmoothProgressDrawableBackgroundDrawable(
          SmoothProgressBarUtils.generateDrawableWithColors(
                    getResources().getIntArray(R.array.pocket_background_stop),
                    ((SmoothProgressDrawable)  smoothProgressBar.getIndeterminateDrawable()).getStrokeWidth()));
          smoothProgressBar.progressiveStop();
          Handler handler=new Handler();
          handler.postDelayed(new Runnable() {
            @Override
            public void run() {
               smoothProgressBar.animate().alpha(0.0f).setDuration(6000).translationY(1000);
               smoothProgressBar.setVisibility(View.GONE);
            }
          },1000);
}

      }
Ankush Shrivastava
quelle
-2

Ich benutze dies:

loading = ProgressDialog.show(example.this,"",null, true, true);
Pratik Gondil
quelle