首先添加依赖:
compile 'com.youth.banner:banner:1.1.5'
compile project(':PullToRefreshLibrary')
compile 'com.google.code.gson:gson:2.2.4'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
清单文件加权限:
<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"/>
需要导包:
PulltoRefreshLibrary
MainActivity:
package com.example.myapplication; import android.graphics.Color; import android.os.Bundle; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity { DrawerLayout dl; private FrameLayout fl; private TextView sy; private TextView qy; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fl = (FrameLayout) findViewById(R.id.fl); sy = (TextView) findViewById(R.id.sy); qy = (TextView) findViewById(R.id.qy); FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.fl,new Main3Activity()); transaction.commit(); sy.setTextColor(Color.RED); qy.setTextColor(Color.BLACK); sy.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.fl,new Main3Activity()); transaction.commit(); sy.setTextColor(Color.RED); qy.setTextColor(Color.BLACK); } }); qy.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { FragmentManager manager = getSupportFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); transaction.replace(R.id.fl,new Main2Activity()); transaction.commit(); sy.setTextColor(Color.BLACK); qy.setTextColor(Color.RED); } }); } }
<android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/dl" > <LinearLayout android:layout_gravity="left" android:layout_width="300dp" android:orientation="vertical" android:background="#2d7bda" android:layout_height="match_parent"> <ImageView android:layout_width="100dp" android:layout_height="100dp" android:src="@drawable/black_background"/> <TextView android:id="@+id/tv0" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="韩海"/> <TextView android:id="@+id/tv01" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="月考练习"/> <TextView android:id="@+id/tv1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="练习第一次"/> <TextView android:id="@+id/tv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/tv1" android:text="练习第二次"/> <TextView android:id="@+id/tv3" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/tv2" android:text="练习第三次"/> <TextView android:id="@+id/tv4" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/tv3" android:text="练习第四次"/> <TextView android:id="@+id/tv5" android:layout_width="match_parent" android:layout_below="@id/tv4" android:layout_height="wrap_content" android:text="练习第五次"/> LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/ll" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:orientation="horizontal"> <Button android:id="@+id/sy" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="首页" /> <Button android:id="@+id/qy" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center" android:text="详情页" /> LinearLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/ll" android:id="@+id/fl">FrameLayout> RelativeLayout>
Main2Activity
package com.example.myapplication; import android.os.AsyncTask; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import com.google.gson.Gson; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshListView; import com.youth.banner.Banner; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class Main2Activity extends Fragment implements AdapterView.OnItemClickListener{ private Banner banner; private PullToRefreshListView pu; private String pagesize="20"; private int page=1; private String mstrings; private Listlist; private static final String BANNER[] = new String[]{ "https://img-my.csdn.net/uploads/201407/26/1406383265_8550.jpg", "http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/18/20_41_29_761_28057_hanqide.jpg", "http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/22/22_12_58_629_76523_tp1.jpg", "http://www.93.gov.cn/11002/upload/webcms/content/image/2017/10/20/21_43_36_913_34979_c03fd54abc3e1b541de80f.png" }; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View inflate = inflater.inflate(R.layout.activity_main2, null); banner = (Banner)inflate.findViewById(R.id.banner); list = new ArrayList<>(); for(int i = 0;i<BANNER.length;i++){ list.add(BANNER[i]); } //设置加载样式 banner.setIndicatorGravity(Banner.CENTER); banner.setBannerStyle(Banner.CIRCLE_INDICATOR_TITLE); //是否自动轮播 banner.isAutoPlay(true); //设置轮播的时间间隔 banner.setDelayTime(2000); //设置加载的图片,解析出来的url banner.setImages(list); pu = (PullToRefreshListView) inflate.findViewById(R.id.list_view); pu.getRefreshableView(); pu.setMode(PullToRefreshBase.Mode.BOTH); pu.setScrollingWhileRefreshingEnabled(true); pu.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2 () { // //完成下拉刷新操作 @Override public void onPullDownToRefresh(PullToRefreshBase refreshView) { refreshView.postDelayed(new Runnable() { @Override public void run() { page=1; getDataFromNet(mstrings,pagesize,page); pu.onRefreshComplete(); } }, 2000); } //完成上拉刷新操作 @Override public void onPullUpToRefresh(PullToRefreshBase refreshView) { page++; refreshView.postDelayed(new Runnable() { @Override public void run() { if(mstrings!=null&&pagesize!=null){ getDataFromNet(mstrings,pagesize,page); } pu.onRefreshComplete(); } }, 2000); } }); return inflate; } private void getDataFromNet(final String string, final String pagesize, final int page) { AsyncTask asyncTask = new AsyncTask () { @Override protected String doInBackground(Void... voids) { // http://api.tianapi.com/wxnew/?key=71e58b5b2f930eaf1f937407acde08fe&num=10&page=8 String path = "http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0"; try { URL url = new URL(path); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setReadTimeout(5000); connection.setConnectTimeout(5000); if ((connection.getResponseCode() == 200)) { InputStream inputStream = connection.getInputStream(); String json = streamToString(inputStream,"utf-8"); return json; } } catch (java.io.IOException e) { e.printStackTrace(); } return ""; } @Override protected void onPostExecute(String json) { Gson gson = new Gson(); Bean bean = gson.fromJson(json, Bean.class); List list = bean.getData(); if (list != null) { MyAdapter myAdapter = new MyAdapter(getActivity(), list); pu.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; } @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { } }
<com.youth.banner.Banner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="200dp" /> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" >com.handmark.pulltorefresh.library.PullToRefreshListView>
Main3Activity
package com.example.myapplication; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; public class Main3Activity extends Fragment implements AdapterView.OnItemClickListener { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_main3,null); return view; } @Override public void onItemClick(AdapterView> parent, View view, int position, long id) { } }
Bean
MyAdapter
package com.example.myapplication; 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.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by 呵呵 on 2017/10/24. */ public class MyAdapter extends BaseAdapter{ Context context; Listlist; public MyAdapter(Context context, List list) { this.context = context; this.list = list; } @Override public int getCount() { return list.size(); } @Override public Object getItem(int i) { return list.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder holder = null; if(view==null){ holder = new ViewHolder(); view = View.inflate(context,R.layout.item1,null); holder.iv = (ImageView) view.findViewById(R.id.img); holder.tv1 = (TextView) view.findViewById(R.id.tv_1); holder.tv2 = (TextView) view.findViewById(R.id.tv_2); view.setTag(holder); }else{ holder = (ViewHolder) view.getTag(); } holder.tv1.setText(list.get(i).getTITLE()); holder.tv2.setText(list.get(i).getSHOWTIME()); ImageLoader.getInstance().displayImage((String) list.get(i).getIMAGEURL(),holder.iv); return view; } class ViewHolder{ TextView tv1,tv2; ImageView iv; } }
MaApplication
需要在清单文件里面注册 name:
package com.example.myapplication; import android.app.Application; import android.content.Context; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import java.io.File; /** * Created by 呵呵 on 2017/10/24. */ public class MaApplication extends Application { @Override public void onCreate() { super.onCreate(); File files = new File("/sdcard/Rimg"); initImageLoader(getApplicationContext(),files); } public static void initImageLoader(Context context, File file) { // This configuration tuning is custom. You can tune every option, you may tune some of them, // or you can create default configuration by // ImageLoaderConfiguration.createDefault(this); // method. ImageLoaderConfiguration.Builder config = new ImageLoaderConfiguration.Builder(context); config.threadPriority(Thread.NORM_PRIORITY - 2);//线程池内加载的数量 config.denyCacheImageMultipleSizesInMemory(); config.diskCacheFileNameGenerator(new Md5FileNameGenerator()); config.diskCacheSize(50 * 1024 * 1024); // 50 MiB config.tasksProcessingOrder(QueueProcessingType.LIFO); // config.diskCache(true); config.writeDebugLogs(); // Remove for release app config .diskCache(new UnlimitedDiskCache(file));//UnlimitedDiskCache 限制这个图片的缓存路径 config .diskCacheFileCount(50);//配置sdcard缓存文件的数量 // Initialize ImageLoader with configuration. ImageLoader.getInstance().init(config.build()); } }