Volley实现图片加载功能

xiaoxiao2021-02-27  211

不多说直接上干货

设置全局变量,在前文设置过就不用重复设置了。

1 public class MyApp extends Application{ 2    //1.创建请求队列,可以设置为全局变量 3    private static RequestQueue mQueue; 4    @Override 5    public void onCreate() { 6        super.onCreate(); 7        //初始化请求队列 8        mQueue = Volley.newRequestQueue(getApplicationContext()); 9   } 10 11    public static RequestQueue getHttpQueue(){ 12        return  mQueue; 13   } 14 15 } 用ImageRequest获取 1 public class ImageRequestActivity extends AppCompatActivity { 2 3    private ImageView iv; 4    private String url = "https://img-my.csdn.net/uploads/201407/26/1406383172_4577.jpg"; 5 6    @Override 7    protected void onCreate(Bundle savedInstanceState) { 8        super.onCreate(savedInstanceState); 9        setContentView(R.layout.activity_image_request); 10        iv = (ImageView) findViewById(R.id.iv); 11        volleyImage(url); 12   } 13    /** 14     * String url,   图片的地址 15     * Listener<Bitmap> listener,   获取图片成功时会回调的接口 16     * int maxWidth,               图片显示的最大宽度 17     * int maxHeight,               图片显示的最大的高度 18     * Config decodeConfig,         图片的加载质量 19     *   可选四种: 20     *   ARGB_8888   8+8+8+8 = 32 位   32/8 = 4字节 21     *   =1个像素点上的字节数 22     *   ARGB_4444   16位         2字节 23     *   RGB_565     16位         2字节   图片压缩较小,而且比较清晰 24     *   Alpha_8     8位           1字节 25     * 26     *   480*800=384000*4/1024/1024 = 1.4648m 27     * ErrorListener errorListener :获取图片失败时会回调的接口 28     * */ 29 30    public void volleyImage(String url){ 31 32        ImageRequest request = new ImageRequest(url, new Response.Listener<Bitmap>() { 33            @Override 34            public void onResponse(Bitmap bitmap) { 35                iv.setImageBitmap(bitmap); 36           } 37       }, 250, 250, Bitmap.Config.RGB_565, new Response.ErrorListener() { 38            @Override 39            public void onErrorResponse(VolleyError volleyError) { 40                iv.setImageResource(R.drawable.h2); 41           } 42       }); 43 44        MyApp.getHttpQueue().add(request); 45   } 46 } 布局 1 <ImageView 2        android:id="@+id/iv" 3        android:layout_centerInParent="true" 4        android:layout_width="250dp" 5        android:layout_height="250dp" 6        android:src="@mipmap/ic_launcher" 7        android:scaleType="centerCrop"/> 用NetImage获取 1 2 public class NetImageActivity extends AppCompatActivity { 3 4    private NetworkImageView netIv; 5    private String url = "https://img-my.csdn.net/uploads/201407/26/1406383130_7393.jpg"; 6    @Override 7    protected void onCreate(Bundle savedInstanceState) { 8        super.onCreate(savedInstanceState); 9        setContentView(R.layout.activity_net_image); 10        netIv = (NetworkImageView) findViewById(R.id.netIv); 11 12        RequestQueue queue = MyApp.getHttpQueue(); 13        ImageLoader loader = new ImageLoader(queue,new BitmapCache()); 14        netIv.setDefaultImageResId(R.mipmap.ic_launcher);  //设置默认加载的图片 15        netIv.setErrorImageResId(R.drawable.h2);        //设置网络加载失败时显示的图片 16        //设置NetworkImageView的图片加载路径 17        netIv.setImageUrl(url,loader); 18   } 19 } 布局 1  <com.android.volley.toolbox.NetworkImageView 2        android:id="@+id/netIv" 3        android:layout_height="250dp" 4        android:layout_width="250dp" 5        android:layout_centerInParent="true" 6        android:scaleType="centerCrop"> 7 8    </com.android.volley.toolbox.NetworkImageView> 用ImageView 获取 1 public class ImageViewActivity extends AppCompatActivity { 2 3    private ImageView iv; 4    private String url = "https://img-my.csdn.net/uploads/201407/26/1406382941_4559.jpg"; 5    @Override 6    protected void onCreate(Bundle savedInstanceState) { 7        super.onCreate(savedInstanceState); 8        setContentView(R.layout.activity_image_request); 9        iv = (ImageView) findViewById(R.id.iv); 10 11        //获得图片加载器对象 12        ImageLoader loader = new ImageLoader(MyApp.getHttpQueue(),new BitmapCache()); 13 14        ImageLoader.ImageListener listener= loader.getImageListener(iv,R.mipmap.ic_launcher,R.drawable.h2); 15 16        loader.get(url,listener); 17 18 19   } 20 } 传入的工具类BitmapCache 1 public class BitmapCache implements ImageLoader.ImageCache{ 2    //定义缓存对象 3    private LruCache<String,Bitmap>cache; 4    private int maxSize = 8*1024*1024; 5 6    public BitmapCache() { 7 8        cache = new LruCache<String,Bitmap>(maxSize){ 9            @Override 10            protected int sizeOf(String key, Bitmap value) { 11                //计算出要存储的bitmap对象的字节数 12                return value.getRowBytes()*value.getHeight(); 13           } 14       }; 15   } 16 17    @Override 18    public Bitmap getBitmap(String s) { 19        return cache.get(s); 20   } 21 22    @Override 23    public void putBitmap(String url, Bitmap bitmap) { 24        cache.put(url,bitmap); 25   } 26 } 布局 1 <ImageView 2        android:id="@+id/iv" 3        android:layout_centerInParent="true" 4        android:layout_width="250dp" 5        android:layout_height="250dp" 6        android:src="@mipmap/ic_launcher" 7        android:scaleType="centerCrop"/> 权限 1 2    <uses-permission android:name="android.permission.INTERNET" /> 3    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

转载请注明原文地址: https://www.6miu.com/read-13130.html

最新回复(0)