Android图片下载2种方法

1、最常用ImageLoader

//调用方法
ImageLoader.getInstance().displayImage("url",mImg_photo, imageOptions);

//设置图片属性:下载时的图片,下载失败的图片,是否圆角

DisplayImageOptions imageOptions = new DisplayImageOptions.Builder().cacheInMemory(true).cacheOnDisc(true)
				.showImageOnLoading(R.drawable.default_loading)		// 加载开始默认的图片
				.showImageForEmptyUri(R.drawable.default_loading)	// url爲空會显示该图片,自己放在drawable里面的
				.showImageOnFail(R.drawable.default_loading)		// 加载图片出现问题,会显示该图片
				.imageScaleType(ImageScaleType.IN_SAMPLE_INT).bitmapConfig(Bitmap.Config.RGB_565).build();
package com.example.another;

import android.annotation.TargetApi;
import android.app.Application;
import android.content.Context;
import android.os.Build;

import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

/**
 * @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
 */
public class UILApplication extends Application {
	@TargetApi(Build.VERSION_CODES.GINGERBREAD)
	@SuppressWarnings("unused")
	@Override
	public void onCreate() {
		super.onCreate();

		initImageLoader(getApplicationContext());
	}

	public static void initImageLoader(Context context) {		
		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
				.threadPriority(Thread.NORM_PRIORITY - 2)
				.denyCacheImageMultipleSizesInMemory()
				.diskCacheFileNameGenerator(new Md5FileNameGenerator())
				.tasksProcessingOrder(QueueProcessingType.LIFO)
				.writeDebugLogs() // Remove for release app
				.build();
		// Initialize ImageLoader with configuration.
		ImageLoader.getInstance().init(config);
	}
}

2、AsyncTask下载

//开启图片加载
ImageAsyncTask asyncTask = new ImageAsyncTask();
asyncTask.execute("url");

 class ImageAsyncTask extends AsyncTask<String, Void, Bitmap>
    {
        private Bitmap bitmap;
       

        @Override
        protected Bitmap doInBackground(String... params)
        {
            InputStream is = null;
            try
            {
                URL url = new URL(params[0]);
                URLConnection openConnection = url.openConnection();
                is = openConnection.getInputStream();
                bitmap = BitmapFactory.decodeStream(is);
                if (bitmap != null)
                {
                    hadImage.put(params[0], bitmap);
                }
            }
            catch (MalformedURLException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            catch (IOException e)
            {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            finally
            {
                if (is != null)
                {
                    try
                    {
                        is.close();
                    }
                    catch (IOException e)
                    {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap result)
        {
            // 下载完显示
            imageView.setImageBitmap(result);
            
            super.onPostExecute(result);
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Android中使用OkHttp库下载图片需要创建一个OkHttp的工具类和一个实现回调接口的主Activity。首先,在工具类中创建一个静态的OkHttpClient对象,并通过该对象发送请求并获取响应体。然后,将响应体转化为流,再将流转化为Bitmap对象。接下来,在主Activity中设置ImageView的初始图片,然后执行AsyncTask来下载图片。在AsyncTask的doInBackground方法中使用工具类获取图片的Bitmap对象,并将其返回。最后,在AsyncTask的onPostExecute方法中通过回调接口将Bitmap对象设置给ImageView。 以下是一个示例代码: 工具类OkHttpDownload.java: ```java public class OkHttpDownload { private static OkHttpClient okHttpClient; public static Bitmap getImageBitmap(String urlPath) { Bitmap bitmap = null; okHttpClient = new OkHttpClient(); URL url = null; try { url = new URL(urlPath); //获取请求对象 Request request = new Request.Builder().url(url).build(); //获取响应体 ResponseBody responseBody = okHttpClient.newCall(request).execute().body();<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [安卓第七天---okhttp的简单使用及异步任务(Asynctask)下载图片](https://blog.csdn.net/Autumn_leavess/article/details/84145839)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值