android开发仿ios的UIScrollView实例代码
今天重新装了编译器,结果崩无极限,真是日了狗了了。刚刚才知道问题在哪边。
好了,说正事,对于ios开发我没接触,不是很了解,百度了半天,差不多就是UIScrollView的把。如果不对,请指证。具体什么效果呢,我刚才拿朋友的iphone手机看了下,iphone的设置界面,第一个列表往下拉可以继续滚,上拉同理。不过android好像没有自带的这种情况。
我把这种效果称为滚无极限的scollview。
下面就来上源码:
首先,最最最重要的就是判断当前视图是否为空,你空视图滚不滚好像没啥区别,除了android5.0的scrollview自带了那种弧度。好像没什么软用~~~
//视图不为空即可滚动 protectedvoidonFinishInflate(){ 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){ intaction=event.getAction(); switch(action){ caseMotionEvent.ACTION_DOWN: break; caseMotionEvent.ACTION_UP: //判断是否需要动画 if(!normal.isEmpty()){ animation(); isCount=false; } break; caseMotionEvent.ACTION_MOVE: finalfloatDownY=startY; floatmoveY=event.getY(); intdistance=(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; }
后面就是判断是否需要滚动和回弹的动画效果了。
publicvoidanimation(){ //开启移动动画 TranslateAnimationanimation=newTranslateAnimation(0,0,childview.getTop(), normal.top); animation.setDuration(200); childview.startAnimation(animation); //设置回到正常的布局位置 childview.layout(normal.left,normal.top,normal.right,normal.bottom); normal.setEmpty(); }
publicbooleanisNeedMove(){ intoffset=childview.getHeight()-getHeight(); intscrollY=getScrollY(); //0是顶部,后面那个是底部 if(scrollY==0||scrollY==offset){ returntrue; } returnfalse; }
好了,一个滚,滚,滚,滚无极限的scrollview就诞生了。其实我感觉这个实用性不是很大,看个人需求了。其实也是蛮好玩的~
以上这篇android开发仿ios的UIScrollView实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。