Android實現(xiàn)高德地圖首頁效果(下)

書接上文Android實現(xiàn)高德地圖首頁效果(上),咱們講到能不能通過滑動監(jiān)聽玩出新花樣,答案是能。但這里不再是通過NestedScrollView添加滑動監(jiān)聽,而是交給咱們的BottomSheetBehavior。
由于BottomSheetBehavior是在xml中配置,那么我們要怎么拿到它呢?內部提供了from方法:
val bottomSheetBehavior = BottomSheetBehavior.from(scrollView)
拿到BottomSheetBehavior后通過addBottomSheetCallback添加監(jiān)聽。需要實現(xiàn)兩個方法:
public abstract static class BottomSheetCallback {
//newState 狀態(tài)變化,也就是隱藏、展開、半展開等狀態(tài)
public abstract void onStateChanged(@NonNull View bottomSheet, @State int newState);
//slideOffset 0-1的一個比例值 代表當前位置高度占比
public abstract void onSlide(@NonNull View bottomSheet, float slideOffset);
}看到這里,大家應該知道應該怎么操作了,主要還是集中在onSlide方法中拿到slideOffset值,根據該值的變化做對應效果展示。
首先,XML中添加搜索框等元素:
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/search_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:background="@null"
android:drawableStart="@drawable/ic_search_grey"
android:drawablePadding="8dp"
android:gravity="center_vertical"
android:hint="搜索關鍵詞"
android:imeOptions="actionSearch"
android:maxLines="1"
android:padding="10dp"
android:singleLine="true"
android:textColor="@color/text_color_1"
android:textSize="15dp" />
<TextView
android:id="@+id/homeView"
android:text="漸變"
android:gravity="center"
android:background="@drawable/shape_white"
android:drawableLeft="@drawable/ic_chip_home"
android:drawablePadding="6dp"
android:layout_width="wrap_content"
android:layout_height="30dp"/>核心邏輯是需要獲取當前位置高度,以此來判斷是否到達咱們之前設置的半展開高度(注意這里的半展開設置的也是占比值)。當滑動距離大于半展開高度就需要將搜索框向上平移且漸變。同時搜索框下面的homeView也需要做漸變操作。反之,在收回的時候當距離小于半展開狀態(tài)需要恢復各視圖狀態(tài)。
override fun onSlide(bottomSheet: View, slideOffset: Float) {
//在peekHeight位置以上 滑動(向上、向下) slideOffsetbottomSheet.getHeight() 是展開后的高度的比例
if (slideOffset > 0) {
val height = bottomSheet.height
distance = height * slideOffset
//搜索欄反向位移
val halfExpandedRatio = bottomSheetBehavior!!.halfExpandedRatio
val halfHeight = halfExpandedRatio * height //中間狀態(tài)的高度
if (distance > halfHeight) {
search_view?.translationY = -(distance - halfHeight)
search_view?.alpha = 1 - slideOffset + halfExpandedRatio
homeView?.alpha = 1 - slideOffset
} else {
search_view?.translationY = 0f
search_view?.alpha = 1.0f
homeView?.alpha = 1.0f
}
fabContainer?.alpha = 1 - slideOffset
}
}到此,咱們gif展示的效果基本就實現(xiàn)了。只要你的想象力夠豐富,在這里玩出花都可以。
以上便是實現(xiàn)高德地圖首頁效果的全部內容,希望對大家有所幫助。
到此這篇關于Android實現(xiàn)高德地圖首頁效果(下)的文章就介紹到這了,更多相關Android實現(xiàn)高德地圖內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android DragVideo實現(xiàn)播放視頻時任意拖拽的方法
這篇文章主要介紹了Android DragVideo實現(xiàn)播放視頻時任意拖拽的方法的相關資料,一種在播放視頻時,能夠拖拽的方案,需要的朋友可以參考下2016-12-12
Android編程實現(xiàn)仿優(yōu)酷圓盤旋轉菜單效果的方法詳解【附demo源碼下載】
這篇文章主要介紹了Android編程實現(xiàn)仿優(yōu)酷圓盤旋轉菜單效果的方法,涉及Android界面布局及事件響應相關操作技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下2017-08-08
Android ViewPager循環(huán)播放廣告實例詳解
這篇文章主要介紹了Android ViewPager循環(huán)播放廣告條實例詳解的相關資料,需要的朋友可以參考下2017-03-03

