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);
drawable =
new
BitmapDrawable(getResources(), bm);
drawable.setBounds(
0
,
0
, bm.getWidth(), bm.getHeight());
}
catch
(MalformedURLException e) {
e.printStackTrace();
}
catch
(IOException e) {
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"
@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());
}
}