Brion VIBBER has submitted this change and it was merged.

Change subject: Add 'loading page' progress indicator on page loads.
......................................................................


Add 'loading page' progress indicator on page loads.

Also subtly animate the switch between the progress animation
and the actual contents of the page.

Change-Id: I1b787ceefe0c736e4d36fb5a3569bfca2b807c3a
TODO: Test on 2.3 devices.
---
M wikipedia/res/layout/fragment_page.xml
M wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
M wikipedia/src/main/java/org/wikimedia/wikipedia/WikipediaApp.java
3 files changed, 55 insertions(+), 8 deletions(-)

Approvals:
  Brion VIBBER: Verified; Looks good to me, approved



diff --git a/wikipedia/res/layout/fragment_page.xml 
b/wikipedia/res/layout/fragment_page.xml
index 4ef69d7..e5fd328 100644
--- a/wikipedia/res/layout/fragment_page.xml
+++ b/wikipedia/res/layout/fragment_page.xml
@@ -1,7 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
 
-<WebView xmlns:android="http://schemas.android.com/apk/res/android";
+
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android";
               android:layout_width="match_parent"
               android:layout_height="match_parent">
-
-</WebView>
\ No newline at end of file
+    <ProgressBar
+        android:id="@+id/pageLoadProgress"
+        android:layout_gravity="center"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:indeterminate="true"
+        />
+    <WebView
+        android:id="@+id/pageWebView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="gone"
+        />
+</FrameLayout>
\ No newline at end of file
diff --git 
a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
index 02663e8..5cc8f2e 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/PageViewFragment.java
@@ -1,12 +1,15 @@
 package org.wikimedia.wikipedia;
 
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.webkit.WebView;
+import android.widget.FrameLayout;
+import android.widget.ProgressBar;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.mediawiki.api.json.Api;
@@ -16,7 +19,9 @@
     public static final String KEY_PAGE = "page";
 
     private PageTitle title;
-    private WebView view;
+    private WebView webView;
+    private ProgressBar loadProgress;
+
     private Page page;
 
     private CommunicationBridge bridge;
@@ -40,6 +45,23 @@
         }
 
         bridge.sendMessage("displayLeadSection", leadSectionPayload);
+
+        webView.setAlpha(0f);
+        webView.setVisibility(View.VISIBLE);
+        webView.animate()
+                .alpha(1.0f)
+                .setDuration(WikipediaApp.MEDIUM_ANIMATION_DURATION)
+                .setListener(null);
+
+        loadProgress.animate()
+                .alpha(0f)
+                .setDuration(WikipediaApp.MEDIUM_ANIMATION_DURATION)
+                .setListener(new AnimatorListenerAdapter() {
+                    @Override
+                    public void onAnimationEnd(Animator animation) {
+                        loadProgress.setVisibility(View.GONE);
+                    }
+                });
     }
 
     @Override
@@ -51,9 +73,12 @@
 
     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
final Bundle savedInstanceState) {
-        view = (WebView) inflater.inflate(R.layout.fragment_page, container, 
false);
+        FrameLayout parentView = (FrameLayout) 
inflater.inflate(R.layout.fragment_page, container, false);
 
-        bridge = new CommunicationBridge(view, 
"file:///android_asset/index.html");
+        webView = (WebView) parentView.findViewById(R.id.pageWebView);
+        loadProgress = (ProgressBar) 
parentView.findViewById(R.id.pageLoadProgress);
+
+        bridge = new CommunicationBridge(webView, 
"file:///android_asset/index.html");
         linkHandler = new LinkHandler(getActivity(), bridge);
 
         if (savedInstanceState != null && 
savedInstanceState.containsKey(KEY_TITLE)) {
@@ -78,6 +103,6 @@
         } else {
             displayPage(page);
         }
-        return view;
+        return parentView;
     }
 }
diff --git a/wikipedia/src/main/java/org/wikimedia/wikipedia/WikipediaApp.java 
b/wikipedia/src/main/java/org/wikimedia/wikipedia/WikipediaApp.java
index 8d396a6..9d8d87c 100644
--- a/wikipedia/src/main/java/org/wikimedia/wikipedia/WikipediaApp.java
+++ b/wikipedia/src/main/java/org/wikimedia/wikipedia/WikipediaApp.java
@@ -1,5 +1,7 @@
 package org.wikimedia.wikipedia;
 
+import android.*;
+import android.R;
 import android.app.Application;
 import com.squareup.otto.Bus;
 import org.mediawiki.api.json.Api;
@@ -7,10 +9,17 @@
 public class WikipediaApp extends Application {
     private Bus bus;
 
+    public static long SHORT_ANIMATION_DURATION;
+    public static long MEDIUM_ANIMATION_DURATION;
+
     @Override
     public void onCreate() {
         super.onCreate();
         bus = new Bus();
+
+        SHORT_ANIMATION_DURATION = 
getResources().getInteger(R.integer.config_shortAnimTime);
+        MEDIUM_ANIMATION_DURATION = 
getResources().getInteger(R.integer.config_mediumAnimTime);
+
     }
 
     public Bus getBus() {

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I1b787ceefe0c736e4d36fb5a3569bfca2b807c3a
Gerrit-PatchSet: 4
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to