1,上个月做了下电商的项目,本来以为本简单的,但做起来还是遇到了不少的问题,上个周五项目就上线了,不过时间还是很紧,PM给了我两天时间总结总结,然后又要开始一个新的项目和这个项目的迭代,感觉又要开始累死了。不瞎扯了,今天是要实现类似于淘宝Toobar的效果,先看一下淘宝的效果:

再看看我们项目中实现的效果:

2,这里我上面的返回和购物车的图片在渐变的时候没有细节的处理,所以导致切换照片的时候有点突然,不过大体的功能还是差不多的,其实实现这种效果还是挺简单的,就是自营以一个Scrollview监听他的滑动事件,然后更新上面的Toobar透明度,好了,不多说了 ,直接看代码把。

TranslucentScrollView.java
package com.qianmo.projectfunctionpoint;/*** Created by wangjitao on 2016/8/29 0029.*/import android.content.Context;
import android.util.AttributeSet;
import android.widget.ScrollView;public class TranslucentScrollView extends ScrollView {private OnScrollChangedListener mOnScrollChangedListener;public TranslucentScrollView(Context context) {super(context);}public TranslucentScrollView(Context context, AttributeSet attrs) {super(context, attrs);}public TranslucentScrollView(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);if (mOnScrollChangedListener != null) {mOnScrollChangedListener.onScrollChanged(this, l, t, oldl, oldt);}}public void setOnScrollChangedListener(OnScrollChangedListener listener) {mOnScrollChangedListener = listener;}public interface OnScrollChangedListener {void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt);}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"><include layout="@layout/toolbar"/><com.qianmo.projectfunctionpoint.TranslucentScrollViewandroid:id="@+id/scrollview"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><ImageViewandroid:id="@+id/iv_head"android:layout_width="match_parent"android:layout_height="@dimen/dimen_300"android:scaleType="centerCrop"android:src="@mipmap/bg_image"/><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="#ff0000"/><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="#00ff00"/><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="#0000ff"/><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="#00ffff"/><TextViewandroid:layout_width="match_parent"android:layout_height="200dp"android:background="#ff00ff"/></LinearLayout></com.qianmo.projectfunctionpoint.TranslucentScrollView></RelativeLayout>

  MainActivity.java

package com.qianmo.projectfunctionpoint;import android.graphics.Color;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ScrollView;public class MainActivity extends AppCompatActivity implements TranslucentScrollView.OnScrollChangedListener {private TranslucentScrollView scrollView;private Toolbar toolbar;private float headerHeight;//顶部高度private float minHeaderHeight;//顶部最低高度,即Bar的高度@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView() {scrollView = (TranslucentScrollView) findViewById(R.id.scrollview);scrollView.setOnScrollChangedListener(this);toolbar = (Toolbar) findViewById(R.id.toolbar);toolbar.setBackgroundColor(Color.argb(0, 18, 176, 242));initMeasure();}private void initMeasure() {headerHeight = getResources().getDimension(R.dimen.dimen_300);minHeaderHeight = getResources().getDimension(R.dimen.abc_action_bar_default_height_material);}@Overridepublic void onScrollChanged(ScrollView who, int l, int t, int oldl, int oldt) {//Y轴偏移量float scrollY = who.getScrollY();//变化率float headerBarOffsetY = headerHeight - minHeaderHeight;//Toolbar与header高度的差值float offset = 1 - Math.max((headerBarOffsetY - scrollY) / headerBarOffsetY, 0f);//Toolbar背景色透明度toolbar.setBackgroundColor(Color.argb((int) (offset * 255), 18, 176, 242));//        //header背景图Y轴偏移
//        imgHead.setTranslationY(scrollY / 2);}
}

ok这样的话我们的效果就实现了,看一下抽出来的Demo

补:Demo下载链接 http://download.csdn.net/detail/w543441727/9615978 (对不起,开启骗积分模式 2333)

转载于:https://www.cnblogs.com/wjtaigwh/p/5818371.html

自定义Scrollview--实现仿淘宝Toolbar透明度渐变效果相关推荐

  1. 自定义View之仿淘宝详情页

    自定义View之仿淘宝详情页 转载请标明出处: http://blog.csdn.net/lisdye2/article/details/52353071 本文出自:[Alex_MaHao的博客] 项 ...

  2. android 自定义ViewGroup实现仿淘宝的商品详情页

    最近公司在新版本上有一个需要, 要在首页添加一个滑动效果, 具体就是仿照X宝的商品详情页, 拉到页面底部时有一个粘滞效果, 如下图 X东的商品详情页,如果用户继续向上拉的话就进入商品图文描述界面: 刚 ...

  3. 使用WEX5移动开发工具制作仿淘宝APP

    毕业设计-使用WEX5移动开发工具制作仿淘宝APP 系统设计的意义 本课题来源于对日常逛超市.购物的生活体验和指导老师的提示.本系统是基于 WeX5的仿淘宝App系统,它商家们提供了一个更广阔的商品推 ...

  4. 百度地图API,改变驾车路线颜色(仿淘宝快递查询,一条路线两个颜色)

    想仿淘宝做一个物流查询,分为:寄件点.当前点. 收件点 和 路线图. 快递已走的路径(寄件点到当前点的颜色)和未走的路径(当前点到收件点)用 颜色 进行区分. 利用百度地图提供的API(当时遇到了点问 ...

  5. 高仿淘宝和聚美优品商城详情页实现《IT蓝豹》

    高仿淘宝和聚美优品商城详情页实现 android-vertical-slide-view高仿淘宝和聚美优品商城详情页实现,在商品详情页,向上拖动时,可以加载下一页. 使用ViewDragHelper, ...

  6. Material之Behavior实现支付宝密码弹窗 仿淘宝/天猫商品属性选择

    版权声明:转载必须注明本文转自严振杰的博客: http://blog.csdn.net/yanzhenjie1003 今天的效果在支付宝.淘宝.京东等电商App中很常见.比如支付宝输入密码弹窗.商城下 ...

  7. iOS物理碰撞、唱吧音频处理、仿淘宝联动效果等源码

    iOS精选源码 物理仿真 碰撞 陀螺仪 使用 仿淘宝详情和每日优鲜的一个联动效果 JJNetwork网络库 iOS列表选择弹框 网络视频直播类--原生socket音视频实时传输--智能家居 Skele ...

  8. 仿淘宝 打开app时识别淘口令和解析保存到本地的带二维码图片的网址

    实现两个功能 1.仿淘宝淘口令  打开app时解析连接(如果复制得到的信息不是可直接使用的数据,那么还需要加一步拿到这些信息去后台获取具体信息,因为项目设计复制完就是一串地址,所以没做二次请求处理) ...

  9. 视频教程-仿淘宝客户端电商平台android初级速成-Android

    仿淘宝客户端电商平台android初级速成 北风网技术总监,在某大型电信设备公司担任架构师,主要从事电信领域的软件开发,经验丰富.对电信计费系统以及核心网软件系统有深入了解,对设计高可靠性,高扩展性的 ...

最新文章

  1. adf检验代码 python_第22期:向量自回归(VAR)模型预测——Python实现
  2. LaTeX 安装配置 OSX
  3. 云端:亚马逊,谷歌应用引擎,Windows Azure,Heroku,Jelastic
  4. 【M1芯片兼容】office 2021 Mac正式版最新更新
  5. python棋盘放麦粒求和递归_Python递归调用实现数字累加的代码
  6. verilog实现四位全加器(基于一位全加器)
  7. web前端常用开发工具排行:8款html开发工具推荐下载
  8. python chardet模块_使用Python chardet模块解决中文乱码问题
  9. 潜伏多年的中文编程语言该不该发展起来(科技无国界,呵呵)
  10. Python 的RS485 串口通讯
  11. 计算机考研需要过英语六级吗,研究生毕业要过英语六级吗 研究生毕业对英语六级有要求吗...
  12. 我的大学-5-34-林陆
  13. adcclk最大_DSP28335 ADC程序 中文说明 -
  14. 以一例教你找到【无水印】【高清】【百度图片】的url
  15. python写水仙花的作文_怎样背英语单词才高效?
  16. 数据挖掘中最容易犯的几个错误,你知道吗?
  17. 剑指offer练习日志02:基于矩阵乘法求斐波那契数列通项
  18. 城市信息学其六-信息时代的城市概念化
  19. @Configuration(proxyBeanMethods = false) 设置这个为false有啥用
  20. 基于java的校园新闻_基于jsp的校园新闻-JavaEE实现校园新闻 - java项目源码

热门文章

  1. java format 字符_JAVA字符串格式化-String.format()的使用
  2. GitHub遭炮轰:Copilot“抄袭”已经失控,为训练AI侵权整个社区
  3. 老牌医药收割AI红利:先投个15亿美元抢中国人才
  4. 华人学者往Linux内核里提交bug,社区把整个明尼苏达大学拉黑了
  5. 复旦大学把衣服变成了显示器,能聊天能导航,水洗弯折都不怕 | Nature
  6. 波士顿动力机器狗新技能!跳绳园艺做家务,还有书法神技
  7. 「百度@了所有车企」:Apollo自动驾驶商用上岗,欢迎上车
  8. 鹅厂666,用梅花桩遛狗
  9. 完胜BERT!谷歌NLP预训练利器:小模型也有高精度,单个GPU就能训练 | 代码开源...
  10. 很抱歉,这场大会我们没法卖票给你了