您的位置:首页 > 移动开发 > Android开发

DrawerLayout实现抽屉的效果

2015-06-08 21:42 495 查看
package com.example.administrator.myapplication;

import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.widget.ListView;
import android.widget.RelativeLayout;

import java.util.ArrayList;

import cn.bingoogolapple.refreshlayout.BGARefreshLayout;

public class MainActivity extends ActionBarActivity {
private BGARefreshLayout mRefreshLayout;
DrawerLayout drawerLayout;
ArrayList list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
RelativeLayout leftLayout = (RelativeLayout) findViewById(R.id.left);
RelativeLayout rightLayout = (RelativeLayout) findViewById(R.id.right);
ListView listView = (ListView) leftLayout.findViewById(R.id.left_listview);
initData();
ContentAdapter adapter = new ContentAdapter(this, list);
listView.setAdapter(adapter);
}

private void initData() {
list = new ArrayList<String>();
list.add("新闻");
list.add("订阅");
list.add("图片");
list.add("视频");
list.add("跟帖");
list.add("投票");
}

}
package com.example.administrator.myapplication;

import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import java.util.ArrayList;

/**
* Created by Administrator on 2015/6/8 0008.
*/
public class ContentAdapter extends BaseAdapter {
ArrayList list;
Context Context;

public ContentAdapter(MainActivity mainActivity, Object p1) {
this.list = (ArrayList) p1;
this.Context = mainActivity;

}

@Override
public int getCount() {
return list.size();
}

@Override
public Object getItem(int position) {
return null;
}

@Override
public long getItemId(int position) {
return 0;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView TextView=new TextView(Context);
TextView.setText(list.get(position)+"");
return TextView;
}
}
<android.support.v4.widget.DrawerLayout
android:id="@+id/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">

<FrameLayout
android:id="@+id/fragment_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>

<RelativeLayout
android:id="@+id/left"
android:layout_width="200dp"
android:layout_height="match_parent"
android:layout_gravity="left"
android:background="@android:color/white">

<ListView
android:id="@+id/left_listview"
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</RelativeLayout>

<RelativeLayout
android:id="@+id/right"
android:layout_width="260dp"
android:layout_height="match_parent"
android:layout_gravity="right"
android:background="@android:color/holo_green_light">

<TextView
android:id="@+id/right_textview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="个人登陆页面"/>
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
1,和listview和有冲突需要重写ontouch事件
<pre name="code" class="java">package com.android.bosslen.sweep.view;

import android.content.Context;
import android.support.v4.widget.DrawerLayout;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.ViewConfiguration;

import com.lidroid.xutils.util.LogUtils;

public class CustomDrawerLayout extends DrawerLayout {
ViewConfiguration viewConfiguration;
private float mTouchSlop;
private float mLastMotionX;
private float mLastMotionY;

public CustomDrawerLayout(Context context) {
this(context, null);
}

public CustomDrawerLayout(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}

public CustomDrawerLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
viewConfiguration = ViewConfiguration.get(getContext());
mTouchSlop = viewConfiguration.getScaledTouchSlop();
}

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return false;
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
final float x = ev.getX();
final float y = ev.getY();
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
mLastMotionX = x;
mLastMotionY = y;
break;
case MotionEvent.ACTION_MOVE:
float intxDiff = ev.getX() - mLastMotionX;
float intyDiff = ev.getY() - mLastMotionX;
LogUtils.e("intxDiff"+intxDiff);
LogUtils.e("intyDiff"+intyDiff);
if (intyDiff != 0) {
return false;
}
if (intxDiff > 300) {
return false;
} else {
return true;
}
}
return  false;
}
}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android