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实例代码就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。