android用最简单的方法实现QQ5.0的侧边栏滑动效果

先看个效果

使用两个开源项目

开源侧边栏 :me.tangke.slidemenu

开源动画:nineoldandroids-2.4.0.jar

在项目里我使用的是左边activity,右边activity的样式,activityGroup的方式,如果全用Fragment也是一样的,只要获取Fragment的rootView即可;

滑动时用me.tangke.slidemenu是为获取拖动屏幕的比例,其他的菜单栏也可以使用,只是加个动画;

界面所有逻辑代码不动,使用nineoldandroids为菜单栏添加类似QQ5.0的侧边栏滑动效果的动画;

获取侧边栏滑动比例,我用的这个菜单栏,出现侧边栏到菜单栏消失,比例为0.000.. -> 1.000..,所以在其滑动过程中添加个动画,一切OK;

主要代码如下:

	mSlideMenu.setOnSlideStateChangeListener(new OnSlideStateChangeListener() {

			@Override
			public void onSlideStateChange(int slideState) {
				switch (slideState) {
				default:
				case SlideMenu.STATE_CLOSE:
					isMenuShowing=false;
					break;
				case SlideMenu.STATE_OPEN_LEFT:
				case SlideMenu.STATE_OPEN_RIGHT:
					isMenuShowing=true;//here drag
					break;
				case SlideMenu.STATE_DRAG:
					break;
				case SlideMenu.STATE_SCROLL:
					break;
				}
			}

			@Override
			public void onSlideOffsetChange(float offsetPercent) {
				//添加动画效果
				ViewHelper.setAlpha(mSlideMenuView, 0.7f + 0.3f * offsetPercent);
				ViewHelper.setScaleX(mSlideMenuView, offsetPercent*0.1f+0.9f);
				ViewHelper.setScaleY(mSlideMenuView, offsetPercent*0.1f+0.9f);
				ViewHelper.setTranslationX(mSlideMenuView, -(1-offsetPercent)*100);

				ViewHelper.setPivotX(mSlideContentView, 0);
				ViewHelper.setScaleX(mSlideContentView, 0.5f - offsetPercent*0.3f+0.5f);
				ViewHelper.setPivotY(mSlideContentView, mSlideContentView.getHeight()/2.0f);
				ViewHelper.setScaleY(mSlideContentView, 0.5f - offsetPercent*0.3f+0.5f);
			}
		});

主界面布局:

我这里是随便加的一个灰色的作为背景

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:slidemenu="http://schemas.android.com/apk/res-auto"
    android:id="@+id/root_View"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/text_gray_lite" >

    <me.tangke.slidemenu.SlideMenu
        android:id="@+id/slideMenu"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

有很多侧边栏的源码是在OnMeasure里面和 onScroll 里面去做,效果都差不多,项目毕竟稳定了,在原有代码上加个小外壳,不破坏原有逻辑,这样比较保险一点,当然了也很省事..;

时间: 2024-09-30 19:58:07

android用最简单的方法实现QQ5.0的侧边栏滑动效果的相关文章

Android剪裁图片简单的方法

/** * 按正方形裁切图片 */ public static Bitmap ImageCrop(Bitmap bitmap) { int w = bitmap.getWidth(); // 得到图片的宽,高 int h = bitmap.getHeight(); int wh = w > h ? h : w;// 裁切后所取的正方形区域边长 int retX = w > h ? (w - h) / 2 : 0;//基于原图,取正方形左上角x坐标 int retY = w > h ? 0

Android第六期 - ViewPage与菜单栏本地页面监听滑动效果

首先是JiaoyuzixunActivity.java代码部分: package com.gaoxiaotong.ctone.jiaoyuzixun; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.json.JSONArray; import org.json.JSONO

Android进阶:ListView性能优化异步加载图片 使滑动效果流畅

ListView 是一种可以显示一系列项目并能进行滚动显示的 View,每一行的Item可能包含复杂的结构,可能会从网络上获取icon等的一些图标信息,就现在的网络速度要想保持ListView运行的很好滚动流畅是做不到的 所以这里就需要把这些信息利用多线程实现异步加载 实现这样功能的类 [java] view plaincopy public class AsyncImageLoader { private HashMap<String, SoftReference<Drawable>&

仿QQ5.3.1左右滑动效果实现

工作之余无聊,研究一下QQ的特效,不过还是有些区别的! 效果图如下: 左滑: 右滑: 滑动是实现主要是HorizontalScrollView来实现的,可能会与qq的有些区别,但是大致效果还是出来了! 区别: 1.可以左右滑动,qq的不可以右滑. 2.左滑和右滑的背景切换效果和qq的有区别 3.还有些细节上的差别 主要实现代码如下: import android.content.Context; import android.content.res.TypedArray; import andr

仿QQ5.0以上新版本侧滑效果

1.此效果使用了csdn大神孙国威的代码案例在此感谢附上参考博客地址: http://blog.csdn.net/manoel/article/details/39013095/#plain 2.slidingmenu库不需要修改,弄下来可以直接使用 3.demo中的代码是支持单侧的,我仅仅给加了个双侧支持,当然这个只是双侧仅仅是效果上达到了,还有不完善的地方,就是两侧侧滑会有部分主界面布局实际存在但是看不到的情况,这个大家使用的时候会发现,一般稍微粗心点可能看不到. 4.当主界面布局与未隐藏的

Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)

Android音乐播放器(歌词.均衡器.收藏.qq5.0菜单.通知) 一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 下载地址:http://www.devstore.cn/code/info/1144.html 运行截图:     热门源码下载: 高仿京东商城 Android快速开发不可或缺的11个工具类 Android快速开发框架LoonAndroid Android应用源码比较

【案例分享】仿QQ5.0侧滑菜单ResideMenu

本文由孙国威 原创.如需转载,请注明出处! 为了后续对这个项目进行优化,比如透明度动画.背景图的位移动画,以及性能上的优化. 我把这个项目上传到github上面,请大家随时关注. github地址https://github.com/sunguowei 最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异.想必大家都已经见识过了. 为了不重复发明轮子,先去github上面搜索了一番. 发现了几个类似的,但是还是有一些不同. 下面是搜索到的类似的开源项目. RESideMenu

【转】仿QQ5.0侧滑菜单ResideMenu

本文由孙国威 原创.如需转载,请注明出处! 原文:http://blog.csdn.net/manoel/article/details/39013095 为了后续对这个项目进行优化,比如透明度动画.背景图的位移动画,以及性能上的优化. 我把这个项目上传到github上面,请大家随时关注. github地址https://github.com/sunguowei 最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异.想必大家都已经见识过了. 为了不重复发明轮子,先去githu

QQ5.0左侧滑动显示效果

前三篇为大家介绍了如何实现简单的类QQ5.0左侧的侧滑效果,本篇我将带领大家一起探讨一下如何真正实现QQ5.0左侧的侧滑效果,对于本篇的内容与之前的三篇关联性很强,如果前三篇你已经完全掌握,对于这一篇相信也没有什么难处,本篇的重点在于通过Android3.0以后提供的属性动画实现上述显示特效. 开始之前首先给大家说句抱歉,前三篇由于我自己的编码问题,导致如果你还是以之前的代码设计时,会出现Menu的背景图没有填充整个屏幕,这个怎么解决呢? 在left_menu.xml中,将background修