Android_获取网络图片之 Piccaso库

参考: https://www.geeksforgeeks.org/how-to-use-picasso-image-loader-library-in-android/

Picasso是开源的,也是Android中广泛使用的图像下载库之一。

它由Square创建和维护。它是Android强大的图像下载和缓存库之一。Picasso简化了从外部url加载图像并将其显示在应用程序上的过程。例如,从服务器下载映像是任何应用程序中最常见的任务之一。通过android网络API来实现这一点需要相当多的代码。通过使用Picasso,您可以通过几行代码实现这一点。

简单的说, 使用Piccaso 库,可以为ImageView 设置图片,并且图片是从网络下载下来的。

无需自己开启线程下载,只需提供网络图片的url

目录

1. app  build.gradle 添加依赖

2. AndroidManifest 添加网络权限声明

3. 布局文件中添加ImageView

4. 调用Piccaso API 下载并设置图片

5. 附加功能

5.1 调整图片大小(resize)

5.2 占位图片(Placeholder )

5.3  下载失败时的错误反馈

5.4  修剪(Cropping )

10. 问题汇总

10.1  网络问题导致没有下载


1. app  build.gradle 添加依赖

implementation ‘com.squareup.picasso:picasso:2.5.2’ 

然后同步gradle

2. AndroidManifest 添加网络权限声明

<users-permission android:name=”android.permission.INTERNET”/>

3. 布局文件中添加ImageView


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorAccent"
    tools:context=".MainActivity">
  
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:padding="16dp" />
  
</RelativeLayout>

4. 调用Piccaso API 下载并设置图片


import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.widget.ImageView;
  
import com.squareup.picasso.Picasso;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        ImageView imageView = findViewById(R.id.imageView);
        Picasso.with(this)
                .load("https://media.geeksforgeeks.org/wp-content/cdn-uploads/logo-new-2.svg")
                .into(imageView);
    }
}

5. 附加功能

5.1 调整图片大小(resize)


import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.widget.ImageView;
  
import com.squareup.picasso.Picasso;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        ImageView imageView = findViewById(R.id.imageView);
        Picasso.with(this)
                .load("https://media.geeksforgeeks.org/wp-content/uploads/20210101144014/gfglogo.png")
                .resize(300, 300)
                .into(imageView);
    }
}

5.2 占位图片(Placeholder )

即在表示已经调用Piccaso API 进行下载,但是还没有结果时显示的图片。


import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.widget.ImageView;
  
import com.squareup.picasso.Picasso;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        ImageView imageView = findViewById(R.id.imageView);
        Picasso.with(this)
                .load("https://media.geeksforgeeks.org/wp-content/uploads/20210101144014/gfglogo.png")
                .placeholder(R.mipmap.ic_launcher)
                .into(imageView);
    }
}

5.3  下载失败时的错误反馈

可以设定失败时显示的图片

import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.widget.ImageView;
  
import com.squareup.picasso.Picasso;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        ImageView imageView = findViewById(R.id.imageView);
        Picasso.with(this)
                .load("https://media.geeksforgeeks.org/wp-content/uploads/20210101144014/gfglogo.png")
                .error(R.drawable.error_gfg)
                .into(imageView);
    }
}

5.4  修剪(Cropping )

当你不确定下载图片的大小时,可以设置为中心裁剪


import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.widget.ImageView;
  
import com.squareup.picasso.Picasso;
  
public class MainActivity extends AppCompatActivity {
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        ImageView imageView = findViewById(R.id.imageView);
        Picasso.with(this)
                .load("https://media.geeksforgeeks.org/wp-content/uploads/20210101144014/gfglogo-300x300.png") // Equivalent of what ends up in onBitmapLoaded
                .placeholder(R.mipmap.ic_launcher)
                .error(R.drawable.error_gfg)
                .centerCrop()
                .fit()
                .into(imageView);
    }

10. 问题汇总

10.1  网络问题导致没有下载

可能解决方法: 在AndroidManifest.xml 的application 标签中,添加

 android:usesCleartextTraffic="true"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值