1. 程式人生 > >ImageLoader_快取 寫入讀取sd卡

ImageLoader_快取 寫入讀取sd卡

package baway.com.yuejunfei1503a20170424;

import android.app.Application;
import android.os.Environment;
import android.util.Log;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import 
com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.utils.StorageUtils; import java.io.File; /** * 類的作用: * 作者:嶽俊飛 * 時間:2017/4/24
    許可權中新增name---類名     和匯入image_loader jar包
    新增寫入 讀取許可權
*/ public class MyImageLoader extends Application { @Override public void onCreate() { super.onCreate(); try { File cacheDir = StorageUtils.getOwnCacheDirectory(this, Environment.getExternalStorageDirectory().getPath()); ImageLoaderConfiguration configuration = new
ImageLoaderConfiguration.Builder(this) .threadPoolSize(3)//配置執行緒數量 .memoryCache(new LruMemoryCache(2 * 1024 * 1024))//記憶體快取圖片 2M .diskCache(new UnlimitedDiskCache(cacheDir))//配飾sdcard快取路徑 .diskCacheSize(50 * 1024 * 1024)//sdcard上快取50M的圖片 .diskCacheFileCount(100)//快取檔案的數量 100.diskCacheFileNameGenerator(new Md5FileNameGenerator()) .build(); //配置快取選項 ImageLoader.getInstance().init(configuration); } catch (Exception e) { e.printStackTrace(); } } }
package baway.com.yuejunfei1503a20170424;

import android.content.Context;
import android.net.ConnectivityManager;
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.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;

import java.util.List;

/**
 * 類的作用:
* 作者:嶽俊飛
* 時間:2017/4/24
 */
public class Mydapter extends BaseAdapter {
    private Context context;
    private List<Bean.SubjectsBean> list;
    //配置圖片的快取選項
private  DisplayImageOptions options;
    public Mydapter(Context context, List<Bean.SubjectsBean> list){
        this.context=context;
        this.list=list;
        //配置是否對圖片進行快取
options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)//是否記憶體快取
.cacheOnDisk(true)//是否sdcard快取
.build();//構建圖片快取的選項
}

    public  void addMore(List<Bean.SubjectsBean> list2,boolean isplay){
        for (Bean.SubjectsBean be:list2){
            if (isplay){
                list.add(0,be);
            }else {
                list.add(be);
            }
        }
    }

    @Override
public int getCount() {
        return list.size();
    }

    @Override
public Object getItem(int position) {
        return list.get(position);
    }

    @Override
public long getItemId(int position) {
        return position;
    }


    @Override
public View getView(int position, View convertView, ViewGroup parent) {


        ViewHolder viewHolder = null;
        if (convertView == null) {

            viewHolder = new ViewHolder();
            convertView = convertView.inflate(context, R.layout.item, null);
            viewHolder.tvDesc = (TextView) convertView.findViewById(R.id.tvDes);
            viewHolder.tvDesc2= (TextView) convertView.findViewById(R.id.tvDes2);
            viewHolder.image= (ImageView) convertView.findViewById(R.id.imagev);
            viewHolder.image2= (ImageView) convertView.findViewById(R.id.imagev2);
            viewHolder.image3= (ImageView) convertView.findViewById(R.id.imagev3);

            convertView.setTag(viewHolder);
        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }

        viewHolder.tvDesc.setText(list.get(position).getOriginal_title());
        viewHolder.tvDesc2.setText(list.get(position).getTitle());
        ImageLoader.getInstance().displayImage(list.get(position).getCasts().get(0).getAvatars().getMedium(), viewHolder.image,options);
        ImageLoader.getInstance().displayImage(list.get(position).getCasts().get(1).getAvatars().getSmall(), viewHolder.image2,options);
        ImageLoader.getInstance().displayImage(list.get(position).getCasts().get(2).getAvatars().getLarge(), viewHolder.image3,options);

        return convertView;
    }

    //定義V
static class ViewHolder {
        TextView tvDesc;
        TextView tvDesc2;
        ImageView image;
        ImageView image2;
        ImageView image3;
    }


}
package baway.com.yuejunfei1503a20170424;

import android.os.AsyncTask;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;

import com.google.gson.Gson;
import com.limxing.xlistview.view.XListView;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {

    private XListView xlv;
    private Mydapter dapter;
    private int pageIndex = 1;
    private boolean isplay=true;
    private ImageView imageView;

    @Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        xlv = (XListView) findViewById(R.id.xlv);
        imageView = (ImageView) findViewById(R.id.imagev);
        xlv.setPullLoadEnable(true);
        xlv.setRefreshTime("12:23:14");
        xlv.setXListViewListener(this);

        getHuoqu("https://api.douban.com/v2/movie/in_theaters?apikey=0b2bdeda43b5688921839c8ecb20399b&city=北京&start="+pageIndex+"&count=2");
    }

    private void getHuoqu(String s) {
        new AsyncTask<String, Void, String>() {
            @Override
protected void onPostExecute(String s) {
                super.onPostExecute(s);
                Gson gson = new Gson();
                Bean bean = gson.fromJson(s, Bean.class);

                if (bean==null){
                    return;
                }
                if (dapter==null){
                    dapter=new Mydapter(MainActivity.this,bean.getSubjects());
                }else {
                    dapter.addMore(bean.getSubjects(),isplay);
                    dapter.notifyDataSetChanged();
                }
                 xlv.setAdapter(dapter);
            }

            @Override
protected String doInBackground(String... params) {
                try {
                    String str=params[0];
                    URL url = new URL(str);
                    HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);
                    int code = connection.getResponseCode();
                    if (code==200){
                        InputStream inputStream = connection.getInputStream();
                        String upec = Utils.upec(inputStream);
                        System.out.println("haha"+upec);
                        //將網路資料快取到sdcard /  SQLite  SharedPerfrenced
File file = new File(Environment.getExternalStorageDirectory(),"menuinfo.txt");
                        if (!file.exists()){
                            file.createNewFile();
                        }
                        OutputStream os = new FileOutputStream(file);
                        os.write(str.getBytes());
                        //關閉流
inputStream.close();
                        os.close();
                        return upec;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute(s);
    }

    @Override
public void onRefresh() {
        isplay=true;
        pageIndex++;
        getHuoqu("https://api.douban.com/v2/movie/in_theaters?apikey=0b2bdeda43b5688921839c8ecb20399b&city=北京&start="+pageIndex+"&count=2");
        xlv.stopRefresh(true);
    }

    @Override
public void onLoadMore() {
        isplay=false;
        pageIndex++;
        getHuoqu("https://api.douban.com/v2/movie/in_theaters?apikey=0b2bdeda43b5688921839c8ecb20399b&city=北京&start="+pageIndex+"&count=2");
        xlv.stopLoadMore();
    }
}