diff options
author | Jason Monk <jmonk@google.com> | 2015-07-07 16:27:22 -0400 |
---|---|---|
committer | Jason Monk <jmonk@google.com> | 2015-07-07 16:27:22 -0400 |
commit | 39e9a82e0d5ea964f6ad187669e4358da40a132a (patch) | |
tree | 4d12e0a865929fd578221acf3a9e4a855f4f9f1a /src/com | |
parent | fa14b80793711f72f190fef5a41228776b97e6a0 (diff) | |
download | android_packages_apps_PackageInstaller-39e9a82e0d5ea964f6ad187669e4358da40a132a.tar.gz android_packages_apps_PackageInstaller-39e9a82e0d5ea964f6ad187669e4358da40a132a.tar.bz2 android_packages_apps_PackageInstaller-39e9a82e0d5ea964f6ad187669e4358da40a132a.zip |
Add loading screens to permissions
Styled the same way as in settings.
Bug: 22234767
Change-Id: If21d71b132e5f0e69b65109c479162f03116dab8
Diffstat (limited to 'src/com')
4 files changed, 70 insertions, 5 deletions
diff --git a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java index 92ad7c8a..52a2c8e1 100644 --- a/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/AppPermissionsFragment.java @@ -82,6 +82,7 @@ public final class AppPermissionsFragment extends SettingsWithHeader @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setLoading(true, false); mHasConfirmedRevoke = false; setHasOptionsMenu(true); final ActionBar ab = getActivity().getActionBar(); @@ -247,6 +248,9 @@ public final class AppPermissionsFragment extends SettingsWithHeader mExtraScreen.getPreferenceCount())); screen.addPreference(extraPerms); } + if (screen.getPreferenceCount() != 0) { + setLoading(false, true); + } } @Override diff --git a/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java b/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java index d0609fd0..a814550c 100644 --- a/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/ManagePermissionsFragment.java @@ -68,6 +68,7 @@ public final class ManagePermissionsFragment extends PermissionsFrameFragment @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + setLoading(true, false); setHasOptionsMenu(true); final ActionBar ab = getActivity().getActionBar(); if (ab != null) { @@ -257,6 +258,9 @@ public final class ManagePermissionsFragment extends PermissionsFrameFragment mExtraScreen.getPreferenceCount())); screen.addPreference(extraScreenPreference); } + if (screen.getPreferenceCount() != 0) { + setLoading(false, true); + } } public static class AdditionalPermissionsFragment extends PermissionsFrameFragment { diff --git a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java index d0fff16c..92c53fb6 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionAppsFragment.java @@ -77,6 +77,7 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setLoading(true, false); setHasOptionsMenu(true); final ActionBar ab = getActivity().getActionBar(); if (ab != null) { @@ -198,6 +199,9 @@ public final class PermissionAppsFragment extends PermissionsFrameFragment imple } pref.setChecked(app.areRuntimePermissionsGranted()); } + if (preferences.getPreferenceCount() != 0) { + setLoading(false, true); + } } @Override diff --git a/src/com/android/packageinstaller/permission/ui/PermissionsFrameFragment.java b/src/com/android/packageinstaller/permission/ui/PermissionsFrameFragment.java index 2abdbd2a..88eda41f 100644 --- a/src/com/android/packageinstaller/permission/ui/PermissionsFrameFragment.java +++ b/src/com/android/packageinstaller/permission/ui/PermissionsFrameFragment.java @@ -11,6 +11,9 @@ import android.support.v7.widget.RecyclerView.AdapterDataObserver; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.animation.Animation; +import android.view.animation.Animation.AnimationListener; +import android.view.animation.AnimationUtils; import android.widget.TextView; import com.android.packageinstaller.R; @@ -24,6 +27,10 @@ public abstract class PermissionsFrameFragment extends PreferenceFragment { // TV-specific instance variables @Nullable private VerticalGridView mGridView; + private View mLoadingView; + private ViewGroup mPrefsView; + private boolean mIsLoading; + /** * Returns the view group that holds the preferences objects. This will * only be set after {@link #onCreateView} has been called. @@ -37,13 +44,15 @@ public abstract class PermissionsFrameFragment extends PreferenceFragment { Bundle savedInstanceState) { ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.permissions_frame, container, false); - ViewGroup prefsContainer = (ViewGroup) rootView.findViewById(R.id.prefs_container); - if (prefsContainer == null) { - prefsContainer = rootView; + mPrefsView = (ViewGroup) rootView.findViewById(R.id.prefs_container); + if (mPrefsView == null) { + mPrefsView = rootView; } + mLoadingView = rootView.findViewById(R.id.loading_container); mPreferencesContainer = (ViewGroup) super.onCreateView( - inflater, prefsContainer, savedInstanceState); - prefsContainer.addView(mPreferencesContainer); + inflater, mPrefsView, savedInstanceState); + setLoading(mIsLoading, false, true /* force */); + mPrefsView.addView(mPreferencesContainer); return rootView; } @@ -56,6 +65,50 @@ public abstract class PermissionsFrameFragment extends PreferenceFragment { } } + protected void setLoading(boolean loading, boolean animate) { + setLoading(loading, animate, false); + } + + private void setLoading(boolean loading, boolean animate, boolean force) { + if (mIsLoading != loading || force) { + mIsLoading = loading; + if (mLoadingView == null) { + return; + } + setViewShown(mPrefsView, !loading, animate); + setViewShown(mLoadingView, loading, animate); + } + } + + private void setViewShown(final View view, boolean shown, boolean animate) { + if (animate) { + Animation animation = AnimationUtils.loadAnimation(getContext(), + shown ? android.R.anim.fade_in : android.R.anim.fade_out); + if (shown) { + view.setVisibility(View.VISIBLE); + } else { + animation.setAnimationListener(new AnimationListener() { + @Override + public void onAnimationStart(Animation animation) { + } + + @Override + public void onAnimationRepeat(Animation animation) { + } + + @Override + public void onAnimationEnd(Animation animation) { + view.setVisibility(View.INVISIBLE); + } + }); + } + view.startAnimation(animation); + } else { + view.clearAnimation(); + view.setVisibility(shown ? View.VISIBLE : View.INVISIBLE); + } + } + @Override public RecyclerView onCreateRecyclerView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { |