Um zu BitmapDrawable & ImageGetter von HTML verwenden müssen Bild mit HTML-Inhalt angezeigt werden soll. ImageGetter Mit herunterladen müssen Bild, um es in Bitmap und dislay in Textview konvertieren mit Html.fromHtml mit HTML-Inhalt & Instanz der Html.ImageGetter
Im Folgenden werde ich die Dinge geben, um das Problem in Frage erwähnt zu lösen haben
Vorschlag Ich empfehle Ihnen, WebView für den Inhalt zu verwenden, wo Sie HTML-Text anzeigen müssen
HTMLIma geDrawable
public class HTMLImageDrawable extends BitmapDrawable {
protected Drawable drawable;
@Override
public void draw(Canvas canvas) {
if (drawable != null) {
drawable.draw(canvas);
}
}
}
HtmlImageParser
public class HtmlImageParser implements ImageGetter {
public static final String LOG = HtmlImageParser.class.getName();
Context c;
View container;
public HtmlImageParser(View t, Context c) {
this.c = c;
this.container = t;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public Drawable getDrawable(String source) {
try {
HTMLImageDrawable urlDrawable = new HTMLImageDrawable();
ImageGetterAsyncTask asyncTask = new ImageGetterAsyncTask(
urlDrawable);
if (Build.VERSION.SDK_INT < 11) {
asyncTask.execute(source);
} else {
asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, source);
}
return urlDrawable;
} catch (Exception e) {
Log.e(LOG, e.getMessage());
}
return null;
}
public class ImageGetterAsyncTask extends AsyncTask<String, Void, Drawable> {
HTMLImageDrawable urlDrawable;
public ImageGetterAsyncTask(HTMLImageDrawable d) {
this.urlDrawable = d;
}
@Override
protected Drawable doInBackground(String... params) {
String source = params[0];
return fetchDrawable(source);
}
@Override
protected void onPostExecute(Drawable result) {
try {
if (urlDrawable != null) {
urlDrawable.setBounds(0, 0, 0 + result.getIntrinsicWidth(),
0 + result.getIntrinsicHeight());
urlDrawable.drawable = result;
HtmlImageParser.this.container.invalidate();
}
} catch (Exception e) {
Log.e(LOG, e.getMessage());
}
}
public Drawable fetchDrawable(String urlString) {
try {
// InputStream is = fetch(urlString);
URL imageURL = new URL(urlString);
InputStream inputStream = imageURL.openStream();
Drawable drawable = Drawable.createFromStream(inputStream, "src");
drawable.setBounds(0, 0, 0 + drawable.getIntrinsicWidth(),
0 + drawable.getIntrinsicHeight());
return drawable;
} catch (Exception e) {
return null;
}
}
}
}
über zwei Klassen hinzufügen.
Sets von HTML-Text zu Textview
TextView htmltext = (TextView) view.findViewById(R.id.htmltext);
HtmlImageParser clsUrlimageparser = new HtmlImageParser(htmltext.getRootView(), getActivity());
String imageviewBaseURL = "http://tfwiki.net/mediawiki/images2/thumb/8/8c/";
//For multiple image if base url is fix & image path is relative
String img1 = imageviewBaseURL + "AOE_optimus_reformatted.jpg/180px-AOE_optimus_reformatted.jpg";
String img2 = imageviewBaseURL + "AnimeMach.jpg/82px-AnimeMach.jpg";
String text = "Android test image text" +
"<br /> <img style='width:304px;height:228px;' src='" + img1 + "'/>" +
"<br /> <img style='width:304px;height:228px;' src='" + img2 + "'/>";
htmlSpan = Html.fromHtml(text, clsUrlimageparser, null);
htmltext.setText(htmlSpan);
html Bild wird die Live-URL hat? – user1140237
@ user1140237 yah selben von ihnen haben ... –