1.效果图

直接上效果图.

第一次录制gif,经验不足.网上搜索大家推荐licecap.尝试后的确不错,操作比较简单.但有一个细节需要注意,不能有中文路径.

2.实现思路

(1)总体思路:

滑动时,标题栏颜色发生渐变.标题栏点击后,定位到具体的位置.整个界面可以分为标题栏、界面2部分。而界面分为图片、评论、商户详情3部分.

(2)如何实现标题栏的渐变:

先在布局中写好,根据滑动位置的情况,将标题栏的颜色(包括字体颜色)有最浅的颜色,逐渐变成最终稳定的颜色(比如我的是黑色)

(3)如何实现点击标题后定位到具体位置:

说白一点,就是获取图片、评论、商户详情这三个控件的高度。点击事件后,滑动相应高度即可

3.实现细节

(1)布局

3.1.1公司使用的自定义ScrollView.
3.1.2.图片、评论、商户详情三部分控件的高度需要,布局中需要体现.具体代码见源码

(2)逻辑实现

3.2.1.自定义的ScrollView.
监听新旧横向、纵向的位置,通过接口回调的方式传递给activity进行相应操作.代码如下:

public class MyCustomScrollView extends ScrollView {public interface ScrollViewListener {void onScrollChanged(MyCustomScrollView scrollView, int x, int y,int oldx, int oldy);}private ScrollViewListener scrollViewListener = null;public MyCustomScrollView(Context context) {super(context);}public MyCustomScrollView(Context context, AttributeSet attrs,int defStyle) {super(context, attrs, defStyle);}public MyCustomScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public void setScrollViewListener(ScrollViewListener scrollViewListener) {this.scrollViewListener = scrollViewListener;}@Overrideprotected void onScrollChanged(int x, int y, int oldx, int oldy) {super.onScrollChanged(x, y, oldx, oldy);if (scrollViewListener != null) {scrollViewListener.onScrollChanged(this, x, y, oldx, oldy);}}}

3.2.2.标题栏的渐变
主要是相关api的调用,一个是.setBackgroundColor 和.setTextColor,另外一个是Color.argb
由于在图片控件区域标题栏渐变效果,所以需要进行相关计算:

 float scale = (float) y / 400;     //y是控件纵向高度.400为图片的高度float alpha = (255 * scale);

由于不能整除且尽量精准,我们使用float类型.颜色的GRB值范围是0-255.这个没啥好解释的

layout.setBackgroundColor(Color.argb((int) alpha, 250, 250, 250));
View1.setBackgroundColor(Color.argb((int) alpha, 0, 0, 0));
tvGoods.setTextColor(Color.argb((int) alpha, 0, 0, 0));
tvComment.setTextColor(Color.argb((int) alpha, 0, 0, 0));                tvDetails.setTextColor(Color.argb((int) alpha, 0, 0, 0));

3.2.3.控件的测量:
对于控件的测试,网上有比较多的资料,也比较杂,有的甚至是坑人的.下面链接这篇文章(相关链接.直接点击即可),无论是排版还是内容讲解,都很不错.对控件宽高测试不是很清楚的,可以看看.
在真实的项目中,一般第三种使用最多.代码如下:

        ViewTreeObserver mComment = comment.getViewTreeObserver();mComment.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {comment.getViewTreeObserver().removeGlobalOnLayoutListener(this);commentHeight = comment.getHeight();}});mGoods.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {@Overridepublic void onGlobalLayout() {goods.getViewTreeObserver().removeGlobalOnLayoutListener(this);commentHeightQD = goods.getHeight() - ScreenUtils.getStatusHeight(c) - ScreenUtils.dip2px(ProductDetailActivity.this, 40);scrollView.setScrollViewListener(ProductDetailActivity.this);}});

其中涉及一个小的细节知识点:dp与px.代码中的数值,一般都是dp,而我们需要的又是px,所以需要转换.

//根据手机的分辨率从 dp 的单位 转成为 px(像素)public static int dip2px(Context context, float dpValue) {final float scale = context.getResources().getDisplayMetrics().density;return (int) (dpValue * scale + 0.5f);}

dp与px之间的转换网上的工具类比较多,大家在平时多积累对提高开发效率有好处

3.2.4.点击标题后定位到相应位置:
获取控件高度后,结合自定义scrollView的滚动接口回调,就可以实现.以点击"评论"为例:

tvComment.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {handler2.post(new Runnable() {@Overridepublic void run() {scrollView.smoothScrollTo(0, commentHeightQD);}});}});

3.2.5.其他细节:
在UI界面滚动过程中,主要分为5部分.
一是进入界面时最初始的位置:
二是滑动距离小于商品图的高度时
三是当滑动超过商品图而小于评论
四是当滑动超过评论起始位置而小于评论结束位置
五是当滑动超过评论结束位置
其中,第一部分默认看不见.
第二部分是标题的渐变过程,逻辑见2.标题栏的渐变
第三、四、五逻辑是一模一样的,主要是哪个控件显示,哪个控件掩藏

 //设置标题的颜色为黑色,背景为白色可见private void setTitleColor() {layout.setBackgroundColor(Color.argb(255, 250, 250, 250));tvGoods.setTextColor(Color.argb(255, 0, 0, 0));tvComment.setTextColor(Color.argb(255, 0, 0, 0));tvDetails.setTextColor(Color.argb(255, 0, 0, 0));}private void clearAndShowThis(View currentView) {View1.setVisibility(View.INVISIBLE);View2.setVisibility(View.INVISIBLE);View3.setVisibility(View.INVISIBLE);View1.setBackgroundColor(Color.argb(255, 0, 0, 0));View2.setBackgroundColor(Color.argb(255, 0, 0, 0));View3.setBackgroundColor(Color.argb(255, 0, 0, 0));currentView.setVisibility(View.VISIBLE);}

4.源码下载

点击下载源码

如果您觉得这篇博客对您有帮助,star就是对我最大的鼓励!

高仿淘宝商品详情标题栏渐变相关推荐

  1. Andorid高仿淘宝商品详情滑动渐变标题栏

    效果展示 思路 先看结构图,根据滑动距离计算alpha 最外层是一个 NestedScrollView,监听Y轴滑动距离. 长的是一个titleBar,背景为透明色,滑动过程中由透明色变为白色 两边的 ...

  2. Android 仿淘宝商品详情标题栏变色,布局层叠效果

    如图效果 思路:如图可以将图片中布局分成三个部分,1标题栏透明背景,2上半部分布局,3下半部分布局,当我们向上拉动的时候,1布局实现渐变,从透明变到白色,2布局背景色渐变到白色,23布局随滚动条上拉, ...

  3. Android开发之仿淘宝商品详情页

    看到有人在问如何实现淘宝商品详情页效果,手痒了就撸了一个,献上效果图 大致梳理一下思路,这里不提供源码 状态栏透明使用开源库StatusBarCompat,为了兼容手机4.4 dependencies ...

  4. Android 仿淘宝商品详情页下拉足迹Demo

    DropDownMultiPager 仿淘宝等商品详情页下拉足迹效果SimpleDemo 可colne之后看MainActivity的调用,方便二次开发 依赖 compile 'com.nineold ...

  5. 仿淘宝商品详情-点击显示大图,可滑动

    现在在做一个商城类的项目: 大家都用过淘宝,需求就是要求仿淘宝的效果做一个, 直接上图 用到了一个项目PhotoView 大家运行一下看最后一个项目,把单一的图片显示改成VIewpager就好.

  6. 仿淘宝商品详情页图片滑动并且数字也跟着变化

    今天遇到需求需要做个淘宝那样的商品详情页如图(这里只差放图片了)支持移动端,当然用的是swiper.js支持左右滑动 上代码 html代码 <div class="swiper-con ...

  7. 仿淘宝商品详情页面Android

    [致谢]:qifengdeqingchen [博客地址]:http://blog.csdn.net/qifengdeqingchen/article/details/51659735 1.需求: 要实 ...

  8. 仿淘宝商品详情页TabLayout+ListView

    第一次写博客,我是一名Android的小码农写代码也有三四年了.有点好玩的跟大家分享一下 项目对商品详情页改版有新需求.顶部是一个渐变的Title包括"宝贝","详情&q ...

  9. Android之仿淘宝商品详情浏览效果

    一:先来几张效果图,没有弄gif动画,也就是商品详情滑动到底部继续上滑查看图文详情. 二:实现步骤: 1.自定义一个父容器ScrollViewContainer装载两个ScrollView. pack ...

最新文章

  1. 独家 | TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了...
  2. 死锁产生的原因和解锁的方法
  3. ndk-build 参数NDK_APPLICATION_MK问题
  4. html5简单拖拽实现自动左右贴边+幸运大转盘
  5. 我们究竟应不应该使用框架?
  6. poj 2948 Martian Mining (dp)
  7. 编程环境中Runtime(运行时)的三个含义
  8. linux dd 清屏 of=/dev/mem,Linux系统简介分区基础命令(ADMIN01-2)(示例代码)
  9. python实现语法分析器_Python源码分析5 – 语法分析器PyParser | 学步园
  10. 如何解决Word里插入图片会被压缩
  11. Mybatis-Plus
  12. 星际争霸2Beta测试版单机模式已经破解
  13. 单端口和双端口的优势_双端口测量和 S参数 - 灵活应用网络分析仪
  14. IDEA使用教程(一) 基础配置
  15. Typora 未保存文件找回
  16. 郭德纲相声里的插入广告
  17. RaspberryPi 4B
  18. getopt.h和getopt(),getopt_long()等函数
  19. 官宣!清华副校长薛其坤将任南方科技大学校长
  20. 如何在线获取抖音无水印视频和视频背景音乐?

热门文章

  1. 骥遇伯乐,关键的一点是人与事的匹配
  2. AES加密算法和原理
  3. 弹弹弹,弹走鱼尾纹的弹出菜单(vue)
  4. 【QCM2150】WCN3680 WFA认证11ac AP 4.2.23测试FAIL
  5. 2020第二届长安杯
  6. X取个好的英文名字(男性)
  7. coreseek 词库 导入搜狗词库
  8. 日本瑞萨renesas MCU---汽车电子MCU的不二之选
  9. 爬取虎扑网站上NBA球员数据信息
  10. 华为手机如何连接到电脑