Android 中的晃动/摆动视图动画
我创建了一个如下所示的 anim.xml 文件来摇动 imageview,就像 Android 中的 IOS 图标摇动一样。 但是它没有给我提供相同的结果。 还有更好的主意吗?
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromDegrees="-2"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="2" />
I created an anim.xml file such as below to shake imageview like IOS icon shaking in android.
However it does not provide me same result.
Is there any better idea?
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="300"
android:fromDegrees="-2"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="2" />
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
如果你想晃动你的视野那就慢慢停下来,我们可以在每轮之后减少平移值。
这是一个辅助函数
示例缓慢
快速示例
或者即使您不希望抖动显示下降
使用上面的代码,也请记住使用 dp 值用于支持多个设备而不是硬编码的
offset
If you want to shake your view then slowly stop, we can reduce the translation value after each round.
This is a helper function
Example slow
Example fast
Or even if you dont want the shake show down
With above code, also remember to use dp value for
offset
for support multiple devices instead of hardcode我创建了一个非常好的 iOS 抖动近似(当你长按一个图标从主屏幕上删除应用程序时)。您必须以编程方式在代码中应用,因为它需要生成随机数:
此代码设计用于在适配器的 gridview (getView) 中应用,但您可以通过将最后一行更改为:
yourViewName.setAnimations( s);
I created a very good approximation of iOS shaking (when you long press a icon to remove app from homescreen). You have to apply inside your code, programmatically, as it requires random number generation:
This code was design to be applied inside an adapter's gridview (getView), but you can apply to any view by changing the last line to:
yourViewName.setAnimations(s);
lincolnq 答案的 Kotlin 版本
Kotlin version of lincolnq's answer
iOS 摆动动画并不是那么简单,尝试在旋转时随机改变轴 x 和 y。不过,您应该以编程方式更改该值。也许你也可以同时使用平移动画
IOS wobble animation is not that simple try to change pivot x and y randomly when rotate. You should change the value programatically though. May be you also can use translate animation simultaneously
两个多小时以来,我一直在敲着头,我知道如何摇动和摇摆视图。
不幸的是,除了片段的 onCreateView 之外,接受的答案将无法工作。
例如,如果您有 onClick 方法并在其中。你有像下面这样的动画是行不通的。
请仔细阅读代码。
注册方法有一些检查,如下面的代码
调用animationServiceList.start();永远不会被调用,
解决方案:像 ObjectAnimator 一样使用 PropertyAnimator。
Banging my head for more than two hours, I knew how to shake and wobble an view.
Unfortunately the accepted answer won't work apart from onCreateView of fragment.
Example if you have onClick method and inside in it. You have animation like below it won't work.
Please go through the code.
The register method has some checks like below code
The Call animationServiceList.start(); will never be called,
SOLUTION: Use PropertyAnimator like ObjectAnimator.
其他答案也是正确的,但这比它们更平滑一些,因为它使用插值器为前后运动产生平滑的数字
Other answers are correct as well but this is a bit smoother than them since it uses an interpolator produces smooth numbers for back an forth movement
尝试设置
android:repeatMode="reverse"
。下面的动画在我的 Galaxy Nexus 上进行了非常合理的模仿。显然,您可以根据自己的喜好微调参数。Try setting
android:repeatMode="reverse"
. Below animation gives a very reasonable immitation on my Galaxy Nexus. Obviously you can fine tune the parameters to your own liking.漂亮的摇动动画;
res/anim/shake.xml
如何使用它
如何使用它(简单版本):
Nice shake animation;
res/anim/shake.xml
How to use it
How to use it (Simpler version):
你可以试试这个:
shake.xml
Cycle_7.xml
You could try this:
shake.xml
cycle_7.xml
尝试使用这个:
try to use this one:
要制作这样的抖动效果
首先在 anim 文件夹中将摇动动画定义为 shake.xml
然后在代码中
To make shake effect like this
First define shake animation inside anim folder as shake.xml
Then in code
我在 Android 上创建了一个摇动效果并发布在 GitHub 上。看看效果是否更好。
https://github.com/teoinke/ShakeAnimation
相关代码:
I created a shake effect on Android and posted in GitHub. See if it works better.
https://github.com/teoinke/ShakeAnimation
Relevant code:
作为 iOS“PIN 错误”摇动克隆,这个效果相当好(尽管不是完美):
This one works pretty well (though not perfectly) as an iOS "incorrect PIN" shaking clone:
用途:
use:
对于 Kotlin 用户:
首先创建一个名为 shake.xml 的动画资源文件。右键点击Android Studio中的res文件夹,然后点击New > Android资源文件>输入shake作为文件名,并选择Animation作为资源类型下拉列表。单击“确定”。
在
shake.xml
中粘贴以下内容:现在只需在视图上调用它即可!
从片段中:
从活动中:
(注意 -
myView
是为要设置动画的视图指定的 ID)如果您想要微调动画,只需修改
shake.xml
中的值即可。For Kotlin users:
First create an Animation resource file called shake.xml. Right click on the res folder in Android Studio, then click New > Android Resource File > enter shake for the file name and select Animation for Resource type dropdown. Click OK.
Inside
shake.xml
paste the following:Now just call it on a view!
From within a fragment:
From within an activity:
(note -
myView
is the ID given to the view that you want to animate)If you would like to fine-tune the animation, simply modify the values in
shake.xml
.