diff options
author | Andrew Dolgov <[email protected]> | 2013-10-16 14:57:35 +0400 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2013-10-16 14:57:35 +0400 |
commit | 780629fff539128065970011931b141b1eb723ed (patch) | |
tree | e9af932b1837b58fe25cca773f775d1f85e98379 /src/org | |
parent | 75cee549729a201a04bffb56aa05d89021b9e94f (diff) |
use scrollview/webview instead of titlewebview hack
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/fox/ttrss/ArticleFragment.java | 7 | ||||
-rw-r--r-- | src/org/fox/ttrss/TitleWebView.java | 91 | ||||
-rw-r--r-- | src/org/fox/ttrss/offline/OfflineArticleFragment.java | 4 | ||||
-rw-r--r-- | src/org/fox/ttrss/util/NoChildFocusScrollView.java | 34 |
4 files changed, 40 insertions, 96 deletions
diff --git a/src/org/fox/ttrss/ArticleFragment.java b/src/org/fox/ttrss/ArticleFragment.java index 855ecd65..75ba2164 100644 --- a/src/org/fox/ttrss/ArticleFragment.java +++ b/src/org/fox/ttrss/ArticleFragment.java @@ -23,6 +23,7 @@ import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.text.Html; +import android.util.Log; import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -161,9 +162,9 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl if (web != null) { registerForContextMenu(web); - + // prevent flicker in ics - if (android.os.Build.VERSION.SDK_INT >= 11) { + if (android.os.Build.VERSION.SDK_INT >= 11 && android.os.Build.VERSION.SDK_INT < 14) { web.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } @@ -280,7 +281,7 @@ public class ArticleFragment extends Fragment implements GestureDetector.OnDoubl } } - content += "<p> </p><p> </p><p> </p><p> </p></body></html>"; + content += "</body></html>"; try { String baseUrl = null; diff --git a/src/org/fox/ttrss/TitleWebView.java b/src/org/fox/ttrss/TitleWebView.java deleted file mode 100644 index d55f2e35..00000000 --- a/src/org/fox/ttrss/TitleWebView.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.fox.ttrss; - -// http://www.techques.com/question/1-9718245/Webview-in-Scrollview - -import android.content.Context; -import android.graphics.Canvas; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.view.View; -import android.webkit.WebView; - -public class TitleWebView extends WebView{ - - public TitleWebView(Context context, AttributeSet attrs){ - super(context, attrs); - } - - private int titleHeight; - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ - super.onMeasure(widthMeasureSpec, heightMeasureSpec); - // determine height of title bar - View title = getChildAt(0); - titleHeight = title==null ? 0 : title.getMeasuredHeight(); - } - - @Override - public boolean onInterceptTouchEvent(MotionEvent ev){ - return true; // don't pass our touch events to children (title bar), we send these in dispatchTouchEvent - } - - private boolean touchInTitleBar; - @Override - public boolean dispatchTouchEvent(MotionEvent me){ - - boolean wasInTitle = false; - switch(me.getActionMasked()){ - case MotionEvent.ACTION_DOWN: - touchInTitleBar = (me.getY() <= visibleTitleHeight()); - break; - - case MotionEvent.ACTION_UP: - case MotionEvent.ACTION_CANCEL: - wasInTitle = touchInTitleBar; - touchInTitleBar = false; - break; - } - if(touchInTitleBar || wasInTitle) { - View title = getChildAt(0); - if(title!=null) { - // this touch belongs to title bar, dispatch it here - me.offsetLocation(0, getScrollY()); - return title.dispatchTouchEvent(me); - } - } - // this is our touch, offset and process - me.offsetLocation(0, -titleHeight); - return super.dispatchTouchEvent(me); - } - - /** - * @return visible height of title (may return negative values) - */ - private int visibleTitleHeight(){ - return titleHeight-getScrollY(); - } - - @Override - protected void onScrollChanged(int l, int t, int oldl, int oldt){ - super.onScrollChanged(l, t, oldl, oldt); - View title = getChildAt(0); - if(title!=null) // undo horizontal scroll, so that title scrolls only vertically - title.offsetLeftAndRight(l - title.getLeft()); - } - - @Override - protected void onDraw(Canvas c){ - - c.save(); - int tH = visibleTitleHeight(); - if(tH>0) { - // clip so that it doesn't clear background under title bar - int sx = getScrollX(), sy = getScrollY(); - c.clipRect(sx, sy+tH, sx+getWidth(), sy+getHeight()); - } - c.translate(0, titleHeight); - super.onDraw(c); - c.restore(); - } - }
\ No newline at end of file diff --git a/src/org/fox/ttrss/offline/OfflineArticleFragment.java b/src/org/fox/ttrss/offline/OfflineArticleFragment.java index dabf84b0..f8876f99 100644 --- a/src/org/fox/ttrss/offline/OfflineArticleFragment.java +++ b/src/org/fox/ttrss/offline/OfflineArticleFragment.java @@ -211,7 +211,7 @@ public class OfflineArticleFragment extends Fragment implements GestureDetector. getActivity().getTheme().resolveAttribute(R.attr.linkColor, tv, true); // prevent flicker in ics - if (android.os.Build.VERSION.SDK_INT >= 11) { + if (android.os.Build.VERSION.SDK_INT >= 11 && android.os.Build.VERSION.SDK_INT < 14) { web.setLayerType(View.LAYER_TYPE_SOFTWARE, null); } @@ -280,7 +280,7 @@ public class OfflineArticleFragment extends Fragment implements GestureDetector. cssOverride + "</style>" + "</head>" + - "<body>" + articleContent + "<p> </p><p> </p><p> </p><p> </p></body></html>"; + "<body>" + articleContent + "</body></html>"; try { String baseUrl = null; diff --git a/src/org/fox/ttrss/util/NoChildFocusScrollView.java b/src/org/fox/ttrss/util/NoChildFocusScrollView.java new file mode 100644 index 00000000..3dea82a4 --- /dev/null +++ b/src/org/fox/ttrss/util/NoChildFocusScrollView.java @@ -0,0 +1,34 @@ +package org.fox.ttrss.util;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.View;
+import android.webkit.WebView;
+import android.widget.ScrollView;
+
+public class NoChildFocusScrollView extends ScrollView {
+
+ public NoChildFocusScrollView(Context context) {
+ super(context);
+ // TODO Auto-generated constructor stub
+ }
+
+
+ public NoChildFocusScrollView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ // TODO Auto-generated constructor stub
+ }
+
+ public NoChildFocusScrollView(Context context, AttributeSet attrs,
+ int defStyle) {
+ super(context, attrs, defStyle);
+ // TODO Auto-generated constructor stub
+ }
+
+ @Override
+ public void requestChildFocus(View child, View focused) {
+ if (focused instanceof WebView )
+ return;
+ super.requestChildFocus(child, focused);
+ }
+}
|