利用Android制作一个商品详情页-创新互联

今天就跟大家聊聊有关利用Android制作一个商品详情页,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联建站是一家专业提供青岛企业网站建设,专注与网站建设、成都网站建设HTML5、小程序制作等业务。10年已为青岛众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

效果: 

利用Android制作一个商品详情页
利用Android制作一个商品详情页

项目结构分析

首先我们来分析一下要实现上面的效果,我们需要怎么做。顶部是一个可以滑动切换Tab,可以用ViewPager+Fragment实现,也可以使用系统的TabLayout控件实现;而下面的 View是一个可以滑动拖动效果的View,可以采用网上一个叫做DragLayout的控件,我这里是自己实现了一个,主要是通过对View的事件分发的一些处理;然后滑动到下面就是一个图文详情的View(Fragment),本页面包含两个界面:详情页面和参数页面;最后是评价的View(Fragment)。经过上面的分析,我们的界面至少需要4个Fragement,首先来看一下项目结构:

利用Android制作一个商品详情页

代码讲解

代码比较多,这里只讲解几个核心的方法类。首先我们来看一下我们自己是的这个具有阻尼效果的View,我们知道要实现的效果,我们需要对View的事件做一个全面的实现。这里首先说一下View的事件分发的流程:

onInterceptTouchEvent()–>dispatchTouchEvent()–>onTouchEvent();

首先我们需要对View传过来的事件做一个拦截:

ensureTarget();
  if (null == mTarget) {
   return false;
  }
  if (!isEnabled()) {
   return false;
  }
  final int aciton = MotionEventCompat.getActionMasked(ev);
  boolean shouldIntercept = false;
  switch (aciton) {
   case MotionEvent.ACTION_DOWN: {
    mInitMotionX = ev.getX();
    mInitMotionY = ev.getY();
    shouldIntercept = false;
    break;
   }
   case MotionEvent.ACTION_MOVE: {
    final float x = ev.getX();
    final float y = ev.getY();

    final float xDiff = x - mInitMotionX;
    final float yDiff = y - mInitMotionY;

    if (canChildScrollVertically((int) yDiff)) {
     shouldIntercept = false;
    } else {
     final float xDiffabs = Math.abs(xDiff);
     final float yDiffabs = Math.abs(yDiff);

     if (yDiffabs > mTouchSlop && yDiffabs >= xDiffabs
       && !(mStatus == Status.CLOSE && yDiff > 0
       || mStatus == Status.OPEN && yDiff < 0)) {
      shouldIntercept = true;
     }
    }
    break;
   }
   case MotionEvent.ACTION_UP:
   case MotionEvent.ACTION_CANCEL: {
    shouldIntercept = false;
    break;
   }
  }
  return shouldIntercept;

文章标题:利用Android制作一个商品详情页-创新互联
链接URL:https://www.cdcxhl.com/article2/dojcic.html

成都网站建设公司_创新互联,为您提供品牌网站设计网站收录全网营销推广商城网站微信小程序外贸建站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司