看到有人在问如何实现淘宝商品详情页效果,献上效果图
大致梳理一下思路,这里不提供源码
状态栏透明使用开源库StatusBarCompat,为了兼容手机
4.4依赖关系{ 编译(com.github.niorgai: StatusBarCompat: 2.1.4, { 排除组:“com.android.support” }) } allprojects { 存储库{ … maven {url https://jitpack。io”} } } >之前标题栏图标透明度变化参考Api setAlpha()已过时
icon.setImageAlpha (0);横幅控件为:viewpage,淘宝显示为正方形,这里需要修改:viewpage测量函数
公开课IdeaViewPager延伸:viewpage { 私人点点; 公共IdeaViewPager(上下文语境){ 这(上下文,null); } 公共IdeaViewPager(上下文语境,AttributeSet attrs) { 超级(上下文,attrs); WindowManager WindowManager=(WindowManager) context.getSystemService (Context.WINDOW_SERVICE); 点=new点(); windowManager.getDefaultDisplay () .getSize(点); } @Override 保护空白> 公共int getMeasureHeight(查看视图){ int宽度=View.MeasureSpec.makeMeasureSpec (0, View.MeasureSpec.UNSPECIFIED); int高度=View.MeasureSpec.makeMeasureSpec (0, View.MeasureSpec.UNSPECIFIED); 视图。测量(宽度、高度); 返回view.getMeasuredHeight (); }重新onScrollChanged函数,实现:viewpage滑动速度比其他视图慢
@Override 保护空白> @Override 保护空白> ideaScrollView。setOnScrollChangedColorListener(新IdeaScrollView.OnScrollChangedColorListener () { @Override 公共空间> 公共空间setRadioButtonTextColor(浮动百分比){ 如果(Math.abs (percentage-currentPercentage)祝辞=0.1 f) { for (int i=0; i< radioGroup.getChildCount();我+ +){ RadioButton RadioButton=(RadioButton) radioGroup.getChildAt(我); radioButton.setTextColor (radioButton.isChecked () & # 63; getRadioCheckedAlphaColor(百分比):getRadioAlphaColor(百分比); } 这一点。currentPercentage=百分比; } }判断当前属于哪个选项,根据滑动距离与传入绑定的观点高度集合来计算
私人int getCurrentPosition (int t, ArrayListarrayDistance) { int指数=0; for (int i=0; i< arrayDistance.size();我+ +){ 如果(我==arrayDistance.size () 1) { 指数=我; 其他}{ 如果(t>=arrayDistance.get (i),和t 之前 切换选项卡以及回到顶部按钮的具体实现参考scrollTo函数
私人空间scrollToPosition (int位置){ scrollTo (0, arrayDistance.get(位置)); }以上代码实现了上图效果,当然也可以使用RecyclerView AbsListView做容器。
希望对大家的学习有所帮助,也希望大家多多支持。
Android仿淘宝商品详情页