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侧滑动画相关推荐

  1. html 衣服特效,详细介绍HTML5 3D衣服摇摆动画特效如何实现

    这又是一款基于HTML5 Canvas的3D动画杰作,它是一个可以随风飘动的3D衣服摇摆动画特效,非常逼真.当我们将鼠标滑过衣服时,衣服将会出现摇摆的动画,点击鼠标时,衣服将会更加剧烈地摆动. 在线演 ...

  2. android drawerlayout侧滑菜单,Android中drawerlayout侧滑菜单效果的实现

    众所周知,Android中drawerlayout侧滑菜单是一个很常见的功能,而我们大多数人都是使用slidengmenu作为一个开源框架,下面爱站技术频道小编给大家介绍Android中drawerl ...

  3. DrawerLayout侧滑详解

    前面我们说了自定义侧滑菜单,也说了SlidingMenu的使用,这一节我们再来说下DrawerLayout.DrawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说 ...

  4. DrawerLayout侧滑

    DrawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说DrawerLayout是因为第三方控件如SlidingMenu等出现之后,google借鉴而出现的产物.D ...

  5. uniapp - 超详细实现播放 svg / svga 格式动画组件插件,用于直播间赠送礼物特效动画或项目动画特效较多的应用(新手小白保姆级教程,提供插件+详细运行示例+使用文档+注意事项+格式说明)

    前言 网上关于 uniapp 播放 svg / svga 格式动画的教程很乱,基本上全是 BUG 和各种不兼容,很难复制过来自己用. 本文实现了 在 uniapp 项目中(完美兼容 H5 / App ...

  6. Material Design学习之 Button(详细分析,传说中的水滴动画)

    转载请注明出处:王亟亟的大牛之路 上一篇大致介绍了Material Design的一些基本概念传送门:http://blog.csdn.net/ddwhan0123/article/details/5 ...

  7. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果

    在以前,做策划导航的时候,最常用的组件便是SlidingMenu了,当初第一次用它的时候觉得那个惊艳啊,体验可以说是非常棒. 后来,Android自己推出了一个可以实现策划导航的组件DrawerLay ...

  8. Requests库实战(三)---爬取豆瓣电影详细信息

    完整代码 爬取豆瓣电影的详细信息 地址:豆瓣电影动画 向下滑动时新增的数据也是Ajax请求,原理和上一个项目是一样的.唯一的不同是此处请求url携带了多个参数 import requests impo ...

  9. Carson带你学Android:这是一份全面详细的动画学习指南

    前言 动画的使用 是 Android 开发中常用的知识 可是动画的种类繁多.使用复杂,每当需要 采用自定义动画 实现 复杂的动画效果时,很多开发者就显得束手无策 本文将献上一份Android动画的全面 ...

最新文章

  1. 2021-2027年中国一体化预制泵站行业研究及前瞻分析报告
  2. LSJ_NHibernate第三章 IDAL,DAL,BLL
  3. 神经网络基础:七种网络单元,四种层连接方式
  4. Spring Cloud Stream 与 Kafka 整合
  5. ncl 添加点shp文件_气象编程 | NCL高效快速精准提取不规则区域内的格点数据
  6. 源码mysql5.7安装过程_mysql5.7 源码安装步骤
  7. 纯数学教程 Page 325 例LXVIII (12)
  8. 在WPF TreeView中使用复选框
  9. 简述linux的系统结构,Linux系统基础知识(一)
  10. java+控制台-学生选课管理系统
  11. CSI Report中关于codebook/PMI的理解(2)
  12. macOS和Linux系统中的虚拟网卡(xFsRedir虚拟局域网功能扩展之其他平台的实现)
  13. 如何成为一个AI产品经理?
  14. php显示服务器ipv6,php获取用户IPv4或IPv6地址的代码
  15. 苹果开场铃声 android,为何苹果用户喜欢用手机默认铃声?原因在这4点,真是非常现实...
  16. android开发apk捆绑,Android 下 APK 捆绑器的实现
  17. Scratch 与C语言实现数据结构静态链表的建立及操作
  18. python写梦幻西游脚本精灵_python写的梦幻手游辅助工具,非外 挂
  19. 基于51单片机的温度报警系统(程序分装)
  20. 虚拟机向主机复制文件中断产生的不合理临时文件【win磁盘空间不足解决方法】

热门文章

  1. 第一季2:视频设备开发的技术流
  2. 与fastboot相关的知识
  3. inputstream的大小为0_刘科排列三第2020306期推荐:独胆参考0,双胆0和7
  4. WebSocket介绍
  5. Unity 之 如何删除Unity项目里面没用的东西??
  6. JavaScript一个简易枚举类型实现扑克牌
  7. HDOJ 3415 Max Sum of Max-K-sub-sequence
  8. std::string中的反向迭代器rbegin()和rend()
  9. Linux内核编程广泛使用的前向声明(Forward Declaration)
  10. 高通8X25Q wifi BT 调试文档