通過imageload獲取網路圖片
阿新 • • 發佈:2018-11-10
新建類繼承Application,全域性初始化,清單檔案需要宣告註冊
<application android:name=".App"
package com.example.imageloader; import android.app.Application; import android.os.Environment; import com.nostra13.universalimageloader.cache.disc.DiskCache; import com.nostra13.universalimageloader.cache.disc.impl.ext.LruDiskCache; import com.nostra13.universalimageloader.cache.disc.naming.FileNameGenerator; import com.nostra13.universalimageloader.cache.disc.naming.HashCodeFileNameGenerator; import com.nostra13.universalimageloader.cache.memory.MemoryCache; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import java.io.IOException; //優先於所有頁面(Activity)建立 //主要負責應用全域性初始化 //該物件也是一個context public class App extends Application { @Override public void onCreate() { super.onCreate(); //ctrl + h 檢視累的繼承結構 //MemoryCache //DiskCache //FileNameGenerator //怎麼呼叫api //要什麼引數 //怎麼給這個引數 //Builder //構建模式 //鏈式呼叫 //全域性配置 ImageLoaderConfiguration configuration = null; DisplayImageOptions options = new DisplayImageOptions.Builder() .build(); //try { // configuration = new ImageLoaderConfiguration.Builder(this) //配置:記憶體 磁碟 快取 //.memoryCache(new LruMemoryCache()) //.memoryCacheSize() //記憶體快取大小 .memoryCacheSizePercentage(10) //配置磁碟快取:目錄 檔名生成 大小 //.diskCache(new LruDiskCache(getCacheDir(), new HashCodeFileNameGenerator(), 10*1024*1024)) .diskCacheSize(50*1024*1024) //執行緒配置 //任務優先順序配置 //FIFO //載入圖片1 2 3 4 5 //LIFO //.tasksProcessingOrder(QueueProcessingType.) //預設顯示配置 //.defaultDisplayImageOptions(options) .build(); //} catch (IOException e) { // e.printStackTrace(); //} //初始化:只有第一次初始化有效果 ImageLoader.getInstance().init(configuration); //無效果 //ImageLoader.getInstance().init(null); } }
package com.example.imageloader; import android.content.Context; import android.graphics.Bitmap; import android.view.LayoutInflater; 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.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.BitmapDisplayer; import com.nostra13.universalimageloader.core.display.CircleBitmapDisplayer; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; import java.util.ArrayList; import java.util.List; public class MyBaseAdafter extends BaseAdapter { private Context context; private List<Bean.DataBean>mlist; public MyBaseAdafter(Context context) { this.context = context; mlist = new ArrayList<>(); } public void setListData(List<Bean.DataBean> list){ this.mlist = list; notifyDataSetChanged(); } @Override public int getCount() { return mlist.size(); } @Override public Bean.DataBean getItem(int position) { return mlist.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHoder viewHoder; if(convertView==null){ convertView = LayoutInflater.from(context).inflate(R.layout.item,parent,false); viewHoder = new ViewHoder(); viewHoder.textView1 = convertView.findViewById(R.id.textview1); viewHoder.textView2 = convertView.findViewById(R.id.textview2); viewHoder.imageView = convertView.findViewById(R.id.imageview); convertView.setTag(viewHoder); }else{ viewHoder = (ViewHoder) convertView.getTag(); } viewHoder.textView1.setText(mlist.get(position).getNews_title()); viewHoder.textView2.setText(mlist.get(position).getNews_summary()); // 1280 * 720 -> 1280 * 720 * 每個畫素佔用位元組數16 // //RGB_565 red green blue 紅綠藍 的顏色 r佔5byte g佔6byte b佔5byte //A RGB_4444 A RGB_8888 //ALPHA_8 //BitmapDisplayer DisplayImageOptions options = new DisplayImageOptions.Builder() //配置色彩模式 .bitmapConfig(Bitmap.Config.RGB_565) //配置 是否快取 .cacheInMemory(true)//記憶體緩衝 .cacheOnDisk(true) //磁碟緩衝 //配置 預設顯示 .showImageOnLoading(R.mipmap.ic_launcher) .showImageOnFail(R.mipmap.ic_launcher) .showImageForEmptyUri(R.mipmap.ic_launcher) //配置圖片如何縮放 .imageScaleType(ImageScaleType.EXACTLY) //顯示效果:圓形 //.displayer(new CircleBitmapDisplayer()) //圓角 //.displayer(new RoundedBitmapDisplayer(8)) .displayer(new FadeInBitmapDisplayer(2000)) .build(); //載入圖片 ImageLoader .getInstance() .displayImage(getItem(position).getPic_url(), viewHoder.imageView, options); //只加載圖片 //回撥返回bitmap //ImageLoader.getInstance().loadImage(); return convertView; } class ViewHoder{ private TextView textView1,textView2; private ImageView imageView; } }