图片异步加载

adapter中加载图片

/**

         * 加载图片的时候,,,异步加载出现了现象,闪烁,错位,跳动
         * 原因:这里图片的加载是异步加载,,,,适配器做了优化....复用的优化
         *
         * 当前的url路径跟当前的imageView控件不匹配....
         */
        //1.
        holder.imageView.setTag(newslistBean.getPicUrl());

        //3.设置一个默认的图片显示
        holder.imageView.setImageResource(R.mipmap.ic_launcher);

        //2.写一个接口回调bitmap
        new ImageHelper().dispalyImage(holder.imageView,newslistBean.getPicUrl(), new ImageCallBack() {
            @Override
            public void setSuccessImage(Bitmap bitmap, ImageView imageView) {
                //设置图片的显示
                if (newslistBean.getPicUrl().equals(imageView.getTag())){
                    imageView.setImageBitmap(bitmap);
                }

            }

        });

接口类

public interface ImageCallBack {
    public void setSuccessImage(Bitmap bitmap, ImageView imageView);
}

图片帮助类

public class ImageHelper {

    public void dispalyImage(final ImageView imageView, final String picUrl, final ImageCallBack imageCallBack) {

        //根据url路径请求图片进行展示
        AsyncTask<Void, Void, Bitmap> asyncTask = new AsyncTask<Void, Void, Bitmap>() {
            @Override
            protected Bitmap doInBackground(Void... voids) {

                try {
                    URL url = new URL(picUrl);

                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();

                    connection.setRequestMethod("GET");
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);

                    //获取
                    int responseCode = connection.getResponseCode();
                    if (responseCode == 200){
                        InputStream inputStream = connection.getInputStream();

                        //转成图片,返回
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);

                        return bitmap;
                    }

                } catch (Exception e) {
                    e.printStackTrace();
                }

                return null;
            }

            @Override
            protected void onPostExecute(Bitmap bitmap) {

                //调用接口的方法
                imageCallBack.setSuccessImage(bitmap,imageView);

                /*//展示之前先判断一下imageView的tag,跟当前的url路径是否匹配
                if (picUrl.equals(imageView.getTag())){
                    //设置图片的显示
                    imageView.setImageBitmap(bitmap);
                }*/


            }
        };

        asyncTask.execute();

    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值