HTML.ImageGetter TextView

HTML.ImageGetter TextView,第1张

HTML.ImageGetter TextView

最简单的解决方案是:

import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.net.MalformedURLException;import java.net.URL;import org.pskink.soom.R;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.graphics.drawable.LevelListDrawable;import android.os.AsyncTask;import android.os.Bundle;import android.text.Html;import android.text.Html.ImageGetter;import android.text.Spanned;import android.util.Log;import android.widget.TextView;public class TestImageGetter extends Activity implements ImageGetter {    private final static String TAG = "TestImageGetter";    private TextView mTv;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.test_image_getter);        String source = "this is a test of <b>ImageGetter</b> it contains " +     "two images: <br/>" +     "<img src="http://developer.android.com/assets/images/dac_logo.png"><br/>and<br/>" +     "<img src="http://developer.android.com/assets/images/icon_search.png">";        Spanned spanned = Html.fromHtml(source, this, null);        mTv = (TextView) findViewById(R.id.text);        mTv.setText(spanned);    }    @Override    public Drawable getDrawable(String source) {        LevelListDrawable d = new LevelListDrawable();        Drawable empty = getResources().getDrawable(R.drawable.ic_launcher);        d.addLevel(0, 0, empty);        d.setBounds(0, 0, empty.getIntrinsicWidth(), empty.getIntrinsicHeight());        new LoadImage().execute(source, d);        return d;    }    class LoadImage extends AsyncTask<Object, Void, Bitmap> {        private LevelListDrawable mDrawable;        @Override        protected Bitmap doInBackground(Object... params) { String source = (String) params[0]; mDrawable = (LevelListDrawable) params[1]; Log.d(TAG, "doInBackground " + source); try {     InputStream is = new URL(source).openStream();     return BitmapFactory.depreStream(is); } catch (FileNotFoundException e) {     e.printStackTrace(); } catch (MalformedURLException e) {     e.printStackTrace(); } catch (IOException e) {     e.printStackTrace(); } return null;        }        @Override        protected void onPostExecute(Bitmap bitmap) { Log.d(TAG, "onPostExecute drawable " + mDrawable); Log.d(TAG, "onPostExecute bitmap " + bitmap); if (bitmap != null) {     BitmapDrawable d = new BitmapDrawable(bitmap);     mDrawable.addLevel(1, 1, d);     mDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());     mDrawable.setLevel(1);     // i don't know yet a better way to refresh TextView     // mTv.invalidate() doesn't work as expected     CharSequence t = mTv.getText();     mTv.setText(t); }        }    }}

下载图像后,有一种不太优雅的方法可以重新布局TextView:

// i don't know yet a better way to refresh TextView// mTv.invalidate() doesn't work as expectedCharSequence t = mTv.getText();mTv.setText(t);

如果有人知道更好的解决方案,请让我知道



欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zaji/5082991.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存