网友通过本文主要向大家介绍了android侧滑菜单实现,android侧滑菜单,android侧滑菜单demo,android 侧滑式菜单,android侧滑菜单框架等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
自己实现android侧滑菜单
当今的android应用设计中,一种主流的设计方式就是会拥有一个侧滑菜单,以图为证:</div> </div> </div> 实现这样的侧滑效果,在5.0以前我们用的最多的就是SlidingMenu这个开源框架,而5.0之后,google推出了自己的侧滑实现库,那就是DrawerLayout,它的用法比SlidingMenu更简单,而且因为是google的亲生儿子,所以现在人们更倾向于使用DrawerLayout,但是再怎么说,这些都是别人实现好的东西,我们只是拿来用用而已,对于内部的原理,很多程序员却不怎么明白,在接下来的文章中我会通过android中的一些基础控件来实现于此相似的效果,当然,也许还有很多种实现方式,但是基本的原理是类似的。</div>
首先,我们会用到一个控件:HorizontalScrollView 从名字我们就可以了解到,这是一种水平滑动的控件,也就是当内容大于屏幕的宽度的时候,可以左右滑动来使超出屏幕的内容显示在屏幕上。
第一步:把菜单的布局简单的写出来
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:14px;"><!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E-->
<relativelayout android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android">
<linearlayout android:layout_centerinparent="true" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical">
<relativelayout android:layout_height="wrap_content" android:layout_width="wrap_content">
<imageview android:id="@+id/img1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_launcher">
<textview android:id="@+id/text1" android:layout_centervertical="true" android:layout_height="wrap_content" android:layout_torightof="@id/img1" android:layout_width="wrap_content" android:text="item1">
</textview></imageview></relativelayout>
<relativelayout android:layout_height="wrap_content" android:layout_width="wrap_content">
<imageview android:id="@+id/img2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_launcher">
<textview android:id="@+id/text2" android:layout_centervertical="true" android:layout_height="wrap_content" android:layout_torightof="@id/img2" android:layout_width="wrap_content" android:text="item1">
</textview></imageview></relativelayout>
<relativelayout android:layout_height="wrap_content" android:layout_width="wrap_content">
<imageview android:id="@+id/img3" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_launcher">
<textview android:id="@+id/text3" android:layout_centervertical="true" android:layout_height="wrap_content" android:layout_torightof="@id/img3" android:layout_width="wrap_content" android:text="item1">
</textview></imageview></relativelayout>
<relativelayout android:layout_height="wrap_content" android:layout_width="wrap_content">
<imageview android:id="@+id/img4" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_launcher">
<textview android:id="@+id/text4" android:layout_centervertical="true" android:layout_height="wrap_content" android:layout_torightof="@id/img4" android:layout_width="wrap_content" android:text="item1">
</textview></imageview></relativelayout>
<relativelayout android:layout_height="wrap_content" android:layout_width="wrap_content">
<imageview android:id="@+id/img5" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_launcher">
<textview android:id="@+id/text5" android:layout_centervertical="true" android:layout_height="wrap_content" android:layout_torightof="@id/img5" android:layout_width="wrap_content" android:text="item1">
</textview></imageview></relativelayout>
</linearlayout>
</relativelayout></span></span>
</div>
第二步:写出整体布局</div>
<span style="font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:14px;"><!--{cke_protected}{C}%3C!%2D%2D%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%2D%2D%3E-->
<linearlayout android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
<googleplay.xiaokai.com.qq.slidmenu android:background="@drawable/img_frame_background" android:id="@+id/horscrview" android:layout_height="match_parent" android:layout_width="wrap_content" android:scrollbars="none">
<linearlayout android:layout_height="match_parent" android:layout_width="wrap_content" android:orientation="horizontal">
<include layout="@layout/left_menulayout">
<linearlayout android:background="@drawable/qq" android:layout_height="match_parent" android:layout_width="match_parent">
</linearlayout>
</include></linearlayout>
</googleplay.xiaokai.com.qq.slidmenu>
</linearlayout></span>
</span>
</div>
</div>
第三步:继承HorizontalScrollView实现自定义控件</div>
<span style="font-size:18px;">package googleplay.xiaokai.com.qq;
import android.content.Context;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.MotionEvent;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
/**
* Created by 孙晓凯 on 2016/3/27.
*/
public class SlidMenu extends HorizontalScrollView {
int mScreenWit;//屏幕宽度
int mRightWithScr;
LinearLayout mWrap;
ViewGroup mMenu;
ViewGroup mContent;
int mMenuWidth ;
private boolean flag;
public SlidMenu(Context context, AttributeSet attrs) {
super(context, attrs);
//得到屏幕的宽度
WindowManager winmana = (WindowManager) context.getSystemService(context.WINDOW_SERVICE);
DisplayMetrics metris = new DisplayMetrics();
winmana.getDefaultDisplay().getMetrics(metris);
mScreenWit = metris.widthPixels;//得到的是像素
//把50dp转换成像素
mRightWithScr = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 50, context.getResources().getDisplayMetrics());
}
public SlidMenu(Context context) {
super(context);
}
@Override
protected void o

