nineoldandroid 详细使用并且实现drawerlayout侧滑动画
2016-06-17 16:00
543 查看
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。。。已经过时,两者没什么使用上的区别,只是会判断一次是否为空)
关于滑动中动画属性的转化:
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)
相关函数解读:(第一个参数都为动画对象,第二个为动画属性值的变化表达式)
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 void onDrawerOpened(View drawerView) { } public void onDrawerClosed(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)
相关文章推荐
- 利用android-Ultra-Pull-To-Refresh做的下拉刷新,支持viewpager等view完美嵌套
- Android Studio 中快速提取方法
- Android-IPC机制【占坑中】
- android listview系列之item的点击事件及item布局中的点击事件(四)
- Android-屏幕适配方案【占坑中】
- android双击图片放大,放大拖动的简单功能
- android 障蔽Home键, 屏蔽BACK键,MENU键
- Android中的IPC方式——使用AIDL
- Android gallery 实现定时滑动并添加动画效果
- Android RecyclerView 使用完全解析 体验艺术般的控件
- android接收系统广播
- Android 最火的快速开发框架XUtils
- android 图片压缩奇葩问题
- Android打包代码混淆后的Mapping文件路径
- Android Studio 常用的快捷键
- ImageView 设置图片的方法
- android onSaveInstanceState的使用方法
- AndroidStudio导入github项目
- Android String.xml特殊字符显示异常
- Android之短信截取