Disable remaining visible number keys when advanced panel is shown
Bug: 15289616
Change-Id: I595fb432335434af5ba1ac7687fec7f55d502f0d
diff --git a/src/com/android/calculator2/CalculatorPadViewPager.java b/src/com/android/calculator2/CalculatorPadViewPager.java
index af16d47..bc015f2 100644
--- a/src/com/android/calculator2/CalculatorPadViewPager.java
+++ b/src/com/android/calculator2/CalculatorPadViewPager.java
@@ -51,20 +51,41 @@
return position == 1 ? 0.8f : 1.0f;
}
};
+
+ private final OnPageChangeListener mOnPageChangeListener = new SimpleOnPageChangeListener() {
+ private void recursivelySetEnabled(View view, boolean enabled) {
+ if (view instanceof ViewGroup) {
+ final ViewGroup viewGroup = (ViewGroup) view;
+ for (int childIndex = 0; childIndex < viewGroup.getChildCount(); ++childIndex) {
+ recursivelySetEnabled(viewGroup.getChildAt(childIndex), enabled);
+ }
+ } else {
+ view.setEnabled(enabled);
+ }
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ if (getAdapter() == mStaticPagerAdapter) {
+ for (int childIndex = 0; childIndex < getChildCount(); ++childIndex) {
+ // Only enable subviews of the current page.
+ recursivelySetEnabled(getChildAt(childIndex), childIndex == position);
+ }
+ }
+ }
+ };
+
private final PageTransformer mPageTransformer = new PageTransformer() {
@Override
public void transformPage(View view, float position) {
- if (position < -1.0f) {
- view.setAlpha(0.0f);
- } else if (position <= 0.0f) {
+ if (position < 0.0f) {
// Pin the left page to the left side.
view.setTranslationX(getWidth() * -position);
- } else if (position <= 1.0f) {
- // Use the default slide transition when moving to the next page.
- view.setAlpha(1.0f);
- view.setTranslationX(0.0f);
+ view.setAlpha(Math.max(1.0f + position, 0.0f));
} else {
- view.setAlpha(0.0f);
+ // Use the default slide transition when moving to the next page.
+ view.setTranslationX(0.0f);
+ view.setAlpha(1.0f);
}
}
};
@@ -77,6 +98,8 @@
super(context, attrs);
setAdapter(mStaticPagerAdapter);
+ setBackgroundColor(getResources().getColor(android.R.color.black));
+ setOnPageChangeListener(mOnPageChangeListener);
setPageMargin(getResources().getDimensionPixelSize(R.dimen.pad_page_margin));
setPageTransformer(false, mPageTransformer);
}