summaryrefslogtreecommitdiffstats
path: root/src/com/android/packageinstaller/permission/ui/PermissionsFrameFragment.java
diff options
context:
space:
mode:
authorJason Monk <jmonk@google.com>2015-07-07 16:27:22 -0400
committerJason Monk <jmonk@google.com>2015-07-07 16:27:22 -0400
commit39e9a82e0d5ea964f6ad187669e4358da40a132a (patch)
tree4d12e0a865929fd578221acf3a9e4a855f4f9f1a /src/com/android/packageinstaller/permission/ui/PermissionsFrameFragment.java
parentfa14b80793711f72f190fef5a41228776b97e6a0 (diff)
downloadandroid_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.java63
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) {