diff options
| author | Ben Murdoch <benm@google.com> | 2011-08-17 20:42:02 +0100 |
|---|---|---|
| committer | Ben Murdoch <benm@google.com> | 2011-08-18 14:12:01 +0100 |
| commit | d51bb570d4806d9e6b3c997bb0868d094f481bf2 (patch) | |
| tree | 7830f285a84ad3b393b05a2e0e7061938ed847ac /src/com/android/browser | |
| parent | 9a75e1bb9b846f29dda007ee8763d5e32fa2341e (diff) | |
| download | packages_apps_Browser-d51bb570d4806d9e6b3c997bb0868d094f481bf2.tar.gz packages_apps_Browser-d51bb570d4806d9e6b3c997bb0868d094f481bf2.tar.bz2 packages_apps_Browser-d51bb570d4806d9e6b3c997bb0868d094f481bf2.zip | |
Replace TitleBar sub views with a ViewStub.
Optimise startup performance by using a ViewStub for TitleBar views
that aren't needed until later.
Bug: 5179151
Change-Id: I87cf23cbd1e3b818a566c95dc6bb9cc1ff366587
Diffstat (limited to 'src/com/android/browser')
| -rw-r--r-- | src/com/android/browser/TitleBar.java | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/src/com/android/browser/TitleBar.java b/src/com/android/browser/TitleBar.java index 9848a3956..8fa4d4372 100644 --- a/src/com/android/browser/TitleBar.java +++ b/src/com/android/browser/TitleBar.java @@ -25,6 +25,7 @@ import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.ViewStub; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationUtils; @@ -72,11 +73,27 @@ public class TitleBar extends RelativeLayout { LayoutInflater factory = LayoutInflater.from(context); factory.inflate(R.layout.title_bar, this); mProgress = (PageProgressView) findViewById(R.id.progress); - mAutoLogin = (AutologinBar) findViewById(R.id.autologin); - mAutoLogin.setTitleBar(this); mNavBar = (NavigationBarBase) findViewById(R.id.taburlbar); mNavBar.setTitleBar(this); - mSnapshotBar = (SnapshotBar) findViewById(R.id.snapshotbar); + } + + private void inflateAutoLoginBar() { + if (mAutoLogin != null) { + return; + } + + ViewStub stub = (ViewStub) findViewById(R.id.autologin_stub); + mAutoLogin = (AutologinBar) stub.inflate(); + mAutoLogin.setTitleBar(this); + } + + private void inflateSnapshotBar() { + if (mSnapshotBar != null) { + return; + } + + ViewStub stub = (ViewStub) findViewById(R.id.snapshotbar_stub); + mSnapshotBar = (SnapshotBar) stub.inflate(); mSnapshotBar.setTitleBar(this); } @@ -236,13 +253,19 @@ public class TitleBar extends RelativeLayout { public int getEmbeddedHeight() { int height = mNavBar.getHeight(); - if (mAutoLogin.getVisibility() == View.VISIBLE) { + if (mAutoLogin != null && mAutoLogin.getVisibility() == View.VISIBLE) { height += mAutoLogin.getHeight(); } return height; } public void updateAutoLogin(Tab tab, boolean animate) { + if (mAutoLogin == null) { + if (tab.getDeviceAccountLogin() == null) { + return; + } + inflateAutoLoginBar(); + } mAutoLogin.updateAutoLogin(tab, animate); } @@ -250,6 +273,9 @@ public class TitleBar extends RelativeLayout { if (mUseQuickControls) { mBaseUi.showTitleBar(); } + if (mAutoLogin == null) { + inflateAutoLoginBar(); + } mAutoLogin.setVisibility(View.VISIBLE); if (animate) { mAutoLogin.startAnimation(AnimationUtils.loadAnimation( @@ -291,12 +317,12 @@ public class TitleBar extends RelativeLayout { public boolean wantsToBeVisible() { return inAutoLogin() - || (mSnapshotBar.getVisibility() == View.VISIBLE + || (mSnapshotBar != null && mSnapshotBar.getVisibility() == View.VISIBLE && mSnapshotBar.isAnimating()); } private boolean inAutoLogin() { - return mAutoLogin.getVisibility() == View.VISIBLE; + return mAutoLogin != null && mAutoLogin.getVisibility() == View.VISIBLE; } public boolean isEditingUrl() { @@ -348,12 +374,18 @@ public class TitleBar extends RelativeLayout { } public void onTabDataChanged(Tab tab) { - mSnapshotBar.onTabDataChanged(tab); + if (mSnapshotBar != null) { + mSnapshotBar.onTabDataChanged(tab); + } + if (tab.isSnapshot()) { + inflateSnapshotBar(); mSnapshotBar.setVisibility(VISIBLE); mNavBar.setVisibility(GONE); } else { - mSnapshotBar.setVisibility(GONE); + if (mSnapshotBar != null) { + mSnapshotBar.setVisibility(GONE); + } mNavBar.setVisibility(VISIBLE); } } |
