http://blog.csdn.net/guolin_blog/article/details/8714621
人人客户端有一个特效还是挺吸引人的,在主界面手指向右滑动,就可以将菜单展示出来,而主界面会被隐藏大部分,但是仍有左侧的一小部分同菜单一起展示。
据说人人客户端的这个特效是从facebook客户端模仿来的,至于facebook是不是又从其它地方模仿来的就不得而知了。好,今天我们就一起来实现这个效果,总之我第一次看到这个特效是在人人客户端看到的,我也就主观性地认为我是在模仿人人客户端的特效了。
虽然现在网上类似这种效果的实现也非常多,可是我发现实现方案大都非常复杂,并不容易理解。但其实这种效果并不难实现,因此我今天给大家带来的也是史上最简单的滑动菜单实现方案。
首先还是讲一下实现原理。在一个Activity的布局中需要有两部分,一个是菜单(menu)的布局,一个是内容(content)的布局。两个布局横向排列,菜单布局在左,内容布局在右。初始化的时候将菜单布局向左偏移,以至于能够完全隐藏,这样内容布局就会完全显示在Activity中。然后通过监听手指滑动事件,来改变菜单布局的左偏移距离,从而控制菜单布局的显示和隐藏。原理图如下:
将菜单布局的左偏移值改成0时,效果图如下:
好,我们开始用代码来实现。首先在Eclipse中新建一个Android项目,项目名就叫做RenRenSlideMenuDemo。然后写一下布局文件,创建或打开layout目录下的activity_main.xml文件,加入如下代码:
-
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
xmlns:tools="http://schemas.android.com/tools"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
android:orientation="horizontal"
-
tools:context=".MainActivity">
-
-
<LinearLayout
-
android:id="@+id/menu"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
android:background="@drawable/menu">
-
</LinearLayout>
-
-
<LinearLayout
-
android:id="@+id/content"
-
android:layout_width="fill_parent"
-
android:layout_height="fill_parent"
-
android:background="@drawable/content">
-
</LinearLayout>
-
-
</LinearLayout>
这个布局文件的最外层布局是一个LinearLayout,排列方向是水平方向排列。这个LinearLayout下面嵌套了两个子LinearLayout,分别就是菜单的布局和内容的布局。这里为了要让布局尽量简单,菜单布局和内容布局里面没有加入任何控件,只是给这两个布局各添加了一张背景图片,这两张背景图片是我从人人客户端上截下来的图。这样我们可以把注意力都集中在如何实现滑动菜单的效果上面,不用关心里面各种复杂的布局了。
创建或打开MainActivity,这个类仍然是程序的主Activity,也是这次demo唯一的Activity,在里面加入如下代码:
全部的代码都在这里了,我们可以看到,加上注释总共才两百多行的代码就能实现滑动菜单的特效。下面我来对以上代码解释一下,首先初始化的时候调用initValues方法,在这里面将内容布局的宽度设定为屏幕的宽度,菜单布局的宽度设定为屏幕的宽度减去menuPadding值,这样可以保证在菜单布局展示的时候,仍有一部分内容布局可以看到。如果不在初始化的时候重定义两个布局宽度,就会按照layout文件里面声明的一样,两个布局都是fill_parent,这样就无法实现滑动菜单的效果了。然后将菜单布局的左偏移量设置为负的菜单布局的宽度,这样菜单布局就会被完全隐藏,只有内容布局会显示在界面上。
之后给内容布局注册监听事件,这样当手指在内容布局上滑动的时候就会触发onTouch事件。在onTouch事件里面,根据手指滑动的距离会改变菜单布局的左偏移量,从而控制菜单布局的显示和隐藏。当手指离开屏幕的时候,会判断应该滑动到菜单布局还是内容布局,判断依据是根据手指滑动的距离或者滑动的速度,细节可以看代码中的注释。
最后还是给出AndroidManifest.xml的代码,都是自动生成的,非常简单:
-
<?xmlversion="1.0"encoding="utf-8"?>
-
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
-
package="com.example.renrenslidemenudemo"
-
android:versionCode="1"
-
android:versionName="1.0">
-
-
<uses-sdk
-
android:minSdkVersion="8"
-
android:targetSdkVersion="8"/>
-
-
<application
-
android:allowBackup="true"
-
android:icon="@drawable/ic_launcher"
-
android:label="@string/app_name"
-
android:theme="@android:style/Theme.NoTitleBar">
-
<activity
-
android:name="com.example.renrenslidemenudemo.MainActivity"
-
android:label="@string/app_name">
-
<intent-filter>
-
<actionandroid:name="android.intent.action.MAIN"/>
-
-
<categoryandroid:name="android.intent.category.LAUNCHER"/>
-
</intent-filter>
-
</activity>
-
</application>
-
-
</manifest>
好了,现在我们运行一下,看一下效果吧,首先是程序刚打开的时候,显示的是内容布局。用手指在界面向右滑动,可以看到菜单布局出现。
而当菜单布局完全展示的时候,效果如下图:
源码下载,请点击这里
今天大家看到了史上最简单的滑动菜单实现方案,确实是非常简单。那么有朋友也许会问了,在一个Activity当中这样实现滑动菜单是很简单,可是如果我的应用程序有好多个Activity都需要滑动菜单,每个Activity里都这么实现一遍,也变得复杂了。没错,当前的这个解决方案只适用于单个Activity中,如果是想在多个Activity中都实现滑动菜单的效果,请参考我的另一篇文章Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效。
有对双向滑动菜单感兴趣的朋友请转阅Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效。
好了,今天的讲解到此结束,有疑问的朋友可以在下面留言。
分享到:
相关推荐
此为示例代码,详细讲解请参考http://blog.csdn.net/sinyu890807/article/details/8714621
用slidingmenue实现的仿人人侧滑效果
主要介绍了Android仿人人客户端滑动菜单的侧滑特效实现代码,小编觉得挺不错的,分享给大家供大家参考
简单易懂的仿人人网的侧滑菜单,适合Android初学者,利用Scroller实现的这类功能
Android 利用ViewDragHelper实现的仿腾讯QQ侧滑菜单的实现
CSS3手机端侧滑菜单 4种滑动菜单特效 CSS3手机端侧滑菜单 4种滑动菜单特效
android demo,仿网易新闻v4.4侧滑菜单,
侧滑菜单(仿qq5.0版本的侧滑效果)
手势拖动侧滑菜单特效,仿人人客户端侧滑菜单,可以通过点击按钮实现菜单的推出和推入,还可以通过手势的滑动实现菜单的推出和推入,左侧菜单是一个列表视图,用户可以点击列表视图的item进一步查看页面详情。...
基于BaseAdapter实现仿IOS侧滑菜单,可以动态设置菜单名,菜单文本和背景颜色,以及菜单的显示隐藏,点击事件
三种方式实现Android侧滑菜单
该实例用于博客《Android侧滑菜单(SlidingMenu)的简单实现》 http://www.cnblogs.com/scetopcsa/p/4046546.html 该例子中文件夹“ActionBarSherlock”和“SlidingMenulibrary”是开源库,需要被添加到工程文件...
仿酷狗菜单栏侧滑效果,支持手势快速滑动打开或者关闭,打开或关闭时有阴影和缩放效果,
如果忘记了其中的实现原理或者还没看过的朋友,请先去看一遍之前的文章Android仿人人客户端滑动菜单的侧滑特效实现代码,史上最简单的侧滑实现 ,因为我们今天要实现的滑动菜单框架也是基于同样的原理的。...
自定义控件打造史上最简单的侧滑菜单
继承HorizontalScrollView实现自定义View,然后实现侧滑菜单,包含普通菜单、抽屉式菜单、缩放菜单。博客文章项目包,代码已经详细注释,轻松理解。 滑动菜单比较简单的实现方法,一看即会。 由于积分告急,所以适当...
Android 高仿 QQ5.0 侧滑菜单效果 自定义控件,缩放效果,很给力哦!
本例子主要实现了仿qq5.0侧滑,抽屉式侧滑,普通侧滑三种方式(注释全都写在代码里了)