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; } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories