Niedzielski has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/312059

Change subject: Add multicolumn support to feed header
......................................................................

Add multicolumn support to feed header

This feels a little clunky but seems acceptable.

Change-Id: Ifb5b8a49a25cf272caa7b195fad7dd74d11f2436
---
M app/src/main/java/org/wikipedia/feed/FeedFragment.java
A app/src/main/java/org/wikipedia/feed/FeedHeaderView.java
M app/src/main/res/layout/fragment_feed.xml
A app/src/main/res/layout/view_feed_header.xml
M app/src/main/res/values/dimens.xml
M app/src/main/res/values/strings.xml
6 files changed, 90 insertions(+), 45 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/59/312059/1

diff --git a/app/src/main/java/org/wikipedia/feed/FeedFragment.java 
b/app/src/main/java/org/wikipedia/feed/FeedFragment.java
index f0f5a65..2829087 100644
--- a/app/src/main/java/org/wikipedia/feed/FeedFragment.java
+++ b/app/src/main/java/org/wikipedia/feed/FeedFragment.java
@@ -5,9 +5,9 @@
 import android.support.annotation.IntRange;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.design.widget.AppBarLayout;
 import android.support.design.widget.Snackbar;
 import android.support.v4.app.Fragment;
-import android.support.v4.content.ContextCompat;
 import android.support.v4.widget.SwipeRefreshLayout;
 import android.support.v7.widget.RecyclerView;
 import android.view.LayoutInflater;
@@ -16,7 +16,6 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.ImageView;
 
 import org.wikipedia.BackPressedHandler;
 import org.wikipedia.BuildConfig;
@@ -49,14 +48,15 @@
 import butterknife.Unbinder;
 
 public class FeedFragment extends Fragment implements BackPressedHandler {
-    @BindView(R.id.feed_swipe_refresh_layout) SwipeRefreshLayout 
swipeRefreshLayout;
+    @BindView(R.id.fragment_feed_swipe_refresh_layout) SwipeRefreshLayout 
swipeRefreshLayout;
+    @BindView(R.id.fragment_feed_app_bar) AppBarLayout appBarLayout;
     @BindView(R.id.fragment_feed_feed) FeedView feedView;
-    @BindView(R.id.fragment_feed_header) View feedHeader;
-    @BindView(R.id.fragment_feed_header_image) ImageView feedHeaderImage;
+
     private Unbinder unbinder;
     private WikipediaApp app;
     private FeedCoordinator coordinator;
     private FeedFunnel funnel;
+    private AppBarLayout.OnOffsetChangedListener appBarLayoutOffsetListener;
     private FeedViewCallback feedCallback = new FeedCallback();
     private FeedScrollListener feedScrollListener = new FeedScrollListener();
     private OverflowCallback overflowCallback = new OverflowCallback();
@@ -102,9 +102,6 @@
         feedView.callback(feedCallback);
         feedView.addOnScrollListener(feedScrollListener);
 
-        
feedHeaderImage.setImageDrawable(ContextCompat.getDrawable(getContext(),
-                headerImageToggle() ? R.drawable.ic_feed_header_male : 
R.drawable.ic_feed_header_female));
-
         swipeRefreshLayout.setColorSchemeResources(R.color.foundation_blue);
         swipeRefreshLayout.setOnRefreshListener(new 
SwipeRefreshLayout.OnRefreshListener() {
             @Override
@@ -114,6 +111,12 @@
                 coordinator.more(app.getSite());
             }
         });
+        appBarLayoutOffsetListener = new 
AppBarLayout.OnOffsetChangedListener() {
+            @Override public void onOffsetChanged(AppBarLayout appBarLayout, 
int verticalOffset) {
+                swipeRefreshLayout.setEnabled(verticalOffset == 0);
+            }
+        };
+        appBarLayout.addOnOffsetChangedListener(appBarLayoutOffsetListener);
 
         coordinator.setFeedUpdateListener(new 
FeedCoordinator.FeedUpdateListener() {
             @Override
@@ -139,6 +142,7 @@
     @Override
     public void onDestroyView() {
         coordinator.setFeedUpdateListener(null);
+        appBarLayout.removeOnOffsetChangedListener(appBarLayoutOffsetListener);
         swipeRefreshLayout.setOnRefreshListener(null);
         feedView.removeOnScrollListener(feedScrollListener);
         feedView.callback((FeedViewCallback) null);
@@ -289,11 +293,6 @@
         @Override
         public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
             super.onScrolled(recyclerView, dx, dy);
-            int yOffset = feedView.computeVerticalScrollOffset();
-            if (yOffset <= feedHeader.getHeight()
-                    || feedHeader.getTranslationY() > -feedHeader.getHeight()) 
{
-                feedHeader.setTranslationY(-yOffset);
-            }
             boolean shouldShowSearchIcon = 
feedView.getFirstVisibleItemPosition() != 0;
             if (shouldShowSearchIcon != searchIconVisible) {
                 searchIconVisible = shouldShowSearchIcon;
@@ -313,11 +312,6 @@
             }
         });
         snackbar.show();
-    }
-
-    private boolean headerImageToggle() {
-        String id = app.getAppInstallID();
-        return id.charAt(id.length() - 1) % 2 == 0;
     }
 
     private void showOverflowMenu(@NonNull View anchor) {
diff --git a/app/src/main/java/org/wikipedia/feed/FeedHeaderView.java 
b/app/src/main/java/org/wikipedia/feed/FeedHeaderView.java
new file mode 100644
index 0000000..b1e2e35
--- /dev/null
+++ b/app/src/main/java/org/wikipedia/feed/FeedHeaderView.java
@@ -0,0 +1,38 @@
+package org.wikipedia.feed;
+
+import android.content.Context;
+import android.support.design.widget.CollapsingToolbarLayout;
+import android.util.AttributeSet;
+import android.widget.ImageView;
+
+import org.wikipedia.R;
+import org.wikipedia.WikipediaApp;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+
+public class FeedHeaderView extends CollapsingToolbarLayout {
+    @BindView(R.id.view_feed_header_image) ImageView image;
+
+    public FeedHeaderView(Context context) {
+        this(context, null);
+    }
+
+    public FeedHeaderView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public FeedHeaderView(Context context, AttributeSet attrs, int 
defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+
+        inflate(getContext(), R.layout.view_feed_header, this);
+        ButterKnife.bind(this);
+        image.setImageResource(isDrawableMale() ? 
R.drawable.ic_feed_header_male
+                : R.drawable.ic_feed_header_female);
+    }
+
+    private boolean isDrawableMale() {
+        String id = WikipediaApp.getInstance().getAppInstallID();
+        return id.charAt(id.length() - 1) % 2 == 0;
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_feed.xml 
b/app/src/main/res/layout/fragment_feed.xml
index 28f484a..aa40775 100644
--- a/app/src/main/res/layout/fragment_feed.xml
+++ b/app/src/main/res/layout/fragment_feed.xml
@@ -1,48 +1,37 @@
 <?xml version="1.0" encoding="utf-8"?>
-<android.support.v4.widget.SwipeRefreshLayout
+<org.wikipedia.views.SwipeRefreshLayoutWithScroll
     xmlns:android="http://schemas.android.com/apk/res/android";
     xmlns:app="http://schemas.android.com/apk/res-auto";
-    android:id="@+id/feed_swipe_refresh_layout"
+    android:id="@+id/fragment_feed_swipe_refresh_layout"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="?attr/feed_window_background_color">
 
-    <FrameLayout
+    <android.support.design.widget.CoordinatorLayout
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
-        <FrameLayout
-            android:id="@+id/fragment_feed_header"
+        <android.support.design.widget.AppBarLayout
             android:layout_width="match_parent"
-            android:layout_height="150dp">
+            android:layout_height="wrap_content"
+            android:id="@+id/fragment_feed_app_bar">
 
-            <ImageView
-                android:id="@+id/fragment_feed_header_image"
-                android:layout_width="match_parent"
-                android:layout_height="match_parent"
-                app:srcCompat="@drawable/ic_feed_header_female"
-                android:background="@color/dark_blue"
-                android:contentDescription="@null"/>
-
-            <TextView
+            <org.wikipedia.feed.FeedHeaderView
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="16dp"
-                android:gravity="center"
-                android:textStyle="italic"
-                android:maxLines="1"
-                android:text="@string/feed_header_label"
-                android:textColor="@android:color/white"/>
+                app:layout_scrollFlags="scroll|exitUntilCollapsed" />
 
-        </FrameLayout>
+        </android.support.design.widget.AppBarLayout>
 
         <org.wikipedia.feed.view.FeedView
             android:id="@+id/fragment_feed_feed"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:scrollbars="vertical"
-            app:minColumnWidth="@dimen/view_feed_min_column_width"/>
+            app:minColumnWidth="@dimen/view_feed_min_column_width"
+            app:layout_behavior="@string/appbar_scrolling_view_behavior"
+            app:behavior_overlapTop="32dp" />
 
-    </FrameLayout>
+    </android.support.design.widget.CoordinatorLayout>
 
-</android.support.v4.widget.SwipeRefreshLayout>
+</org.wikipedia.views.SwipeRefreshLayoutWithScroll>
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_feed_header.xml 
b/app/src/main/res/layout/view_feed_header.xml
new file mode 100644
index 0000000..4eb3ef1
--- /dev/null
+++ b/app/src/main/res/layout/view_feed_header.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<merge
+    xmlns:android="http://schemas.android.com/apk/res/android";
+    xmlns:app="http://schemas.android.com/apk/res-auto";>
+
+    <ImageView
+        android:id="@+id/view_feed_header_image"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:minHeight="150dp"
+        app:srcCompat="@drawable/ic_feed_header_female"
+        android:background="@color/dark_blue"
+        android:contentDescription="@null" />
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="16dp"
+        android:gravity="center"
+        android:textStyle="italic"
+        android:text="@string/view_feed_header_text"
+        android:textColor="@android:color/white" />
+
+</merge>
\ No newline at end of file
diff --git a/app/src/main/res/values/dimens.xml 
b/app/src/main/res/values/dimens.xml
index 8f7939c..0ad0aa0 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -90,7 +90,7 @@
 
     <!-- The Feed -->
     <dimen name="view_feed_header_height">160dp</dimen>
-    <dimen name="view_feed_padding_top">120dp</dimen>
+    <dimen name="view_feed_padding_top">10dp</dimen>
     <dimen name="view_feed_min_column_width">320dp</dimen>
     <dimen name="view_list_card_margin_vertical">5dp</dimen>
     <dimen name="view_list_card_margin_horizontal">7dp</dimen>
diff --git a/app/src/main/res/values/strings.xml 
b/app/src/main/res/values/strings.xml
index 976a7bf..8891ef9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -312,7 +312,7 @@
     <string name="menu_feed_card_dismiss">Hide this card</string>
     <string name="menu_feed_card_dismissed">Card hidden.</string>
     <string name="menu_feed_overflow_label">More options</string>
-    <string name="feed_header_label">Explore the world of free 
knowledge</string>
+    <string name="view_feed_header_text">Explore the world of free 
knowledge</string>
 
     <string name="feed_featured_image_share_subject">Featured image from 
Wikimedia Commons</string>
     <string name="feed">Explore</string>

-- 
To view, visit https://gerrit.wikimedia.org/r/312059
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ifb5b8a49a25cf272caa7b195fad7dd74d11f2436
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to