我正在使用Picasso,想先将图片添加到位图中再添加到ImageView上。我正在使用以下代码行从图库添加一个带有URI的图像并在ImageView上显示它。我想先保存它到位图中。应该怎么做:
```java Picasso.get().load(uri).into(imageView); ```
请注意,此处不需要解释,只需翻译。
Picasso.with(this).load(uriadress).into(imageView);
但我想先将它保存为位图。
Picasso使用弱引用来持有Target
实例。
因此最好将Target
作为实例字段来持有。
参见:https://dev59.com/o4nca4cB1Zd3GeqP6BjG#29274669
private Target mTarget;
void loadImage(Context context, String url) {
final ImageView imageView = (ImageView) findViewById(R.id.image);
mTarget = new Target() {
@Override
public void onBitmapLoaded (final Bitmap bitmap, Picasso.LoadedFrom from){
//Do something
...
imageView.setImageBitmap(bitmap);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};
Picasso.with(context)
.load(url)
.into(mTarget);
}
你可以像这样做
private Target image;
image = new Target() {
@Override
public void onBitmapLoaded (final Bitmap bitmap, Picasso.LoadedFrom from){
new Thread(new Runnable() {
@Override
public void run() {
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/" + FILEPATH);
try {
file.createNewFile();
FileOutputStream outstream = new FileOutputStream(file);
bitmap.compress(CompressFormat.JPEG, 75, outstream);
outstream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}).start();
}
}
Picasso.with(this)
.load(currentUrl)
.into(image);