Android仿淘寶view滑動(dòng)至屏幕頂部會(huì)一直停留在頂部的位置
在剛剛完成的項(xiàng)目中,在一個(gè)頁(yè)面中,用戶體驗(yàn)師提出引用戶操作的入住按鈕要一直保留在頁(yè)面當(dāng)中,不管頁(yè)面能滾動(dòng)多長(zhǎng)都得停留在頁(yè)面的可視區(qū)域。最終實(shí)現(xiàn)效果如下圖所示:
如圖中的紅色框中的view始終會(huì)停留在頁(yè)面中,如果滑動(dòng)至頁(yè)面的頂部,會(huì)一直保留在頂部。
下面來(lái)說(shuō)下具體的實(shí)現(xiàn)思路:
思路:其實(shí)整個(gè)頁(yè)面當(dāng)中一共有兩個(gè)視覺(jué)效果一樣的View,通過(guò)滑動(dòng)的位置來(lái)進(jìn)行View的隱藏和顯示來(lái)達(dá)到這種效果。整個(gè)頁(yè)面的在上下滑動(dòng)的過(guò)程中可以總結(jié)為兩個(gè)狀態(tài),狀態(tài)A(如圖1所示),view2在可視區(qū)域內(nèi)時(shí),view1不可見。狀態(tài)B(如圖2所示),view2滑過(guò)了可視區(qū)域,此種狀態(tài)view1可見,view2不可見。
view顯示和隱藏的時(shí)機(jī):1、當(dāng)頁(yè)面向上滑動(dòng)時(shí),從狀態(tài)A轉(zhuǎn)變到狀態(tài)B的瞬間,view1正好滑動(dòng)至頂部與view2重合的瞬間,將view1顯示;
2、當(dāng)頁(yè)面向下滑動(dòng),從狀態(tài)B轉(zhuǎn)變到狀態(tài)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; // 對(duì)外鉤子接口 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(); } }
項(xiàng)目中的使用效果:
以上所述是小編給大家介紹的Android仿淘寶view滑動(dòng)至屏幕頂部會(huì)一直停留在頂部的位置,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Android 實(shí)現(xiàn)WebView點(diǎn)擊圖片查看大圖列表及圖片保存功能
這篇文章主要介紹了Android 實(shí)現(xiàn)WebView點(diǎn)擊圖片查看大圖列表及圖片保存功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-02-02Android InputMethodManager輸入法簡(jiǎn)介
這篇文章主要介紹了Android InputMethodManager輸入法框架的使用,具有參考價(jià)值,需要的朋友可以參考下。2016-06-06Android編程添加快捷方式(Short)到手機(jī)桌面的方法(含添加,刪除及查詢)
這篇文章主要介紹了Android編程添加快捷方式(Short)到手機(jī)桌面的方法,含有針對(duì)桌面快捷方式的添加,刪除及查詢的操作實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-01-01Android實(shí)現(xiàn)蝸牛進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)蝸牛進(jìn)度條效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06Android Camera實(shí)現(xiàn)毫秒級(jí)拍照實(shí)例
本篇文章主要介紹了Android Camera實(shí)現(xiàn)毫秒級(jí)拍照實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-06-06Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果(九)
這篇文章主要為大家詳細(xì)介紹了Flutter進(jìn)階之實(shí)現(xiàn)動(dòng)畫效果的第九篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Android粒子線條效果實(shí)現(xiàn)過(guò)程與代碼
這篇文章主要介紹了Android粒子線條效果的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02Android使用SmsManager實(shí)現(xiàn)短信發(fā)送功能
這篇文章主要為大家詳細(xì)介紹了Android使用SmsManager實(shí)現(xiàn)短信發(fā)送功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11更新Android Studio 3.0碰到的問(wèn)題小結(jié)
本文是小編給大家分享的更新Android Studio 3.0碰到的問(wèn)題小結(jié),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-11-11