Android Image Dialog / Popup
¿Es posible tener sólo una imagen popup / come-up en una aplicación de Android? Es similar a una anulación de la vista normal de un AlertDialog para que contenga sólo una imagen y nada más.
SOLUCIÓN: He podido encontrar una respuesta gracias a la ayuda de @ blessenm. Enmascarar una actividad como diálogo parece ser la forma ideal. El siguiente es el código que he usado. Esta actividad de estilo de diálogo puede ser invocada según sea necesario por la aplicación de la misma manera que se iniciaría una nueva actividad
- Android - picasso muestra solo marcador de posición, no la imagen de URL
- FindViewById devuelve el elemento erróneo?
- Cómo guardar la imagen en la galería de Android
- Cambiar el tamaño de una vista de imagen en android
- Bitmap fuera de error de memoria en android ...
ImageDialog.java
public class ImageDialog extends Activity { private ImageView mDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_dialog_layout); mDialog = (ImageView)findViewById(R.id.your_image); mDialog.setClickable(true); //finish the activity (dismiss the image dialog) if the user clicks //anywhere on the image mDialog.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } }); } }
Your_dialog_layout.xml
<?xml version="1.0" encoding="UTF-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/image_dialog_root" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/transparent" android:gravity = "center"> <ImageView android:id="@+id/your_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src = "@drawable/your_image_drawable"/> </FrameLayout>
Es crucial que establezca el estilo siguiente para la actividad para lograr esto:
Styles.xml
<style name="myDialogTheme" parent="@android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowFrame">@null</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">false</item> <item name="android:windowContentOverlay">@null</item> </style>
El paso final es declarar este estilo para la actividad en el manifiesto como sigue:
<activity android:name=".ImageDialog" android:theme="@style/myDialogTheme" />
- Cómo crear el efecto de pulso ImageView con nueve animaciones androides de edad
- Temas de aplicación, cambio e ImageView src basados en el nombre del tema de la aplicación
- Animación de una imagen con ImageView
- Android: Establecer ImageView layout_height mediante programación
- ¿Cómo puedo guardar mi mapa de bits correctamente por segunda vez?
- Establecer dinámicamente el origen del ImageView
- Descargar imagen para imageview en Android
- 'Falta el atributo contentDescription en la imagen' en XML
Si sólo desea utilizar un diálogo de tipo notmal, algo así debería funcionar
Dialog settingsDialog = new Dialog(this); settingsDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); settingsDialog.setContentView(getLayoutInflater().inflate(R.layout.image_layout , null)); settingsDialog.show();
Image_layout.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="YOUR IMAGE"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="OK" android:onClick="dismissListener"/> </LinearLayout>
No xml:
public void showImage() { Dialog builder = new Dialog(this); builder.requestWindowFeature(Window.FEATURE_NO_TITLE); builder.getWindow().setBackgroundDrawable( new ColorDrawable(android.graphics.Color.TRANSPARENT)); builder.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { //nothing; } }); ImageView imageView = new ImageView(this); imageView.setImageURI(imageUri); builder.addContentView(imageView, new RelativeLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); builder.show(); }
La manera más flexible y recomendada es utilizar DialogFragment. Si desea admitir versiones anteriores a 3.0, puede utilizar la biblioteca de compatibilidad
Hay un par de maneras de hacerlo. Pero si estás buscando que tu imagen aparezca flotando por encima de tu actividad actual, puedes usar una actividad con android: theme = "@ style / Theme.Transparent" definida en el manifiesto. Luego, diseñe su diseño para tener sólo un único ImageView situado en el centro de la pantalla. El usuario tendrá que presionar el botón de retroceso para salir de esto, pero suena como eso es lo que quieres.
Si desea que se vea como un cuadro de diálogo real, siempre se puede utilizar una actividad de estilo de diálogo así como Theme.Dialog. O bien, sólo puede usar un diálogo y personalizarlo.
Sin utilizar el cuadro de diálogo puede utilizar esta biblioteca para hacer emergente de imágenes muy fácilmente.
- No hay una versión en caché de com.android.tools.build:gradle:0.9.1 disponible para el modo sin conexión
- Android Studio: Archivos duplicados copiados en APK META-INF / DEPENDENCIES al compilar