studio progressbar asynctask alternative android progressdialog

progressbar - progressdialog android asynctask



Mostrar progresodialog sin texto Android (12)

Android 2.3.3

Tengo un diálogo de progreso que muestra, Cargando ... como texto. Aquí está el código para el progreso del diálogo.

progressDialog = new ProgressDialog(mContext); progressDialog.setIndeterminate(true); progressDialog.setMessage("Loading..."); progressDialog.show();

Si elimino la línea progressDialog.setMessage("Loading..."); , Obtengo un cuadro de diálogo de progreso de la izquierda y un cuadro vacío a la derecha que ocupa el ancho del elemento principal.

Quiero mostrar solo el progreso del diálogo, alineado en el centro. Por favor, consulte las imágenes a continuación ..

Esto es lo que tengo...

Esto es lo que quiero...

¿Puede alguien ayudarme con esto?


Basado en la respuesta de MuraliGanesan, creé una subclase de progressDialog.

public class LoadingDialog extends ProgressDialog { public LoadingDialog(Context context) { super(context); } @Override public void show() { super.show(); setCancelable(false); getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); setContentView(R.layout.custom_progress_dialog); } }

También debe crear el custom_progress_dialog.xml en res / layout

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:layout_gravity="center"> <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout>

Y lo usas tan fácil como esto:

LoadingDialog dialog = new LoadingDialog(this); dialog.show(); : : dialog.dismiss();


Este trabajo para mí en MonoDroid:

progressDialog.SetMessage((string)null);

Prueba esto en java:

progressDialog.setMessage(null);


La respuesta de MuraliGanesan es correcta, pero utilizo solo Dialog, no ProgressDialog para evitar la excepción "requestFeature () debe llamarse antes de agregar contenido"


Pruebe esto 1.crear un método como este:

public static ProgressDialog createProgressDialog(Context context) { ProgressDialog dialog = new ProgressDialog(context); try { dialog.show(); } catch (BadTokenException e) { } dialog.setCancelable(false); dialog.getWindow() .setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); dialog.setContentView(R.layout.progressdialog); // dialog.setMessage(Message); return dialog; }

// Diseño Xml:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@android:color/transparent" > <ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> </RelativeLayout>

y llama a este método donde quieras:

if (progressDialog == null) { progressDialog = Utils.createProgressDialog(Login.this); progressDialog.show(); } else { progressDialog.show(); }


Puedes hacer esto simplemente creando una clase que extienda la clase Dialog:

Digamos que he creado la clase siguiente:

public class TransparentProgressDialog extends Dialog { public ImageView iv; public TransparentProgressDialog(Context context, int resourceIdOfImage) { super(context, R.style.TransparentProgressDialog); WindowManager.LayoutParams wlmp = getWindow().getAttributes(); wlmp.gravity = Gravity.CENTER_HORIZONTAL; getWindow().setAttributes(wlmp); setTitle(null); setCancelable(false); setOnCancelListener(null); LinearLayout layout = new LinearLayout(context); layout.setOrientation(LinearLayout.VERTICAL); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); iv = new ImageView(context); iv.setImageResource(resourceIdOfImage); layout.addView(iv, params); addContentView(layout, params); } @Override public void show() { super.show(); RotateAnimation anim = new RotateAnimation(0.0f, 360.0f , Animation.RELATIVE_TO_SELF, .5f, Animation.RELATIVE_TO_SELF, .5f); anim.setInterpolator(new LinearInterpolator()); anim.setRepeatCount(Animation.INFINITE); anim.setDuration(3000); iv.setAnimation(anim); iv.startAnimation(anim); } }

Coloque TransparentProgressDialog en style.xml:

@null @android: color / transparent true @null @null @android: style / Animation.Dialog stateUnspecified | adjustPan true @android: color / transparente

Ahora puedes poner cualquier imagen de progreso que circule:

TransparentProgressDialog pDialog = new TransparentProgressDialog(mContext, R.drawable.progress); pDialog.show();

Eso es.


Puedes usar:

Progress progress = new ProgressDialog(getActivity(), android.support.v4.app.DialogFragment.STYLE_NO_TITLE);

Si es necesario, agréguelo a las dependencias de Gradle

compile ''com.android.support:support-v4:22.2.0''


Si recibe el error : " requestFeature() must be called before adding content ", la solución es llamar a progressDialog.show() ANTES de llamar a progressDialog.setContentView(R.layout.progressdialog) .


Trabajar y verse bien en el diseño de materiales con color de acento (si los tiene)

Intenté hacerlo funcionar tanto en la versión 5.0+ como en la inferior de la API. Y la solución es hacerlo con un diálogo en lugar de un progreso.

en la carpeta de diseño crear un archivo aux_progress_spinner.xml

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/transparent" android:gravity="center" android:orientation="vertical" > <ProgressBar android:id="@+id/progressBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:background="@android:color/transparent" /> </LinearLayout>

Crea una función en alguna parte ... digamos Utils.class

public static Dialog LoadingSpinner(Context mContext){ Dialog pd = new Dialog(mContext, android.R.style.Theme_Black); View view = LayoutInflater.from(mContext).inflate(R.layout.aux_progress_spinner, null); pd.requestWindowFeature(Window.FEATURE_NO_TITLE); pd.getWindow().setBackgroundDrawableResource(R.color.transparent); pd.setContentView(view); return pd; }

En tu fragmento / llamada de actividad:

private Dialog progress_spinner; progress_spinner = Utils.LoadingSpinner(mContext); //------ Where you want it ------ progress_spinner.show(); //------- Dismiss it -------- progress_spinner.dismiss();

Opcional: agregue un CountDownTimer simple para probar cómo se ve

new CountDownTimer(1000,1000){ @Override public void onTick(long millisUntilFinished) { } @Override public void onFinish() { progress.dismiss(); } }.start();



puedes agregar estilo a continuación en tu style.xml

<style name="progress_bar_style"> <item name="android:windowFrame">@null</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowTitleStyle">@null</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="android:backgroundDimEnabled">false</item> <item name="android:background">@android:color/transparent</item> </style>

donde agrega cualquier color en el archivo color.xml.


puedes usar :

progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

y si no quieres un título, puedes:

progressDialog.setTitle(null);


ProgressDialog.show(this, null,"", true);