From 42a4fd5d3978c7c488e31389b0caa8096649c363 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 11 May 2015 01:34:24 +0400 Subject: add experimental hiding actionbar on scroll --- .../main/java/org/fox/ttrss/ArticleFragment.java | 20 +++++++++- .../main/java/org/fox/ttrss/HeadlinesActivity.java | 4 ++ .../org/fox/ttrss/util/NoChildFocusScrollView.java | 2 +- .../org/fox/ttrss/util/NotifyingScrollView.java | 45 ++++++++++++++++++++++ .../src/main/res/layout/article_fragment.xml | 8 ++++ .../src/main/res/layout/headlines_articles.xml | 1 - org.fox.ttrss/src/main/res/values/style.xml | 2 + 7 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java index 3c740c91..4192e481 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/ArticleFragment.java @@ -15,6 +15,7 @@ import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; +import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -24,12 +25,14 @@ import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebView.HitTestResult; import android.widget.FrameLayout; +import android.widget.ScrollView; import android.widget.TextView; import com.shamanland.fab.ShowHideOnScroll; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.Attachment; +import org.fox.ttrss.util.NotifyingScrollView; import java.net.MalformedURLException; import java.net.URI; @@ -165,9 +168,24 @@ public class ArticleFragment extends Fragment { m_contentView = view.findViewById(R.id.article_scrollview); m_customViewContainer = (FrameLayout) view.findViewById(R.id.article_fullscreen_video); - View scrollView = view.findViewById(R.id.article_scrollview); + NotifyingScrollView scrollView = (NotifyingScrollView) view.findViewById(R.id.article_scrollview); m_fab = view.findViewById(R.id.article_fab); + if (scrollView != null && m_activity.isSmallScreen()) { + view.findViewById(R.id.article_heading_spacer).setVisibility(View.VISIBLE); + + scrollView.setOnScrollChangedListener(new NotifyingScrollView.OnScrollChangedListener() { + @Override + public void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) { + if (t > 0 && t > oldt) { + m_activity.getSupportActionBar().hide(); + } else { + m_activity.getSupportActionBar().show(); + } + } + }); + } + if (scrollView != null && m_fab != null) { if (m_prefs.getBoolean("enable_article_fab", true)) { scrollView.setOnTouchListener(new ShowHideOnScroll(m_fab)); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java index 113fe533..2f83245a 100755 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/HeadlinesActivity.java @@ -9,9 +9,11 @@ import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; import android.support.v4.app.FragmentTransaction; +import android.support.v4.view.WindowCompat; import android.util.Log; import android.view.MenuItem; import android.view.View; +import android.view.Window; import org.fox.ttrss.types.Article; import org.fox.ttrss.types.ArticleList; @@ -223,6 +225,8 @@ public class HeadlinesActivity extends OnlineActivity implements HeadlinesEventL saveArticleUnread(article); } + if (!getSupportActionBar().isShowing()) getSupportActionBar().show(); + if (open) { final Article fArticle = article; diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java index b5ec23c5..5e5c8c48 100644 --- a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NoChildFocusScrollView.java @@ -6,7 +6,7 @@ import android.view.View; import android.webkit.WebView; import android.widget.ScrollView; -public class NoChildFocusScrollView extends ScrollView { +public class NoChildFocusScrollView extends NotifyingScrollView { public NoChildFocusScrollView(Context context) { super(context); diff --git a/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java new file mode 100644 index 00000000..e128856f --- /dev/null +++ b/org.fox.ttrss/src/main/java/org/fox/ttrss/util/NotifyingScrollView.java @@ -0,0 +1,45 @@ +package org.fox.ttrss.util; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ScrollView; + +/** + * @author Cyril Mottier + */ +public class NotifyingScrollView extends ScrollView { + + /** + * @author Cyril Mottier + */ + public interface OnScrollChangedListener { + void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt); + } + + private OnScrollChangedListener mOnScrollChangedListener; + + public NotifyingScrollView(Context context) { + super(context); + } + + public NotifyingScrollView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public NotifyingScrollView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + @Override + protected void onScrollChanged(int l, int t, int oldl, int oldt) { + super.onScrollChanged(l, t, oldl, oldt); + if (mOnScrollChangedListener != null) { + mOnScrollChangedListener.onScrollChanged(this, l, t, oldl, oldt); + } + } + + public void setOnScrollChangedListener(OnScrollChangedListener listener) { + mOnScrollChangedListener = listener; + } + +} \ No newline at end of file diff --git a/org.fox.ttrss/src/main/res/layout/article_fragment.xml b/org.fox.ttrss/src/main/res/layout/article_fragment.xml index b974dc76..77e9928a 100755 --- a/org.fox.ttrss/src/main/res/layout/article_fragment.xml +++ b/org.fox.ttrss/src/main/res/layout/article_fragment.xml @@ -22,6 +22,14 @@ android:layout_height="match_parent" android:orientation="vertical" > + + + diff --git a/org.fox.ttrss/src/main/res/values/style.xml b/org.fox.ttrss/src/main/res/values/style.xml index e7be92d6..982fb1a7 100755 --- a/org.fox.ttrss/src/main/res/values/style.xml +++ b/org.fox.ttrss/src/main/res/values/style.xml @@ -81,6 +81,8 @@