nineoldandroid使用_nineoldandroid 详细使用并且实现drawerlayout侧滑动画
nineoldandroid.view.ViewHelpe是一个为了兼容3.0以下的一个动画开源库
相关函数解读:(第一个参数都为动画对象,第二个为动画属性值的变化表达式)
ViewHelper.setTranslationX(,);//x方向平移
ViewHelper.setTranslationY(,);
ViewHelper.setScaleX(,);x方向变化大小
ViewHelper.setScaleY(,);
ViewHelper.setAlpha(,);透明度变化
ViewHelper.setPivotY(,);大小变化x方向的中心
ViewHelper.setPivotX(,);
例如在drawerlayout中通过监听drawerlayout的滑动来设置动画(这里的监听器开始设置成了set。。。已经过时,两者没什么使用上的区别,只是会判断一次是否为空)
mDrawerLayout.addDrawerListener(new DrawerListener()//设置抽提监听事件,添加监听器
{public void onDrawerStateChanged(int newState)//状态监听
{
}public void onDrawerSlide(View drawerView, float slideOffset)//滑动监听
{
View mContent= mDrawerLayout.getChildAt(0);//返回抽屉布局中的索引为0的子view
View mMenu =drawerView;float scale = 1 - slideOffset;//偏移量导致scale从1.0-0.0
float rightScale = 0.8f + scale * 0.2f;//将内容区域从1.0-0.0转化为1.0-0.8
if (drawerView.getTag().equals("LEFT"))
{float leftScale = 1 - 0.3f * scale;//0.7-1.0
ViewHelper.setScaleX(mMenu, leftScale);
ViewHelper.setScaleY(mMenu, leftScale);
ViewHelper.setAlpha(mMenu,0.6f + 0.4f * (1 - scale));//开始这里设置成了这样,导致背景透明度有1.0-0.6//ViewHelper.setAlpha(mMenu, 0.6f + 0.4f * scale);
ViewHelper.setTranslationX(mContent,
mMenu.getMeasuredWidth()* (1 -scale));
ViewHelper.setPivotX(mContent,0);
ViewHelper.setPivotY(mContent,
mContent.getMeasuredHeight()/ 2);
mContent.invalidate();
ViewHelper.setScaleX(mContent, rightScale);
ViewHelper.setScaleY(mContent, rightScale);
}else{
ViewHelper.setTranslationX(mContent,-mMenu.getMeasuredWidth() *slideOffset);//设置大小变化的中心
ViewHelper.setPivotX(mContent, mContent.getMeasuredWidth());
ViewHelper.setPivotY(mContent,
mContent.getMeasuredHeight()/ 2);
mContent.invalidate();
ViewHelper.setScaleX(mContent, rightScale);
ViewHelper.setScaleY(mContent, rightScale);
}
}public voidonDrawerOpened(View drawerView)
{
}public voidonDrawerClosed(View drawerView)
{
mDrawerLayout.setDrawerLockMode(
DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT);
}
});
关于滑动中动画属性的转化:
1、首先是内容区域的缩放比例计算:
我们准备让在菜单出现的过程中,让内容区域从1.0~0.8进行变化
float rightScale = 0.8f + scale * 0.2f; (scale 从1到0 )
2、菜单的缩放比例计算
菜单大概缩放变化是0.7~1.0
float leftScale = 1 - 0.3f * scale;
3、菜单的透明度比例:
我们设置为0.6~1.0;即:0.6f + 0.4f * (1 - scale)
nineoldandroid使用_nineoldandroid 详细使用并且实现drawerlayout侧滑动画相关推荐
- html 衣服特效,详细介绍HTML5 3D衣服摇摆动画特效如何实现
这又是一款基于HTML5 Canvas的3D动画杰作,它是一个可以随风飘动的3D衣服摇摆动画特效,非常逼真.当我们将鼠标滑过衣服时,衣服将会出现摇摆的动画,点击鼠标时,衣服将会更加剧烈地摆动. 在线演 ...
- android drawerlayout侧滑菜单,Android中drawerlayout侧滑菜单效果的实现
众所周知,Android中drawerlayout侧滑菜单是一个很常见的功能,而我们大多数人都是使用slidengmenu作为一个开源框架,下面爱站技术频道小编给大家介绍Android中drawerl ...
- DrawerLayout侧滑详解
前面我们说了自定义侧滑菜单,也说了SlidingMenu的使用,这一节我们再来说下DrawerLayout.DrawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说 ...
- DrawerLayout侧滑
DrawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说DrawerLayout是因为第三方控件如SlidingMenu等出现之后,google借鉴而出现的产物.D ...
- uniapp - 超详细实现播放 svg / svga 格式动画组件插件,用于直播间赠送礼物特效动画或项目动画特效较多的应用(新手小白保姆级教程,提供插件+详细运行示例+使用文档+注意事项+格式说明)
前言 网上关于 uniapp 播放 svg / svga 格式动画的教程很乱,基本上全是 BUG 和各种不兼容,很难复制过来自己用. 本文实现了 在 uniapp 项目中(完美兼容 H5 / App ...
- Material Design学习之 Button(详细分析,传说中的水滴动画)
转载请注明出处:王亟亟的大牛之路 上一篇大致介绍了Material Design的一些基本概念传送门:http://blog.csdn.net/ddwhan0123/article/details/5 ...
- Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...
- Requests库实战(三)---爬取豆瓣电影详细信息
完整代码 爬取豆瓣电影的详细信息 地址:豆瓣电影动画 向下滑动时新增的数据也是Ajax请求,原理和上一个项目是一样的.唯一的不同是此处请求url携带了多个参数 import requests impo ...
- Carson带你学Android:这是一份全面详细的动画学习指南
前言 动画的使用 是 Android 开发中常用的知识 可是动画的种类繁多.使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将献上一份Android动画的全面 ...
最新文章
- 2021-2027年中国一体化预制泵站行业研究及前瞻分析报告
- LSJ_NHibernate第三章 IDAL,DAL,BLL
- 神经网络基础:七种网络单元,四种层连接方式
- Spring Cloud Stream 与 Kafka 整合
- ncl 添加点shp文件_气象编程 | NCL高效快速精准提取不规则区域内的格点数据
- 源码mysql5.7安装过程_mysql5.7 源码安装步骤
- 纯数学教程 Page 325 例LXVIII (12)
- 在WPF TreeView中使用复选框
- 简述linux的系统结构,Linux系统基础知识(一)
- java+控制台-学生选课管理系统
- CSI Report中关于codebook/PMI的理解(2)
- macOS和Linux系统中的虚拟网卡(xFsRedir虚拟局域网功能扩展之其他平台的实现)
- 如何成为一个AI产品经理?
- php显示服务器ipv6,php获取用户IPv4或IPv6地址的代码
- 苹果开场铃声 android,为何苹果用户喜欢用手机默认铃声?原因在这4点,真是非常现实...
- android开发apk捆绑,Android 下 APK 捆绑器的实现
- Scratch 与C语言实现数据结构静态链表的建立及操作
- python写梦幻西游脚本精灵_python写的梦幻手游辅助工具,非外 挂
- 基于51单片机的温度报警系统(程序分装)
- 虚拟机向主机复制文件中断产生的不合理临时文件【win磁盘空间不足解决方法】
热门文章
- 第一季2:视频设备开发的技术流
- 与fastboot相关的知识
- inputstream的大小为0_刘科排列三第2020306期推荐:独胆参考0,双胆0和7
- WebSocket介绍
- Unity 之 如何删除Unity项目里面没用的东西??
- JavaScript一个简易枚举类型实现扑克牌
- HDOJ 3415 Max Sum of Max-K-sub-sequence
- std::string中的反向迭代器rbegin()和rend()
- Linux内核编程广泛使用的前向声明(Forward Declaration)
- 高通8X25Q wifi BT 调试文档