android开发仿ios的UIScrollView实例代码

Danica ·
更新时间:2024-11-11
· 654 次阅读

今天重新装了编译器,结果崩无极限,真是日了狗了了。刚刚才知道问题在哪边。

好了,说正事,对于ios开发我没接触,不是很了解,百度了半天,差不多就是UIScrollView的把。如果不对,请指证。具体什么效果呢,我刚才拿朋友的iphone手机看了下,iphone的设置界面,第一个列表往下拉可以继续滚,上拉同理。不过android好像没有自带的这种情况。

我把这种效果称为滚无极限的scollview。

下面就来上源码:

首先,最最最重要的就是判断当前视图是否为空,你空视图滚不滚好像没啥区别,除了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; }

好了,一个滚,滚,滚,滚无极限的scrollview就诞生了。其实我感觉这个实用性不是很大,看个人需求了。其实也是蛮好玩的~

以上这篇android开发仿ios的UIScrollView实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

您可能感兴趣的文章:Android高级UI特效仿直播点赞动画效果Android 仿抖音的评论列表的UI和效果的实现代码Android UI新组件学习和使用Android MIUI通知类短信权限的坑Android UI 中的 ListView列表控件的示例浅谈Android RecyclerView UI的滚动控件示例Android Build Variants 为项目设置变种版本的方法Android编程设计模式之Builder模式实例详解Android UI控件之ImageSwitcher实现图片切换效果Android UI控件之Gallery实现拖动式图片浏览效果Android UI控件之ListView实现圆角效果Android UI控件之ProgressBar进度条Android UI控件之Spinner下拉列表效果Android利用Espresso进行UI自动化测试的方法详解Android编程处理窗口控件大小,形状,像素等UI元素工具类Android build文件的删除的方法android studio 一直卡在Gradle:Build Running的几种解决办法25个实用酷炫的Android开源UI框架



uiscrollview android开发 IOS Android

需要 登录 后方可回复, 如果你还没有账号请 注册新账号