package com.example.androidhtmltextview; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import android.support.v7.app.ActionBarActivity; import android.text.Html; import android.text.method.LinkMovementMethod; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends ActionBarActivity { public class HttpGetDrawableTask extends AsyncTask<String, Void, Drawable> { TextView taskTextView; String taskHtmlString; HttpGetDrawableTask(TextView v, String s) { taskTextView = v; taskHtmlString = s; } @Override protected Drawable doInBackground(String... params) { Drawable drawable = null; URL sourceURL; try { sourceURL = new URL(params[0]); URLConnection urlConnection = sourceURL.openConnection(); urlConnection.connect(); InputStream inputStream = urlConnection.getInputStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream( inputStream); Bitmap bm = BitmapFactory.decodeStream(bufferedInputStream); // convert Bitmap to Drawable drawable = new BitmapDrawable(getResources(), bm); drawable.setBounds(0, 0, bm.getWidth(), bm.getHeight()); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return drawable; } @Override protected void onPostExecute(Drawable result) { final Drawable taskDrawable = result; if (taskDrawable != null) { taskTextView.setText(Html.fromHtml(taskHtmlString, new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { return taskDrawable; } }, null)); } } } TextView htmlTextViewRemote; String htmlStringRemote = "Image load from internet" + "<img src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6CoIcfeNYjr0yTRr0KEFDSmYl1XwDOv2GzTOdEbqsqWGNATu3zva1v0Re3pA5sU_8jo004B4DcMCEEnDYFkIjkDt5kzBkKhhTe-ALxjzZWdb83OghyphenhyphenWV3qtBFRJV2XkYaAhC1ZI43e_dj/s400/AndroidHtmlTextView_multi_images.png'>"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); htmlTextViewRemote = new TextView(this); setContentView(htmlTextViewRemote); htmlTextViewRemote.setText(Html.fromHtml(htmlStringRemote, new Html.ImageGetter() { @Override public Drawable getDrawable(String source) { Toast.makeText(getApplicationContext(), source, Toast.LENGTH_LONG).show(); HttpGetDrawableTask httpGetDrawableTask = new HttpGetDrawableTask( htmlTextViewRemote, htmlStringRemote); httpGetDrawableTask.execute(source); return null; } }, null)); htmlTextViewRemote.setMovementMethod(LinkMovementMethod.getInstance()); } }
In order to load image from internet, permission of "android.permission.INTERNET" have to be added in AndroidManifest.xml.
0 Response to "Html.ImageGetter load image from internet, in AsyncTask"
Posting Komentar