为了账号安全,请及时绑定邮箱和手机立即绑定

Android HTML ImageGetter as AsyncTask

Android HTML ImageGetter as AsyncTask

德玛西亚99 2019-09-20 17:27:35
好吧,我对这个失去了理智。我的程序中有一个解析HTML的方法。我想要包含内嵌图像,我的印象是使用Html.fromHtml(字符串,Html.ImageGetter,Html.TagHandler)将允许这种情况发生。由于Html.ImageGetter没有实现,所以由我来编写一个。但是,由于将URL解析为Drawables需要网络访问,我不能在主线程上执行此操作,因此它必须是AsyncTask。我认为。但是,当您将ImageGetter作为参数传递给Html.fromHtml时,它使用必须重写的getDrawable方法。因此无法调用触发doInBackground方法的整个ImageGetter.execute事务,因此无法实际实现此异步。我是否完全错了,或者更糟糕的是,这是不可能的?谢谢
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

挺好的。但是,不推荐使用DefaultHttpClient类型。在获取方法上尝试这个:


private InputStream fetch(String urlString) throws MalformedURLException, IOException {


        URL url = new URL(urlString);

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

        InputStream stream = urlConnection.getInputStream();


        return stream;


    }


查看完整回答
反对 回复 2019-09-20
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

如果您使用Picasso,请将@momo代码的一部分更改为


/***

         * Get the Drawable from URL

         * @param urlString

         * @return

         */

        public Drawable fetchDrawable(String urlString) {

            try {

                Drawable drawable = fetch(urlString);

                drawable.setBounds(0, 0, 0 + drawable.getIntrinsicWidth(), 0

                        + drawable.getIntrinsicHeight());

                return drawable;

            } catch (Exception e) {

                return null;

            }

        }


        private Drawable fetch(String urlString) throws MalformedURLException, IOException {

            return new BitmapDrawable(c.getResources(), Picasso.with(c).load(urlString).get());

        }


查看完整回答
反对 回复 2019-09-20
  • 3 回答
  • 0 关注
  • 532 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信