Autore Topic: Sovrapporre due imageview  (Letto 3482 volte)

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Sovrapporre due imageview
« il: 22 Novembre 2010, 15:54:56 CET »
0
Ho bisogno di sovrapporre un imageview ad un'altra. La prima imageview dovrà essere lo sfondo, mentre la seconda deve essere leggermente trasparente, per poter rendere visibile lo sfondo sotto. Come posso fare?
Grazie, Mattia

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:Sovrapporre due imageview
« Risposta #1 il: 22 Novembre 2010, 17:14:53 CET »
0
Una possibile soluzione (che non ho provato, ma solo googlato) è usare LayerDrawable, che è sostanzialmente un Drawable composto da più oggetti grafici sovrapposti.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #2 il: 22 Novembre 2010, 18:28:06 CET »
0
mm.. con il metodo ondraw non si può fare niente? Scusate ma sono nuovo con la programmazione su android  :-(

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:Sovrapporre due imageview
« Risposta #3 il: 22 Novembre 2010, 19:18:58 CET »
+2
Le domande che vengono agli inizi sono le domande a cui tipicamente hanno già dato risposta direttamente nella documentazione ufficiale, per cui basterebbe sfogliare quella decina di paginette nella tab DEVGUIDE del sito ufficiale per trovare risposta.  :-)

In questo caso ti serve quello che c'è scritto qua: Drawable Resources | Android Developers

Per sovrapporre due immagini in una ImageView hai due opzioni: o tramite XML o tramite Java.

Tramite Java:
Codice (Java): [Seleziona]
ImageView ivSum;
ivSum = (ImageView)findViewById(R.id.ivSum);
Drawable img[] = new Drawable[2];
img[0] = getResources().getDrawable(R.drawable.icon);
img[1] = getResources().getDrawable(R.drawable.icon2);
LayerDrawable layers = new LayerDrawable(img);
ivSum.setImageDrawable(layers);

Tramite XML crei in res/drawable un file XML di nome imglayers.xml, con il primo sovrapponi e scali le immagini, con il secondo invece non le scali e anzi applici un offset, scegli cosa ti serve. Poi ovviamente imglayers nel src della tua ImageView (ultima riga qua sotto).
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/icon" />
    <item android:drawable="@drawable/icon2" />
</layer-list>

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/icon"
       android:gravity="center" />
    </item>
    <item android:top="20dp" android:left="20dp">
      <bitmap android:src="@drawable/icon2"
       android:gravity="center" />
    </item>
</layer-list>

<ImageView android:src="@drawable/imglayers"
  android:layout_width="wrap_content" android:layout_height="wrap_content" />

NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #4 il: 22 Novembre 2010, 19:21:45 CET »
0
Grazie mille

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #5 il: 22 Novembre 2010, 20:13:42 CET »
0
Altra domanda. Se voglio accedere a uno dei bitmap dall'imageview come faccio? Uso l'imageview come fosse un array di bitmap?

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:Sovrapporre due imageview
« Risposta #6 il: 22 Novembre 2010, 20:21:26 CET »
0
Altra domanda. Se voglio accedere a uno dei bitmap dall'imageview come faccio? Uso l'imageview come fosse un array di bitmap?

 Puoi spiegare più in dettaglio cosa intendi per accedere? O meglio, quale éla funzionalità che vuoi ottenere?
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #7 il: 22 Novembre 2010, 20:25:19 CET »
0
per accedere intendo avere la possibilità di gestirne gli eventi, quali il click, oppure spostare la bitmap stessa all'interno della imageview, ecc

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:Sovrapporre due imageview
« Risposta #8 il: 22 Novembre 2010, 21:21:38 CET »
0
per accedere intendo avere la possibilità di gestirne gli eventi, quali il click, oppure spostare la bitmap stessa all'interno della imageview, ecc

Un evento click lo puoi gestire molto più semplicemente su tutta la ImageView, visto che tanto sono sovrapposte. E lo spostamento di una bitmap rispetto all'altra lo puoi controllare con l'offset che ho citato sopra.

Se questo ti è di aiuto dipende tutto da cosa vuoi ottenere alla fine, cosa che non so.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #9 il: 22 Novembre 2010, 22:15:16 CET »
0
Il problema è che le bitmap devono essere gestite separatamente, il click o meglio dire il trascinamento di una bitmap deve riguardare solo quella, non si devono spostare tutte.

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Sovrapporre due imageview
« Risposta #10 il: 22 Novembre 2010, 22:56:06 CET »
0
Il problema è che le bitmap devono essere gestite separatamente, il click o meglio dire il trascinamento di una bitmap deve riguardare solo quella, non si devono spostare tutte.
Ma allora non sono sovrapposte?

non ti converrebbe usare un canvas?
« Ultima modifica: 22 Novembre 2010, 23:06:13 CET da Qlimax »

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #11 il: 22 Novembre 2010, 23:02:57 CET »
0
si però devono avere gli eventi gestibili separatamente

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #12 il: 23 Novembre 2010, 14:57:26 CET »
0
Mi spiego meglio: nel file layers.xml ho queste bitmap:
Codice (XML): [Seleziona]
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
      <bitmap android:src="@drawable/bbg"
       android:gravity="center"
       android:id="@+id/itm1" />
    </item>
    <item android:top="10dp" android:left="10dp">
      <bitmap android:src="@drawable/android_gingerbread"
       android:gravity="center"
       android:id="@+id/itm2" />
    </item>
</layer-list>
che viene richiamato in una imageview nel file main.xml
Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/ll1"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
    <ImageView
   android:id="@+id/IV1"
   android:layout_height="wrap_content"
   android:layout_width="wrap_content"
   android:src="@drawable/layers" />
</LinearLayout>
A me interessa riuscire a gestire gli eventi sulle due bitmap, in modo indipendente una dall'altra, cioè per esempio distinguere il touch e il trascinamento di una bitmap, in modo che si sposti solo quella bitmap cliccata e non anche l'altra (per lo spostamento saprei come fare, se solo riuscissi a gestire questi eventi)
Grazie

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:Sovrapporre due imageview
« Risposta #13 il: 23 Novembre 2010, 15:18:46 CET »
0
Uhm, ma quello che vuoi fare è una specie di gioco? (l'interattività mi dice quello)
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline pindol

  • Nuovo arrivato
  • *
  • Post: 48
  • Respect: +2
    • Mostra profilo
Re:Sovrapporre due imageview
« Risposta #14 il: 23 Novembre 2010, 15:27:35 CET »
0
Si esatto, ci sono sistemi più intelligenti per fare quello che voglo fare io?