189 8069 5689

android怎么实现ios的UIScrollView

这篇文章主要介绍了android怎么实现ios的UIScrollView的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇android怎么实现ios的UIScrollView文章都会有所收获,下面我们一起来看看吧。

为双河等地区用户提供了全套网页设计制作服务,及双河网站建设行业解决方案。主营业务为成都网站建设、成都网站设计、双河网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

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

关于“android怎么实现ios的UIScrollView”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“android怎么实现ios的UIScrollView”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。


网站名称:android怎么实现ios的UIScrollView
标题路径:http://cdxtjz.cn/article/jgjoso.html

其他资讯