Android 获取并显示远程图片 Picasso框架的使用

Picasso框架
什么是Picasso:
强大的图片下载和缓存的第三方库;我觉得这就是对它最准确的描述了,至于其他特性,可以参见官网介绍:Picasso

如何使用Picasso
android update project -pant jar

2.Picasso的基本用法:
将Picasso添加进项目后,要使用它非常简单,只需要一行代码就能搞定:

Picasso.with(context).load(imageUrl).into(imageView);
短短的一行代码为我们解决了很多问题:

自动将图像缓存在本地
通过图片压缩转换以减少内存消耗
自动处理了ImageView的回收,即自动取消不在视野范围内的ImageView视图资源的加载;
3.适配器:适配器自动发现和重用以前取消的下载:

@Override 
public void getView(int position, View convertView, ViewGroup parent) {
  SquaredImageView view = (SquaredImageView) convertView;
  if (view == null) {
    view = new SquaredImageView(context);
  }
  String url = getItem(position);

  Picasso.with(context).load(url).into(view);
}

4.图像格式转换:很多时候需要将图片进行格式转换或者剪裁以节省内存或者达到我们的布局效果:

剪裁大小:

Picasso.with(context).load(imageUrl).resize(50,50).centerCrop().into(imageView);

自定义格式转换:为了实现更多你想要图片转换的效果,你可以自己实现一个实现了Transformation接口的类,然后将其对象传递给transform()方法:

public calss myTransformation implements Transformation{
@Overrride
public Bitmap transform(Bitmap source){
//对source实现自定义裁剪
}
@Override
public String key(){
return “square()”;
}

}

5.占位符图片:所谓的占位符图像即当图片未正常显示时默认的图片,通过placeholder()设置,Picasso也支持设置图片显示错误时显示的默认图片,通过error()设置:

Picasso.wint(context).load(imageUrl).placeholder(R.drawable.image_placeholder).error(R.drawable.image_error_placeholder).into(imageView);

6.载入本地资源:除了通过网络下载图片,Picasso也可以载入本地图片资源:

Picasso.with(context).load(R.drawable.icon).into(imageView);
Picasso.with(context).load(“file:///android_asset/Adnroid.png”).into(imageView);

Picasso.wiht(context).load(new File(…)).into(imageView);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Android中的Picasso或Glide库来读取网络图片并将其转换为Bitmap,然后显示在控件上。 使用Picasso库的代码示例如下: ```java Picasso.get().load("http://example.com/image.jpg").into(new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { // 在这里处理Bitmap并显示在控件上 } @Override public void onBitmapFailed(Exception e, Drawable errorDrawable) { // 加载失败时的处理逻辑 } @Override public void onPrepareLoad(Drawable placeHolderDrawable) { // 加载前的处理逻辑 } }); ``` 使用Glide库的代码示例如下: ```java Glide.with(context) .asBitmap() .load("http://example.com/image.jpg") .into(new SimpleTarget<Bitmap>() { @Override public void onResourceReady(Bitmap bitmap, Transition<? super Bitmap> transition) { // 在这里处理Bitmap并显示在控件上 } }); ``` ### 回答2: 在Android中,要读取网络图片并将其转换为Bitmap并显示在控件上,可以使用以下步骤: 1. 首先,你需要在AndroidManifest.xml文件中添加网络权限,以便应用能够访问网络: <uses-permission android:name="android.permission.INTERNET" /> 2. 在布局文件中,添加一个ImageView控件来显示网络图片: <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 3. 在代码中,你可以使用异步任务AsyncTask来进行网络请求和图片加载操作。创建一个类继承AsyncTask,并在doInBackground方法中执行网络请求和图片加载的操作: private class LoadImageTask extends AsyncTask<String, Void, Bitmap> { @Override protected Bitmap doInBackground(String... urls) { String url = urls[0]; Bitmap bitmap = null; try { URL imageUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setInstanceFollowRedirects(true); InputStream is = conn.getInputStream(); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (Exception e) { e.printStackTrace(); } return bitmap; } @Override protected void onPostExecute(Bitmap result) { ImageView imageView = findViewById(R.id.imageView); imageView.setImageBitmap(result); } } 4. 在主活动中,创建LoadImageTask实例并执行execute方法,传入图片的URL: LoadImageTask task = new LoadImageTask(); task.execute("http://example.com/image.jpg"); 这样,网络图片会被下载并转换为Bitmap,然后在ImageView控件上显示出来。 需要注意的是,网络请求要在子线程中执行,不能在主线程中进行,否则会导致主线程阻塞。所以,我们使用了异步任务AsyncTask来实现这一功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值