activity main 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" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> <FrameLayout android:id="@+id/frame" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/rg"> </FrameLayout> <RadioGroup android:id="@+id/rg" android:layout_width="match_parent" android:layout_height="40dp" android:layout_alignParentBottom="true" android:orientation="horizontal"> <RadioButton android:id="@+id/rb1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/yes" android:button="@null" android:checked="true" android:gravity="center" android:padding="10dp" android:text="首页" /> <RadioButton android:id="@+id/rb2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/yes" android:button="@null" android:gravity="center" android:padding="10dp" android:text="发现" /> <RadioButton android:id="@+id/rb3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/yes" android:button="@null" android:gravity="center" android:padding="10dp" android:text="下载" /> <RadioButton android:id="@+id/rb4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:background="@drawable/yes" android:button="@null" android:gravity="center" android:padding="10dp" android:text="我的" /> </RadioGroup> </RelativeLayout> <LinearLayout android:background="#ffffff" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="left" android:orientation="vertical"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:layout_margin="50dp" android:src="@mipmap/ic_launcher" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="钱包" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="行程记录" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="友好邀请" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="20dp" android:text="设置" /> </LinearLayout> </android.support.v4.widget.DrawerLayout>
fragment—首页xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tab" android:layout_width="match_parent" android:layout_height="55dp" app:tabGravity="center" app:tabIndicatorColor="@color/colorAccent" app:tabMode="scrollable" app:tabSelectedTextColor="@color/colorPrimaryDark" app:tabTextColor="@color/colorPrimary"> </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </LinearLayout>
MainActivity.java
package com.example.zhoukao_03; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.widget.RadioGroup; import com.example.zhoukao_03.fragment.FragmentFaXian; import com.example.zhoukao_03.fragment.FragmentShouYe; import com.example.zhoukao_03.fragment.FragmentWoDe; import com.example.zhoukao_03.fragment.FragmentXiaZai; public class MainActivity extends AppCompatActivity { private DrawerLayout drawer; private RadioGroup rg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawer = (DrawerLayout) findViewById(R.id.drawer); rg = (RadioGroup) findViewById(R.id.rg); getSupportFragmentManager().beginTransaction().replace(R.id.frame,new FragmentShouYe()).commit(); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup radioGroup, int i) { switch (i){ case R.id.rb1: getSupportFragmentManager().beginTransaction().replace(R.id.frame,new FragmentShouYe()).commit(); break; case R.id.rb2: getSupportFragmentManager().beginTransaction().replace(R.id.frame,new FragmentFaXian()).commit(); break; case R.id.rb3: getSupportFragmentManager().beginTransaction().replace(R.id.frame,new FragmentXiaZai()).commit(); break; case R.id.rb4: getSupportFragmentManager().beginTransaction().replace(R.id.frame,new FragmentWoDe()).commit(); break; default: break; } } }); } }Fragment shouye.java
package com.example.zhoukao_03.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.example.zhoukao_03.R; import java.util.ArrayList; import java.util.List; /** * Created by lenovo on 2017/10/21. */ public class FragmentShouYe extends Fragment { private TabLayout tab; private ViewPager vp; private List<String> list; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view=inflater.inflate(R.layout.fragment_shouye,container,false); tab = (TabLayout) view.findViewById(R.id.tab); vp = (ViewPager) view.findViewById(R.id.vp); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); list = new ArrayList<>(); list.add("推荐"); list.add("课程"); list.add("实战"); list.add("职业路径"); vp.setOffscreenPageLimit(list.size()); vp.setAdapter(new FragmentPagerAdapter(getChildFragmentManager()) { @Override public CharSequence getPageTitle(int position) { return list.get(position); } @Override public Fragment getItem(int position) { Fragment fragment=null; switch (position){ case 0: fragment=new FragmentTuiJian(); break; case 1: fragment=new FragmentKeCheng(); break; case 2: fragment=new FragmentShiZhan(); break; case 3: fragment=new FragmentZhiYe(); break; default: break; } return fragment; } @Override public int getCount() { return list.size(); } }); tab.setupWithViewPager(vp); } } fragmenttuijian xml<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.v4.view.ViewPager android:id="@+id/vp" android:layout_width="match_parent" android:layout_height="200dp" android:layout_above="@+id/linear"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/linear" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal"> </LinearLayout> <com.handmark.pulltorefresh.library.PullToRefreshListView xmlns:ptr="http://schemas.android.com/apk/res-auto" android:id="@+id/plv" android:layout_width="match_parent" android:layout_height="match_parent" ptr:ptrAnimationStyle="flip" ptr:ptrDrawable="@drawable/default_ptr_flip" ptr:ptrHeaderBackground="#383838" ptr:ptrHeaderTextColor="#FFFFFF"> </com.handmark.pulltorefresh.library.PullToRefreshListView> </LinearLayout>
FragmentTuiJian().javapackage com.example.zhoukao_03.fragment; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import com.example.zhoukao_03.JsonCallBack; import com.example.zhoukao_03.R; import com.example.zhoukao_03.adapter.ListViewAdapter; import com.example.zhoukao_03.adapter.ViewPagerAdapter; import com.example.zhoukao_03.bbean.DataDataBean; import com.example.zhoukao_03.util.GetDataUtil; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.ILoadingLayout; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by lenovo on 2017/10/21. */ public class FragmentTuiJian extends android.support.v4.app.Fragment { private ViewPager vp; private PullToRefreshListView plv; private List<DataDataBean.DataBean> lists=new ArrayList<>(); private ListViewAdapter lvadapter; private int page_num=1; private ILoadingLayout startLabels; private Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what==0){ vp.setCurrentItem(vp.getCurrentItem()+1); handler.sendEmptyMessageDelayed(0,2000); } } }; private LinearLayout linear; private List<ImageView> images; private List<String> list; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_tuijian, container, false); vp = (ViewPager) view.findViewById(R.id.vp); plv = (PullToRefreshListView) view.findViewById(R.id.plv); linear = (LinearLayout) view.findViewById(R.id.linear); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getNet(); lunBoTu(); /*设置pullToRefreshListView的刷新模式,BOTH代表支持上拉和下拉,PULL_FROM_END代表上拉,PULL_FROM_START代表下拉 */ plv.setMode(PullToRefreshBase.Mode.BOTH); startLabels = plv.getLoadingLayoutProxy(true, false); startLabels.setPullLabel("下拉刷新"); startLabels.setRefreshingLabel("正在拉"); startLabels.setReleaseLabel("放开刷新"); ILoadingLayout endLabels = plv.getLoadingLayoutProxy(false, true); endLabels.setPullLabel("上拉刷新"); endLabels.setRefreshingLabel("正在载入..."); endLabels.setReleaseLabel("放开刷新..."); plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { getNet(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { page_num++; GetDataUtil.getDat("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page="+page_num, getActivity(), new JsonCallBack() { @Override public void getJsonString(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); lists.addAll(0,dataDataBean.getData()); setAdapter(); plv.onRefreshComplete(); startLabels.setLastUpdatedLabel("上次更新时间:" + new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis()))); } }); } }); } private void lunBoTu() { GetDataUtil.getDat("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1", getActivity(), new JsonCallBack() { @Override public void getJsonString(String s) { list = new ArrayList<String>(); Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); list.add(dataDataBean.getData().get(0).getImg()); ViewPagerAdapter adapter=new ViewPagerAdapter(getActivity(), list); vp.setAdapter(adapter); // init(); vp.setCurrentItem(list.size()*100000); handler.sendEmptyMessageDelayed(0,2000); // vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { // @Override // public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // // } // // @Override // public void onPageSelected(int position) { // for (int i=0;i<images.size();i++){ // if (i==position%list.size()){ // images.get(i).setImageResource(R.drawable.shape1); // }else { // images.get(i).setImageResource(R.drawable.shape2); // } // } // } // // @Override // public void onPageScrollStateChanged(int state) { // // } // }); } }); } // private void init() { // images = new ArrayList<>(); // linear.removeAllViews(); // for (int i=0;i<list.size();i++){ // ImageView imageView = new ImageView(getActivity()); // if (i==0){ // imageView.setImageResource(R.drawable.shape1); // }else { // imageView.setImageResource(R.drawable.shape2); // } // images.add(imageView); // LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); // params.setMargins(5,0,5,0); // linear.addView(imageView); // } // } private void getNet() { GetDataUtil.getDat("http://www.yulin520.com/a2a/impressApi/news/mergeList?pageSize=10&page=1", getActivity(), new JsonCallBack() { @Override public void getJsonString(String s) { Gson gson = new Gson(); DataDataBean dataDataBean = gson.fromJson(s, DataDataBean.class); lists.addAll(dataDataBean.getData()); setAdapter(); plv.onRefreshComplete(); startLabels.setLastUpdatedLabel("上次更新时间:" + new SimpleDateFormat("HH:mm").format(new Date(System.currentTimeMillis()))); } }); } private void setAdapter() { if (lvadapter==null){ lvadapter = new ListViewAdapter(getActivity(),lists); plv.setAdapter(lvadapter); }else { lvadapter.notifyDataSetChanged(); } } } GETDatautil网络判断networkpackage com.example.zhoukao_03.util; import android.content.Context; import android.os.AsyncTask; import android.util.Log; import com.example.zhoukao_03.JsonCallBack; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; /** * Created by lenovo on 2017/10/21. */ public class GetDataUtil { public static void getDat(final String path, Context context, final JsonCallBack jsonCallBack) { if (NetWorkUtil.isNetworkConnected(context)) { AsyncTask<Void, Void, String> asyncTask = new AsyncTask<Void, Void, String>() { @Override protected String doInBackground(Void... voids) { try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); connection.setReadTimeout(5000); int responseCode = connection.getResponseCode(); if (responseCode == 200) { InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream, "utf-8"); Log.i("666666", json); return json; } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(String s) { super.onPostExecute(s); jsonCallBack.getJsonString(s); } }; asyncTask.execute(); } else { NetWorkUtil.showNoNetWorkDlg(context); } } private static String streamToString(InputStream inputStream, String ss) { try { InputStreamReader inputStreamReader = new InputStreamReader(inputStream, ss); 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; } }package com.example.zhoukao_03.util; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * Created by lenovo on 2017/10/21. */ public class NetWorkUtil { public static boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo = manager.getActiveNetworkInfo(); if (networkInfo != null) { return networkInfo.isAvailable(); } } return false; } public static void showNoNetWorkDlg(final Context context) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setMessage("网络未连接,是否去设置") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 跳转到系统的网络设置界面 Intent intent = null; // 先判断当前系统版本 if(android.os.Build.VERSION.SDK_INT > 10){ // 3.0以上 intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS); }else{ intent = new Intent(); intent.setClassName("com.android.settings", "com.android.settings.WirelessSettings"); } context.startActivity(intent); } }).setNegativeButton("取消", null).show(); } }
jsoncallback
/** * Created by lenovo on 2017/10/21. */ public interface JsonCallBack { public void getJsonString(String s); }
listviewadapter 适配器package com.example.zhoukao_03.adapter; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.zhoukao_03.R; import com.example.zhoukao_03.bbean.DataDataBean; import com.example.zhoukao_03.util.ImageLoaderUtil; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by lenovo on 2017/10/21. */ public class ListViewAdapter extends BaseAdapter{ Context context; List<DataDataBean.DataBean> lists; public ListViewAdapter(Context context, List<DataDataBean.DataBean> lists) { this.context=context; this.lists=lists; } @Override public int getCount() { return lists.size(); } @Override public Object getItem(int i) { return lists.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder; if (view==null){ view=View.inflate(context, R.layout.items,null); holder=new ViewHolder(); holder.imageView= (ImageView) view.findViewById(R.id.image); holder.textView= (TextView) view.findViewById(R.id.text); view.setTag(holder); }else { holder= (ViewHolder) view.getTag(); } holder.textView.setText(lists.get(i).getTitle()); ImageLoader.getInstance().displayImage(lists.get(i).getUserImg(),holder.imageView, ImageLoaderUtil.getDataOption()); return view; } private class ViewHolder{ TextView textView; ImageView imageView; } } viewpageradapterpackage com.example.zhoukao_03.adapter; import android.content.Context; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.example.zhoukao_03.util.ImageLoaderUtil; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by lenovo on 2017/10/21. */ public class ViewPagerAdapter extends PagerAdapter{ Context context; List<String> list; public ViewPagerAdapter(Context context, List<String> list) { this.context=context; this.list=list; } @Override public int getCount() { return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View view, Object object) { return view==object; } @Override public Object instantiateItem(ViewGroup container, int position) { ImageView imageView=new ImageView(context); imageView.setScaleType(ImageView.ScaleType.FIT_XY); ImageLoader.getInstance().displayImage(list.get(position%list.size()),imageView, ImageLoaderUtil.getDataOption()); container.addView(imageView); return imageView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }
权限<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>