安卓ImageView的点击动画

29

我猜这可能是一个奇怪的问题,但我已经尝试在ImageView上设置onClicklistener,并且它已经起作用了。但问题是用户无法感知点击事件。我的意思是如果有些人已经在其他移动设备上工作过(如苹果iPhone),那么在其他环境中点击图像时,图像会产生效果,以便用户可以理解已单击图像。

我尝试使用setalpha方法设置透明度,但它不起作用。虽然在onFocusListener实现上同样的事情能正常工作。有人能建议一种不同的方法来修改点击后的图像吗...

我是Android新手,还没有学习简单动画的技巧...如果有任何简单的动画可以用于此,请告诉我。

谢谢!


1
如果您正在使用AppCompat主题,请查看此答案:https://dev59.com/c1wZ5IYBdhLWcg3wBcWz#34388361 - Amila Abeygunasekara
4个回答

88
   <?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>

我不知道这是否是正确的方法,但按照提到的方式定义了一个动画后,问题得以解决。现在我们只需要给它

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

在 OnClick 方法中进行更改,更改将会被显示...


1
谢谢你和其他分享思路的人,感激不尽。希望我发布的方法对其他人也有用。 - JaVadid
太棒了!我一直在寻找一个黑色点击效果,当我测试这个时,我感到非常惊喜!非常感谢! - Rodrigo Venancio
非常感谢您...虽然是偶然发现了这篇文章!! - Deep Dave
3
点击后它才开始动画... 它应该像这样表现:第一,在触摸时缩小;第二,在松开按压时恢复正常。 - Himanshu Mori
超级厉害!非常感谢分享那段代码!太棒了! - Oleksandr.D

9

您需要使用包含不同图像以支持不同状态的可绘制对象。这里是一个示例:

<?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>

把这个文件命名为img.xml或其他名称,然后放到drawable目录中,接着将ImageView的图片设置为img.xml。其中@drawable/img_at_rest是你想要使用的原始图片,而@drawable/img_pressed@drawable/img_focused则是各自状态下要使用的图片。如果适用于您的用例,您还可以使用纯色代替图像。


哇……这是我能使用的东西……但我能否调整代码,使图像不改变,而是更改图像的alpha值呢? - JaVadid
嗯,我不太确定。android.graphics.drawable包的xml接口文档不是很全面。尝试查找一种方法来指定alpha透明度,或者在<item>规范中嵌套一个alpha颜色在图像上方。 - emmby
嗨 Mike,我的问题是图片不是来自资源而是来自互联网...因此改变图片我猜也无法帮助...谢谢你如此快速的回复... - JaVadid

2

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>

并添加:

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

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接