studio progressbar progreso personalizar ejemplo custom cargando barra bar android background android-asynctask android-progressbar

progreso - progressbar android circle



¿Cómo implementar progressBar al cargar datos? (4)

Quiero implementar progressBar como en la imagen de abajo.

En este momento, tengo AsyncTask que se sperated de clases de fragmentos, y uso AsyncTask para cargar datos, y ahora tengo implemento el diálogo progressBar, pero quiero deshacerme de eso, porque quiero hacer un UX mejor.

Muestro el cuadro de diálogo ProgressBar en el método onPreExecute () y luego lo descartamos en PostExecute.

Entonces, ¿cómo puedo implementar la barra de progreso de fondo como en la imagen de abajo?



Si solo desea mostrar el progreso, eche un vistazo a este código. Esto podría darte una idea: la actividad principal de clase pública amplía la actividad implementa OnClickListener {

myTask mytask = new myTask(); Button button1; ProgressBar progressbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button1 = (Button) findViewById(R.id.button1); progressbar = (ProgressBar) findViewById(R.id.progressBar); button1.setOnClickListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View view) { mytask.execute(); } class myTask extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { progressbar.setProgress(0); progressbar.setMax(100); int progressbarstatus = 0; }; @Override protected String doInBackground(String... params) { for (int i = 0; i < 20; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } progressbar.incrementProgressBy(10); } return "completed"; } @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); } @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); } }

}

Pero si desea mostrar como un diálogo, eche un vistazo a este código:

public class YoutubeVideoMain extiende Activity {

ListView videolist; ArrayList<String> videoArrayList = new ArrayList<String>(); ArrayAdapter<String> videoadapter; Context context; String feedURL = "https://gdata.youtube.com/feeds/api/users/twistedequations/uploads?v=2&alt=jsonc&start-index=1&max-results=5"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this; setContentView(R.layout.youtubelist); videolist = (ListView) findViewById(R.id.videolist); videoadapter = new ArrayAdapter<String>(this, R.layout.video_list_item, videoArrayList); videolist.setAdapter(videoadapter); VideoListTask loadertask = new VideoListTask(); loadertask.execute(); } private class VideoListTask extends AsyncTask<Void, String, Void> { ProgressDialog dialogue; @Override protected void onPostExecute(Void result) { super.onPostExecute(result); dialogue.dismiss(); videoadapter.notifyDataSetChanged(); } @Override protected void onPreExecute() { dialogue = new ProgressDialog(context); dialogue.setTitle("Loading items.."); dialogue.show(); super.onPreExecute(); } @Override protected Void doInBackground(Void... params) { HttpClient client = new DefaultHttpClient(); HttpGet getRequest = new HttpGet(feedURL); try { HttpResponse response = client.execute(getRequest); StatusLine statusline = response.getStatusLine(); int statuscode = statusline.getStatusCode(); if (statuscode != 200) { return null; } InputStream jsonStream = response.getEntity().getContent(); BufferedReader reader = new BufferedReader( new InputStreamReader(jsonStream)); StringBuilder builder = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { builder.append(line); } String jsonData = builder.toString(); JSONObject json = new JSONObject(jsonData); JSONObject data = json.getJSONObject("data"); JSONArray items = data.getJSONArray("items"); for (int i = 0; i < items.length(); i++) { JSONObject video = items.getJSONObject(i); videoArrayList.add(video.getString("title")); } Log.i("YouJsonData:", jsonData); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } return null; } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }

}

Tal vez esto pueda ayudarle.


class YourCLassName extends AsyncTask<String, Integer, Void> { private ProgressDialog pd = new ProgressDialog(Files.this); @Override protected void onPreExecute() { // TODO Auto-generated method stub super.onPreExecute(); pd.setTitle("your message"); pd.show(); } @Override protected Void doInBackground(String... params) { // YOUR PIECE OF CODE return null; } @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub super.onPostExecute(result); pd.setMessage("Task Completed .. whatever"); @Override protected void onProgressUpdate(Integer... values) { // TODO Auto-generated method stub super.onProgressUpdate(values); } }


Tipo,

Si realmente quiere una barra de progreso como la que publicó, simplemente puede establecer la propiedad indeterminada de la barra de progreso en verdadero :)

Puedes hacerlo bien en el código o directamente en el xml.

En codigo:

yourProgressBar.setIndeterminate(true);

En tu XML, simplemente establece el atributo indeterminado en verdadero.

Aquí hay un diseño simple como ejemplo:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:indeterminate="true" /> </RelativeLayout>