commit 5ca712693edba334b101d00db3750247b11d9a8a
parent cfae6a2a86425fbd4aa8c559b6c69c23e0bfc280
Author: Jan Dankert <devnull@localhost>
Date: Thu, 9 Feb 2012 00:26:15 +0100
Asynchronen ImageGetter aktiviert für News-Detailanzeige und Themen-Anzeige.
Diffstat:
4 files changed, 31 insertions(+), 80 deletions(-)
diff --git a/src/de/mtbnews/android/NewsDetailActivity.java b/src/de/mtbnews/android/NewsDetailActivity.java
@@ -1,19 +1,10 @@
package de.mtbnews.android;
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
import org.mcsoxford.rss.RSSItem;
-import de.mtbnews.android.image.ImageGetter;
-import de.mtbnews.android.image.ImageGetterAsyncTask;
-
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.Html;
@@ -22,6 +13,7 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
+import de.mtbnews.android.image.URLImageParser;
public class NewsDetailActivity extends Activity
{
@@ -49,9 +41,9 @@ public class NewsDetailActivity extends Activity
// if (e.getContent() != null)
final String html = item.getFullContent();
- ImageGetter imageGetter = null;
+ Html.ImageGetter imageGetter = null;
if (prefs.getBoolean("load_images", false))
- imageGetter = new ImageGetter();
+ imageGetter = new URLImageParser(desc,this);
desc.setText(Html.fromHtml(html, imageGetter, null));
diff --git a/src/de/mtbnews/android/adapter/ListEntryContentAdapter.java b/src/de/mtbnews/android/adapter/ListEntryContentAdapter.java
@@ -18,7 +18,7 @@ import android.widget.BaseAdapter;
import android.widget.TextView;
import de.mtbnews.android.IBCApplication;
import de.mtbnews.android.R;
-import de.mtbnews.android.image.ImageGetter;
+import de.mtbnews.android.image.URLImageParser;
import de.mtbnews.android.tapatalk.wrapper.ListEntry;
/**
@@ -159,9 +159,10 @@ public class ListEntryContentAdapter extends BaseAdapter
html = e.getContent();
html = new ProcessBBCode().preparePostText(html);
- ImageGetter imageGetter = null;
+ Html.ImageGetter imageGetter = null;
if (prefs.getBoolean("load_images", false))
- imageGetter = new ImageGetter();
+ // imageGetter = new ImageGetter();
+ imageGetter = new URLImageParser(viewHolder.desc, mContext);
viewHolder.desc.setText(Html.fromHtml(html.toString(),
imageGetter, null));
@@ -169,9 +170,9 @@ public class ListEntryContentAdapter extends BaseAdapter
else if (containsHtml)
{
final CharSequence html = e.getContent();
- ImageGetter imageGetter = null;
+ Html.ImageGetter imageGetter = null;
if (prefs.getBoolean("load_images", false))
- imageGetter = new ImageGetter();
+ imageGetter = new URLImageParser(viewHolder.desc, mContext);
viewHolder.desc.setText(Html.fromHtml(html.toString(),
imageGetter, null));
diff --git a/src/de/mtbnews/android/image/ImageGetter.java b/src/de/mtbnews/android/image/ImageGetter.java
@@ -1,52 +0,0 @@
-package de.mtbnews.android.image;
-
-import java.io.InputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.text.Html;
-
-/**
- * @author dankert
- *
- */
-public class ImageGetter implements Html.ImageGetter
-{
-
- public Drawable getDrawable(String source)
- {
- Drawable d = null;
- String imageSource;
- // if (!source.startsWith("http://www"))
- // {
- // imageSource = "http://www.minhembio.com" + source;
- // }
- // else
- // {
- imageSource = source;
- // }
-
- try
- {
- URL myFileUrl = new URL(imageSource);
-
- HttpURLConnection conn = (HttpURLConnection) myFileUrl
- .openConnection();
- conn.setDoInput(true);
- conn.connect();
- InputStream is = conn.getInputStream();
- BitmapDrawable a = new BitmapDrawable(is);
- d = a.getCurrent();
- d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight());
- }
- catch (Exception e)
- {
- throw new RuntimeException(e);
- // d = null;
- }
-
- return d;
- }
-}-
\ No newline at end of file
diff --git a/src/de/mtbnews/android/image/URLImageParser.java b/src/de/mtbnews/android/image/URLImageParser.java
@@ -8,11 +8,14 @@ import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
+import android.R.drawable;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.text.Html.ImageGetter;
+import android.util.Log;
import android.view.View;
+import de.mtbnews.android.util.IBC;
public class URLImageParser implements ImageGetter
{
@@ -66,16 +69,20 @@ public class URLImageParser implements ImageGetter
@Override
protected void onPostExecute(Drawable result)
{
- // set the correct bound according to the result from HTTP call
- urlDrawable.setBounds(0, 0, 0 + result.getIntrinsicWidth(),
- 0 + result.getIntrinsicHeight());
+ if (result != null)
+ {
+
+ // set the correct bound according to the result from HTTP call
+ urlDrawable.setBounds(0, 0, 0 + result.getIntrinsicWidth(),
+ 0 + result.getIntrinsicHeight());
- // change the reference of the current drawable to the result
- // from the HTTP call
- urlDrawable.drawable = result;
+ // change the reference of the current drawable to the result
+ // from the HTTP call
+ urlDrawable.drawable = result;
- // redraw the image by invalidating the container
- URLImageParser.this.container.invalidate();
+ // redraw the image by invalidating the container
+ URLImageParser.this.container.invalidate();
+ }
}
/***
@@ -90,12 +97,16 @@ public class URLImageParser implements ImageGetter
{
InputStream is = fetch(urlString);
Drawable drawable = Drawable.createFromStream(is, "src");
- drawable.setBounds(0, 0, 0 + drawable.getIntrinsicWidth(),
- 0 + drawable.getIntrinsicHeight());
- return drawable;
+ if (drawable == null)
+ Log.w(IBC.TAG, "drawable is null, url=" + urlString);
+ else
+ drawable.setBounds(0, 0, 0 + drawable.getIntrinsicWidth(),
+ 0 + drawable.getIntrinsicHeight());
+ return drawable;
}
catch (Exception e)
{
+ Log.w(IBC.TAG, e);
return null;
}
}