- 浏览: 82338 次
- 性别:
- 来自: 成都
最新评论
-
284772894:
好文章,谢谢
android硬件传感器 -
康妮西:
求这个View的解释望博主联系,我的联系方式:kangnixi ...
让scrollview在滚动的过程中自动定位页的边边 -
muyu114:
你这个是啥意思啊,有什么效果没有
让scrollview在滚动的过程中自动定位页的边边
/** * The Class PageScrollView, we can scroll the pages in this component. */ public class PageScrollView extends LinearLayout { /** The context. */ private Context mContext; /** The adapter used to get the view of each page. */ private BaseAdapter mAdapter; /** The page count. */ private int mPageCount = 0; /** The current page index. */ private int mCurrPageIndex = 0; /** The scroll view in this component. */ private HorizontalScrollView mScrollView; /** The target parent view for each page. */ private LinearLayout mPageContent; /** The velocity tracker. */ private VelocityTracker mVelocityTracker; /** The width for each page. */ private int mWidth; /** The maximum velocity. */ private int mMaximumVelocity; /** The change. */ private boolean mChange = false; /** The Constant SNAP_VELOCITY. */ private static final int SNAP_VELOCITY = 500; /** The Constant PAGE_FACTOR. */ private static final int PAGE_FACTOR = 3; /** The units parameter for velocity. */ private static final int VELOCITY_UNITS = 1000; /** * Instantiates a new page scroll view. * * @param context the context */ public PageScrollView(Context context) { super(context); mContext = context; } /** * Instantiates a new page scroll view. * * @param context the context * @param attrs the attrs */ public PageScrollView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; } /** * Sets the adapter. * * @param adapter the adapter * @param with the with for each page */ public void setAdapter(BaseAdapter adapter, int with) { if (adapter == null) { return; } mAdapter = adapter; mWidth = with; initUI(); bindLayoutUI(); } /** * Inits the ui. */ private void initUI() { this.removeAllViews(); mScrollView = new HorizontalScrollView(mContext); mScrollView.setHorizontalScrollBarEnabled(false); mScrollView.setLayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT)); mPageContent = new LinearLayout(mContext); mPageContent.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT)); //mPageContent.setGravity(Gravity.CENTER); mPageContent.setOrientation(HORIZONTAL); mScrollView.setOnTouchListener(mTouchListener); this.addView(mScrollView); mScrollView.addView(mPageContent); // FIXME: width is a problem sometimes! final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) this.getLayoutParams(); if (!(lp.width == LinearLayout.LayoutParams.FILL_PARENT || lp.width == LinearLayout.LayoutParams.WRAP_CONTENT)) { mWidth = lp.width; } final ViewConfiguration configuration = ViewConfiguration.get(mContext); mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); } /** * Bind layout ui, add pages to this component. */ private void bindLayoutUI() { mPageCount = mAdapter.getCount(); final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( mWidth, LinearLayout.LayoutParams.FILL_PARENT); // params.gravity = Gravity.CENTER; for (int i = 0; i < mPageCount; i++) { final View v = mAdapter.getView(i, null, null); mPageContent.addView(v, params); } } /** * Gets the current page index. * * @return the current page index */ public int getCurrentPageIndex() { return mCurrPageIndex; } /** The m touch listener. */ private View.OnTouchListener mTouchListener = new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { final int action = event.getAction(); if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMovement(event); switch (action) { case MotionEvent.ACTION_UP: final VelocityTracker velocityTracker = mVelocityTracker; velocityTracker.computeCurrentVelocity(VELOCITY_UNITS, mMaximumVelocity); final int velocityX = (int) velocityTracker.getXVelocity(); final int scrollX = mScrollView.getScrollX(); final int deltaX = (int) (scrollX - mCurrPageIndex * mWidth); if (((velocityX > SNAP_VELOCITY) || (deltaX < -mWidth / PAGE_FACTOR)) && mCurrPageIndex > 0) { mCurrPageIndex -= 1; mChange = true; } else if (((velocityX < -SNAP_VELOCITY) || (deltaX > mWidth / PAGE_FACTOR)) && mCurrPageIndex < (mPageCount - 1)) { mCurrPageIndex += 1; mChange = true; } mScrollView.smoothScrollTo(mCurrPageIndex * mWidth, 0); if (mChange) { if (mOnPageChangeListener != null) { mOnPageChangeListener.onPageChange(); } mChange = false; } if (mVelocityTracker != null) { mVelocityTracker.recycle(); mVelocityTracker = null; } return true; // break; default: break; } return false; } }; /** * The listener interface for receiving onPageChange events. * The class that is interested in processing a onPageChange * event implements this interface, and the object created * with that class is registered with a component using the * component's <code>addonPageChangeListener<code> method. When * the onPageChange event occurs, that object's appropriate * method is invoked. * * @see onPageChangeEvent */ public interface OnPageChangeListener { /** * On page change. */ void onPageChange(); } /** The m on page change listener. */ private OnPageChangeListener mOnPageChangeListener; /** * Sets the on page change listener. * * @param l the new on page change listener */ public void setOnPageChangeListener(OnPageChangeListener l) { mOnPageChangeListener = l; } /** * Sets the page index. * * @param index the new page index */ public void setPageIndex(int index) { if (index < 0 || index > mPageCount - 1 || index == mCurrPageIndex) { return; } mCurrPageIndex = index; mScrollView.smoothScrollTo(mCurrPageIndex * mWidth, 0); } }
评论
2 楼
康妮西
2011-06-09
求这个View的解释
望博主联系,我的联系方式:
kangnixi@gmail.com 或 QQ: 1047286578
望博主联系,我的联系方式:
kangnixi@gmail.com 或 QQ: 1047286578
1 楼
muyu114
2011-05-16
你这个是啥意思啊,有什么效果没有
发表评论
-
Android_SDK_NDK_JNI
2014-09-10 12:26 684Android SDK、NDK、JNI的简 ... -
如何检查apk是否签名
2012-02-22 16:46 2442Use this command : (Jarsigner i ... -
切割bitmap
2011-11-15 16:09 935Bitmap resource = BitmapFactory ... -
TextView控件属性列表
2011-10-08 15:58 1132纯属转载: http://www.cnbl ... -
元数据Meta Data
2011-09-30 16:30 1103<meta-data andr ... -
Android UI Operation in Thread
2011-09-21 17:16 1061Android UI Operation in Thread ... -
系统自带样式Android:theme
2011-06-23 15:58 2194Android应用开发——系统自带样式Android:them ... -
EditText自动获取焦点并弹出输入法的问题
2011-06-16 16:25 49861.每次启动新的Activity的时候,输入法总是弹出来,太烦 ... -
Service Broadcast BroadcastReceiver AlarmManager,Notification利用service定时/周期性发送广播
2011-05-31 16:35 38281.如题 主要实现 1.启动service,关 ... -
android硬件传感器
2011-05-30 16:07 13297纯属转载:http://dev.10086 ... -
权限permission
2011-05-27 18:03 1231纯属于转载: http://blog.csdn.net/ ... -
读写系统设置——日期与时间使用网络提供的值(时间与网络同步)
2011-05-27 17:19 2501//读_1.带默认参数的 Settings.Syste ... -
读写系统设置
2011-05-27 17:13 1757Android的很多设置想关的东西都存储在数据库中 andro ... -
Display_获取屏幕宽高
2011-05-06 12:19 939public static void intScreen(A ... -
seletctAll___利用ScrollView+RadioGroup+RadioButton实现相似互斥
2011-05-03 17:58 2046假如你有多个匹配list,在这些匹配list中存在这样的一些匹 ... -
selectAll___CheckBox in ListView
2011-05-03 17:32 14131.如果你有一个ListView,listView的 adap ... -
Layout___模块重用之include布局整合
2011-04-06 14:04 1314在Android的开发中,我们知道布局文件可以让我们很 ... -
value-string
2011-04-06 13:36 2057我们知道在android的value文件夹下,string.x ... -
利用PorterDuff.Mode做橡皮擦效果
2011-04-01 18:03 10695http://stackoverflow.com/questi ... -
UI___tab view 的实现
2011-03-24 15:19 1925一.通过xml文件实现 1.创建一个tab iew,所需的x ...
相关推荐
学习SCrollView整的小东西,实现循环翻页效果。利用停表加了自动滚动的效果。
scrollVIew上实现图片的自动循环滚动。用到时间计时器,并且可手动滑。例如三张图片1,2,3,那么再拿图片3放在图片1前面,再拿图片1放在图片3后面
ScrollView自动滚动可以获取到当前所点击的图片信息,查看详情。
显示dialog, Scrollview自动滚动
ScrollView循环滚动,自定义实现简单。
ScrollView 的滚动事件监听
UIScrollView,UITableView,UITextView自动滚动代码
scrollView循环滚动、
WPF的scrollview滚动条设置,包括上一页下一页上一条吓一条设置
对应这种页面结构应该毫无疑问是最底层是一个纵向滚动的scrollView,它的页面上面放一个固定高度的header,紧接着下面一个支持横向滚动切换的容器scrollView,容器上面才是各个页面具体的tableView,如下图: ...
ScrollView缓慢滚动到指定位置的标准自定义 解决ScollView中scrollTo()的生硬感!
ScrollView 无限滚动 支持定时器轮播图 支持传入任何View以及Controller进行轮播 支持手动选定动画可选 xcode8.2.1 swift3.x
重写scrollView的onTouchEvent事件,在MotionEvent.ACTION_CANCEL和MotionEvent.ACTION_UP中通过反射获取scrollview中的OverScroller,然后获取OverScroller的状态判断scrollview是否结束滚动
此代码实现安卓ScrollView动画滚动到顶部,开发者可以自己定义自己想要的算法,代码比较简单,一分谢谢了
一个可以自动滚动,并且可以循环滚动得scrollView
简单几句代码就可以集成无限滚动的ScrollView。 通过新的方式去实现无限滚动功能,模式采用类似... 摒弃了普通思路在didScroll这个代理里面去翻页,优化了翻页的算法,手动滑动过程中自动滑动和手动滑动不相互影响。
NULL 博文链接:https://gundumw100.iteye.com/blog/1060878
Android ScrollView+GridView左右滑动 创建时自动定位滑动到某一项以及点击按钮准确定位到某一项,附带源码,非常适合初学者。
可实现scrollView的循环滚动,
Unity UGUI ScrollView(ScrollRect)嵌套滚动列表(横竖滑动列表)