• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > android:QQ多种侧滑菜单的实现

android:QQ多种侧滑菜单的实现

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android qq侧滑菜单,android侧滑菜单,android 侧滑式菜单,android侧滑菜单demo,android开发 侧滑菜单等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

android:QQ多种侧滑菜单的实现


然而这个菜单效果只是普通的侧拉效果 我们还可以实现抽屉式侧滑菜单 就像这样

第一种效果\

第二种效果\

第三种效果\

第四种效果\

其它代码都和上篇文章相同,只是在MyHorizontalScrollView.class重写onScrollChanged这个方法

第一种的侧滑效果代码很简单

 

	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		// TODO Auto-generated method stub
		super.onScrollChanged(l, t, oldl, oldt);
		ViewHelper.setTranslationX(mMenu, l);
	}
通过setTranslationX方法设置mMenu的x坐标偏移量 其中的l=getScrollX()

 

设置完这些就能实现这样的侧滑效果\

第二种侧滑效果代码和第一种类似,只不过是对mMenu的x坐标的偏移量再增加1倍,使得mMenu菜单仿佛从右边出来一样

 

	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		// TODO Auto-generated method stub
		super.onScrollChanged(l, t, oldl, oldt);
		ViewHelper.setTranslationX(mMenu, 2*l);
	}
\
第三种侧滑效果,我们发现用到了缩放动画,所以要有个0~1的变化率,由于初始的l=getScrollX()=mMenuWidth ,最终的l=0 所以从这里我们可以得到
		//scale 1~0的变化率
		float scale = l*1.0f/mMenuWidth;
代码如下
	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		// TODO Auto-generated method stub
		super.onScrollChanged(l, t, oldl, oldt);
		//scale 1~0的变化率
		float scale = l*1.0f/mMenuWidth;
		//Content的缩放比例1~0.7
		float rightScale=scale*0.3f+0.7f;
		//设置缩放中心
		ViewHelper.setPivotX(mContent,0);
		ViewHelper.setPivotY(mContent,mContent.getHeight()/2);
		//进行缩放
		ViewHelper.setScaleX(mContent, rightScale);
		ViewHelper.setScaleY(mContent, rightScale);
		
	}
至于这里我为什么设置缩放中心为mContent x=0 y=height/2 是为了在侧滑后 mContent左侧离屏幕右侧的距离不变 否则 距离也会进行缩放

\

第四种效果我们会发现相比着第三种 仅仅是左侧的mMenu的效果不同 会发现 进行了缩放 和透明

代码如下

	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		// TODO Auto-generated method stub
		super.onScrollChanged(l, t, oldl, oldt);
		//scale 1~0的变化率
		float scale = l*1.0f/mMenuWidth;
		//Content的缩放比例1~0.7
		float rightScale=scale*0.3f+0.7f;
		//Menu的透明度变化0~1
		float leftAlpha=1.0f-scale;
		//Menu的缩放变化0.3-1.0
		float leftScale=1.0f-scale*0.7f;
		//mContent设置缩放中心
		ViewHelper.setPivotX(mContent,0);
		ViewHelper.setPivotY(mContent,mContent.getHeight()/2);
		//mContent进行缩放
		ViewHelper.setScaleX(mContent, rightScale);
		ViewHelper.setScaleY(mContent, rightScale);
		
		/*
		 * 对mMenu进行缩放和设置透明度
		 * */
		ViewHelper.setScaleX(mMenu, leftScale);
		ViewHelper.setScaleY(mMenu, leftScale);
		ViewHelper.setAlpha(mMenu, leftAlpha);
	}
就实现了这样的效果
\

这两天我也尝试着进行矩形翻转的效果 模拟器上成功了 在真机上就不行了 就不帖上了 感觉浪费了好多时间 o(︶︿︶)o 唉

关于qqv6.2.3的侧拉效果是

\

我们只要减少mMenu的x坐标的偏移量就能实现 代码如下

	@Override
	protected void onScrollChanged(int l, int t, int oldl, int oldt) {
		// TODO Auto-generated method stub
		super.onScrollChanged(l, t, oldl, oldt);
		ViewHelper.setTranslationX(mMenu, l*0.6f);
	}

效果如图:

\

这几个动画 可能在别人看来很简单 我想了好久啊啊 一天半的光阴啊啊 万恶的矩阵切换。,。~~NN、DFAGDAJFHJK

看到qq才想起来 今天是我生日 都不敢想它 今年才大二就这么大了 o(︶︿︶)o 唉

生日快乐。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • android:QQ多种侧滑菜单的实现

相关文章

  • 2017-05-26我的android学习经历15,android学习经历15
  • 2017-05-26ViewPager与PagerAdapter,viewpager
  • 2017-05-26安卓开源项目周报0117,安卓开源项目0117
  • 2017-05-26Android之ViewPager 第二课,androidviewpager
  • 2017-05-26Android疑难杂症之Theme,android疑难杂症
  • 2017-05-26android注册页面,android页面
  • 2017-05-26Android开发:消息机制简述
  • 2017-05-26TCP接收窗口--确定Window Scaling
  • 2017-05-26Android studio图片ERROR: 9-patch image xx .9.png malformed
  • 2017-05-26Android 手机卫士8--删除通话记录,android8--

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android零散,零散钟点工
    • 从源码角度入手实现RecyclerView的Item点击事件,recyclerviewitem
    • Android开发学习——Android项目的目录结构,android项目
    • 自定义进度条PictureProgressBar——从开发到开源发布全过程
    • Android中View的滑动冲突——Android开发艺术探索笔记
    • android的消息提示(震动与提示音),android
    • 一款面试复习应用源码,面试复习源码
    • LinearLayout嵌套,linearlayout
    • AndroidStudio下使用 RecyclerView xml文件不显示预览条目并报错类似:NoClassDefFoundError 问题解决,studiorecyclerview
    • 统计nginx日志中各服务(目录)http总请求数、成功数、失败数的shell

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有