Autore Topic: Preservare una immagine in ImageView  (Letto 994 volte)

Offline nnever2000

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    windows xp sp3
Preservare una immagine in ImageView
« il: 10 Gennaio 2012, 16:24:06 CET »
0
Ciao a tutti,
sto usando il controllo ImageView:

    <ImageView
        android:id="@+id/iw_2"
        android:layout_width="120dp"
        android:layout_height="120dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="20dp"
        android:layout_marginTop="80dp"
        android:contentDescription="@string/stringa1"
        android:scaleType="matrix"
        android:src="@drawable/image" />

dove image.png è la mia immagine alta 109 pixel.

Quando appare sul display è invece alta 77 pixel con conseguente sfocatura.

Ho provato come suggerito a mettere il valore di ScaleType = "matrix" ma il problema non si risolve.

Se comunque creo l'imageview esattamente di 109 pixel, e imposto lo scale a FitTX l'immagine diventa di 109 pixel ma comunque risulta molto sfocata rispetto l'originale (praticamente il device prende quella da 77 e la allunga fino a 109).

Questo accade su tutti gli imageview della mia applicazione (con dimensioni diverse a seconda dei casi ovviamente)

potete aiutarmi?


Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Preservare una immagine in ImageView
« Risposta #1 il: 10 Gennaio 2012, 16:44:24 CET »
+1
Questo tutorial potrebbe aiutarti. Applica l'immagine allo sfondo, ma dovrebbe essere del tutto analogo ad applicarla ad una ImageView.

[facile] Gestione di bitmap come background di Activity - Android Developers Italia
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nnever2000

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    windows xp sp3
Re:Preservare una immagine in ImageView
« Risposta #2 il: 11 Gennaio 2012, 15:17:57 CET »
0
Ho seguito con attenzione la guida.

In realtà il problema persiste, anzi sembra proprio che non sia cambiato niente. E' possibile che dipenda dal fatto che le misure del mio layout sono in DP invece di pixel? Per cui se il renderer cerca di mettere l'immaggine a cavallo di un pixel la sfoca automaticamente (cioè se le coordinate logiche di inizio immaggine cadono a metà di un pixel)? Si può disabilitare?

Grazie mille per l'aiuto

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Preservare una immagine in ImageView
« Risposta #3 il: 11 Gennaio 2012, 15:52:23 CET »
0
Ho seguito con attenzione la guida.

In realtà il problema persiste, anzi sembra proprio che non sia cambiato niente. E' possibile che dipenda dal fatto che le misure del mio layout sono in DP invece di pixel? Per cui se il renderer cerca di mettere l'immaggine a cavallo di un pixel la sfoca automaticamente (cioè se le coordinate logiche di inizio immaggine cadono a metà di un pixel)? Si può disabilitare?

Grazie mille per l'aiuto

Se la tua bitmap è tale che è necessario far coincidere esattamente i pixel fisici (dello schermo) con quelli logici (dell'immagine), ti consiglio di ripensare il layout grafico. Il sistema Android, per consentire l'automatica adattabilità dei layout su device con risoluzioni e fattori di forma diversi, punta pesantemente sui DP e sul lasciare al sistema operativo la scelta di quanto ridimensionare gli oggetti grafici.

Comunque, se ti occorre il controllo dei pixel fisici, potresti pensare di disegnare direttamente gli elementi grafici (incluse le Bitmap) su un canvas.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline nnever2000

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    windows xp sp3
Re:Preservare una immagine in ImageView
« Risposta #4 il: 11 Gennaio 2012, 16:57:16 CET »
0
Se la tua bitmap è tale che è necessario far coincidere esattamente i pixel fisici (dello schermo) con quelli logici (dell'immagine), ti consiglio di ripensare il layout grafico. Il sistema Android, per consentire l'automatica adattabilità dei layout su device con risoluzioni e fattori di forma diversi, punta pesantemente sui DP e sul lasciare al sistema operativo la scelta di quanto ridimensionare gli oggetti grafici.

Comunque, se ti occorre il controllo dei pixel fisici, potresti pensare di disegnare direttamente gli elementi grafici (incluse le Bitmap) su un canvas.

Ok, ho capito. In realtà ho risolto facendo una immaggine più grande e facendogliela scalare alla vecchia dimensione. Così facendo diminuisco il rumore dovuto alla sfocatura del ridimensionamento e ottengo un risultato vicino a quello che volevo (cioè che le png non apparissero appannate).

Grazie mille per l'aiuto.

Offline nnever2000

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    emulatore
  • Sistema operativo:
    windows xp sp3
Re:Preservare una immagine in ImageView
« Risposta #5 il: 06 Febbraio 2012, 14:48:05 CET »
0
Ciao ragazzi,
ho capito il motivo per cui stavo avendo delle immaggini di qualità degradata, dovendo poi applicare la pezza di cui sopra (raddoppiare le dimensioni): in realtà inserivo le immaggini di media qualità nella cartella "drawable-hdpi" (destinata all'high quality) e poi visualizzavo il layout su una superfice di 320x480 con il risultato che l'android, pensando le immaggini come alta qualità le scalava per adattarle ad una surface in bassa qualità ottentendo la degradazione (inspegabile fino a qualche ora fa...).

Magari serve a qualcun'altro.