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/android/packageinstaller/permission/ui/PermissionsFrameFragment.java | |
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/android/packageinstaller/permission/ui/PermissionsFrameFragment.java')
-rw-r--r-- | src/com/android/packageinstaller/permission/ui/PermissionsFrameFragment.java | 63 |
1 files changed, 58 insertions, 5 deletions
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) { |