web-dev-qa-db-fra.com

android imageview onClick animation

Je suppose que c'est une sorte de question étrange, mais j'ai essayé de définir onClicklistener sur une ImageView et cela a fonctionné. Mais le problème est que l'utilisateur ne peut pas détecter le clic. Je veux dire si certains d'entre vous ont travaillé sur d'autres environnements mobiles (comme Apple iPhone), puis lorsque nous cliquons sur une image dans d'autres environs, cela donne un effet sur l'image afin que l'utilisateur puisse comprendre que l'image a été cliquée.

J'ai essayé de définir alpha en utilisant la méthode setalpha mais cela ne fonctionne pas. Bien que la même chose fonctionne bien sur la mise en œuvre de onFocusListener. Certains peuvent-ils suggérer une manière différente de modifier l'image en cliquant ...

Je suis nouveau sur Android donc je n'ai pas appris les nuances de l'animation simple aussi ... s'il y a une animation simple que je peux utiliser pour la même chose alors s'il vous plaît faites le moi savoir.

Merci!

27
JaVadid
   <?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">

<alpha
Android:fromAlpha = "1.0"
Android:toAlpha = "0.5"
Android:duration = "300">
</alpha>
<scale
Android:fromXScale = "1"
Android:toXScale = "0.9" 
Android:fromYScale = "1"
Android:toYScale = "0.9" 
Android:pivotX="50%"
Android:pivotY="50%" 
Android:duration = "50">
</scale>
</set>

Je ne sais pas si c'est la bonne méthode mais définir une animation comme mentionné a fait l'affaire. Il ne nous reste plus qu'à donner

public void onClick(View v) {
v.startAnimation(AnimationUtils.loadAnimation(Context, R.anim.image_click));
//Your other coding if present
}

dans la méthode OnClick et le changement sera visible ...

76
JaVadid

Vous voudrez utiliser un dessin qui contient différentes images pour les différents états que vous souhaitez prendre en charge. Voici un exemple:

<?xml version="1.0" encoding="utf-8"?>    
<selector xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:state_pressed="true" Android:drawable="@drawable/img_pressed" />
    <item Android:state_focused="true" Android:drawable="@drawable/img_focused" />
    <item Android:drawable="@drawable/img_at_rest" />
</selector>

Nommez ce fichier img.xml ou quelque chose et placez-le dans votre répertoire dessinable, puis définissez l'image de votre ImageView sur img.xml. @drawable/img_at_rest est l'image originale que vous essayez d'utiliser, tandis que @drawable/img_pressed et @drawable/img_focused sont les images à utiliser pour leurs états respectifs. Vous pouvez également utiliser des couleurs unies au lieu d'images si cela convient à votre cas d'utilisation.

9
emmby

anim/anim_item.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
  <alpha
    Android:fromAlpha="0.0"
    Android:toAlpha="1."
    Android:duration="1000">
  </alpha>
</set>

Et ajouter:

myView.startAnimation(AnimationUtils.loadAnimation(context, R.anim.anim_item));
2
Pierry

Je ne sais pas si cela fonctionne, mais avez-vous essayé setSelected () http://developer.Android.com/reference/Android/widget/ImageView.html#setSelected (boolean)

0
Patrick Kafka