public ResolverDrawerLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ResolverDrawerLayout, defStyleAttr, 0); mMaxWidth = a.getDimensionPixelSize(R.styleable.ResolverDrawerLayout_android_maxWidth, -1); mMaxCollapsedHeight = a.getDimensionPixelSize( R.styleable.ResolverDrawerLayout_maxCollapsedHeight, 0); mMaxCollapsedHeightSmall = a.getDimensionPixelSize( R.styleable.ResolverDrawerLayout_maxCollapsedHeightSmall, mMaxCollapsedHeight); a.recycle(); mScrollIndicatorDrawable = context.getDrawable(R.drawable.scroll_indicator_material); mScroller = new OverScroller(context, AnimationUtils.loadInterpolator(context, android.R.interpolator.decelerate_quint)); mVelocityTracker = VelocityTracker.obtain(); final ViewConfiguration vc = ViewConfiguration.get(context); mTouchSlop = vc.getScaledTouchSlop(); mMinFlingVelocity = vc.getScaledMinimumFlingVelocity(); setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES); }
@Override public void computeScroll() { boolean scrollerWorkNow = SCROLL_STATE_SETTLING == mScrollState; OverScroller scroller = scrollerWorkNow ? getScroller() : null; if (scroller != null && scroller.computeScrollOffset()) { int oldX = getScrollX(); int oldY = getScrollY(); int x = scroller.getCurrX(); int y = scroller.getCurrY(); if (oldX != x || oldY != y) { scrollTo(x, y); } ViewCompat.postInvalidateOnAnimation(this); } else { if (scrollerWorkNow) { markAsWillIdle(); } } }
public SpringView(Context context, AttributeSet attrs) { super(context, attrs); this.context = context; inflater = LayoutInflater.from(context); mScroller = new OverScroller(context); //获取自定义属性 TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.SpringView); if (ta.hasValue(R.styleable.SpringView_type)){ int type_int = ta.getInt(R.styleable.SpringView_type, 0); type = Type.values()[type_int]; } if (ta.hasValue(R.styleable.SpringView_give)){ int give_int = ta.getInt(R.styleable.SpringView_give, 0); give = Give.values()[give_int]; } if (ta.hasValue(R.styleable.SpringView_header)){ headerResoureId = ta.getResourceId(R.styleable.SpringView_header, 0); } if (ta.hasValue(R.styleable.SpringView_footer)){ footerResoureId = ta.getResourceId(R.styleable.SpringView_footer, 0); } ta.recycle(); }
private void init() { configuration = ViewConfiguration.get(getContext()); mScroller = new Scroller(getContext(), new OvershootInterpolator(0.75f)); flingRunnable = new FlingRunnable(); overScrollRunnable = new OverScrollRunnable(); flingScroller = new OverScroller(getContext()); detector = new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (isOverScrollTop || isOverScrollBottom || isOverScrollLeft || isOverScrollRight) { return false; } // flingRunnable.start(velocityX, velocityY); return false; } }); }
private void reflectAbsListView() { try { Class<?> absListViewCls = Class.forName("android.widget.AbsListView"); Field mFlingRunnableField = absListViewCls.getDeclaredField("mFlingRunnable"); mFlingRunnableField.setAccessible(true); Object mFlingRunnable = mFlingRunnableField.get(mListView); Class<?> flingRunnableCls = Class.forName("android.widget.AbsListView$FlingRunnable"); Field mScrollerFeild = flingRunnableCls.getDeclaredField("mScroller"); mScrollerFeild.setAccessible(true); mScrollerReflectd = (OverScroller) mScrollerFeild.get(mFlingRunnable); } catch (Exception e) { mScrollerReflectd = null; Log.d(TAG, "###Exception Stack###", new Throwable(e)); } }
/** * 滚动结束后时的速率 */ public float getLastVelocity() { Object mViewFlinger = Reflect.getMember(RecyclerView.class, this, "mViewFlinger"); Object mScroller = Reflect.getMember(mViewFlinger, "mScroller"); float currVelocity = 0f; if (mScroller instanceof OverScroller) { currVelocity = ((OverScroller) mScroller).getCurrVelocity(); } else if (mScroller instanceof ScrollerCompat) { currVelocity = ((ScrollerCompat) mScroller).getCurrVelocity(); } else { throw new IllegalArgumentException("未兼容的mScroller类型:" + mScroller.getClass().getSimpleName()); } if (Float.isNaN(currVelocity)) { currVelocity = mLastVelocity; } else { mLastVelocity = currVelocity; } return currVelocity; }
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 configuration = ViewConfiguration.get(getContext()); mScaledTouchSlop = configuration.getScaledTouchSlop(); mScaledMinimumFlingVelocity = configuration.getScaledMinimumFlingVelocity(); mScaledMaximumFlingVelocity = configuration.getScaledMaximumFlingVelocity(); mScroller = new OverScroller(getContext()); }
private void initLayout() { mOverScroller = new OverScroller(getContext()); mGestureDetectorCompat = new GestureDetectorCompat(getContext(), new GestureDetector.SimpleOnGestureListener() { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, final float velocityY) { if (Math.abs(velocityX) > Math.abs(velocityY)) { return false; } if (isFloat() /*&& velocityY < 0*/) { return false; } fling(velocityY); return true; } }); }
private void init(Context context) { setOrientation(VERTICAL); mOverScroller = new OverScroller(context); final ViewConfiguration configuration = ViewConfiguration.get(context); mTouchSlop = configuration.getScaledTouchSlop(); mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); mMinimumVelocity = configuration.getScaledMinimumFlingVelocity(); }
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 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(); }
public XRefreshLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); MIN_LOADING_LAYOUG_HEIGHT = DensityUtil.dip2px(context, MIN_LOADING_LAYOUG_HEIGHT); OVERSCROLL_RANGE = DensityUtil.dip2px(context, OVERSCROLL_RANGE); scroller = new OverScroller(getContext()); loadingLayout = new DefaultLoadingLayout(); }
protected void initRefreshView() { mScroller = new OverScroller(getContext(), new DecelerateInterpolator()); if (isInEditMode()) { return; } if (mTopView == null) { mTopView = new BasePointRefreshView(getContext()); mTopView.setTag(TOP_VIEW); } if (mBottomView == null) { mBottomView = new BasePointRefreshView(getContext()); mBottomView.setTag(TOP_VIEW); } if (mTipView == null) { RTextView textView = new RTextView(getContext()); textView.setGravity(Gravity.CENTER); textView.setTextColor(Color.WHITE); textView.setRBackgroundColor(SkinHelper.getSkin().getThemeSubColor()); textView.setBackgroundResource(R.drawable.base_bg_selector); textView.setText("测试专用..."); textView.setTag(TIP_VIEW); int left = getResources().getDimensionPixelOffset(R.dimen.base_xhdpi); int top = getResources().getDimensionPixelOffset(R.dimen.base_ldpi); textView.setPadding(left, top, left, top); mTipView = textView; mTipView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { T_.show("Test"); } }); } }
public CompatScroller(Context context) { if (VERSION.SDK_INT < 9) { this.isPreGingerbread = true; this.scroller = new Scroller(context); return; } this.isPreGingerbread = false; this.overScroller = new OverScroller(context); }
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); } }
/** * @see android.view.ScaleGestureDetector#getCurrentSpanY() */ @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) public static float getCurrVelocity(OverScroller overScroller) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { return overScroller.getCurrVelocity(); } else { return 0; } }
private void init() { mPaint = new Paint(); mPaint.setStyle(Paint.Style.FILL); mScroller = new OverScroller(getContext()); mVelocityTracker = VelocityTracker.obtain(); maximumFlingVelocity = ViewConfiguration.get(getContext()).getScaledMaximumFlingVelocity(); minimumFlingVelocity = ViewConfiguration.get(getContext()).getScaledMinimumFlingVelocity(); }
public void init(Context context){ mContext = context; mMaxLength = mParent.getMaxScale() - mParent.getMinScale(); mCurrentScale = mParent.getCurrentScale(); mCount = mParent.getCount(); mDrawOffset = mCount * mParent.getInterval() / 2; initPaints(); mOverScroller = new OverScroller(mContext); // mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop(); //配置速度 mVelocityTracker = VelocityTracker.obtain(); mMaximumVelocity = ViewConfiguration.get(context) .getScaledMaximumFlingVelocity(); mMinimumVelocity = ViewConfiguration.get(context) .getScaledMinimumFlingVelocity(); initEdgeEffects(); //第一次进入,跳转到设定刻度 getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { getViewTreeObserver().removeOnGlobalLayoutListener(this); goToScale(mCurrentScale); } }); checkAPILevel(); }
public BooheeRulerView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); this.df = new DecimalFormat("#.##"); this.isActionUp = false; this.isCancel = false; this.f = true; this.scroller = new OverScroller(context); init(attrs); }
public GingerScroller(Context context) { mScroller = new OverScroller(context); }
protected void initView(Context context) { fScroller = new OverScroller(context); this.setOverScrollMode(OVER_SCROLL_ALWAYS); }
@Override protected void init(Context context) { viewpool = new ViewPool(); frames = new LinkedHashMap<Object, FreeFlowItem>(); ViewConfiguration configuration = ViewConfiguration.get(context); maxFlingVelocity = configuration.getScaledMaximumFlingVelocity(); minFlingVelocity = configuration.getScaledMinimumFlingVelocity(); overflingDistance = configuration.getScaledOverflingDistance(); /*overscrollDistance = configuration.getScaledOverscrollDistance();*/ touchSlop = configuration.getScaledTouchSlop(); scroller = new OverScroller(context); setEdgeEffectsEnabled(true); }