Question

Maintenant, je veux changer la marge supérieure (10 px dans tous les cas de contact) de img1 dans chaque touche event.Below est mon code.I ont mis ce code en cas de contact de mon activité.

  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++; 

Maintenant, la marge est modifiée que dans un seul événement touche pas dans tous les cas de contact.

Je veux que chaque touche de l'utilisateur l'image descendrait de 10 px

Était-ce utile?

La solution

si pour chaque événement tactile au-dessus exécute code ... variable « lieu » local sera initialisé à -300 à chaque fois, donc lieu = lieu + 10 donnera toujours -290 px, s'il vous plaît variable lieu racontons dans le niveau de la classe, comme votre variable de comptage. L'espoir, cela fonctionnera pour vous.

Autres conseils

Une note ici, vous déclarez votre variable « count » à 0 à chaque fois que vos feux d'événements tactiles, au cas où vous vous demandiez pourquoi il doesnt augmentation.

Ce que vous faites effectivement crée ici une nouvelle ImageView dans tous les cas de contact. Vous devez vous référer à la même ImageView si vous voulez travailler de manière cohérente sur cet objet, pas déclariez chaque fois que vous voulez faire quelque chose avec elle.

Essayez déclarant en haut de votre classe d'activité:

public ImageView imageView;

Ensuite, vous pouvez instancier dans votre méthode onCreate:

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

Et puis vous pouvez travailler dans votre événement tactile, sans le déclarer à chaque fois:

   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;

        }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top