跳(律动)动的(电话号码)文字
来源:互联网 发布:vue.js 格式化 编辑:程序博客网 时间:2024/04/30 03:20
转载请注明出处:(http://blog.csdn.net/atoliu/article/details/50525032)
跳动的电话号码
在最近项目开发的过程中需要实现很多动画,而且基本是在做一个IOS风格的APP,所以作为开发工程师,只能默默的接下所有的需求。
需要实现的效果如下:
当拿到这个东西的时候,我想这是简单的,没想到在实现的过程中 坑还是很多的.
最开始的时候 我的想法是通过TextView 中重写onDraw方法,然后不停的绘制电话号码,通过计算每个字符的位置来实现,但是在实现的过程中发现动画的流畅性非常差,最后放弃了。
后面的我还是选择和最Low的办法,把电话号码分割为一个个TextView 通过在代码中动态添加TextView的个数来实现。
主要方法如下:
通过 代码中得到电话号码,然后动态向里面添加 View
private void initNumber() { char[] num = TELEPHONE_NUMBER.toCharArray(); for (int i = 0; i < num.length; i++) { TextView textView = (TextView) getLayoutInflater().inflate(R.layout.text_phone_number, null); textView.setText(num[i]+"");// 防止出现 查找资源文件 mPhoneNumberLayout.addView(textView); ObjectAnimator animator = ObjectAnimator.ofFloat(textView, "translationY", 0f, -10f, -20f, -10f, 0f); animator.setDuration(300); textView.setTag(animator); } } `然后通过 Handler和计数器 实现 每个子View 动画的顺序执行,如下` /**电话号码的 动画*/ private void phoneNumberAnimation(int i){ View view =mPhoneNumberLayout.getChildAt(i); Animator animator =(Animator)view.getTag(); animator.start(); long dey = animator.getDuration() * 2 / mPhoneNumberLayout.getChildCount(); mHandler.sendEmptyMessageDelayed(START_PHONE_NUMBER_AINMATION,dey); }
同时电话icon也有动画,如下:
/**电话icon的 动画*/ private void phoneIconAnimation(){ //相对自身 旋转 30度 RotateAnimation animation =new RotateAnimation(0,30, Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); animation.setRepeatCount(1);//抖动 2次 animation.setDuration(100); animation.setFillAfter(true); mPhoneIcon.startAnimation(animation); mHandler.sendEmptyMessageDelayed(START_PHONE_ICON_AINMATION,300); }
最终流畅的实现了设计师所需的效果(实际真机上的效果 要比 此 gif 录制的效果流畅 大家可以给我推荐一款 gif 录制工具),效果图如下:
大家可以通过扫描下面的二维码来添加我
源码github地址:跳动的文字
0 0
- 跳(律动)动的(电话号码)文字
- 婉约、律动的浅夏
- 【搜索】【动规】电话号码
- 鼠标下浮动的文字和时钟(转帖修改)
- js-实现文字无缝滚动(停顿+缓动)
- 让你的网页文字动起来。。。
- poj 1002 (电话号码)
- 小米考试(电话号码)
- 正则表达式(电话号码 (国家)(区号-)电话号码)
- 鼠标下浮动文字
- 鼠标下浮动文字
- Android SDK 1.0 电话号码的例子(Demo)
- vba excel电话号码的导入(sheet1 to sheet2)
- poj 487-3279 (方便记忆的电话号码)
- 关于电话号码的分割(包括显示与输入两方面)
- EditTextView 带空格分隔的输入(电话号码,银行卡)
- 正则表达式(校验电话号码)
- 电话号码分割js(修改)
- 工具的使用——PyCharm
- php单引号 双引号区别
- c#下利用winAPI来实现扩展屏的分辨率设置、方向切换等
- 堆和栈的区别
- 开始写文章了
- 跳(律动)动的(电话号码)文字
- linux下防DDOS攻击软件及使用方法详解
- 组合查询
- UITableView
- Hexo系列教程(二):Hexo的本地搭建
- jsp,js引用Java常量
- angularjs--制作树形菜单
- hdu 2103 java 细节题
- 【C++】Android中的同步机制