MainActivity:
package demo.lxiangjian.com.picassodemo02;
import android.graphics.Bitmap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.squareup.picasso.Callback;
import com.squareup.picasso.MemoryPolicy;
import com.squareup.picasso.Picasso;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private CostomImageView mImageView;
private Button mButton1,mButton2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton1 = (Button) findViewById(R.id.button1);
mButton2 = (Button) findViewById(R.id.button2);
mImageView = (CostomImageView) findViewById(R.id.img);
mButton1.setOnClickListener(this);
mButton2.setOnClickListener(this);
//默认的缓存路径是data/data/包名/picassocache
//load方法参数支持 Uri String File resourceId
//
//即使传入的是activity的上下文,但是最终他使用的还是applicationContext
Picasso.with(this).load(Consts.IMG_URL).
error(R.mipmap.ic_launcher) //加载图片失败显示的图片,可以资源id,也可以是drwable
.config(Bitmap.Config.RGB_565)//默认是Bitmap.Config.ARGB_8888,配置成RGB_565舍弃透明度,减少内存占用
.placeholder(R.mipmap.ic_launcher)//占位图片,资源iD,也可以是drwable
//.resize(300, 400)//参数:with,height,不仅图片进行大小裁剪 也减少内存占用
//.centerCrop()//使用这个方法之前必须调用resize裁剪方法
// .rotate(20) //旋转
// .fetch();
//fetch 预加载,把图片加入磁盘和内存缓存,但是并不进行图片显示
//内存策略
//MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE 去除内存缓存
//在处理大图片的时候有时候需要放弃内存缓存
//MemoryPolicy.NO_STORE不放入内存,MemoryPolicy.NO_CACHE不从内存中去查找
.memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
.into(mImageView, new Callback() {
//图片记载成功
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "成功", Toast.LENGTH_SHORT).show();
}
//图片加载失败
@Override
public void onError() {
//设置比如点击重新加载
Toast.makeText(MainActivity.this, "失败", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button1:
Picasso.with(this).load(Consts.IMG_URL2).fetch(new Callback() {
@Override
public void onSuccess() {
Toast.makeText(MainActivity.this, "预加载成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError() {
Toast.makeText(MainActivity.this, "预加载失败", Toast.LENGTH_SHORT).show();
}
});
break;
case R.id.button2:
Picasso.with(this).load(Consts.IMG_URL2).into(mImageView);
break;
}
}
}
自定义imageView:
package demo.lxiangjian.com.picassodemo02;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;
/**
* Created by Administrator on 2016/6/5.
*/
public class CostomImageView extends ImageView {
//动态生成图片,new
public CostomImageView(Context context) {
super(context);
}
// xml中静态生成
public CostomImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
}
package demo.lxiangjian.com.picassodemo02;
/**
* Created by dupengfei on 16/6/1.
*/
public class Consts {
public static final String IMG_URL = "http://dl.bizhi.sogou.com/images/2012/03/23/107607.jpg?f=download";
public static final String IMG_URL2 = "http://www.rmzt.com/uploads/allimg/151014/1-151014164149411.jpg";
}
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="fetch"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="display"/>
<demo.lxiangjian.com.picassodemo02.CostomImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="fetch"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="display"/>
<demo.lxiangjian.com.picassodemo02.CostomImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:support-v4:24.0.0-alpha2'
}