android开发仿ios的UIScrollView实例代码

所属分类: 软件编程 / Android 阅读数: 34
收藏 0 赞 0 分享

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

好了,说正事,对于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中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多