android 实现控件左右或上下抖动教程
作者:[JackyCheung] 时间:2023-03-19 17:02:07
差不多一年前在自己的项目中用过这效果,虽然很简单,但还是写写。
1、首先在你的res目录下新建anim子目录,并在anim目录下新建两个文件:
(1)shake.xml文件(位移/平移:translate),设置起始的位移范围、效果时间、循环次数
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="10"
android:duration="500"
android:interpolator="@anim/share_cycle">
<!--.
fromXDelta:x轴起点抖动位置
toXDelta:x轴终点抖动位置
duration:循环播放的时间
interpolator:循环不放设置(次数)
-->
</translate>
(2)cycle.xml文件,控制循环次数
<?xml version="1.0" encoding="utf-8"?>
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
android:cycles="2"><!--. 循环次数 -->
</cycleInterpolator><!--. 循环播放 -->
最后给你的控件设置改动画属性
Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
ivShake.startAnimation(shake);
这里ivShake是ImageView,就是这么简单。
2、个人碰到一个问题就是在Activity实现监听中添加动画效果第一次没有反应,不知道为什么
补充知识:Android 抖动提示动画
左右抖动
ObjectAnimator animator = ObjectAnimator.ofFloat(textView, "translationX", 0, 100, -100,0);
animator.setDuration(200);
animator.start();
重复左右抖动
Animation translateAnimation = new TranslateAnimation(-20, 20, 0, 0);
translateAnimation.setDuration(100);//每次时间
translateAnimation.setRepeatCount(10);//重复次数
/**倒序重复REVERSE 正序重复RESTART**/
translateAnimation.setRepeatMode(Animation.REVERSE);
nope.startAnimation(translateAnimation);
public static void Shakeview( View view) {
Animation translateAnimation = new TranslateAnimation(-10, 10, 0, 0);
translateAnimation.setDuration(50);//每次时间
translateAnimation.setRepeatCount(10);//重复次数
/**倒序重复REVERSE 正序重复RESTART**/
translateAnimation.setRepeatMode(Animation.REVERSE);
view.startAnimation(translateAnimation);
}
左右上下抖动
ObjectAnimator animator = tada(clickMe);
animator.setRepeatCount(ValueAnimator.INFINITE);
animator.start();
public static ObjectAnimator tada(View view) {
return tada(view, 2f);
}
public static ObjectAnimator tada(View view, float shakeFactor) {
PropertyValuesHolder pvhScaleX = PropertyValuesHolder.ofKeyframe(View.SCALE_X,
Keyframe.ofFloat(0f, 1f),
Keyframe.ofFloat(.1f, .9f),
Keyframe.ofFloat(.2f, .9f),
Keyframe.ofFloat(.3f, 1.1f),
Keyframe.ofFloat(.4f, 1.1f),
Keyframe.ofFloat(.5f, 1.1f),
Keyframe.ofFloat(.6f, 1.1f),
Keyframe.ofFloat(.7f, 1.1f),
Keyframe.ofFloat(.8f, 1.1f),
Keyframe.ofFloat(.9f, 1.1f),
Keyframe.ofFloat(1f, 1f)
);
PropertyValuesHolder pvhScaleY = PropertyValuesHolder.ofKeyframe(View.SCALE_Y,
Keyframe.ofFloat(0f, 1f),
Keyframe.ofFloat(.1f, .9f),
Keyframe.ofFloat(.2f, .9f),
Keyframe.ofFloat(.3f, 1.1f),
Keyframe.ofFloat(.4f, 1.1f),
Keyframe.ofFloat(.5f, 1.1f),
Keyframe.ofFloat(.6f, 1.1f),
Keyframe.ofFloat(.7f, 1.1f),
Keyframe.ofFloat(.8f, 1.1f),
Keyframe.ofFloat(.9f, 1.1f),
Keyframe.ofFloat(1f, 1f)
);
PropertyValuesHolder pvhRotate = PropertyValuesHolder.ofKeyframe(View.ROTATION,
Keyframe.ofFloat(0f, 0f),
Keyframe.ofFloat(.1f, -3f * shakeFactor),
Keyframe.ofFloat(.2f, -3f * shakeFactor),
Keyframe.ofFloat(.3f, 3f * shakeFactor),
Keyframe.ofFloat(.4f, -3f * shakeFactor),
Keyframe.ofFloat(.5f, 3f * shakeFactor),
Keyframe.ofFloat(.6f, -3f * shakeFactor),
Keyframe.ofFloat(.7f, 3f * shakeFactor),
Keyframe.ofFloat(.8f, -3f * shakeFactor),
Keyframe.ofFloat(.9f, 3f * shakeFactor),
Keyframe.ofFloat(1f, 0)
);
return ObjectAnimator.ofPropertyValuesHolder(view, pvhScaleX, pvhScaleY, pvhRotate).
setDuration(1000);
}
来源:https://blog.csdn.net/u012842688/article/details/68944607
标签:android,左右,上下,抖动
0
投稿
猜你喜欢
thymeleaf中前后端数据交互方法汇总
2023-07-18 21:15:59
Springboot2.x+ShardingSphere实现分库分表的示例代码
2023-11-26 01:34:07
Android编程实现应用自动更新、下载、安装的方法
2021-11-15 11:21:39
浅谈C#网络编程详解篇
2022-10-23 04:30:28
c++代码调试方式的几点建议
2023-07-05 05:31:35
springMVC自定义注解,用AOP来实现日志记录的方法
2023-11-29 13:58:53
Java读写文件创建文件夹多种方法示例详解
2022-11-17 01:08:48
解析:android 如何从JPEG生成BufferedImage
2022-06-03 20:11:50
5分钟搭建SpringCloud Eureka服务注册中心的实现
2022-07-12 05:12:42
C# TcpClient网络编程传输文件的示例
2021-10-16 16:01:13
C#解析Lrc歌词文件过程详解
2021-12-26 05:52:38
Commons beanutils组件简介
2023-11-28 07:13:27
Java使用Iterator迭代器遍历集合数据的方法小结
2021-10-28 00:22:40
BeanDefinition基础信息讲解
2022-03-23 23:48:37
Java实现将彩色PDF转为灰度PDF的示例代码
2022-11-26 19:47:41
带你了解Spring中bean的获取
2021-10-10 09:53:10
IntelliJ IDEA 好用插件之analyze inspect code详解
2021-09-26 22:16:36
Jenkins安装以及邮件配置详解
2023-04-20 12:42:39
java高并发的线程中断的几种方式详解
2022-08-25 01:35:09
java生成XML的方法
2023-08-12 11:45:46