Picasso的使用

来源:互联网 发布:网络理财可靠吗 编辑:程序博客网 时间:2024/06/05 18:13
MainActivity:package demo.lxiangjian.com.picasso;import android.os.Environment;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import java.io.File;import java.util.Arrays;import it.sephiroth.android.library.picasso.OkHttpDownloader;import it.sephiroth.android.library.picasso.Picasso;/** * 内部存储  应用卸载,内部存储也会销毁 ,便于维护 * 外部存储  存储空间大,不会随着应用卸载应用卸载消失 */public class MainActivity extends AppCompatActivity {    private RecyclerView mRecyclerView;    private RecycAdapter mRecycAdapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mRecyclerView = (RecyclerView) findViewById(R.id.recy);        //自定义缓存路径        //Picasso 并没有直接提供一个设置缓存路径的方法        //        //自定义缓存路径        String filePath = Environment.getExternalStorageDirectory().getPath()+"/picasso";        //下载器        //实例化一个新的下载器,为下载设置文件保存枯井,达到自定义缓存路径的目的        Picasso build =new Picasso.Builder(this).downloader(new OkHttpDownloader(new File(filePath))).build();        Picasso.setSingletonInstance(build);        mRecycAdapter = new RecycAdapter();        mRecycAdapter.setUrl(Arrays.asList(Consts.mStrings));        mRecyclerView.setAdapter(mRecycAdapter);        LinearLayoutManager layout = new LinearLayoutManager(this);        mRecyclerView.setLayoutManager(layout);        mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {            /**             * One of               {@link #SCROLL_STATE_IDLE},    停止滑动,静止             *                     {@link #SCROLL_STATE_DRAGGING} 手指不离开屏幕的滑动             *                     {@link #SCROLL_STATE_SETTLING}. 手指离开屏幕惯性滑动             * @param recyclerView             * @param newState             */            //滑动状态改变            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);                //停止滑动,开始加载图片                if (newState == RecyclerView.SCROLL_STATE_IDLE){                    Picasso.with(MainActivity.this).resumeTag(this);                }else {                    //暂停图片加载                    Picasso.with(MainActivity.this).resumeTag(this);                }            }            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);            }        });    }}MyViewHolder:<pre name="code" class="java">package demo.lxiangjian.com.picasso;import android.support.v7.widget.RecyclerView;import android.view.View;import android.widget.ImageView;/** * Created by Administrator on 2016/6/5. */public class MyViewHolder extends RecyclerView.ViewHolder {    public ImageView mImageView;    public MyViewHolder(View itemView) {        super(itemView);        mImageView = (ImageView) itemView.findViewById(R.id.imgView);    }}RecycAdapter:
package demo.lxiangjian.com.picasso;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import java.util.List;import it.sephiroth.android.library.picasso.Picasso;/** * Created by Administrator on 2016/6/5. */public class RecycAdapter extends RecyclerView.Adapter<MyViewHolder> {    private Context mContext;    private List<String> mUrl;    public void setUrl(List<String> url) {        mUrl = url;    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        mContext =parent.getContext();        View view = View.inflate(mContext,R.layout.recyclerview_mb,null);        MyViewHolder myViewHolder = new MyViewHolder(view);        return myViewHolder;    }    @Override    public void onBindViewHolder(MyViewHolder holder, int position) {        Picasso.with(mContext).load(mUrl.get(position)).resize(300,300).into(holder.mImageView);    }    @Override    public int getItemCount() {        return mUrl.size();    }}


activity_main.xml:<?xml version="1.0" encoding="utf-8"?><RelativeLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent">    <android.support.v7.widget.RecyclerView        android:id="@+id/recy"        android:layout_width="match_parent"        android:layout_height="match_parent"       /></RelativeLayout>

item_recy.xml:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"              android:orientation="vertical"              android:layout_width="match_parent"              android:layout_height="match_parent">    <ImageView        android:id="@+id/imgView"        android:layout_width="wrap_content"        android:layout_height="wrap_content"/></LinearLayout>

记得导包:
 compile 'it.sephiroth.android.library.picasso:picasso:2.5.2.4b'    compile 'com.squareup.okhttp3:okhttp:3.3.1'    compile 'com.android.support:recyclerview-v7:24.0.0-alpha2'

权限:
 <uses-permission android:name="android.permission.INTERNET"/>    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>




 
0 0
原创粉丝点击