控件中:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.com.lunbotu.MainActivity"> <android.support.v4.view.ViewPager android:layout_width="match_parent" android:layout_height="200dp" android:id="@+id/vp"></android.support.v4.view.ViewPager> </RelativeLayout>
MainActivity:
package com.example.com.lunbotu; import android.graphics.Bitmap; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import com.example.com.lunbotu.Bean.ReqBean; import com.example.com.lunbotu.Util.Mytask; import com.example.com.lunbotu.Util.NetStateUtil; import com.example.com.lunbotu.adapter.MyAdapter; import com.google.gson.Gson; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private ViewPager vp; private ArrayList<String> list; private DisplayImageOptions options; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); vp = findViewById(R.id.vp); //使用內存緩存 //使用磁盤緩存 //設置正在下載的圖片 //url爲空或請求的資源不存在時 //下載失敗時顯示的圖片 //設置圖片色彩模式 1px=2字節 //設置圖片的縮放模式 //設置圓角 30代表半徑 自定義 options = new DisplayImageOptions.Builder() .cacheInMemory(true)//使用內存緩存 .cacheOnDisk(true)//使用磁盤緩存 .showImageOnLoading(R.mipmap.ic_launcher)//設置正在下載的圖片 .showImageForEmptyUri(R.mipmap.ic_launcher)//url爲空或請求的資源不存在時 .showImageOnFail(R.mipmap.ic_launcher)//下載失敗時顯示的圖片 .bitmapConfig(Bitmap.Config.RGB_565)//設置圖片色彩模式 1px=2字節 .imageScaleType(ImageScaleType.EXACTLY)//設置圖片的縮放模式 //.displayer(new RoundedBitmapDisplayer(100))//設置圓角 30代表半徑 自定義 .build(); //判斷是否聯網 if (NetStateUtil.isConn(this)){ Mytask mytask = new Mytask(new Mytask.Icallbacks() { @Override public void updateUiByjson(String jsonstr) { Gson gson = new Gson(); ReqBean reqBean = gson.fromJson(jsonstr, ReqBean.class); List<ReqBean.NewslistBean> newslist = reqBean.getNewslist(); list = new ArrayList<>(); for(int i=0;i<newslist.size();i++){ String title = newslist.get(i).getPicUrl(); list.add(title); } vp.setCurrentItem(5*10);//設置默認顯示的頁面 vp.setAdapter(new Myvpadapter()); //MyAdapter myAdapter = new MyAdapter(MainActivity.this, newslist); } }); mytask.execute("http://api.tianapi.com/social/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10"); }else { NetStateUtil.showNoNetWorkDlg(this); } } class Myvpadapter extends PagerAdapter{ @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(MainActivity.this); //Log.d("--", "instantiateItem: "+list.get(position)); //Log.d("--", "instantiateItem: "+position); //ImageLoader.getInstance().displayImage(list.get(position%list.size()),img,options); ImageLoader.getInstance().displayImage(list.get(position%list.size()),img,options); container.addView(img); return img; } //刪除的方法 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); } } }
注:要導入gson包和ImageLoader包,,然後導入Mapplicition文件,,還要導入工具類和NetStateUtil.java
然後xml配置文件爲:
<uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
適配器爲:
package com.example.com.lunbotu.adapter; import android.content.Context; import android.graphics.Bitmap; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.com.lunbotu.Bean.ReqBean; import com.example.com.lunbotu.R; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import java.util.List; /** * Created by 聯想 on 2018/1/15. */ public class MyAdapter extends BaseAdapter { Context context; List<ReqBean.NewslistBean> newslist; private DisplayImageOptions options; public MyAdapter(Context context, List<ReqBean.NewslistBean> newslist) { this.context = context; this.newslist = newslist; this.context = context; this.newslist = newslist; options = new DisplayImageOptions.Builder() .cacheInMemory(true)//使用內存緩存 .cacheOnDisk(true)//使用磁盤緩存 .showImageOnLoading(R.mipmap.ic_launcher)//設置正在下載的圖片 .showImageForEmptyUri(R.mipmap.ic_launcher)//url爲空或請求的資源不存在時 .showImageOnFail(R.mipmap.ic_launcher)//下載失敗時顯示的圖片 .bitmapConfig(Bitmap.Config.RGB_565)//設置圖片色彩模式 1px=2字節 .imageScaleType(ImageScaleType.EXACTLY)//設置圖片的縮放模式 .displayer(new RoundedBitmapDisplayer(100))//設置圓角 30代表半徑 自定義 .build(); } @Override public int getCount() { return newslist.size(); } @Override public Object getItem(int i) { return newslist.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.view,null); view=View.inflate(context,R.layout.view,null ); holder=new ViewHolder(); holder.tw=view.findViewById(R.id.tw); holder.iv=view.findViewById(R.id.iv); view.setTag(holder); }else{ holder= (ViewHolder) view.getTag(); } holder.tw.setText(newslist.get(i).getTitle()); ImageLoader.getInstance().displayImage(newslist.get(i).getPicUrl(),holder.iv,options); return view; } private class ViewHolder{ TextView tw; ImageView iv; } }