activiet——xml
<?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>
fragemtn——xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent"></ListView> </LinearLayout>mainactivity.java
package news1510a.bawei.com.a11_drawer_layout_demo; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; 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 com.example.a12_tabayout_viewpager.NewsFragment; import com.example.a12_tabayout_viewpager.R; 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+"---"); } }); } } Newsfragment-------.java package news1510a.bawei.com.a11_drawer_layout_demo; 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); } private void getDataFromNet(final String name) { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL("http://v.juhe.cn/toutiao/index?type="+name+"&key=597b4f9dcb50e051fd725a9ec54d6653"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); //獲取 int responseCode = connection.getResponseCode(); if (responseCode == 200){ InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); //打印字符串 Log.i("---",json); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); MyAdapter myAdapter = new MyAdapter(getActivity(), dataDataBean.getResult().getData()); listView.setAdapter(myAdapter); } }; asyncTask.execute(); } private String streamToString(InputStream inputStream,String charset) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream,charset); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String s = null; StringBuilder builder = new StringBuilder(); while ((s = bufferedReader.readLine()) != null){ builder.append(s); } bufferedReader.close(); return builder.toString(); } catch (Exception e) { e.printStackTrace(); } return null; } }