Custom ProgressDialog extends Dialog o ProgressDialog?

Simplemente estoy tratando de crear un diálogo de progreso giratorio. Sin texto, sin fronteras, sin fondo. Sólo una notificación de giro que ligeramente se centra en la pantalla en la parte superior del contenido.

He visto dos preguntas diferentes del desbordamiento de la pila en la creación de este diálogo de encargo.

Ambos usan este estilo:

<style name="NewDialog" parent="@android:style/Theme.Dialog"> <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:colorBackground">#ffffff</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:width">600dip</item> <item name="android:height">100dip</item> <item name="android:textColor">#FF0000</item> </style> 

Pero en el lado de Java, se extiende el diálogo y contiene un montón de contenido personalizado, el otro es simplemente esto:

 public class MyProgressDialog extends ProgressDialog { public MyProgressDialog(Context context) { super(context, R.style.NewDialog); } } 

En la primera (se extiende el diálogo), me sale un espacio en blanco. No hay diálogo. Nada. En la muestra de código justo arriba, obtengo un pequeño diálogo reducido girando dentro de una caja negra que está descentrada.

¿Qué método es más correcto y puedo tener una muestra sobre cómo implementar esto?

Además, ¿cómo puedo hacer ese diálogo transparente o sin bordes?

El "camino correcto" para hacer esto ahora sería extender DialogFragment http://developer.android.com/reference/android/app/DialogFragment.html

Si no está utilizando la biblioteca de compatibilidad, no está programando en el mundo actual de Android.

Si desea extender el diálogo, entonces tengo un ejemplo de código aquí: https://github.com/tom-dignan/nifty/tree/master/src/com/tomdignan/nifty/dialogs En este código, he implementado un tipo de 'diálogo de progreso' extendiendo Dialog. Extendí el diálogo porque quería control total y quería que mi Diálogo fuera a pantalla completa.

Recomendaría leer el documento DialogFragment anterior y usarlo, aunque.

Así que realmente, no hay manera correcta o incorrecta aquí. Extender cualquiera de las tres clases funcionará, pero la más limpia y más actual sería el enfoque DialogFragment.

Una forma de hacerlo es utilizar un cuadro de diálogo personalizado, la característica de solicitud No_Title y establecer el recurso de dibujo de fondo transparente.

Usted puede utilizar el siguiente código, Acabo de escribir y probarlo en Android 4.0.3 ICS.

El diseño xml en la carpeta de diseño es, por ejemplo dialog_progress.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:orientation="vertical"> <ProgressBar android:id="@+id/dialogProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"/> </LinearLayout> 

El código java para mostrar el diálogo y hacerlo transparente es el siguiente.

 Dialog dialog = new Dialog (this); dialog.requestWindowFeature (Window.FEATURE_NO_TITLE); dialog.setContentView (R.layout.dialog_progress); dialog.getWindow ().setBackgroundDrawableResource (android.R.color.transparent); dialog.show (); 

Algo similar se puede lograr muy fácilmente mediante el uso de marco por cuadro de animación en un ImageView en lugar de hacer el diálogo de progreso personalizado. Para esto sólo necesita una secuencia de imágenes (se puede extraer de cualquier gif). Y luego se puede aplicar animación marco por cuadro. Hará exactamente lo que usted desea.

He hecho algo similar con el siguiente código:

// XML para la animación marco por cuadro

 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false" > <item android:drawable="@drawable/frame00" android:duration="150"/> <item android:drawable="@drawable/frame01" android:duration="150"/> <item android:drawable="@drawable/frame02" android:duration="150"/> <item android:drawable="@drawable/frame03" android:duration="150"/> <item android:drawable="@drawable/frame04" android:duration="150"/> <item android:drawable="@drawable/frame05" android:duration="150"/> <item android:drawable="@drawable/frame06" android:duration="150"/> 

Código Java para iniciar la animación: –

 ImageView iv = (ImageView)findViewById(R.id.progressDialog); iv.setBackgroundResource(R.anim.progress_dialog_icon_drawable_animation); AnimationDrawable aniFrame = (AnimationDrawable) iv.getBackground(); aniFrame = (AnimationDrawable) iv.getBackground(); aniFrame.start(); 

Logré esto desde el código anterior

Espero eso ayude !

  • cuadro de diálogo de progreso personalizado en android?
  • Diálogo de progreso sobre la actividad abierta
  • Android cambia ProgressDialog dibujable mientras el diálogo funciona
  • Progress Dialog aparece extrañamente en dispositivos Pre-lollipop
  • Operaciones largas en la actividad onCreate ()
  • ¿Cómo puedo mostrar y eliminar un diálogo de progreso de Android?
  • Uso de ProgressDialog android personalizado
  • crear diálogo de progreso con otro diseño
  • ProgressDialog no se muestra al realizar una tarea
  • Unidad de progreso en ProgressDialog
  • ¿Cómo mostrar el estado de la barra de progreso por porcentaje mientras se suben los datos de json?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.