diff options
author | Dianne Hackborn <hackbod@google.com> | 2012-09-16 13:15:18 -0700 |
---|---|---|
committer | Dianne Hackborn <hackbod@google.com> | 2012-09-16 13:18:10 -0700 |
commit | 8ec226e8c778a3d1b4268edc33cd7c515d88ab31 (patch) | |
tree | d2c07b9b3ae9a1496a5780bcd81c9c2fb009e9de /src/com/android/packageinstaller/CaffeinatedScrollView.java | |
parent | 37df032e580ab6bed29eb40b72df1f49cefd2af1 (diff) | |
download | android_packages_apps_PackageInstaller-8ec226e8c778a3d1b4268edc33cd7c515d88ab31.tar.gz android_packages_apps_PackageInstaller-8ec226e8c778a3d1b4268edc33cd7c515d88ab31.tar.bz2 android_packages_apps_PackageInstaller-8ec226e8c778a3d1b4268edc33cd7c515d88ab31.zip |
Further adjustment of the new package installer UI.
- Privacy and Device permissions are not shown as separate tabs,
but instead separate sections in the same single scrollable
permissions list.
- No tabs are shown when installing a new app (they are all in
the new single list); two tabs are shown when installing an
update: the new permissions, and all permissions.
- If you are reviewing more permissions than fit on the screen,
the "install" button is changed to a "next" button until you
scroll through the entire list.
Change-Id: I0665a797f80ba5276e782e94be97090a429e5280
Diffstat (limited to 'src/com/android/packageinstaller/CaffeinatedScrollView.java')
-rw-r--r-- | src/com/android/packageinstaller/CaffeinatedScrollView.java | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/src/com/android/packageinstaller/CaffeinatedScrollView.java b/src/com/android/packageinstaller/CaffeinatedScrollView.java new file mode 100644 index 00000000..723ae13c --- /dev/null +++ b/src/com/android/packageinstaller/CaffeinatedScrollView.java @@ -0,0 +1,75 @@ +/* +** +** Copyright 2012, The Android Open Source Project +** +** Licensed under the Apache License, Version 2.0 (the "License"); +** you may not use this file except in compliance with the License. +** You may obtain a copy of the License at +** +** http://www.apache.org/licenses/LICENSE-2.0 +** +** Unless required by applicable law or agreed to in writing, software +** distributed under the License is distributed on an "AS IS" BASIS, +** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +** See the License for the specific language governing permissions and +** limitations under the License. +*/ + +package com.android.packageinstaller; + +import android.content.Context; +import android.graphics.Canvas; +import android.util.AttributeSet; +import android.widget.ScrollView; + +/** + * It's a ScrollView that knows how to stay awake. + */ +class CaffeinatedScrollView extends ScrollView { + private Runnable mFullScrollAction; + private int mBottomSlop; + + public CaffeinatedScrollView(Context context) { + super(context); + } + + public CaffeinatedScrollView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + /** + * Make this visible so we can call it + */ + @Override + public boolean awakenScrollBars() { + return super.awakenScrollBars(); + } + + public void setFullScrollAction(Runnable action) { + mFullScrollAction = action; + mBottomSlop = (int)(4 * getResources().getDisplayMetrics().density); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + checkFullScrollAction(); + } + + @Override + protected void onScrollChanged(int l, int t, int oldl, int oldt) { + super.onScrollChanged(l, t, oldl, oldt); + checkFullScrollAction(); + } + + private void checkFullScrollAction() { + if (mFullScrollAction != null) { + int daBottom = getChildAt(0).getBottom(); + int screenBottom = getScrollY() + getHeight() - getPaddingBottom(); + if ((daBottom - screenBottom) < mBottomSlop) { + mFullScrollAction.run(); + mFullScrollAction = null; + } + } + } +} |