Android UI效果篇-(3)用属性动画实现收缩菜单
来源:互联网 发布:淘宝图书发票有什么用 编辑:程序博客网 时间:2024/05/21 01:53
前言
~这篇文章主要记录下属性动画的简单使用,通过属性动画来实现一个常见的收缩菜单的功能。效果如下:
1.属性动画简单使用
~下面通过第一种收缩的样式代码来详细介绍下属性动画的属性:
private boolean isOpen = true;//开关标志位LinearLayout ll= (LinearLayout) findViewById(R.id.llbottom);//模拟的底部菜单栏FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (isOpen) { isOpen = false; ObjectAnimator animator = ObjectAnimator.ofFloat(ll, View.TRANSLATION_X,ll.getWidth()); animator.start(); } else { isOpen = true; ObjectAnimator animator = ObjectAnimator.ofFloat(ll, View.TRANSLATION_X, 0); animator.start(); } }});
这里使用ObjectAnimator类对底部菜单栏ll的X轴方向进行了平移动画处理,平移的距离是底部菜单栏ll的整个宽度。
ObjectAnimator animator = ObjectAnimator.ofFloat(ll, View.TRANSLATION_X,ll.getWidth());
- 第一个参数:被操控的View
- 第二个参数:需要被改变的View的属性
- 第三个参数:改变的大小
其实还可以有更多的参数:
ObjectAnimator animator = ObjectAnimator.ofFloat(ll, View.TRANSLATION_X,0,ll.getWidth(),0,llll.getWidth(),0);
这样实现的就是一个来回拉伸的效果。
2.属性动画属性值
~
属性值名称 对应View属性值名称 属性效果 "translationX"View.TRANSLATION_X在X轴上平移"translationY"View.TRANSLATION_Y在Y轴上平移"translationZ"View.TRANSLATION_Z在Z轴上平移"x"View.XView的x坐标"y"View.YView的y坐标"alpha"View.ALPHA改变View的透明度"rotation"View.ROTATION围绕支点进行2D旋转"rotationX"View.ROTATION_X围绕X轴进行3D旋转"rotationY"View.ROTATION_Y围绕Y轴进行3D旋转"scaleX"View.SCALE_X缩放X轴"scaleY"View.SCALE_Y缩放Y轴以上就是全部的属性动画属性值,部分会有api版本的限制,比如“z”,“translationZ”等,不建议使用。
3.改变属性动画的缩放点
~
属性动画并没有像补间动画一样提供了“pivotX”的方法来改变缩放动画的点,所以我们需要手动来设置缩放点。我们知道属性动画是直接改变的控件的属性,所以我们直接改变控件的"PivotX"或者"PivotY"即可。DisplayMetrics metric = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metric);int width = metric.widthPixels; ll.setPivotX(width);ll.setPivotY(0);
通过上面的代码我们就将缩放点改变到了控件的右上角,默认是控件左上角。
4.其他效果的核心代码
- 效果二:平移Y轴
if (isOpen2) { isOpen2 = false; ObjectAnimator animator = ObjectAnimator.ofFloat(ll2, View.TRANSLATION_Y, ll.getHeight()); animator.start();} else { isOpen2 = true; ObjectAnimator animator = ObjectAnimator.ofFloat(ll2, View.TRANSLATION_Y, 0); animator.start();}
- 效果三:缩放Y轴
if (isOpen3) { isOpen3 = false; ObjectAnimator animator = ObjectAnimator.ofFloat(ll3, View.SCALE_Y, 1); animator.start();} else { isOpen3 = true; ObjectAnimator animator = ObjectAnimator.ofFloat(ll3, View.SCALE_Y, 0); animator.start();}
- 效果四:缩放X轴
if (isOpen4) { isOpen4 = false; ObjectAnimator animator = ObjectAnimator.ofFloat(ll4, View.SCALE_X, 1); animator.start();} else { isOpen4 = true; ObjectAnimator animator = ObjectAnimator.ofFloat(ll4, View.SCALE_X, 0); animator.start();}
- 效果五:同时缩放X轴和Y轴
if (isOpen5) { isOpen5 = false; ObjectAnimator animator = ObjectAnimator.ofFloat(ll5, View.SCALE_X, 1); ObjectAnimator animator1 = ObjectAnimator.ofFloat(ll5, View.SCALE_Y, 1); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(animator, animator1); animatorSet.start();} else { isOpen5 = true; ObjectAnimator animator = ObjectAnimator.ofFloat(ll5, View.SCALE_X, 0); ObjectAnimator animator1 = ObjectAnimator.ofFloat(ll5, View.SCALE_Y, 0); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(animator, animator1); animatorSet.start();}
作者:自导自演的机器人
链接:http://www.jianshu.com/p/835fc313d1e1
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
阅读全文
0 0
- Android UI效果篇-(3)用属性动画实现收缩菜单
- Android 属性动画实现的扇形菜单效果
- Android属性动画——实现灵动菜单效果
- 属性动画实现卫星菜单效果
- Android中属性动画3----ObjectAnimator实现一个动画菜单
- 开源项目推荐(3):Android UI Patterns 实现各种UI效果,含动画
- android 动画实现侧滑菜单效果
- JQuery实现QQMenu菜单收缩滑动效果
- jQuery实现菜单的收缩效果
- 利用属性动画实现动态菜单的效果
- Android中侧滑菜单效果实现(主界面和菜单界面实现平移、缩放、滚动动画)
- Android动画学习(五)之属性动画实现Tween的效果和高级属性示例
- 收缩菜单效果
- Android UI效果篇-(2)炫酷动画源码
- android 随手记 popwindow实现下拉菜单弹出和收缩效果
- jQuery UI实现动画效果
- Android 灵动菜单动画效果
- [Android][UI]模拟器启动界面动画效果的简单实现
- makefile 中指定程序运行时加载的库文件路径
- 100000个嵌入式学习者遇到的PING不通问题,我们使用这一个视频就解决了,牛!
- OTSU
- Ubuntu 软件中心不显示软件解决办法
- Debian 9.x "stretch" 安装 vnStat 统计服务器流量
- Android UI效果篇-(3)用属性动画实现收缩菜单
- 百款最流行Android个性化控件
- 朴素贝叶斯分类算法
- Mysql学习-索引
- 小鑫の日常系列故事(五)——卡片游戏
- android.app.IntentReceiverLeaked 问题的解决
- 初来乍到
- abap 上传\下载文档
- NIO和AIO对比详解