欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置

程序员文章站 2024-02-29 11:21:22
在刚刚完成的项目中,在一个页面中,用户体验师提出引用户操作的入住按钮要一直保留在页面当中,不管页面能滚动多长都得停留在页面的可视区域。最终实现效果如下图所示: &nb...

在刚刚完成的项目中,在一个页面中,用户体验师提出引用户操作的入住按钮要一直保留在页面当中,不管页面能滚动多长都得停留在页面的可视区域。最终实现效果如下图所示:

Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置 

如图中的红色框中的view始终会停留在页面中,如果滑动至页面的顶部,会一直保留在顶部。

下面来说下具体的实现思路:

Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置

思路:其实整个页面当中一共有两个视觉效果一样的view,通过滑动的位置来进行view的隐藏和显示来达到这种效果。整个页面的在上下滑动的过程中可以总结为两个状态,状态a(如图1所示),view2在可视区域内时,view1不可见。状态b(如图2所示),view2滑过了可视区域,此种状态view1可见,view2不可见。

view显示和隐藏的时机:1、当页面向上滑动时,从状态a转变到状态b的瞬间,view1正好滑动至顶部与view2重合的瞬间,将view1显示;

2、当页面向下滑动,从状态b转变到状态a的瞬间,view2正好和view1重合的瞬间,将view1隐藏。

viewallshowlinearlayout类

package org.sunday.uiext; 
import android.content.context; 
import android.util.attributeset; 
import android.view.view; 
import android.widget.linearlayout; 
import android.widget.scrollview; 
/** 
* @author sunday 
* 2013-12-5 
* 邮箱:zhengchao1937@163.com 
* qq:804935743 
*/ 
public class viewallshowlinearlayout extends linearlayout { 
private view mview; // 顶部的view 
private viewswitchlistener viewswitchlistener; // 对外钩子接口 
private scrollview mscrollview; 
private boolean isflag = true; //辅助判断变量 
public void initdata(view view, scrollview scrollview, 
viewswitchlistener viewswitchlistener) { 
this.mview = view; 
this.mscrollview = scrollview; 
this.viewswitchlistener = viewswitchlistener; 
} 
public viewallshowlinearlayout(context context) { 
super(context); 
init(); 
} 
public viewallshowlinearlayout(context context, attributeset attrs) { 
super(context, attrs); 
init(); 
} 
private void init() { 
setorientation(linearlayout.vertical); 
} 
@override 
public void computescroll() { 
if (mview != null && mscrollview != null && viewswitchlistener != null) { 
int y = mscrollview.getscrolly(); 
if (isflag) { 
int top = mview.gettop(); 
if (y >= top) { 
viewswitchlistener.onviewshow(); 
isflag = false; 
} 
} 
if (!isflag) { 
int bottom = mview.getbottom(); 
if (y <= bottom - mview.getheight()) { 
viewswitchlistener.onviewgone(); 
isflag = true; 
} 
} 
} 
} 
public interface viewswitchlistener { 
public void onviewshow(); 
public void onviewgone(); 
} 
}

项目中的使用效果:

Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置 Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置Android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置

以上所述是小编给大家介绍的android仿淘宝view滑动至屏幕顶部会一直停留在顶部的位置,希望对大家有所帮助