这篇文章主要介绍了android怎么实现ios的UIScrollView的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android怎么实现ios的UIScrollView文章都会有所收获,下面我们一起来看看吧。
首先,最最最重要的就是判断当前视图是否为空,你空视图滚不滚好像没啥区别,除了android 5.0的scrollview自带了那种弧度。好像没什么软用~~~
//视图不为空即可滚动 protected void onFinishInflate() { if (getChildCount() > 0) { childview = getChildAt(0); } }
这个属性我也是刚知道没多久,意思是当所有的布局呈现完成之后调用这个方法。
我这边附上view常用的方法,你们可以自行研究,有好多方法我也不知道~~~.
自定义 View的常用方法:
onFinishInflate() 当View中所有的子控件 均被映射成xml后触发
onMeasure(int, int) 确定所有子元素的大小
onLayout(boolean, int, int, int, int) 当View分配所有的子元素的大小和位置时触发
onSizeChanged(int, int, int, int) 当view的大小发生变化时触发
onDraw(Canvas) view渲染内容的细节
onKeyDown(int, KeyEvent) 有按键按下后触发
onKeyUp(int, KeyEvent) 有按键按下后弹起时触发
onTrackballEvent(MotionEvent) 轨迹球事件
onTouchEvent(MotionEvent)触屏事件
onFocusChanged(boolean, int, Rect) 当View获取 或失去焦点时触发
onWindowFocusChanged(boolean) 当窗口包含的view获取或失去焦点时触发
onAttachedToWindow() 当view被附着到一个窗口时触发
onDetachedFromWindow() 当view离开附着的窗口时触发,提示该方法和 onAttachedToWindow() 是相反的。
onWindowVisibilityChanged(int) 当窗口中包含的可见的view发生变化时触发
以上是View实现的一些基本接口的回调方法,一般我们需要处理画布的显示时,重写onDraw(Canvas)用的的是最多的。
接下来就是ontouch事件来判断位移和回弹的效果啦:
if (childview != null) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: break; case MotionEvent.ACTION_UP: //判断是否需要动画 if (!normal.isEmpty()) { animation(); isCount = false; } break; case MotionEvent.ACTION_MOVE: final float DownY = startY; float moveY = event.getY(); int distance = (int) (DownY - moveY); if (!isCount) { distance = 0; // 在这里要归0. } startY = moveY; if (isNeedMove()) { //顶部 if (normal.isEmpty()) { normal.set(childview.getLeft(), childview.getTop(), childview.getRight(), childview.getBottom()); } //底部 childview.layout(childview.getLeft(), childview.getTop() - distance / 2, childview.getRight(), childview.getBottom() - distance / 2); } isCount = true; break; }
后面就是判断是否需要滚动和回弹的动画效果了。
public void animation() { // 开启移动动画 TranslateAnimation animation = new TranslateAnimation(0, 0, childview.getTop(), normal.top); animation.setDuration(200); childview.startAnimation(animation); // 设置回到正常的布局位置 childview.layout(normal.left, normal.top, normal.right, normal.bottom); normal.setEmpty(); }
public boolean isNeedMove() { int offset = childview.getHeight() - getHeight(); int scrollY = getScrollY(); // 0是顶部,后面那个是底部 if (scrollY == 0 || scrollY == offset) { return true; } return false; }
关于“android怎么实现ios的UIScrollView”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“android怎么实现ios的UIScrollView”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。