如何使用侧滑DrawerLayout
使用侧滑
布局文件如下:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!--主内容区域--> <FrameLayout android:id="@+id/frame_layout" android:layout_width="match_parent" android:layout_height="match_parent"> </FrameLayout> <!--侧滑的区域 侧滑菜单的默认背景颜色是半透明 --> <RelativeLayout android:background="#ffffff" android:id="@+id/drawer_relative" android:layout_gravity="left" android:layout_width="200dp" android:layout_height="match_parent"> <ImageView android:id="@+id/image_touxiang" android:layout_centerHorizontal="true" android:layout_margin="10dp" android:src="@mipmap/ic_launcher" android:layout_width="80dp" android:layout_height="80dp" /> <ListView android:id="@+id/list_view" android:layout_below="@+id/image_touxiang" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </RelativeLayout> </android.support.v4.widget.DrawerLayout>
Activity中的方法,进行具体的实现:
import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.FrameLayout; import android.widget.ListView; import android.widget.RelativeLayout; import java.util.ArrayList; import java.util.List; /** * 使用drawerLayout实现侧滑菜单 * * 参考博客:http://www.cnblogs.com/zhangqie/p/6410749.html * http://blog.csdn.net/liujiawei00/article/details/51427098 * * 1.换一个接口支持刷新的接口....下拉的时候请求第一页,,,上拉的时候page+1 * 2.多条目 * */ public class MainActivity extends AppCompatActivity { private DrawerLayout drawerLayout; private FrameLayout frameLayout; private RelativeLayout relativeLayout; private ListView listView; private List<String> titles; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //抽屉的跟布局 drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); //主内容区域的布局 frameLayout = (FrameLayout) findViewById(R.id.frame_layout); //抽屉布局 relativeLayout = (RelativeLayout) findViewById(R.id.drawer_relative); listView = (ListView) findViewById(R.id.list_view); //给listView设置适配器 titles = new ArrayList<>(); titles.add("头条"); titles.add("社会"); titles.add("国内"); titles.add("军事"); titles.add("财经"); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,android.R.id.text1, titles); listView.setAdapter(adapter); //刚进入页面的时候 NewsFragment newsFragment = new NewsFragment(); Bundle bundle = new Bundle(); bundle.putString("name",titles.get(0)); newsFragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,newsFragment).commit(); //设置点击事件 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //隐藏侧滑菜单 drawerLayout.closeDrawer(relativeLayout); NewsFragment newsFragment = new NewsFragment(); Bundle bundle = new Bundle(); bundle.putString("name",titles.get(i)); newsFragment.setArguments(bundle); getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout,newsFragment).commit(); //drawerLayout.openDrawer(relativeLayout);//打开侧滑菜单 } }); //抽屉的监听事件 drawerLayout.setDrawerListener(new DrawerLayout.DrawerListener() { /** * * @param drawerView * @param slideOffset 表示的抽屉拖出来的宽度,,像素值 */ @Override public void onDrawerSlide(View drawerView, float slideOffset) { } /** * 抽屉打开了 * @param drawerView */ @Override public void onDrawerOpened(View drawerView) { } /** * 抽屉关闭 * @param drawerView */ @Override public void onDrawerClosed(View drawerView) { } /** * 抽屉的状态改变 * * idle -- 表示与导航视图没有交互,静止 dragging -- 表示目前有与导航视图的交互,拖拽的状态 settling -- 表示有与导航视图的交互,并且导航视图正在关闭或打开 * @param newState */ @Override public void onDrawerStateChanged(int newState) { Log.i("zhaungtai---",newState+"---"); } }); } } 、、、、、、、、、、、、给name赋值
import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import com.google.gson.Gson; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * @author Dash * @date 2017/10/12 * @description: */ public class NewsFragment extends Fragment { private ListView listView; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_layout,container,false); //找到id listView = view.findViewById(R.id.frament_list_view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //获取数据 String name = getArguments().getString("name", ""); //判断 if (name.equals("头条")){ name = "top"; }else if (name.equals("军事")){ name = "junshi"; }else if (name.equals("社会")){ name = "shehui"; }else if (name.equals("财经")){ name = "caijing"; }else if (name.equals("国内")){ name = "guonei"; } getDataFromNet(name); }}
具体显示: