CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: complicazio con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 11 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 34 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 3 su 3
Discussione:

Applicare due drawable a una view

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Applicare due drawable a una view

    Salve a tutti!
    Sto facendo un pò di prove con i drawable e in particolare con RotateDrawable e ScaleDrawable..
    Ho creato un piccolo programma che ha due Button (scale e rotate) che dovrebbero servire rispettivamente a ridimensionare e ruotare l'immagine di sfondo contenuta da LinearLayout.
    Prima ho provato ad implementare singolarmente i due listener e funziona...
    Se invece provo a gestire entrambe le azioni, ovviamente in relazione al Button premuto, funziona solo uno dei due (nel mio caso ruota).

    Ecco il codice:
    codice:
    package it.apogeo.android.cap03.rotatedrawable;
    
    import android.app.Activity;
    import android.graphics.drawable.ScaleDrawable;
    import android.graphics.drawable.RotateDrawable;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.LinearLayout;
    
    public class RotateDrawableActivity extends Activity {
    
    	private final static int MIN_LEVEL = 0;
    	private final static int MAX_LEVEL = 10000;
    
    	private final static int STEP = 200;
    
    	private int levelR=0, levelS = 0;
    
    
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		
    		// Otteniamo il riferimento a RotateDrawable e ScaleDrawable
    		final ScaleDrawable scaleDrawable = (ScaleDrawable) getResources()
    				.getDrawable(R.drawable.scale);
    		final RotateDrawable rotateDrawable =(RotateDrawable) getResources().getDrawable(R.drawable.rotate);
    		
    		// Riferimento ai bottoni
    		Button scala = (Button) findViewById(R.id.buttonS);
    		Button ruota = (Button) findViewById(R.id.buttonR);
    		
    		
    		// Riferimento al LinearLayout contenitore delle View
            LinearLayout linearLayout = (LinearLayout)findViewById(R.id.linearLayout);	
            
            // Impostiamo lo ScaleDrawable come Background della View 
                    linearLayout.setBackgroundDrawable(scaleDrawable);
                    linearLayout.setBackgroundDrawable(rotateDrawable);
                    
                    
                    
                    
                  //scala
                    scala.setOnClickListener(new OnClickListener() {
    
            			@Override
            			public void onClick(View v) {
            				levelS += STEP;
            				if (levelS > MAX_LEVEL) {
            					levelS = MAX_LEVEL;
            				} else if (levelR < MIN_LEVEL) {
            					levelS = MIN_LEVEL;
            				}
            				Log.i("RotateScaleDrawableTestActivity", "Level: " + levelS);
            				scaleDrawable.setLevel(levelS);
            			}
    
            		});
                    
            // Gestiamo gli eventi di pressione del button ruota
            ruota.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				levelR += STEP;
    				if (levelR > MAX_LEVEL) {
    					levelR = MAX_LEVEL;
    				} else if (levelR < MIN_LEVEL) {
    					levelR = MIN_LEVEL;
    				}
    				Log.i("Rotate", "Level: " + levelR);
    				rotateDrawable.setLevel(levelR);
    			}
    
    		});
            
            
    	}
    }
    Credo proprio che il problema sia legato alla parte in grassetto perchè posso applicare solo un drawable alla volta, e quindi in questo caso viene preso rotateDrawable che è l'ultimo.

    Come posso gestire questa situazione?
    Ultima modifica di Supergiox; 18-12-10 alle 17:10

  2.  
  3. #2
    Senior Droid L'avatar di Cymon


    Registrato dal
    Jul 2010
    Messaggi
    419

    Ringraziamenti
    7
    Ringraziato 43 volte in 42 Posts
    Predefinito

    Bhe, mi sembra giusto che alla fine il tuo oggetto ruoti e basta perché quando scrivi



    la seconda invocazione sovrascrive la prima, quindi sostanzialmente lo scaleDrawable non è più sullo schermo e non è più gestibile.

    Solo che non capisco una cosa... Mi sembra di capire che hai due immagini
    R.drawable.scale
    e
    R.drawable.rotate

    in che modo pensavi di farle "convivere" sul background?
    La mia katana: Slackware 13.1
    La mia wakizashi: Acer A1 Liquid con Android 2.1 Eclair
    Il mio sito: Follow the rabbit (con la sua App )

  4. #3
    Androidiano L'avatar di Supergiox


    Registrato dal
    Oct 2010
    Messaggi
    179

    Ringraziamenti
    5
    Ringraziato 10 volte in 8 Posts
    Predefinito

    Il problema è proprio questo!
    Il secondo background, giustamente, sovrascrive il primo...

    e quindi come faccio a gestire con due pulsanti la rotazione o il ridimensionamento?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy