主页面代码(带所有包的)
package com.example.day13_20171212; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.Toast; import com.example.day13_20171212.Adapter.MyAdapter; import com.example.day13_20171212.bean.Bean; import com.google.gson.Gson; import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { //设置接口地址 private String urlpass="http://api.expoon.com/AppNews/getNewsList/type/1/p/1"; private ViewPager vp; private GridView gr; private List<Bean.Datas> list; //设置一个小点的图片集合 List<ImageView> listIV = new ArrayList<>(); private LinearLayout ll; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取控件 vp=(ViewPager)findViewById(R.id.vp); gr=(GridView)findViewById(R.id.gv); ll=(LinearLayout)findViewById(R.id.ll); // isPanDuan isp=new isPanDuan(); // final boolean b = isp.isNetworkAvailable(this); // if(b) { // Toast.makeText(MainActivity.this,"网络连接不可用",Toast.LENGTH_SHORT).show(); //设置AsyncTask的异步加载 new AsyncTask<String, String, String>() { public ByteArrayOutputStream baos; public InputStream inputStream; @Override protected String doInBackground(String... params) { //获取接口的地址,由于是储存进数组,所以取下标为0的(即第一个数据) String path = params[0]; try { //实例化一个URL,将接口放进去 URL url = new URL(path); //打开链接,并将取到的值强转为HttpURLConnection HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); //设置网络连接超时 时间 urlConnection.setConnectTimeout(5000); //设置请求方式为GET urlConnection.setRequestMethod("GET"); //获得页面请求的状态值(分别有:200请求成功、303重定向、400请求错误、401未授权、403禁止访问、404文件未找到、500服务器错误) int code = urlConnection.getResponseCode(); //这里我们只判断为200时 if (code==200) { //创建一个byte型别数组的缓冲写入区 baos=new ByteArrayOutputStream(); //获取一个读出流 inputStream = urlConnection.getInputStream(); int len=0; //设置一个byte数组的大小 byte[] arr=new byte[1024*100]; while ((len=inputStream.read(arr))!=-1){ //将byte数组里的数据写入到baos里 baos.write(arr,0,len); } //返回得到的数据 return baos.toString(); } else { Toast.makeText(MainActivity.this,"网络请求失败",Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace(); } return null; } //接受得到的数据 @Override protected void onPostExecute(String s) { super.onPostExecute(s); //实例化一个Gson Gson gson=new Gson(); //解析获取的数据为对象 Bean bean = gson.fromJson(s, Bean.class); //转化为集合 list = bean.data; //Toast.makeText(MainActivity.this,bean.toString(),Toast.LENGTH_SHORT).show(); //链接适配器 vp.setAdapter(new MyAdapter(MainActivity.this,list)); //无限轮博 //设置显示的页面 vp.setCurrentItem(1000000); //初使化小点 initData(); //自动轮博 sendmsg(); //判断 vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int x=0;x<listIV.size();x++){ if(x==position%listIV.size()){ listIV.get(x).setImageResource(R.drawable.loginb); }else{ listIV.get(x).setImageResource(R.drawable.logina); } } } @Override public void onPageScrollStateChanged(int state) { } }); } //自动轮博 private void sendmsg(){ //设置间隔时间 handle.sendEmptyMessageDelayed(1,2000); } //初使化小点 private void initData() { for(int x=0;x<list.size();x++){ //在代码中设置一个图片的控件 ImageView iv=new ImageView(MainActivity.this); //判断当前下标 if(x==0){ iv.setImageResource(R.drawable.loginb); }else{ iv.setImageResource(R.drawable.logina); } LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20); //设置两点之间的距离 params.setMargins(5,0,5,0); listIV.add(iv); ll.addView(iv,params); } } public Handler handle=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //得到viewpager当前的索引 int currentItem = vp.getCurrentItem(); currentItem++; vp.setCurrentItem(currentItem); sendmsg(); } }; }.execute(urlpass); // }else{ // Toast.makeText(MainActivity.this,"网络连接不可用",Toast.LENGTH_SHORT).show(); // } } }
//适配器
package com.example.day13_20171212.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.day13_20171212.bean.Bean; import com.nostra13.universalimageloader.core.ImageLoader; import java.util.List; /** * Created by lenovo on 2017/12/12. */ public class MyAdapter extends PagerAdapter{ private Context con; private List<Bean.Datas> list; public MyAdapter(Context con, List<Bean.Datas> list) { this.con = con; 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 img=new ImageView(con); ImageLoader.getInstance().displayImage(list.get(position%list.size()).pic_url,img); container.addView(img); return img; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } }
//图片的获取方法(我这里单独拿出来写了一个类)
import android.app.Application; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; /** * Created by lenovo on 2017/12/12. */ public class Appdress extends Application{ @Override public void onCreate() { super.onCreate(); ImageLoaderConfiguration imageLoaders=new ImageLoaderConfiguration.Builder(this).build(); ImageLoader imageLoader=ImageLoader.getInstance(); imageLoader.init(imageLoaders); } }
//解析的bean包
package com.example.day13_20171212.bean; import java.util.List; /** * Created by lenovo on 2017/12/12. */ public class Bean{ public List<Datas> data; public class Datas{ public String news_id; public String news_summary; public String news_title; public String pic_url; } }//下面是我在网上找到的一个判断网络是否可用的代码,但我试着报错,所以上面注释了package com.example.day13_20171212.AppdressUtils; import android.app.Activity; import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; /** * Created by lenovo on 2017/12/12. */ public class isPanDuan extends Activity{ public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); if (cm == null) { } else { //如果仅仅是用来判断网络连接 //则可以使用 cm.getActiveNetworkInfo().isAvailable(); NetworkInfo[] info = cm.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; } }//主布局文件<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" tools:context="com.example.day13_20171212.MainActivity"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="150dp" android:id="@+id/vp"/> <LinearLayout android:layout_marginTop="-20dp" android:layout_centerHorizontal="true" android:id="@+id/ll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"></LinearLayout> <GridView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/gv" android:numColumns="4"></GridView> </LinearLayout>