下面列出了怎么用android.widget.OverScroller的API类实例代码及写法,或者点击链接到github查看源代码。
private void computeScrollX() {
OverScroller scroller = flingScrollerX;
if(scroller.isFinished()) {
scroller = adjustScrollerX;
if(scroller.isFinished()) {
return;
}
}
if(scroller.computeScrollOffset()) {
int currentScrollerX = scroller.getCurrX();
if(previousScrollerX == Integer.MIN_VALUE) {
previousScrollerX = scroller.getStartX();
}
scrollBy(currentScrollerX - previousScrollerX, 0);
previousScrollerX = currentScrollerX;
if(scroller.isFinished()) {
onScrollerFinishedX(scroller);
}
postInvalidate();
}
}
/**
* creates the viewport
*
* @param graphView graphview
*/
Viewport(ChartView graphView) {
mScroller = new OverScroller(graphView.getContext());
mEdgeEffectTop = new EdgeEffectCompat(graphView.getContext());
mEdgeEffectBottom = new EdgeEffectCompat(graphView.getContext());
mEdgeEffectLeft = new EdgeEffectCompat(graphView.getContext());
mEdgeEffectRight = new EdgeEffectCompat(graphView.getContext());
mGestureDetector = new GestureDetector(graphView.getContext(), mGestureListener);
mScaleGestureDetector = new ScaleGestureDetector(graphView.getContext(), mScaleGestureListener);
mGraphView = graphView;
mXAxisBoundsStatus = AxisBoundsStatus.INITIAL;
mYAxisBoundsStatus = AxisBoundsStatus.INITIAL;
mBackgroundColor = Color.TRANSPARENT;
mPaint = new Paint();
}
CompactCalendarController(Paint dayPaint, OverScroller scroller, Rect textSizeRect, AttributeSet attrs,
Context context, int currentDayBackgroundColor, int calenderTextColor,
int currentSelectedDayBackgroundColor, VelocityTracker velocityTracker,
int multiEventIndicatorColor, EventsContainer eventsContainer,
Locale locale, TimeZone timeZone) {
this.dayPaint = dayPaint;
this.scroller = scroller;
this.textSizeRect = textSizeRect;
this.currentDayBackgroundColor = currentDayBackgroundColor;
this.calenderTextColor = calenderTextColor;
this.currentSelectedDayBackgroundColor = currentSelectedDayBackgroundColor;
this.otherMonthDaysTextColor = calenderTextColor;
this.velocityTracker = velocityTracker;
this.multiEventIndicatorColor = multiEventIndicatorColor;
this.eventsContainer = eventsContainer;
this.locale = locale;
this.timeZone = timeZone;
this.displayOtherMonthDays = false;
loadAttributes(attrs, context);
init(context);
}
public MatrixView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mBitmap = Util.getAvatar(getResources(), DensityUtil.dp2px(220));
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mScreenW = getResources().getDisplayMetrics().widthPixels;
mScreenH = getResources().getDisplayMetrics().heightPixels;
LogUtil.logD("初始化", "mBitmap.H = " + mBitmap
.getHeight() + "->屏幕宽高 = " + mScreenW + "-" + mScreenH);
mDetector = new GestureDetectorCompat(context, this);
mOverScroller = new OverScroller(context);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
velocityX /= 2;
velocityY /= 2;
if(Math.abs(velocityX) < MINIMUM_FLING_VELOCITY) {
velocityX = 0;
}
if(Math.abs(velocityY) < MINIMUM_FLING_VELOCITY) {
velocityY = 0;
}
if(velocityX == 0 && velocityY == 0) {
return true;
}
int width = (int) (imageBounds.right * scale);
int height = (int) (imageBounds.bottom * scale);
OverScroller scroller = new OverScroller(imageView.getContext());
scroller.fling((int) e1.getX(), (int) e1.getY(), (int) velocityX, (int) velocityY, -width, width, -height, height);
TouchPoint target = new TouchPoint(scroller.getFinalX(), scroller.getFinalY());
float x = velocityX == 0 ? position.getX() : target.getX() * scale;
float y = velocityY == 0 ? position.getY() : target.getY() * scale;
gestureAnimator.animateTranslation(position.getX(), x, position.getY(), y);
return true;
}
public Helper(final View view, final Context context, final AttributeSet attrs, final int defStyle) {
if (!(view instanceof IRefreshNowView))
throw new IllegalArgumentException("this view instance must implement IRefreshNowView");
mConfig = new RefreshNowConfig.Builder(context).build();
mView = view;
mEventProcessor = new MotionEventProcessor(context, this);
mScroller = new OverScroller(context);
setRefreshMode(RefreshMode.BOTH);
}
public PanView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// Sets up interactions
mGestureDetector = new GestureDetector(context, new ScrollFlingGestureListener());
mScroller = new OverScroller(context);
mEdgeEffectLeft = new EdgeEffect(context);
mEdgeEffectTop = new EdgeEffect(context);
mEdgeEffectRight = new EdgeEffect(context);
mEdgeEffectBottom = new EdgeEffect(context);
mDrawBlurredPaint = new Paint();
mDrawBlurredPaint.setDither(true);
}
public void forceFinished(boolean finished) {
if (isOld) {
((Scroller) scroller).forceFinished(finished);
} else {
((OverScroller) scroller).forceFinished(finished);
}
}
public CompatScroller(Context context) {
if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) {
isPreGingerbread = true;
scroller = new Scroller(context);
} else {
isPreGingerbread = false;
overScroller = new OverScroller(context);
}
}
public CompatScroller(Context context) {
if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) {
isPreGingerbread = true;
scroller = new Scroller(context);
} else {
isPreGingerbread = false;
overScroller = new OverScroller(context);
}
}
Transform() {
Context ctx = getContext();
mTranslateScroller = new OverScroller(ctx, mInterpolatorProxy);
mScaleScroller = new Scroller(ctx, mInterpolatorProxy);
mFlingScroller = new OverScroller(ctx, mInterpolatorProxy);
mClipScroller = new Scroller(ctx, mInterpolatorProxy);
mRotateScroller = new Scroller(ctx, mInterpolatorProxy);
}
public void forceFinished(boolean finished) {
if (isOld) {
((Scroller) scroller).forceFinished(finished);
} else {
((OverScroller) scroller).forceFinished(finished);
}
}
public void forceFinished(boolean finished) {
if (isOld) {
((Scroller) scroller).forceFinished(finished);
} else {
((OverScroller) scroller).forceFinished(finished);
}
}
public CompatScroller(Context context) {
if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) {
isPreGingerbread = true;
scroller = new Scroller(context);
} else {
isPreGingerbread = false;
overScroller = new OverScroller(context);
}
}
public SwipeMenuLayout(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.SwipeMenuLayout);
mLeftViewId = typedArray.getResourceId(R.styleable.SwipeMenuLayout_leftViewId, mLeftViewId);
mContentViewId = typedArray.getResourceId(R.styleable.SwipeMenuLayout_contentViewId, mContentViewId);
mRightViewId = typedArray.getResourceId(R.styleable.SwipeMenuLayout_rightViewId, mRightViewId);
typedArray.recycle();
ViewConfiguration mViewConfig = ViewConfiguration.get(getContext());
mScaledTouchSlop = mViewConfig.getScaledTouchSlop();
mScroller = new OverScroller(getContext());
mScaledMinimumFlingVelocity = mViewConfig.getScaledMinimumFlingVelocity();
mScaledMaximumFlingVelocity = mViewConfig.getScaledMaximumFlingVelocity();
}
private void init() {
scroller = new OverScroller(getContext(), new DecelerateInterpolator());
setBackgroundDrawable(ThemeUtility.getDrawable(android.R.attr.windowBackground));
this.activity = (Activity) getContext();
this.topView = ((View) (activity.findViewById(android.R.id.content).getParent()));
this.max_motion_event_down_x_position = Utility.dip2px(25);
this.gestureDetector = new GestureDetector(getContext(), new SwipeRightToCloseOnGestureListener());
this.setId(R.id.swipe_framelayout);
}
public CompatScroller(Context context) {
if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) {
isPreGingerbread = true;
scroller = new Scroller(context);
} else {
isPreGingerbread = false;
overScroller = new OverScroller(context);
}
}
private void init() {
// 图片的大小
mImageSize = Utils.dp2px(300);
// 获取图片
mBitmap = Utils.getDrawableBitmap(getContext(), R.drawable.icon_android_road, mImageSize);
// 画笔
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
//
gestureDetectorCompat = new GestureDetectorCompat(getContext(), this);
gestureDetectorCompat.setOnDoubleTapListener(this);
scroller = new OverScroller(getContext());
scaleGestureDetector = new ScaleGestureDetector(getContext(), new ScaleImageScaleGestureDetector());
}
public CompatScroller(Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.GINGERBREAD) {
isPreGingerbread = true;
scroller = new Scroller(context);
} else {
isPreGingerbread = false;
overScroller = new OverScroller(context);
}
}
public CompatScroller(Context context) {
if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) {
isPreGingerbread = true;
scroller = new Scroller(context);
} else {
isPreGingerbread = false;
overScroller = new OverScroller(context);
}
}
public CompatScroller(Context context) {
if (VERSION.SDK_INT < VERSION_CODES.GINGERBREAD) {
isPreGingerbread = true;
scroller = new Scroller(context);
} else {
isPreGingerbread = false;
overScroller = new OverScroller(context);
}
}
public OrientationStrategy(View view, int touchSlop) {
mView = view;
Context context = view.getContext();
mTouchSlop = touchSlop;
mHelperScroller = new ScrollerHelper(new OverScroller(context));
mPositionInfo = new Position();
}
public PullToRefreshView(Context context, AttributeSet attrs) {
super(context, attrs);
mInflater = LayoutInflater.from(context);
mScroller = new OverScroller(context);
//获取自定义属性
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.PullToRefresh);
if (ta.hasValue(R.styleable.PullToRefresh_header_indicator)) {
mHeaderIndicatorClassName = ta.getString(R.styleable.PullToRefresh_header_indicator);
}
if (ta.hasValue(R.styleable.PullToRefresh_footer_indicator)) {
mFooterIndicatorClassName = ta.getString(R.styleable.PullToRefresh_footer_indicator);
}
ta.recycle();
}
public GingerScroller(Context context) {
mScroller = new OverScroller(context);
}
public static void fling(Object scroller, int startX, int startY, int velX, int velY,
int minX, int maxX, int minY, int maxY) {
((OverScroller) scroller).fling(startX, startY, velX, velY, minX, maxX, minY, maxY);
}
public static int getFinalX(Object scroller) {
return ((OverScroller) scroller).getFinalX();
}
public AwContents(AwBrowserContext browserContext, ViewGroup containerView,
InternalAccessDelegate internalAccessAdapter, AwContentsClient contentsClient,
AwLayoutSizer layoutSizer, AwSettings settings) {
mBrowserContext = browserContext;
mContainerView = containerView;
mInternalAccessAdapter = internalAccessAdapter;
mContentsClient = contentsClient;
mLayoutSizer = layoutSizer;
mSettings = settings;
mDIPScale = DeviceDisplayInfo.create(mContainerView.getContext()).getDIPScale();
mLayoutSizer.setDelegate(new AwLayoutSizerDelegate());
mLayoutSizer.setDIPScale(mDIPScale);
mWebContentsDelegate = new AwWebContentsDelegateAdapter(contentsClient, mContainerView);
mContentsClientBridge = new AwContentsClientBridge(contentsClient);
mZoomControls = new AwZoomControls(this);
mIoThreadClient = new IoThreadClientImpl();
mInterceptNavigationDelegate = new InterceptNavigationDelegateImpl();
AwSettings.ZoomSupportChangeListener zoomListener =
new AwSettings.ZoomSupportChangeListener() {
@Override
public void onGestureZoomSupportChanged(boolean supportsGestureZoom) {
mContentViewCore.updateMultiTouchZoomSupport(supportsGestureZoom);
mContentViewCore.updateDoubleTapSupport(supportsGestureZoom);
}
};
mSettings.setZoomListener(zoomListener);
mDefaultVideoPosterRequestHandler = new DefaultVideoPosterRequestHandler(mContentsClient);
mSettings.setDefaultVideoPosterURL(
mDefaultVideoPosterRequestHandler.getDefaultVideoPosterURL());
mSettings.setDIPScale(mDIPScale);
mScrollOffsetManager = new AwScrollOffsetManager(new AwScrollOffsetManagerDelegate(),
new OverScroller(mContainerView.getContext()));
mScrollAccessibilityHelper = new ScrollAccessibilityHelper(mContainerView);
setOverScrollMode(mContainerView.getOverScrollMode());
setScrollBarStyle(mInternalAccessAdapter.super_getScrollBarStyle());
mContainerView.addOnLayoutChangeListener(new AwLayoutChangeListener());
setNewAwContents(nativeInit(mBrowserContext));
onVisibilityChanged(mContainerView, mContainerView.getVisibility());
onWindowVisibilityChanged(mContainerView.getWindowVisibility());
}
@Override
public void autoOpenMenu(OverScroller scroller, int scrollX, int duration) {
scroller.startScroll(Math.abs(scrollX), 0, getMenuView().getWidth() - Math.abs(scrollX), 0, duration);
}
public GingerScroller(Context context) {
mScroller = new OverScroller(context);
}
public GingerScroller(Context context) {
mScroller = new OverScroller(context);
}