TextView で HTML を表示するには、ImageGetter を使用してタグを解析する必要があります。 ImageGetter はインターフェイスであり、内部にメソッドを実装する必要があります。
public DrawablegetDrawable(String source);
Drawable オブジェクトを作成し、参照を保持して返し、非同期でネットワークにリクエストし、画像を取得し、画像を取得した後、Bitmap に変換して描画のために Drawable オブジェクトに渡します。 – カスタム Drawable オブジェクト
static class MyDrawable extends BitmapDrawable{ BitmapmBitmap; public MyDrawable() { super(); } @Override public void draw(Canvascanvas) { super.draw(canvas); if(mBitmap != null) { canvas.drawBitmap(mBitmap,0,0,getPaint()); } } public void setBitmap(Bitmapbitmap) { mBitmap = bitmap; }}
getDrawable() メソッドを実装します
MyImageGetter には、画像表示に使用される TextView を保存するために使用される TextView メンバーがあります。読み込みが完了したら、TextView の validate() メソッドを呼び出します。ビューを更新します。すべての Drawable は、要求されたサイズを尊重する必要があります。多くの場合、クライアントは getIntrinsicHeight() メソッドと getIntrinsicWidth() メソッドを使用して、一部の Drawable の推奨サイズを見つけることができます。描画の位置と描画領域。
Canvas.drawBitmap()bitmap Drawable.draw(Canvas) 関数を通じて描画するには、Canvas.drawBitmap() を通じて Drawable 内のビットマップの表示位置を制御できます。
画像の中央表示を制御するには、上記の2つのメソッドを使用します。
public MyImageGetter(TextViewview){ mContainer = view;} @Overridepublic DrawablegetDrawable(String s){ // 初始化占位 Drawable final MyDrawabledrawable = new MyDrawable(); // 初始化请求对象 LocalHostModelmodel = new LocalHostModel(); // 设置回调函数 model.setImageListener(new LocalHostModel.OnRequestImageListener() { @Override public void onSuccess(Bitmapbitmap) { // 处理 bitmap 刷新视图 drawable.setBitmap(bitmap); int height = bitmap.getHeight(); int width = bitmap.getWidth(); drawable.setBounds(0, 0, width, height); mContainer.invalidate(); } @Override public void onFailed(String msg) { Log.i(TAG, "onFailed: " + msg); } }); // 请求图片 model.requestImage(s); return drawable;}
参考リンク