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
