android-ibc-forum

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

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:
src/de/mtbnews/android/NewsDetailActivity.java | 14+++-----------
src/de/mtbnews/android/adapter/ListEntryContentAdapter.java | 11++++++-----
src/de/mtbnews/android/image/ImageGetter.java | 53-----------------------------------------------------
src/de/mtbnews/android/image/URLImageParser.java | 33++++++++++++++++++++++-----------
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; } }