赞
踩
最近遇到同一芯片平台的两款手机,在桌面滑动跟手性为何还有所差异呢,于是乎研究了一下Launcher滑动相关源码。 本文主要是介绍Launcher3屏幕滑动过程,首先需要了解Android的触摸事件分发机制。关于分发机制,可查看文章Android事件分发机制。
PagedView是滑屏最主要的类,下面是init()方法出初始化参数,假设以1080*1440分辨率,即densiy=3为例,来计算各个阈值。
protected void init() { mDirtyPageContent = new ArrayList<Boolean>(); mDirtyPageContent.ensureCapacity(32); mScroller = new LauncherScroller(getContext()); //初始化滚动器LauncherScroller setDefaultInterpolator(new ScrollInterpolator()); //设置插值器为ScrollInterpolator mCurrentPage = 0; mCenterPagesVertically = true; // 获取ViewConfiguration final ViewConfiguration configuration = ViewConfiguration.get(getContext()); //mTouchSlop = 16dp; mTouchSlop = configuration.getScaledPagingTouchSlop(); //mPagingTouchSlop = 16dp; mPagingTouchSlop = configuration.getScaledPagingTouchSlop(); //最大速度8000dp/s; mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); //获取屏幕密度系数mDensity mDensity = getResources().getDisplayMetrics().density; //用于删除的抛出阈值: -1440*3 mFlingToDeleteThresholdVelocity = (int) (mFlingToDeleteThresholdVelocity * mDensity); //滚动速度阈值 500 *3 px/s mFlingThresholdVelocity = (int)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。