android仿高德地圖透明黑字,Android 仿高德地圖可拉伸的BottomSheet

原標題:Android 仿高德地圖可拉伸的BottomSheet

2018安卓巴士開發者大會-上海站

你一直期待的安卓技術盛宴即將登場!

前言

最近項目中需要用到高德地圖搜索結果后的結果展示的可拉伸控件。

b540b271261feafd055df9d57e237919.gif

而我看到這個效果圖,覺得這個就是一個slidingpanel,但是翻閱了一些發現用google自帶的bottomsheet實現更方便

什么是BottomSheet?

Bottom Sheet是Design Support Library23.2 版本引入的一個類似于對話框的控件,可以暫且叫做底部彈出框吧。 Bottom Sheet中的內容默認是隱藏起來的,只顯示很小一部分,可以通過在代碼中設置其狀態或者手勢操作將其完全展開,或者完全隱藏,或者部分隱藏。對于Bottom Sheet的描述可以在官網查詢:

xmlns:app="http://schemas.android.com/apk/res-auto"

android:id="@+id/cl_chouti"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="match_parent">

android:id="@+id/map_view"

android:layout_width="match_parent"

android:layout_height="match_parent"/>

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center">

android:id="@+id/mark"

android:layout_width="30dp"

android:layout_height="30dp"

android:src="@drawable/poi_marker_pressed"/>

android:layout_width="30dp"

android:layout_height="40dp"

android:layout_below="@+id/mark"/>

android:id="@+id/bottom_sheet"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

app:behavior_hideable="true"

app:behavior_peekHeight="160dp"

app:layout_behavior="@string/bottom_sheet_behavior">

layout_bottom_sheet.xml

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:background="#ffffff"

android:orientation="vertical">

android:id="@+id/tv_tishi"

android:layout_gravity="center_horizontal"

android:layout_marginTop="40dp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="附近熱點"

android:textSize="10sp"/>

android:id="@+id/recyclerview"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>

activity中的使用

//底部抽屜欄展示地址

bottomSheet = findViewById(R.id.bottom_sheet);

behavior = BottomSheetBehavior.from(bottomSheet);

behavior.setBottomSheetCallback( newBottomSheetBehavior.BottomSheetCallback() {

@Override

publicvoidonStateChanged(@NonNull View bottomSheet, @BottomSheetBehavior.State intnewState){

String state = "null";

switch(newState) {

case1:

state = "STATE_DRAGGING"; //過渡狀態此時用戶正在向上或者向下拖動bottom sheet

break;

case2:

state = "STATE_SETTLING"; // 視圖從脫離手指自由滑動到最終停下的這一小段時間

break;

case3:

state = "STATE_EXPANDED"; //處于完全展開的狀態

break;

case4:

state = "STATE_COLLAPSED"; //默認的折疊狀態

break;

case5:

state = "STATE_HIDDEN"; //下滑動完全隱藏 bottom sheet

break;

}

}

@Override

publicvoidonSlide(@NonNull View bottomSheet, floatslideOffset){

// Log.d("BottomSheetDemo", "slideOffset:" + slideOffset);

}

});

注意分析 CoordinatorLayout 是Meterial Design中的一個新控件,通過behavior用來協調其他組件, 實現聯動,因此父布局必須是CoordinatorLayout 。 注意到布局中,RelativeLayout中的app:layout_behavior=”@string/bottom_sheet_behavior”屬性,點進去可以看到,這個屬性實際上是設置系統默認實現的BottomSheet的behavior。原則上來說,只要是可以滾動的View,在加上了這個屬性后,都可以作為BottomSheet來使用,建議使用NestedScrollView或者RecyclerView。

源碼地址:https://github.com/lmDai/GDMapOperate.git

如有不正確的地方,歡迎在下方留言以便更正!

責任編輯:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372021.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372021.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372021.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java EE 7中包含哪些JSR?

我開始填寫所有應該加入Java EE 7的Java規范請求的表。 由于平臺版本仍在確定中,因此某些細節很難確定。 完整的Java EE 7 EJB產品具有以下標準組件和API: 名稱 版 描述 JSR 網頁 輪廓 批處理 1.0 批量處理 352 Bean驗證 1.1 Bean驗證框…

[ Javascript ] JavaScript中的定時器(Timer) 是怎樣工作的!

作為入門者來說。了解JavaScript中timer的工作方式是非常重要的。通常它們的表現行為并非那么地直觀,而這是由于它們都處在一個單一線程中。讓我們先來看一看三個用來創建以及操作timer的函數。var id setTimeout(fn, delay); - 初始化一個單一的timer&#xff0c…

android dropbox anr分析,Android如何分析排查ANR

釋放雙眼,帶上耳機,聽聽看~!在Android開發中,當程序發生異常時會拋出異常信息,先說下三種常見類型:列表內容KeyDispatchTimeout(谷歌default 5s,MTK平臺上是8s) –主要類型按鍵或觸摸事件在特定…

修改httpd默認端口號

Tomcat: vim /etc/httpd/conf/httpd.conf//別忘了service httpd restart Nginx: vim /etc/nginx/nginx.conf//完了之后service nginx restart 轉載于:https://www.cnblogs.com/bincoding/p/6067054.html

整合彈簧,速度和瓷磚

我喜歡 Tiles, 并且聽到了很多有關 Velocity的信息 。 它們似乎有不同的用途,并且據說很容易結合在一起,所以我決定試一試,并在Spring Web應用程序中同時使用它們。 集成實際上花費了許多小時,并且是一次真正的過山車&…

Android 軟鍵盤自動彈出和關閉

在我們寫修改信息或者搜索,修改密碼等界面的時候,用戶進入這個界面的主要目的就是輸入修改/查找 某些信息,為了用戶體驗應該自動彈出軟鍵盤而不是讓用戶主動點擊輸入框才彈出。 1.軟鍵盤的自動彈出 private void showKeyboard(){InputMethodM…

android adb殺死服務,Android app是如何殺掉的

1. adb shell kill -9 pid_of_appAMS定義了AppDeathRecipientAPP 在 attachApplication -> attachApplicationLockedAMS里會注冊 App 進程的 BinderDeath通知AppDeathRecipient adr new AppDeathRecipient(app, pid, thread);thread.asBinder().linkToDeath(adr, 0);當App進…

iOS學習筆記39-ReactiveCocoa入門

FRP,全稱為Functional Reactive Programming,是一種響應變化的編程范式,最近幾年比較火,大概的理解就像這樣: 當a的值或者b的值發生變化時,c的值會自動響應a的值或b的值變化的信號,自動更正自己…

使用密碼摘要生成器擴展JMeter

最近,我不得不處理一個帶有50,000條用戶記錄的OpenLDAP實例,并進行一些壓力測試。 JMeter是填充LDAP的最佳選擇。 但是,在我的情況下,OpenLDAP配置為不接受任何明文密碼。 因此,我無法使用通過JMeter LDAP Request采…

制造業數字化轉型核心不止是技術

一、制造業的數字化轉型意味著什么? 在當今的制造業領域,數字化轉型意味著通過集成數字技術來增強傳統的制造方法、產品和勞動力的過程。這些技術包括一系列創新,如自動化軟件、電子商務系統、傳感器、工業機器人等。 二、制造業數字化轉型的…

分類測試以減少構建時間

在繼續本文的主要內容之前,讓我們先進行一些定義。 單元測試 單元測試是小型的(測試一種用例或單元),在內存中運行(不與數據庫,消息隊列等交互),可重復且快速的測試。 對于我們的對…

android橫向展示狀態,【報Bug】Android橫屏狀態下啟動App,即使在App.vue中鎖定豎屏,但是首頁nvue中的rpx單位是按照啟動的橫豎屏狀態顯示的!...

詳細問題描述(DCloud產品不會有明顯的bug,所以你遇到的問題大都是在特定環境下才能重現的問題,請仔細描述你的環境和重現方式,否則DCloud很難排查解決你的問題)[內容]重現步驟[步驟][結果][期望]nvue首頁rpx單位能夠根據App.vue鎖定的屏幕方向…

property修飾關鍵字

修飾符按作用區分:線程安全相關,內存相關,讀寫權限相關,set和get,是否可為空, class 一.默認值 property NSArray *dataArray; 默認的是:atomic,strong(有的文章寫的居然是assign,我認為還是str…

高精度相關模板.

1 2 /*3 高精度加法.4 */5 #include<cstring>6 #include<cstdio>7 #include<iostream>8 #define MAXN 100019 using namespace std;10 int a[MAXN],b[MAXN],c[MAXN],l1,l2,l3;11 char m[MAXN],n[MAXN];12 void slove()13 {14 l3max(l1,l2);15 for(in…

5分鐘內Google App Engine上的Vaadin App

在本教程中&#xff0c;您將學習如何創建第一個Vaadin Web應用程序&#xff0c;如何在本地AppEngine開發服務器上運行它以及如何將其部署到Google App Engine基礎結構。 所有這些大約需要5到10分鐘。 是的&#xff0c;如果您安裝了必要的先決條件&#xff0c;則可以立即開始運行…

linux系統調用的封裝格式,ARM Linux系統調用的原理

ARM Linux系統調用的原理ARM Linux系統調用的原理操作系統為在用戶態運行的進程與硬件設備進行交互提供了一組接口。在應用程序和硬件之間設置一個額外層具有很多優點。首先&#xff0c;這使得編程更加容易&#xff0c;把用戶從學習硬件設備的低級編程特性中解放出來。其次&…

(延遲兩秒,跳轉相應頁面)(返回到上一個頁面并刷新)

1.setTimeout("window.location.href /moment/reason",2000);2.返回到上一個頁面并刷新 self.location document.referrer;2.1常見的幾種刷新方式 a.history.go(-1) 返回上一頁 b.location.reload() 刷新當前頁面 c.history.back() 返回上一頁2.2當…

檢索字符創 php

strstr()可以返回匹配的值 echo strstr("localhost", "os");返回ost echo substr_count("gggggs", "g"); 返回檢索匹配字符創次數 substr_replace 字串替換函數轉載于:https://www.cnblogs.com/lidepeng/p/6078064.html

android8強制將app移到sd卡,小內存手機?APP強制轉移至SD卡教程

雖然近兩年手機的機身內存越做越大&#xff0c;但是身邊總還是有些朋友在使用幾年前的手機。而面對如今海量的豐富應用&#xff0c;早年的手機中內置的存儲空間已經開始捉襟見肘。雖說對于這類機型系統通常都提供了將APP轉移至外置內存卡的功能&#xff0c;可是依然有一些頑固的…

在沒有XML的情況下測試Spring和Hibernate

我非常熱衷于Spring 3中的改進&#xff0c;這些改進最終使您能夠在IDE和編譯器的適當支持下從XML遷移到純Java配置。 它并沒有改變Spring是一個龐大的套件這一事實&#xff0c;并且有時發現您需要的東西可能需要一段時間。 圍繞Hibernate的無XML單元測試就是這樣一回事。 我知道…