Domanda

Ora voglio cambiare il margine superiore (10 px giù in ogni tocco manifestazione) di img1 in ogni tocco event.Below è il mio code.I hanno messo questo codice in caso di contatto mia attività.

  public static int  count=0;

        int place=-300;
                System.out.println("Count is:"+count);
                if(count>0)
                {
                    LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
                    lp.setMargins(0, place, 0, 0);
                        ImageView imageView=(ImageView)findViewById(R.id.img1);
                    //  MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams());
                        //marginLayoutParams.setMargins(0, 500, 0, 0);
                        imageView.setLayoutParams(lp);
                        place=place+10;

                }
    count++; 

Ora il margine è cambiato in un solo evento di tocco non in ogni tocco evento.

Quindi voglio che ogni tocco di utenti l'immagine dovrebbe scendere del 10 px

È stato utile?

Soluzione

se per ogni evento di tocco sopra esegue codice ... variabile locale "luogo" verrà inizializzato a -300 ogni volta, quindi luogo = luogo + 10 risulterà sempre -290 px, si prega di posto declare variabile livello di classe, come la variabile count. Speranza, questo funzionerà per voi.

Altri suggerimenti

Una nota qui, si dichiara la variabile "contare" di essere 0 ogni volta che il vostro tocco generato l'evento, nel caso ve lo stiate chiedendo il motivo per cui Indifferente incremento.

Che cosa si sta effettivamente facendo qui sta creando un nuovo ImageView in ogni tocco evento. Si dovrebbe fare riferimento allo stesso ImageView se si vuole sempre lavorare su questo oggetto, non dichiararlo ogni volta che si vuole fare qualcosa con esso.

Prova dichiarandolo nella parte superiore della vostra Classe di attività:

public ImageView imageView;

Poi si può un'istanza nel metodo onCreate:

imageView=(ImageView)findViewById(R.id.img1);

E poi si può lavorare su di essa nel vostro evento di tocco, senza dichiararlo ogni volta:

   if(count>0)
        {
            LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            lp.setMargins(0, place, 0, 0);
            //  MarginLayoutParams marginLayoutParams=new MarginLayoutParams(imageView.getLayoutParams());
                //marginLayoutParams.setMargins(0, 500, 0, 0);
                imageView.setLayoutParams(lp); // Note how we havent declared it above.
                place=place+10;

        }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top