安卓侧滑菜单搭建-drawerlayout
- 新建一个android工程,导入android的V4包。
- 编写ui代码 布局使用v4包的DrawerLayout 标签 android.support.v4.widget.DrawerLayout xmlns:android
左侧菜单就在控件的布局上加上 android:layout_gravity=”left” 右侧同理加上 android:layout_gravity=”right”
如果你只需要一侧的菜单就I直接选择一个
注意:主菜单的代码一定要放在drawerlayout的里面最上面,否则导致listview无法获取监听事件
drawerlayout这个新建菜单页面很简单的 也没有什么要说的
下面是代码:
activity_main.xml
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawerlayout"
android:clickable="true"
tools:context=".MainActivity" >
<FrameLayout
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/qq" />
<!-- 这里需要注意主布局必须放在第一个 否则listview会导致监听事件失败 -->
<ListView
android:id="@+id/left_list"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@drawable/b1"
android:clickable="true"
android:choiceMode="singleChoice"
android:divider="@color/red"
android:dividerHeight="10dp" /
<RelativeLayout
android:id="@+id/right"
android:layout_width="180dp"
android:layout_height="match_parent"
android:layout_gravity="end"
android:background="@drawable/right" >
<TextView
android:id="@+id/right_textview"
android:layout_width="match_parent"
android:layout_height="50dip"
android:background="@android:color/holo_orange_dark"
android:text="右侧布局"
android:textSize="30sp" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
现在效果已经 有了,左侧为了显着不空我们可以给listview里面填充个一些内容。
为了界面比较好看我这里给listview自定义了一个适配器
ContentAdapter.java
package com.hbms.adapter;
import java.util.List;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;
import com.ddac_shiyan.model.ContentModel;
import com.hbms.drawerlayout.R;
/**
* @author 陈滨
*
*/
public class ContentAdapter extends BaseAdapter {
private Context context;
private List<ContentModel> list;
@Override
public int getCount() {
if (list != null) {
return list.size();
}
return 0;
}
public ContentAdapter(Context context, List<ContentModel> list) {
super();
this.context = context;
this.list = list;
}
@Override
public Object getItem(int position) {
if (list != null) {
return list.get(position);
}
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHold hold;
if (convertView == null) {
hold = new ViewHold();
convertView = LayoutInflater.from(context).inflate(
R.layout.content_item, null);
convertView.setTag(hold);
}else {
hold=(ViewHold) convertView.getTag();
}
hold.imageView=(ImageView) convertView.findViewById(R.id.item_imageview);
hold.textView=(TextView) convertView.findViewById(R.id.item_textview);
hold.imageView.setImageResource(list.get(position).getImageView());
hold.textView.setText(list.get(position).getText());
return convertView;
}
static class ViewHold {
public ImageView imageView;
public TextView textView;
}
}
这里使用了viewholder 我们定义一个 model
ContentModel.java
/**
*
*/
package com.ddac_shiyan.model;
/**
* @author chenbin
*
*/
public class ContentModel {
private int imageView;
private String text;
public ContentModel(int imageView, String text) {
super();
this.imageView = imageView;
this.text = text;
}
public int getImageView() {
return imageView;
}
public void setImageView(int imageView) {
this.imageView = imageView;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
主界面代码
MainActivity.java
package com.hbms.drawerlayout;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
import com.ddac_shiyan.model.ContentModel;
import com.hbms.adapter.ContentAdapter;
public class MainActivity extends Activity implements OnItemClickListener {
private DrawerLayout drawerLayout;
private ListView lv;
private List<ContentModel> list;
private ContentAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
lv = (ListView) findViewById(R.id.left_list);
initData();
adapter = new ContentAdapter(this, list);
lv.setAdapter(adapter);
lv.setOnItemClickListener(this);
}
private void initData() {
// TODO Auto-generated method stub
list = new ArrayList<ContentModel>();
list.add(new ContentModel(R.drawable.p1, "按钮1"));
list.add(new ContentModel(R.drawable.p2, "按钮2"));
list.add(new ContentModel(R.drawable.p3, "按钮3"));
list.add(new ContentModel(R.drawable.p4, "按钮4"));
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(MainActivity.this, list.get(arg2).getText(), 2).show();
}
}
代码就这么多了 贴上源码 ,做了一些单击效果一些sharp 源码中有,jar包源码中也有