Loading core/java/com/android/internal/widget/SlidingTab.java +29 −15 Original line number Original line Diff line number Diff line Loading @@ -17,10 +17,8 @@ package com.android.internal.widget; package com.android.internal.widget; import android.content.Context; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable; import android.os.Vibrator; import android.os.Vibrator; Loading @@ -38,6 +36,7 @@ import android.view.animation.Animation.AnimationListener; import android.widget.ImageView; import android.widget.ImageView; import android.widget.TextView; import android.widget.TextView; import android.widget.ImageView.ScaleType; import android.widget.ImageView.ScaleType; import com.android.internal.R; import com.android.internal.R; /** /** Loading Loading @@ -69,21 +68,21 @@ public class SlidingTab extends ViewGroup { private int mGrabbedState = OnTriggerListener.NO_HANDLE; private int mGrabbedState = OnTriggerListener.NO_HANDLE; private boolean mTriggered = false; private boolean mTriggered = false; private Vibrator mVibrator; private Vibrator mVibrator; private float mDensity; // used to scale dimensions for bitmaps. private final float mDensity; // used to scale dimensions for bitmaps. /** /** * Either {@link #HORIZONTAL} or {@link #VERTICAL}. * Either {@link #HORIZONTAL} or {@link #VERTICAL}. */ */ private int mOrientation; private final int mOrientation; private Slider mLeftSlider; private final Slider mLeftSlider; private Slider mRightSlider; private final Slider mRightSlider; private Slider mCurrentSlider; private Slider mCurrentSlider; private boolean mTracking; private boolean mTracking; private float mThreshold; private float mThreshold; private Slider mOtherSlider; private Slider mOtherSlider; private boolean mAnimating; private boolean mAnimating; private Rect mTmpRect; private final Rect mTmpRect; /** /** * Listener used to reset the view when the current animation completes. * Listener used to reset the view when the current animation completes. Loading Loading @@ -608,6 +607,15 @@ public class SlidingTab extends ViewGroup { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_CANCEL: cancelGrab(); break; } } return mTracking || super.onTouchEvent(event); } private void cancelGrab() { mTracking = false; mTracking = false; mTriggered = false; mTriggered = false; mOtherSlider.show(true); mOtherSlider.show(true); Loading @@ -616,11 +624,6 @@ public class SlidingTab extends ViewGroup { mCurrentSlider = null; mCurrentSlider = null; mOtherSlider = null; mOtherSlider = null; setGrabbedState(OnTriggerListener.NO_HANDLE); setGrabbedState(OnTriggerListener.NO_HANDLE); break; } } return mTracking || super.onTouchEvent(event); } } void startAnimating(final boolean holdAfter) { void startAnimating(final boolean holdAfter) { Loading Loading @@ -832,6 +835,17 @@ public class SlidingTab extends ViewGroup { } } } } @Override protected void onVisibilityChanged(View changedView, int visibility) { super.onVisibilityChanged(changedView, visibility); // When visibility changes and the user has a tab selected, unselect it and // make sure their callback gets called. if (changedView == this && visibility != VISIBLE && mGrabbedState != OnTriggerListener.NO_HANDLE) { cancelGrab(); } } /** /** * Sets the current grabbed state, and dispatches a grabbed state change * Sets the current grabbed state, and dispatches a grabbed state change * event to our listener. * event to our listener. Loading Loading
core/java/com/android/internal/widget/SlidingTab.java +29 −15 Original line number Original line Diff line number Diff line Loading @@ -17,10 +17,8 @@ package com.android.internal.widget; package com.android.internal.widget; import android.content.Context; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.Rect; import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable; import android.os.Vibrator; import android.os.Vibrator; Loading @@ -38,6 +36,7 @@ import android.view.animation.Animation.AnimationListener; import android.widget.ImageView; import android.widget.ImageView; import android.widget.TextView; import android.widget.TextView; import android.widget.ImageView.ScaleType; import android.widget.ImageView.ScaleType; import com.android.internal.R; import com.android.internal.R; /** /** Loading Loading @@ -69,21 +68,21 @@ public class SlidingTab extends ViewGroup { private int mGrabbedState = OnTriggerListener.NO_HANDLE; private int mGrabbedState = OnTriggerListener.NO_HANDLE; private boolean mTriggered = false; private boolean mTriggered = false; private Vibrator mVibrator; private Vibrator mVibrator; private float mDensity; // used to scale dimensions for bitmaps. private final float mDensity; // used to scale dimensions for bitmaps. /** /** * Either {@link #HORIZONTAL} or {@link #VERTICAL}. * Either {@link #HORIZONTAL} or {@link #VERTICAL}. */ */ private int mOrientation; private final int mOrientation; private Slider mLeftSlider; private final Slider mLeftSlider; private Slider mRightSlider; private final Slider mRightSlider; private Slider mCurrentSlider; private Slider mCurrentSlider; private boolean mTracking; private boolean mTracking; private float mThreshold; private float mThreshold; private Slider mOtherSlider; private Slider mOtherSlider; private boolean mAnimating; private boolean mAnimating; private Rect mTmpRect; private final Rect mTmpRect; /** /** * Listener used to reset the view when the current animation completes. * Listener used to reset the view when the current animation completes. Loading Loading @@ -608,6 +607,15 @@ public class SlidingTab extends ViewGroup { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_CANCEL: cancelGrab(); break; } } return mTracking || super.onTouchEvent(event); } private void cancelGrab() { mTracking = false; mTracking = false; mTriggered = false; mTriggered = false; mOtherSlider.show(true); mOtherSlider.show(true); Loading @@ -616,11 +624,6 @@ public class SlidingTab extends ViewGroup { mCurrentSlider = null; mCurrentSlider = null; mOtherSlider = null; mOtherSlider = null; setGrabbedState(OnTriggerListener.NO_HANDLE); setGrabbedState(OnTriggerListener.NO_HANDLE); break; } } return mTracking || super.onTouchEvent(event); } } void startAnimating(final boolean holdAfter) { void startAnimating(final boolean holdAfter) { Loading Loading @@ -832,6 +835,17 @@ public class SlidingTab extends ViewGroup { } } } } @Override protected void onVisibilityChanged(View changedView, int visibility) { super.onVisibilityChanged(changedView, visibility); // When visibility changes and the user has a tab selected, unselect it and // make sure their callback gets called. if (changedView == this && visibility != VISIBLE && mGrabbedState != OnTriggerListener.NO_HANDLE) { cancelGrab(); } } /** /** * Sets the current grabbed state, and dispatches a grabbed state change * Sets the current grabbed state, and dispatches a grabbed state change * event to our listener. * event to our listener. Loading