android开发仿ios的UIScrollView实例代码
今天重新装了编译器,结果崩无极限,真是日了狗了了。刚刚才知道问题在哪边。
好了,说正事,对于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框架
相关文章
Android自定义View实现九宫格图形解锁(Kotlin版)
这篇文章主要为大家详细介绍了Android自定义View实现九宫格图形解锁,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-09-09
Android开发中自定义ProgressBar控件的方法示例
这篇文章主要介绍了Android开发中自定义ProgressBar控件的方法,结合实例形式分析了自定义ProgressBar控件的定义与使用方法,需要的朋友可以参考下2017-10-10
Android ListView之setEmptyView正确使用方法
这篇文章主要介绍了Android ListView之setEmptyView正确使用方法的相关资料,希望通过本文能帮助到大家使用该方法,需要的朋友可以参考下2017-09-09
android 通过MediaRecorder实现简单的录音示例
本篇文章中主要介绍了android 通过MediaRecorder实现简单的录音示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。2017-02-02
Android Kotlin开发实例(Hello World!)及语法详解
这篇文章主要介绍了Android Kotlin开发实例及语法详解的相关资料,需要的朋友可以参考下2017-05-05
Android利用ContentProvider读取短信内容
这篇文章主要为大家详细介绍了Android利用ContentProvider读取短信内容,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-11-11


最新评论