Dialogo di image di Android / Popup la stessa dimensione dell'image e nessun bordo

Al momento sto lavorando su un browser di file. Tutto funziona bene con un'exception: se l'utente fa clic su un'image (jpg, png, bmp, ..), voglio che l'image venga visualizzata in una window o in un popup che ha la stessa dimensione dell'image – in modo che non ci sono affatto frontiere. I file di image si trovano sulla sdcard.

Ecco quello che ho finora:

  • Creare dynamicmente un'attività
  • Come impostare un URL su WebView da un file di layout xml su Android?
  • La risoluzione CamcorderProfile.QUALITY_HIGH produce un video di sfarfallio verde
  • Elimina Directory di PhoneGap (Android)
  • Picasso problema di caricamento dell'image in GoogleMap.InfoWindowAdapter
  • Ricevitore di trasmissione per PACKAGE_ADDED non funzionante da Android 3.1 in poi
  • BitmapDrawable bitmap = new BitmapDrawable(context.getResources(), TARGET_PATH); AlertDialog.Builder imageDialog = new AlertDialog.Builder(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.thumbnail, null); ImageView image = (ImageView) layout.findViewById(R.id.thumbnail_IMAGEVIEW); image.setImageDrawable(bitmap); imageDialog.setView(layout); imageDialog.create(); imageDialog.show(); 

    Il file XML:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/thumbnail_IMAGEVIEW" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:contentDescription="@string/icon_DESCRIPTION" /> </RelativeLayout> 

    Ecco l'output:

    Uscita difettosa

    Ci sono bordi brutti ai bordi delle immagini – non voglio che essi siano mostrati. Ho provato un sacco di cose e esempi elencati in google, ecc. – niente ha funzionato ancora.

    L'opzione migliore sarà quella di rendere la window di dialogo / vista dietro l'image, la stessa dimensione dell'image. Un altro modo potrebbe essere quello di impostare lo background dietro l'image trasparente.

    Come posso get una soluzione? Mi piacerebbe fare dello background le stesse size dell'image, quindi non c'è nessuna roba "invisibile", ma sarò anche a posto con l'opzione trasparente.


    Soluzione:

     // Get screen size Display display = context.getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int screenWidth = size.x; int screenHeight = size.y; // Get target image size Bitmap bitmap = BitmapFactory.decodeFile(TARGET); int bitmapHeight = bitmap.getHeight(); int bitmapWidth = bitmap.getWidth(); // Scale the image down to fit perfectly into the screen // The value (250 in this case) must be adjusted for phone/tables displays while(bitmapHeight > (screenHeight - 250) || bitmapWidth > (screenWidth - 250)) { bitmapHeight = bitmapHeight / 2; bitmapWidth = bitmapWidth / 2; } // Create resized bitmap image BitmapDrawable resizedBitmap = new BitmapDrawable(context.getResources(), Bitmap.createScaledBitmap(bitmap, bitmapWidth, bitmapHeight, false)); // Create dialog Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.thumbnail); ImageView image = (ImageView) dialog.findViewById(R.id.imageview); // !!! Do here setBackground() instead of setImageDrawable() !!! // image.setBackground(resizedBitmap); // Without this line there is a very small border around the image (1px) // In my opinion it looks much better without it, so the choice is up to you. dialog.getWindow().setBackgroundDrawable(null); // Show the dialog dialog.show(); 

    File XML:

     <?xml version="1.0" encoding="utf-8"?> <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/imageview" android:layout_width="match_parent" android:layout_height="match_parent" > </ImageView> 

    Output finale:

    Produzione

  • Android: Distinct e GroupBy in ContentResolver
  • Come passare la modifica dei dati di text in forma di string all'attività successiva?
  • Come rimuovere il collegamento di applicazione dalla schermata iniziale per disinstallare automaticamente?
  • Errore: "Imansible installare apk sul dispositivo" emulator-5554 ": timeout"
  • aggiungere programmaticamente id a R.id
  • MediaPlayer.setDataSource causa IOException per un file valido
  • 4 Solutions collect form web for “Dialogo di image di Android / Popup la stessa dimensione dell'image e nessun bordo”

    è ansible creare una window di dialogo personalizzata per mostrare le immagini, creare un layout per gonfiare nella window setcontentview della window di dialogo, prendere un layout lineare con il contenuto dell'involucro di width e altezza e immaginare con esso la properties; di scala fitxy.

    Utilizzare FrameLayout come genitore piuttosto che RelativeLayout e impostare wrap_content e 0 margini.

    Provare:

     <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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:background="@color/background"> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/frameLayout" android:background="#b2ff7c"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/ic_launcher"/> </FrameLayout> </RelativeLayout> 

    Il risultato dovrebbe essere uno background della stessa dimensione di ImageView.

    Se questo funziona. Prova a modificarla in un tema personalizzato:

      <style name="Widget.ImageWell"> <item name="android:background">@android:drawable/panel_picture_frame_background</item> </style> 

    Cambia il tuo ImageView da questo:

     <ImageView android:id="@+id/thumbnail_IMAGEVIEW" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:contentDescription="@string/icon_DESCRIPTION" /> 

    A questa:

     <ImageView android:id="@+id/thumbnail_IMAGEVIEW" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:adjustViewBounds="true" <!-- Here is the thing --> android:contentDescription="@string/icon_DESCRIPTION" /> 

    Spero che questo ti aiuti.

    Hai provato a impostare setType in ImageView?

    <ImageView ... android:scaleType="fitXY" ... />

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.