日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog

發(fā)布時間:2024/3/13 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android MVVM框架搭建(八)高德地圖定位、天氣查詢、BottomSheetDialog

  • 前言
  • 正文
    • 一、集成SDK
    • 二、基礎(chǔ)配置
      • ① 權(quán)限配置
      • ② 配置Key
    • 三、顯示地圖
      • ① MapFragment
      • ② Navigation綁定
      • ③ Fragment中地圖生命周期綁定
    • 四、顯示當(dāng)前所在地
      • ① 定位動態(tài)權(quán)限申請
      • ② 地圖定位當(dāng)前所在地
    • 五、獲取詳細的地址信息
    • 六、獲取天氣數(shù)據(jù)
    • 七、顯示天氣數(shù)據(jù)
      • ① 實時天氣數(shù)據(jù)
      • ② 天氣彈窗布局
      • ③ BottomSheetDialog使用
    • 八、源碼

前言

??在上一篇文章中完成了對個人用戶信息的修改,同時講述了對彈窗數(shù)據(jù)的處理,權(quán)限的使用,本文將在App中接入一個地圖SDK,同時完成天氣的查詢,完成后的效果如下圖所示:

正文

??實際上地圖和天氣我在之前的好天氣App上都寫過了,那個上面寫的就比較多了,也比較復(fù)雜了,在這里第一個是為了豐富MVVM的使用場景,同時滿足在Fragment中使用地圖的需要,第三個就是底部彈窗與MVVM的結(jié)合。

可以掃描二維碼下載體驗一下:

一、集成SDK

??本文中將會使用地圖,這里我選擇使用高德地圖,需要去集成SDK,首先需要登錄高德開放平臺去注冊,創(chuàng)建應(yīng)用,獲取key,由于之前寫過這樣的文章,因此不用再重復(fù)了,不了解的可以看看Android 高德地圖API,看完步驟一,拿到了key就可以了,沒有問題再回來本文。

點擊提交就會有一個key了。

點擊下載SDK,對SDK進行選擇,如下圖所示:

點擊下載,到本地之后解壓,如下圖所示:

將這些文件復(fù)制到你的項目的libs下,如下圖所示:

現(xiàn)在這個SDK還沒有集成的,你只是放到了項目中,打開app模塊下的build.gradle,在android{}閉包下添加如下代碼:

defaultConfig {ndk {//設(shè)置支持的SO庫架構(gòu)abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64"}}sourceSets {main {jniLibs.srcDirs = ['libs']}}

如下圖所示:

然后在dependencies{}閉包下添加如下代碼:

//加載lib下的jar文件implementation fileTree(include: '*.jar', dir: 'libs')

添加位置如下:這行代碼老版本的AS是自帶的,后面新版本的沒有了。

然后點擊右上角的Sync Now,進行依賴庫下載配置同步,此時你的jar包可以展開了,就說明SDK集成成功了。

二、基礎(chǔ)配置

??SDK已經(jīng)引入,要使用還需要進行一些配置,首先是權(quán)限配置。

① 權(quán)限配置

在AndroidManifest.xml下新增如下權(quán)限:

<!--允許獲取粗略位置--><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!--允許獲取精準位置--><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><!--允許獲取wifi狀態(tài)改變,用于網(wǎng)絡(luò)定位--><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

其他的所需權(quán)限,在之前寫相應(yīng)功能的時候都已經(jīng)添加好了,因此就不用重復(fù)添加了,添加位置如下圖所示:

下面配置Key

② 配置Key

然后配置高德地圖Key,在application標簽內(nèi)

<!--高德地圖Key--><meta-dataandroid:name="com.amap.api.v2.apikey"android:value="597d296d723c5adb7165b732bc6f831e"/>

添加位置如下圖所示:

現(xiàn)在來說,前期的準備工作就差不多了,下面就要去實現(xiàn)地圖顯示和定位了。

三、顯示地圖

??我們讓地圖顯示在HomeActivity上,因此我們需要創(chuàng)建一個MapFragment去加載地圖,一些讀者只看到我用Activity加載過地圖,換到Fragment上就不會用了,我很心痛啊。痛定思痛之后,我決定在Fragment上演示一下地圖怎么操作,當(dāng)然這是很簡單的,我也會慢慢提高難度,你準備好了嗎?

① MapFragment

首先在fragment包下新建一個MapFragment,對應(yīng)的布局是map_fragment.xml,布局代碼如下:

<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"><FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"tools:context=".ui.fragment.MapFragment"><com.amap.api.maps.MapViewandroid:id="@+id/map_view"android:layout_width="match_parent"android:layout_height="match_parent"/></FrameLayout> </layout>

很簡單,就一個地圖。下面回到MapFragment,里面的代碼如下:

public class MapFragment extends BaseFragment {private MapFragmentBinding binding;public static MapFragment newInstance() {return new MapFragment();}@Overridepublic View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,@Nullable Bundle savedInstanceState) {binding = DataBindingUtil.inflate(inflater,R.layout.map_fragment,container,false);return binding.getRoot();}@Overridepublic void onActivityCreated(@Nullable Bundle savedInstanceState) {super.onActivityCreated(savedInstanceState);// TODO: Use the ViewModel}}

這里只是簡單的繼承了一下BaseFragment,然后就是DataBinding的綁定。

② Navigation綁定

然后我們需要在nav_graph.xml中添加這個布局。

<!--地圖--><fragmentandroid:id="@+id/map_fragment"android:name="com.llw.mvvm.ui.fragment.MapFragment"android:label="map_fragment"tools:layout="@layout/map_fragment" />

??這里配置了,那么底部的菜單同樣要配置,畢竟我們是通過菜單去控制Fragment的切換的,打開navigation_menu.xml,在里面添加一個item,代碼如下:

<itemandroid:id="@+id/map_fragment"android:icon="@mipmap/ic_map"android:title="地圖" />

這個圖標可以去我的源碼里面去找,或者自己去網(wǎng)上找一個也行。

下面進入到HomeActivity中去配置,配置切換菜單時的Fragment布局改變,如下圖所示:

③ Fragment中地圖生命周期綁定

要顯示地圖需要將地圖的生命周期與Fragment的生命周期綁定起來,如下圖所示:

如果你是線上的項目你需要在隱私政策中引入高德SDK的說明,然后在MapFragment中綁定地圖的生命周期。

@Overridepublic void onSaveInstanceState(@NonNull @NotNull Bundle outState) {super.onSaveInstanceState(outState);binding.mapView.onSaveInstanceState(outState);}@Overridepublic void onResume() {super.onResume();binding.mapView.onResume();}@Overridepublic void onPause() {super.onPause();binding.mapView.onPause();}@Overridepublic void onDestroy() {super.onDestroy();binding.mapView.onDestroy();}

下面運行一下:


現(xiàn)在只是顯示了地圖,但是并沒有定位到我當(dāng)前所在地,這當(dāng)然是不行的。

四、顯示當(dāng)前所在地

??顯示當(dāng)前所在地則需要定位權(quán)限,之前在AndroidManifest.xml中已經(jīng)配置好了,下面則需要在代碼中動態(tài)請求。

① 定位動態(tài)權(quán)限申請

在上一篇文章中寫過一個PermissionUtils類,這里給這個類再加一點東西進去,在PermissionUtils中增加如下代碼:

public static final String LOCATION = Manifest.permission.ACCESS_FINE_LOCATION;public static final int REQUEST_LOCATION_CODE = 1003;

然后在getPermissionRequestCode方法中增加一個case,如下圖所示:

下面就是在HomeActivity中請求動態(tài)權(quán)限了,在HomeActivity中新增如下方法:

/*** 請求定位權(quán)限*/private void requestLocation() {if (isAndroid6()) {if (!hasPermission(PermissionUtils.LOCATION)) {requestPermission(PermissionUtils.LOCATION);}} else {showMsg("您無需動態(tài)請求權(quán)限");}}

然后在initView方法中調(diào)用它,如下圖所示:

② 地圖定位當(dāng)前所在地

下面回到MapFragment,新增如下代碼:

private static final String TAG = MapFragment.class.getSimpleName();/*** 初始化地圖*/private void initMap() {//初始化地圖控制器對象AMap aMap = binding.mapView.getMap();// 設(shè)置為true表示顯示定位層并可觸發(fā)定位,false表示隱藏定位層并不可觸發(fā)定位,默認是falseaMap.setMyLocationEnabled(true);MyLocationStyle style = new MyLocationStyle();//初始化定位藍點樣式類myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);//連續(xù)定位、且將視角移動到地圖中心點,定位點依照設(shè)備方向旋轉(zhuǎn),并且會跟隨設(shè)備移動。(1秒1次定位)如果不設(shè)置myLocationType,默認也會執(zhí)行此種模式。style.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATE) ;//定位一次,且將視角移動到地圖中心點。aMap.setMyLocationStyle(style);//設(shè)置定位藍點的StyleaMap.getUiSettings().setMyLocationButtonEnabled(true);//設(shè)置默認定位按鈕是否顯示,非必需設(shè)置。aMap.setMyLocationEnabled(true);// 設(shè)置為true表示啟動顯示定位藍點,false表示隱藏定位藍點并不進行定位,默認是false。//設(shè)置SDK 自帶定位消息監(jiān)聽aMap.setOnMyLocationChangeListener(this);}@Overridepublic void onMyLocationChange(Location location) {// 定位回調(diào)監(jiān)聽if(location != null) {Log.e(TAG, "onMyLocationChange 定位成功, lat: " + location.getLatitude() + " lon: " + location.getLongitude());} else {Log.e(TAG, "定位失敗");}}

實現(xiàn)位置監(jiān)聽

調(diào)用initMap()

運行一下

五、獲取詳細的地址信息

??通過地圖定位的方式定位在了當(dāng)前所在地,但是onMyLocationChange的location中只有當(dāng)前所在地的經(jīng)緯度,如果我們需要拿到詳細的地址信息要怎么做呢?通過SearchSDK實現(xiàn),通過逆地理編碼來將坐標轉(zhuǎn)換成詳細的地址。依然是在MapFragment,繼承GeocodeSearch.OnGeocodeSearchListener,實現(xiàn)兩個回調(diào)方法。代碼如下:

/*** 坐標轉(zhuǎn)地址*/@Overridepublic void onRegeocodeSearched(RegeocodeResult regeocodeResult, int rCode) {}/*** 地址轉(zhuǎn)坐標*/@Overridepublic void onGeocodeSearched(GeocodeResult geocodeResult, int rCode) {}

然后這個也需要初始化,代碼如下:

//解析成功標識碼private static final int PARSE_SUCCESS_CODE = 1000;private GeocodeSearch geocoderSearch = null;private String district = null;// 區(qū)/縣

下面寫一個方法初始化搜索

/*** 初始化搜索*/private void initSearch() {try {geocoderSearch = new GeocodeSearch(requireActivity());geocoderSearch.setOnGeocodeSearchListener(this);} catch (AMapException e) {e.printStackTrace();}}

調(diào)用的地方如下圖:

當(dāng)收位置信息改變時,進行坐標的搜索,在onMyLocationChange中添加如下代碼:

//創(chuàng)建一個經(jīng)緯度點,參數(shù)一是緯度,參數(shù)二是經(jīng)度LatLonPoint latLonPoint = new LatLonPoint(location.getLatitude(), location.getLongitude());// 第一個參數(shù)表示一個Latlng,第二參數(shù)表示范圍多少米,第三個參數(shù)表示是火系坐標系還是GPS原生坐標系RegeocodeQuery query = new RegeocodeQuery(latLonPoint, 20, GeocodeSearch.AMAP);//通過經(jīng)緯度獲取地址信息geocoderSearch.getFromLocationAsyn(query);

添加位置如下:

??然后就會觸發(fā)onRegeocodeSearched的回調(diào),在onRegeocodeSearched中則對所在地的信息進行打印和簡單的區(qū)/縣賦值,在onRegeocodeSearched方法中添加如下代碼:

//解析result獲取地址描述信息if (rCode == PARSE_SUCCESS_CODE) {RegeocodeAddress regeocodeAddress = regeocodeResult.getRegeocodeAddress();//顯示解析后的地址Log.e(TAG, "地址: " + regeocodeAddress.getFormatAddress());district = regeocodeAddress.getDistrict();Log.e(TAG, "區(qū): " + district);} else {showMsg("獲取地址失敗");}

添加位置如下:

下面運行一下:

這樣就拿到了詳細的位置信息。

六、獲取天氣數(shù)據(jù)

??高德是自帶了天氣數(shù)據(jù)接口的,可以用,只不過數(shù)據(jù)不是很多,如果需要更多的數(shù)據(jù)的話可以自己去對接天氣API,例如和風(fēng)、彩云。
在MapFragment創(chuàng)建變量

private LocalWeatherLive liveResult;private LocalWeatherForecast forecastResult;

然后MapFragment繼承WeatherSearch.OnWeatherSearchListener,實現(xiàn)兩個方法。

/*** 實時天氣返回*/@Overridepublic void onWeatherLiveSearched(LocalWeatherLiveResult localWeatherLiveResult, int code) {liveResult = localWeatherLiveResult.getLiveResult();if (liveResult != null) {Log.e(TAG, "onWeatherLiveSearched: " + new Gson().toJson(liveResult));} else {showMsg("實時天氣數(shù)據(jù)為空");}}/*** 天氣預(yù)報返回*/@Overridepublic void onWeatherForecastSearched(LocalWeatherForecastResult localWeatherForecastResult, int code) {forecastResult = localWeatherForecastResult.getForecastResult();if (forecastResult != null) {Log.e(TAG, "onWeatherForecastSearched: " + new Gson().toJson(forecastResult));} else {showMsg("天氣預(yù)報數(shù)據(jù)為空");}}

在方法回調(diào)中打印一下返回的數(shù)據(jù),然后寫一個搜索天氣的方法,根據(jù)傳入不同的天氣類型,進行不同的天氣數(shù)據(jù)搜索,代碼如下:

/*** 搜索天氣** @param type WEATHER_TYPE_LIVE 實時天氣 WEATHER_TYPE_FORECAST 預(yù)報天氣*/private void searchWeather(int type) {WeatherSearchQuery weatherSearchQuery = new WeatherSearchQuery(district, type);try {WeatherSearch weatherSearch = new WeatherSearch(requireActivity());weatherSearch.setOnWeatherSearchListener(this);weatherSearch.setQuery(weatherSearchQuery);weatherSearch.searchWeatherAsyn(); //異步搜索} catch (AMapException e) {e.printStackTrace();}}

最后在onRegeocodeSearched中,拿到地址信息時調(diào)用searchWeather方法,代碼如下:

//搜索天氣 實時天氣和預(yù)報天氣searchWeather(WeatherSearchQuery.WEATHER_TYPE_LIVE);searchWeather(WeatherSearchQuery.WEATHER_TYPE_FORECAST);

添加位置如下:


下面運行一下,查看日志,天氣的數(shù)據(jù)就有了

七、顯示天氣數(shù)據(jù)

??有了天氣數(shù)據(jù)之后就是顯示天氣數(shù)據(jù)了,這里我們可以這么做,就是在MapFragment中添加一個浮動按鈕,點擊之后從屏幕底部彈出一個,先來修改一下map_fragment中的代碼,我們增加一個浮動按鈕。

<com.google.android.material.floatingactionbutton.FloatingActionButtonandroid:id="@+id/fab_weather"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="end|bottom"android:layout_margin="20dp"android:visibility="gone"android:contentDescription="天氣"android:src="@mipmap/ic_weather"app:backgroundTint="@color/white"app:fabSize="auto"tools:ignore="UsingOnClickInXml" />

添加的位置就如下圖所示:

??這里我先把這個按鈕給隱藏了,當(dāng)?shù)貓D上獲取了當(dāng)前的位置,查詢到了天氣之后再顯示這個按鈕。下面回到MapFragment中,在initMap方法中增加一行代碼,

//修改放大縮小按鈕的位置aMap.getUiSettings().setZoomPosition(AMapOptions.ZOOM_POSITION_RIGHT_CENTER);

這樣做就是讓我們的浮動按鈕不至于擋住這個地圖的放大縮小按鈕。

在MapFragment中添加一個變量

//天氣預(yù)報列表private List<LocalDayWeatherForecast> weatherForecast;

然后在onWeatherForecastSearched回調(diào)中對找個變量賦值,這才是實際的天氣數(shù)據(jù)

查詢到天氣預(yù)報數(shù)據(jù)后,顯示這個按鈕。

① 實時天氣數(shù)據(jù)

??現(xiàn)在已經(jīng)可以看到所在地的天氣了,當(dāng)需要顯示出來的時候你會發(fā)現(xiàn)找個數(shù)據(jù)里面是沒有所在地的區(qū)/縣的,只有省和市。因此在model包下新建一個LiveWeather,把我們在通過你地理編碼返回時的區(qū)/縣的值放進去,代碼如下:

public class LiveWeather {private String district;private LocalWeatherLive localWeatherLive;public LiveWeather(String district, LocalWeatherLive localWeatherLive) {this.district = district;this.localWeatherLive = localWeatherLive;}public String getDistrict() {return district;}public void setDistrict(String district) {this.district = district;}public LocalWeatherLive getLocalWeatherLive() {return localWeatherLive;}public void setLocalWeatherLive(LocalWeatherLive localWeatherLive) {this.localWeatherLive = localWeatherLive;} }

這個數(shù)據(jù)將會綁定到我們的天氣彈窗,現(xiàn)在來創(chuàng)建這個彈窗的布局。

② 天氣彈窗布局

??彈窗布局分為兩個環(huán)節(jié),一個是實時天氣,一個是預(yù)報天氣。首先colors.xml創(chuàng)建一個顏色值,如下:

<color name="translucent">#90000000</color>

然后在drawable下創(chuàng)建一個shape_translucent_radius_12.xml樣式文件,代碼如下:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"><corners android:radius="12dp"/><solid android:color="@color/translucent"/> </shape>

下面創(chuàng)建彈窗的布局,在layout下新建一個dialog_weather.xml,里面的代碼如下:

<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"><data><variablename="liveWeather"type="com.llw.mvvm.model.LiveWeather" /></data><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:background="#00000000"android:orientation="vertical"android:paddingStart="12dp"android:paddingEnd="12dp"android:paddingBottom="?attr/actionBarSize"><TextViewandroid:id="@+id/tv_city"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="12dp"android:background="@drawable/shape_translucent_radius_12"android:gravity="center"android:padding="12dp"android:text="@{liveWeather.district}"android:textColor="@color/white"android:textSize="28sp" /><TextViewandroid:id="@+id/tv_weather"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@+id/tv_report_time"android:layout_below="@+id/tv_city"android:layout_alignParentStart="true"android:layout_marginEnd="12dp"android:layout_marginBottom="12dp"android:background="@drawable/shape_translucent_radius_12"android:gravity="center"android:padding="12dp"android:text="@{liveWeather.localWeatherLive.weather}"android:textColor="@color/white"android:textSize="24sp" /><LinearLayoutandroid:id="@+id/wind_lay"android:layout_width="wrap_content"android:layout_height="44dp"android:layout_below="@+id/tv_city"android:layout_toStartOf="@+id/tv_temp"android:layout_toEndOf="@+id/tv_weather"android:background="@drawable/shape_translucent_radius_12"android:gravity="center"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_wind_direction"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginEnd="12dp"android:text="@{liveWeather.localWeatherLive.windDirection+`風(fēng)`}"android:textColor="@color/white" /><TextViewandroid:id="@+id/tv_wind_power"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="12dp"android:text="@{liveWeather.localWeatherLive.windPower+`級`}"android:textColor="@color/white" /></LinearLayout><LinearLayoutandroid:id="@+id/humidity_lay"android:layout_width="wrap_content"android:layout_height="44dp"android:layout_below="@+id/wind_lay"android:layout_marginTop="12dp"android:layout_toStartOf="@+id/tv_temp"android:layout_toEndOf="@+id/tv_weather"android:background="@drawable/shape_translucent_radius_12"android:gravity="center"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginEnd="24dp"android:text="濕度"android:textColor="@color/white" /><TextViewandroid:id="@+id/tv_humidity"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{liveWeather.localWeatherLive.humidity+`%`}"android:textColor="@color/white" /></LinearLayout><TextViewandroid:id="@+id/tv_temp"android:layout_width="100dp"android:layout_height="100dp"android:layout_below="@+id/tv_city"android:layout_alignParentEnd="true"android:layout_marginStart="12dp"android:layout_marginBottom="12dp"android:background="@drawable/shape_translucent_radius_12"android:gravity="center"android:padding="12dp"android:text="@{liveWeather.localWeatherLive.temperature+`℃`}"android:textColor="@color/white"android:textSize="32sp" /><TextViewandroid:id="@+id/tv_report_time"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/tv_temp"android:background="@drawable/shape_translucent_radius_12"android:gravity="center"android:padding="12dp"android:text="@{liveWeather.localWeatherLive.reportTime+`發(fā)布`}"android:textColor="@color/white" /><androidx.recyclerview.widget.RecyclerViewandroid:id="@+id/rv_forecast"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@+id/tv_report_time"android:layout_marginTop="12dp" /></RelativeLayout> </layout>

有列表就有對應(yīng)的item布局,在layout下創(chuàng)建item_forecast.xml布局,代碼如下:

<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"><data><variablename="forecast"type="com.amap.api.services.weather.LocalDayWeatherForecast" /><!--引入一個工具類--><import type="com.llw.mvvm.utils.EasyDate" /></data><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="12dp"android:background="@drawable/shape_translucent_radius_12"android:padding="12dp"><TextViewandroid:id="@+id/tv_date"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@{forecast.date}"android:textColor="@color/white" /><TextViewandroid:id="@+id/tv_week"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginStart="12dp"android:layout_toEndOf="@+id/tv_date"android:text="@{EasyDate.getWeek(forecast.date)}"android:textColor="@color/white" /><TextViewandroid:id="@+id/tv_temp"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentEnd="true"android:text="@{forecast.dayTemp+`° /`+ forecast.nightTemp+`°`}"android:textColor="@color/white" /></RelativeLayout> </layout>

??這里我引入的數(shù)據(jù)源是高德的,同時我還插入了一個工具類,這個工具類用于對日期進行處理,可以直接在xml中調(diào)用,例如將2021-12-22,轉(zhuǎn)換成星期三。

布局都寫好了,下面在themes.xml中增加一個樣式,代碼如下:

<style name="BottomSheetDialogStyle_Light" parent="Theme.Design.BottomSheetDialog"><item name="android:windowFrame">@null</item><item name="android:windowIsFloating">true</item><item name="android:windowIsTranslucent">true</item><item name="android:background">@android:color/transparent</item><item name="android:backgroundDimEnabled">false</item></style>

這表示底部彈窗出現(xiàn)是不會使我們的屏幕變暗。

③ BottomSheetDialog使用

在寫之前,我們先寫一個ForecastAdapter,這是天氣預(yù)報的列表適配器,在adapter包下創(chuàng)建它,代碼如下:

public class ForecastAdapter extends BaseQuickAdapter<LocalDayWeatherForecast, BaseDataBindingHolder<ItemForecastBinding>> {public ForecastAdapter(@Nullable List<LocalDayWeatherForecast> data) {super(R.layout.item_forecast, data);}@Overrideprotected void convert(@NotNull BaseDataBindingHolder<ItemForecastBinding> bindingHolder, LocalDayWeatherForecast localDayWeatherForecast) {ItemForecastBinding binding = bindingHolder.getDataBinding();if (binding != null) {binding.setForecast(localDayWeatherForecast);binding.executePendingBindings();}} }

下面在MapFragment中添加一個方法,代碼如下:

/*** 顯示天氣彈窗*/private void showWeatherDialog() {//隱藏浮動按鈕binding.fabWeather.hide();BottomSheetDialog dialog = new BottomSheetDialog(requireActivity(), R.style.BottomSheetDialogStyle_Light);DialogWeatherBinding weatherBinding = DataBindingUtil.inflate(LayoutInflater.from(requireActivity()), R.layout.dialog_weather, null, false);//設(shè)置數(shù)據(jù)源weatherBinding.setLiveWeather(new LiveWeather(district,liveResult));//配置天氣預(yù)報列表ForecastAdapter forecastAdapter = new ForecastAdapter(weatherForecast);weatherBinding.rvForecast.setLayoutManager(new LinearLayoutManager(requireActivity()));weatherBinding.rvForecast.setAdapter(forecastAdapter);dialog.setContentView(weatherBinding.getRoot());dialog.getWindow().findViewById(R.id.design_bottom_sheet).setBackgroundColor(Color.TRANSPARENT);//彈窗關(guān)閉時顯示浮動按鈕dialog.setOnDismissListener(dialog1 -> binding.fabWeather.show());dialog.show();}

??當(dāng)點擊浮動按鈕的時候就會出現(xiàn)這個彈窗,出現(xiàn)彈窗后就隱藏浮動按鈕,然后我們對彈窗的樣式進行了修改,同時綁定數(shù)據(jù),設(shè)置數(shù)據(jù)到xml中,在再配置列表數(shù)據(jù)和適配器,最后是設(shè)置背景透明,以及彈窗消失時顯示浮動按鈕。

最后在onActivityCreated的方法中進行浮動按鈕的點擊事件處理,代碼如下:

//點擊按鈕顯示天氣彈窗binding.fabWeather.setOnClickListener(v -> showWeatherDialog());


下面來運行一下:

效果就是這個樣子,應(yīng)該是比較的明顯了。

八、源碼

GitHub:MVVM-Demo
CSDN: MVVMDemo_8.rar

總結(jié)

以上是生活随笔為你收集整理的Android MVVM框架搭建(八)高德地图定位、天气查询、BottomSheetDialog的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

欧美va天堂va视频va在线 | 亚州成人av在线 | 毛片基地黄久久久久久天堂 | 国产视频一区二区三区在线 | 亚洲欧美日韩精品久久久 | 日韩欧美视频免费看 | 久草在线中文888 | 五月婷婷网站 | 久久午夜免费观看 | 中文字幕高清av | 91av免费观看 | 国产精品久久久久久久久久免费看 | 欧美色综合天天久久综合精品 | 97香蕉久久国产在线观看 | 国产99久久久精品 | 欧美看片| 女人18毛片90分钟 | 免费看片黄色 | 黄色免费看片网站 | 国产精品久久久久婷婷二区次 | 91九色最新地址 | 亚洲另类人人澡 | 91成人精品在线 | 欧美一二区在线 | 国产成人久久精品亚洲 | 久草在线免费新视频 | 色综合久久88 | 在线免费观看黄色 | 亚洲精品视频在线免费 | 国产视频一区精品 | 亚洲高清av在线 | 欧美91精品久久久久国产性生爱 | 日韩精品视频免费在线观看 | 日韩电影精品一区 | av成人动漫 | 狠狠躁夜夜躁人人爽超碰91 | 免费网站v| 怡红院av| 超碰.com| 免费看的av片 | 久久系列 | 日韩高清不卡在线 | 日韩免费av网址 | 国产黄在线 | 久久免费视频观看 | 三级小视频在线观看 | 日本精品午夜 | 成人黄色短片 | 中文字幕久久网 | 久久免费成人网 | 97免费视频在线播放 | 日韩一级黄色片 | 六月婷婷久香在线视频 | 黄色三级在线看 | 亚洲欧美国产视频 | 久久夜视频| 日韩激情视频在线 | 中文字幕在线久一本久 | 亚洲一区二区三区四区精品 | 国产欧美三级 | 国产成人精品日本亚洲999 | 香蕉视频亚洲 | 黄色三几片 | 精品国产1区2区3区 国产欧美精品在线观看 | 久久天堂影院 | 欧美91视频 | 亚洲综合最新在线 | 国产男女无遮挡猛进猛出在线观看 | 日韩黄色软件 | 精品视频久久久久久 | 久久久免费毛片 | 精品91 | 午夜精品成人一区二区三区 | 91视频这里只有精品 | 欧美日韩在线第一页 | 免费成人在线视频网站 | 热久久最新地址 | 久久99精品国产99久久6尤 | 99九九免费视频 | 欧美二区在线播放 | 亚一亚二国产专区 | 日本三级久久久 | 成人免费在线观看电影 | 亚洲成 人精品 | 91黄视频在线观看 | 国产成人免费精品 | 国产一区二区不卡视频 | 亚洲一区二区观看 | 日韩视频图片 | 亚洲国产资源 | 日韩国产精品久久久久久亚洲 | 综合色影院 | 久久撸在线视频 | 日韩午夜精品福利 | 亚洲国产精品va在线看黑人动漫 | 欧美成人高清 | 区一区二区三在线观看 | 久久伊人八月婷婷综合激情 | 国产r级在线观看 | 国产午夜精品福利视频 | 久久av中文字幕片 | 五月婷亚洲 | 黄色福利视频网站 | 日韩在线一区二区免费 | 九热精品| 国产小视频精品 | 色在线免费 | 亚洲精品国精品久久99热 | 夜夜夜草| 亚洲精品乱码久久久久久久久久 | 人人澡人人爱 | 涩涩网站免费 | 久在线观看| 特级黄色一级 | 午夜精品麻豆 | 丁香导航 | 久草在线久草在线2 | 免费av的网站| 99综合影院在线 | 国产免费专区 | 国产中文字幕在线免费观看 | 国产精品初高中精品久久 | 精品久久91 | 成人久久久精品国产乱码一区二区 | 婷婷久操| 免费视频久久久 | 日韩欧美综合精品 | 国产精品 9999 | 天天在线视频色 | 亚州av一区| 国产亚洲精品美女 | 黄色三级免费看 | 亚洲三级视频 | 亚洲 欧美 国产 va在线影院 | 精品婷婷 | 国内精品亚洲 | 国产亚洲情侣一区二区无 | 国产日韩精品在线 | 91精彩视频在线观看 | 四虎影视成人精品国库在线观看 | 亚洲视频大全 | 日日干干夜夜 | 男女视频久久久 | 中文字幕一区二区三区四区在线视频 | 黄av在线 | 亚洲一区二区视频在线播放 | 91一区啪爱嗯打偷拍欧美 | 国产伦精品一区二区三区四区视频 | 亚洲视屏在线播放 | 久久99久久久久久 | 国产精品久久久一区二区 | 国产精品一区二区三区免费看 | 国产精品一区在线播放 | 香蕉网在线播放 | 欧美一区二区在线看 | 国产成人黄色在线 | 精品乱码一区二区三四区 | 久久er99热精品一区二区三区 | 国产精品原创在线 | 国产黄色精品网站 | 欧美一区日韩精品 | 福利久久 | 欧美日韩高清在线观看 | 日韩午夜网站 | 午夜精品一区二区三区免费视频 | 成人午夜在线电影 | 成人av在线网 | av福利免费 | 日本aaaa级毛片在线看 | 99超碰在线观看 | 欧美成人手机版 | 国产香蕉av| 日韩电影久久久 | 亚洲干视频在线观看 | 黄色一级在线视频 | 97超碰在线免费 | 久草久热| se视频网址 | 九九免费精品视频在线观看 | 亚洲精品午夜久久久久久久久久久 | 正在播放 久久 | 在线午夜电影神马影院 | 日韩一区精品 | 欧美色888 | 91av观看 | 国产不卡在线看 | 久久久久久高潮国产精品视 | 五月天伊人网 | 人人爽人人搞 | 亚洲天堂精品视频 | 亚洲国产精品一区二区尤物区 | 天天想夜夜操 | 成人免费视频播放 | 亚洲精品字幕在线观看 | 日韩欧美v| 波多野结衣在线观看视频 | 91社区国产高清 | 色干干 | 久久久久久黄色 | 黄色在线观看网站 | 欧美在线观看小视频 | 激情婷婷在线观看 | 国产精品久久久久国产a级 激情综合中文娱乐网 | 欧美一级片 | 伊人射 | 亚洲天堂网在线视频观看 | 欧美在线视频一区二区 | 黄av资源| 久草精品电影 | 久久免费一 | 97在线免费视频 | 97超碰中文字幕 | 久草成人在线 | 黄色片视频在线观看 | 亚洲欧洲日韩在线观看 | 精品一区二区三区香蕉蜜桃 | 久久免费视频这里只有精品 | 国产91精品看黄网站在线观看动漫 | 精品久久久久久久久久国产 | 国产69精品久久久久99尤 | 五月天综合激情网 | 亚洲一区美女视频在线观看免费 | 免费三级a | 国产区 在线 | 黄色av电影网 | 成人av片在线观看 | 欧美va天堂va视频va在线 | 亚洲资源网 | 午夜18视频在线观看 | 伊人网综合在线观看 | 九九热只有这里有精品 | 激情欧美国产 | 中文字幕一区二区三区视频 | 久久精品一区二区三 | 日本黄色免费在线观看 | 五月婷婷丁香激情 | 911久久香蕉国产线看观看 | av免费在线看网站 | 人人超碰在线 | 久久天天躁 | 中文字幕一二三区 | 狠狠干狠狠艹 | 在线观看久草 | 亚洲精品天天 | 亚洲欧洲日韩在线观看 | 国产亚洲精品久久 | 91福利在线观看 | 黄色片免费看 | 欧美色综合天天久久综合精品 | 中文字幕4| 亚洲综合网 | 久草免费资源 | 激情av一区二区 | 国产午夜麻豆影院在线观看 | 国产精品久久久视频 | av在线等 | 国产高清在线不卡 | 久久影院精品 | 国产女做a爱免费视频 | 在线三级中文 | 亚洲精品视频大全 | 国产精品久久久久久久久搜平片 | 99国产在线观看 | 成人一级片免费看 | 二区中文字幕 | 91亚洲精品久久久 | 久草在线视频免费资源观看 | 精品国产伦一区二区三区观看方式 | 国产一二三区在线观看 | 新版资源中文在线观看 | 又黄又爽的视频在线观看网站 | av在线观| 欧美视频日韩视频 | 日韩色在线 | 日韩三级在线观看 | 综合在线亚洲 | 天天操夜夜逼 | 国产黄色大片免费看 | 97操操| 青青河边草免费观看 | 欧美一级性生活片 | 欧美aa一级片 | 国产精品国产精品 | 在线 影视 一区 | 国产精品欧美久久久久久 | 久久久精品国产一区二区三区 | 国产综合精品一区二区三区 | 日韩av一区在线观看 | 国产高清视频在线 | 精品国产三级 | 久久99视频免费 | 在线导航av| 久久综合久久综合久久综合 | 日本色小说视频 | 婷婷综合五月天 | 中文字幕av免费观看 | 最新色视频 | 毛片视频网址 | 国产精品一码二码三码在线 | 久久99久国产精品黄毛片入口 | a级国产片 | 色婷婷丁香 | 久久男人中文字幕资源站 | 国产小视频你懂的 | 91精品国产入口 | 欧美国产一区在线 | 日韩精品一区二区三区免费观看 | 久久成人18免费网站 | 九九九九免费视频 | 亚洲精品国偷拍自产在线观看 | 国产精品网红直播 | 欧洲精品码一区二区三区免费看 | 国产小视频你懂的在线 | 精品视频在线视频 | 在线亚洲激情 | 精品国产一区二区三区不卡 | 91久草视频| 超碰com| 日韩久久片 | 日韩中文字幕在线不卡 | 狠狠色丁香婷婷综合基地 | 国产99久久九九精品免费 | 中文字幕在线观看亚洲 | 久久精品伊人 | 97视频人人 | 日日爱视频 | 四虎免费在线观看视频 | 欧美精品免费视频 | 国产精品视频久久 | 欧美日韩国产在线 | 一区二区三区免费在线观看 | 在线观看精品黄av片免费 | 欧美先锋影音 | 国产在线观看 | 久操操| 久久国产精品一区二区 | 九七视频在线观看 | 少妇bbb| 天天操天天干天天综合网 | 欧美最猛性xxxx | 91香蕉视频色版 | 亚洲人成影院在线 | 精品一区二区电影 | 日韩免费福利 | 国产精品久久久久aaaa九色 | 91丨porny丨九色 | 天天草天天干天天 | 99视频久久| 在线观看av国产 | 在线观看你懂的网站 | 久久免费电影网 | 亚洲香蕉视频 | 久久99久久99精品免视看婷婷 | 国内精品视频久久 | 一级免费看视频 | 天天综合网在线 | 欧美日韩a视频 | 国产一区二区三区 在线 | 久草免费资源 | 在线观看色视频 | 欧美日韩国产精品一区 | 香蕉久久久久 | 久久免费视频4 | 亚洲一区二区三区miaa149 | 在线观看你懂的网址 | 亚洲少妇天堂 | 国产精品久久电影观看 | 在线看黄色的网站 | va视频在线观看 | 在线观看视频日韩 | 激情久久久久久久久久久久久久久久 | 超碰在线最新地址 | 五月天亚洲综合小说网 | 最近中文字幕完整视频高清1 | 中文字幕一区三区 | 国产成人综 | 综合天堂av久久久久久久 | 精品久久久久国产免费第一页 | 国产精品麻豆三级一区视频 | 人人爽人人爽av | 国产精品入口66mio女同 | 国产日韩在线视频 | av在线收看 | 日韩爱爱网站 | 亚洲黄色在线观看 | 久久久受www免费人成 | 狠狠色噜噜狠狠狠狠2022 | 日日夜色 | 91精品啪在线观看国产81旧版 | 精品一区三区 | 久久不色| 成人精品一区二区三区电影免费 | 久久精品79国产精品 | 正在播放一区 | 美女视频黄网站 | 久久影院亚洲 | 久久爱992xxoo | www.亚洲黄| 日韩系列在线 | 免费日韩一区 | 久久精品在线视频 | 久久综合久久综合这里只有精品 | 欧美性春潮 | 中文字幕高清在线 | 免费观看一区 | 色久综合 | 久久综合色综合88 | 久久在线视频在线 | 久久免费视频国产 | 日韩av免费一区 | 国产精品都在这里 | 成人福利在线 | 亚洲伊人色 | 日韩久久久久久久久久 | 亚洲综合五月 | 成人精品国产 | 韩国一区二区在线观看 | 狠狠色丁香婷婷综合久小说久 | 色婷婷成人网 | 久久国语露脸国产精品电影 | 99在线精品视频 | 亚洲精品乱码久久久久久 | 免费在线观看视频a | 97在线观看免费视频 | 亚洲国产精品推荐 | 欧洲精品一区二区 | 99热999| 在线不卡中文字幕播放 | 91爱看片| 极品嫩模被强到高潮呻吟91 | 丁香视频在线观看 | 欧美一区二区三区在线 | 96看片 | .精品久久久麻豆国产精品 亚洲va欧美 | 夜色资源站wwwcom | 人人爱天天操 | 中文字幕韩在线第一页 | 最新日本中文字幕 | 在线视频观看亚洲 | 国产精品久久久久三级 | 国产精品成人在线 | 国内成人精品2018免费看 | 在线观看视频国产 | 一区二区国产精品 | 碰超人人 | 久久天天躁夜夜躁狠狠85麻豆 | 国产 字幕 制服 中文 在线 | 亚洲精品一区二区三区四区高清 | 婷婷爱五月天 | 婷婷亚洲综合 | 亚洲国产成人在线 | 国产女人40精品一区毛片视频 | 四虎海外影库www4hu | 国产高清视频免费在线观看 | 婷婷久久综合网 | www.久久免费视频 | 精品影院一区二区久久久 | 国产黄色片在线 | 欧美日韩1区 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 黄色一集片 | 成人综合婷婷国产精品久久免费 | 国产精品porn | 97自拍超碰 | 超碰在线公开 | 97成人在线视频 | 黄色小说免费观看 | 国产一区二区久久久 | 99色国产 | 国产美女在线精品免费观看 | 天天色天天射天天操 | 国产精品一区一区三区 | 久久99国产精品 | 久久永久视频 | 日韩欧美大片免费观看 | 国语精品久久 | 精品麻豆| 日韩中文在线视频 | 99精品系列 | 免费国产黄线在线观看视频 | 日韩欧美视频在线 | 啪啪小视频网站 | 国产一级视频在线观看 | 99久久综合国产精品二区 | 日韩国产在线观看 | 欧美福利网址 | 久久精品一区二区三区中文字幕 | 久久久免费看片 | 91精品视频导航 | 免费观看国产视频 | 天天操夜夜干 | 一区久久久 | 97电影院网 | 一区二区三区免费看 | 成 人 a v天堂 | 日韩在观看线 | 久久久国产精品电影 | 国内精品亚洲 | 亚洲 中文字幕av | 91精品久久久久久久久 | 视频在线观看国产 | 成人资源站 | 91av短视频| 天天翘av| 九九免费精品视频在线观看 | 久久综合成人网 | 97色视频在线 | 99久久精品免费看 | 久久久综合电影 | 在线91观看| av在线看片 | 欧洲精品视频一区二区 | 亚洲男女精品 | 日韩av不卡播放 | 婷婷社区五月天 | 色资源在线观看 | 日本中文字幕观看 | 欧美老女人xx | 黄色在线网站噜噜噜 | 亚洲视频在线视频 | 久草视频一区 | 在线视频观看成人 | 麻豆久久久久久久 | 天天操天天添 | 国产香蕉视频在线播放 | 婷婷综合伊人 | 91av视频播放| 视频在线91 | 成人久久视频 | 亚洲欧美视频 | 天天射天天干 | 久久久久久久久免费 | 国精产品一二三线999 | 久久综合电影 | 最新影院| 最新免费av在线 | 久久看免费视频 | 黄色视屏av| 国产综合片 | 国产精品久久久久久久免费 | 日韩av免费在线电影 | 国产精品网在线观看 | jizz欧美性9 国产一区高清在线观看 | 亚洲精品久久久蜜桃 | 欧美一区影院 | 久久9999久久 | 激情五月亚洲 | 91亚·色| 丁香婷婷色综合亚洲电影 | 国产在线观看免费观看 | 色天天综合网 | 中文字幕在线观看视频一区二区三区 | 99精品免费久久久久久久久日本 | 在线视频日韩精品 | 中文在线a∨在线 | 99久免费精品视频在线观看 | 激情综合狠狠 | 在线视频免费观看 | 麻豆91在线看 | 欧美性大胆 | 99在线热播| 成年人天堂com | 国产精品第52页 | 国产专区日韩专区 | 狠狠精品 | 亚洲视频电影在线 | 久久精品一二三区白丝高潮 | 月丁香婷婷| 亚洲午夜精品一区 | 欧洲黄色片 | 一级免费片 | 黄色成人av | 人人澡澡人人 | 久久久精品| av电影中文字幕 | 六月婷婷网 | 国产精品美女999 | 国产综合久久 | 亚洲综合激情小说 | 亚洲资源在线观看 | 九色视频网站 | 超碰成人av| 黄色一级免费网站 | 精品一区在线看 | 69成人在线| 日本精a在线观看 | 国内精品久久久久影院优 | 国产高清视频在线播放一区 | www.综合网.com | 免费特级黄色片 | 激情综合网天天干 | 国产精品美女久久久久久2018 | 91精品一区在线观看 | 国产尤物在线 | www日韩欧美 | 91精品在线免费视频 | 激情av网址| www.伊人网| 五月天色丁香 | 久久成人国产精品入口 | 91av在| 国产人成一区二区三区影院 | 天天天操天天天干 | 国产精品原创av片国产免费 | 亚洲国产网站 | 免费看av在线 | 青草视频在线看 | 欧美一区二区日韩一区二区 | 波多野结衣在线视频免费观看 | 天天搞天天干 | 草久久影院 | 日本成址在线观看 | 国产成人精品一区二区 | 人人爽影院| 麻豆免费看片 | 国产精品日韩在线 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 黄色的网站在线 | 在线看黄色的网站 | 亚洲成人av影片 | 久久九九久久 | 美女中文字幕 | 在线天堂亚洲 | 成人资源网 | 国产精品一区二区三区免费看 | 成人啊 v| 亚洲激精日韩激精欧美精品 | 97品白浆高清久久久久久 | 久久久国产精品人人片99精片欧美一 | 国产99一区视频免费 | 免费看国产曰批40分钟 | 国产一级一片免费播放放 | 在线免费中文字幕 | 欧美激情精品久久久久久变态 | 久久久午夜影院 | 中文有码在线视频 | 亚洲毛片在线观看. | 麻豆影视在线免费观看 | 波多野结衣电影一区二区三区 | 91福利在线导航 | 国产91小视频 | 亚州精品在线视频 | 国产成人福利在线观看 | 欧美精品亚洲二区 | 国产精品久久久久久久免费观看 | 五月婷婷六月综合 | 在线免费观看不卡av | 日韩色区 | 精品福利视频在线观看 | 国产特级毛片aaaaaa高清 | 亚洲一区精品二人人爽久久 | 国产成人免费高清 | 亚洲 欧洲 国产 日本 综合 | 嫩小bbbb摸bbb摸bbb | 欧美肥妇free | 人人狠狠综合久久亚洲 | 久久综合五月天婷婷伊人 | 免费福利在线播放 | 久久精品中文字幕一区二区三区 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 99久久精品久久久久久动态片 | 国产精品久久精品国产 | 国内外成人免费在线视频 | 激情大尺度视频 | 中字幕视频在线永久在线观看免费 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 天天干,夜夜爽 | 成人免费观看a | 国产韩国精品一区二区三区 | 国产91在线免费视频 | 久久精品xxx | 久久毛片视频 | 91资源在线 | 欧美人牲| 午夜国产福利在线 | 久久免费在线观看视频 | 国产成人精品综合久久久久99 | 五月天.com | 成人在线中文字幕 | 国产精品国产三级国产aⅴ无密码 | 亚州成人av在线 | 九九热在线视频 | 在线国产片 | 久久视频一区二区 | 1000部国产精品成人观看 | 丁香五香天综合情 | 91插插插网站 | 亚洲人成在线观看 | 成人超碰97| 色播激情五月 | 久久精品电影院 | 精品国产一区二区三区四区vr | 精品亚洲视频在线 | 91av观看 | 9992tv成人免费看片 | 欧美精品久久天天躁 | 黄污在线看 | 免费网站看v片在线a | 久久欧美精品 | 国产一区二区三精品久久久无广告 | 在线中文视频 | 欧美日韩一级视频 | 天堂在线视频免费观看 | 久久综合色综合88 | 亚洲成av人影片在线观看 | 欧美日韩不卡在线视频 | 亚洲人毛片 | 久久久综合精品 | 日本高清久久久 | 免费网站观看www在线观看 | 久久久久久久久久久国产精品 | 国产韩国日本高清视频 | 国产成视频在线观看 | 免费看黄的视频 | 一级性生活片 | 色综合久久五月 | 亚洲精品成人av在线 | 亚洲永久字幕 | 欧美伦理一区 | 久久久久久蜜av免费网站 | 久久国产精品一国产精品 | 欧美 另类 交 | 精品国产aⅴ一区二区三区 在线直播av | 婷婷在线看 | 丝袜一区在线 | 91免费国产在线观看 | 五月婷婷综合久久 | aaa亚洲精品一二三区 | 亚洲精选在线观看 | 天天射网站| 久久久久久久精 | 欧美一级久久 | 中文字幕在线观 | 国产精品高潮久久av | 国产精品初高中精品久久 | 免费一级片在线 | 五月婷婷在线观看视频 | 成人久久视频 | 成人免费视频播放 | 国产91影院| 成人黄色免费在线观看 | 一本—道久久a久久精品蜜桃 | 久久久久成人免费 | 99久久影视| 一区二区三区在线电影 | 日本在线h | 亚洲国产免费网站 | 久久电影色| 91精品国产综合久久福利不卡 | 在线国产黄色 | 亚洲国产手机在线 | 久久久久久久久综合 | 在线观看国产v片 | 中文字幕视频网 | 91视频大全 | 99精品热| 91超级碰碰| 91精品啪在线观看国产线免费 | 国产第页 | 免费观看的av网站 | 91色一区二区三区 | 青青河边草免费直播 | 久久免费国产精品1 | 免费观看完整版无人区 | 中文字幕麻豆 | 免费日韩视频 | 亚洲精品视频二区 | 久久久久9999亚洲精品 | 免费一级特黄毛大片 | 天天综合狠狠精品 | 免费在线观看av网站 | 国产人成看黄久久久久久久久 | 日韩高清一二区 | 欧美韩国日本在线 | 91久久久久久国产精品 | 亚洲国产av精品毛片鲁大师 | 国产黄视频在线观看 | 久久影视精品 | 国产精品videossex国产高清 | 美女视频黄频 | 日日综合网| 综合久久一本 | 韩国一区视频 | 日韩a级黄色片 | 久草视频2| 久久日韩精品 | 丝袜制服综合网 | 成人在线免费小视频 | 精品国产成人av在线免 | 91精品久久久久久久91蜜桃 | 色狠狠一区二区 | 高清在线一区二区 | 人人射人人澡 | 国产精品24小时在线观看 | 久久精品国产成人 | 婷婷激情综合五月天 | 欧美综合久久久 | 欧美污污视频 | 六月丁香婷婷在线 | 一区二区三区日韩在线观看 | 91av视频在线免费观看 | 久久婷婷亚洲 | 日韩精品一区二区三区免费视频观看 | 久久超碰网 | 97色在线视频 | 国产精品成人av久久 | 91禁在线观看 | 日韩欧三级 | 精品一区二区三区电影 | 福利av在线 | 国产黄a三级三级 | 色香蕉在线 | 久久综合久久综合这里只有精品 | 97天堂网| 手机在线观看国产精品 | 国产小视频91 | 国产精品九九视频 | 国产精品久久久久久电影 | 久久国产亚洲 | 中文字幕在线中文 | 香蕉在线影院 | 成人午夜免费剧场 | 2020天天干夜夜爽 | 久久免费成人精品视频 | 91免费高清视频 | 欧美精品一区二区三区四区在线 | 日韩在线免费视频 | 成人va天堂 | 国产精品国产三级国产专区53 | 91人人澡| 在线观看中文av | 亚洲国产日韩欧美在线 | 中文字幕在线有码 | 国产成人精品亚洲日本在线观看 | 狠狠操导航 | 欧美日韩中文在线观看 | 免费看毛片网站 | 伊人天天 | 在线日韩视频 | 午夜av色 | 日日久视频 | 激情综合网色播五月 | 久久免费视频一区 | 欧美亚洲精品一区 | 亚洲综合成人婷婷小说 | 久草免费在线 | 免费观看日韩av | 国产欧美精品一区二区三区四区 | 91成熟丰满女人少妇 | 中文字幕一区二区三区乱码在线 | 黄视频色网站 | 亚洲精品国产片 | 久久无码精品一区二区三区 | 国产精品18久久久久久久 | 在线91观看 | 欧美成人理伦片 | 久久人人爽人人片 | 亚洲成aⅴ人片久久青草影院 | 久久香蕉电影 | 夜夜摸夜夜爽 | 亚洲天堂网在线播放 | 中文字幕免费高清在线观看 | 日韩一级电影在线观看 | 97电影在线看视频 | 97成人在线 | 欧美日韩破处 | 日日夜夜天天综合 | 国产精品久久毛片 | 国产精品免费麻豆入口 | 综合网欧美| av综合 日韩 | 亚洲精品午夜久久久久久久久久久 | 日本不卡123区 | 天天干天天搞天天射 | 日本在线观看中文字幕 | 亚洲精品视频在线免费播放 | 亚洲一区二区精品 | 免费看国产曰批40分钟 | 天天操偷偷干 | 色综合天天色综合 | 成人a级免费视频 | 日韩在线观看的 | 国产免费国产 | 射综合网 | 波多野结衣视频一区二区 | 一区二区激情视频 | 在线播放 日韩专区 | 91九色蝌蚪国产 | 国内丰满少妇猛烈精品播放 | 久久久久久久久免费视频 | 久久免费视频一区 | 欧美日韩国产在线一区 | 亚洲精品视频在线观看免费视频 | 国产黄色特级片 | 在线观看中文字幕视频 | 美女国产网站 | 国产不卡av在线 | 久久国产热 | 国产精品一区二区久久精品爱微奶 | 91精品一区国产高清在线gif | 久久九九免费 | 香蕉视频免费在线播放 | 成人在线视频免费看 | 久久在线免费观看 | 天天久久综合 | 三级黄色a| 91福利视频免费观看 | 99久久精品国产一区二区成人 | 国产精品系列在线 | 亚洲视频专区在线 | 在线国产能看的 | 日韩在线观看第一页 | 国产精品综合av一区二区国产馆 | 久久久国产电影 | 国产黄a三级三级三级三级三级 | 色欧美成人精品a∨在线观看 | 91超级碰 | 国模一二三区 | 激情综合色播五月 | 成人久久免费 | 国产精品99久久久久的智能播放 | 天天草天天干天天 | 中文字幕在线观看免费高清完整版 | 精品久久久久久久久久国产 | 国产精品毛片网 | 精品国产91亚洲一区二区三区www | 亚洲精品五月 | 婷婷久久国产 | 曰韩精品 | 久久美女精品 | 色99色 | 黄在线免费看 | 久久久久综合网 | 久久久精品99 | 五月天六月婷婷 | 免费h视频| www.伊人网| 色91av| 成人免费xxx在线观看 | 中文av不卡| 天天色中文 | 最新亚洲视频 | 91久久人澡人人添人人爽欧美 | 中文字幕4| h视频在线看| 中文在线a∨在线 | av电影在线免费 | 天天躁天天躁天天躁婷 | 欧美一级免费片 | 亚洲精品视频在线观看视频 | 午夜久久精品 | 国产精品私人影院 | 色综合亚洲精品激情狠狠 | 久草视频免费看 | 亚洲精品美女久久久 | se视频网址 | 成 人 黄 色 视频播放1 | 中文字幕av在线免费 | 亚洲精品国产精品国自产观看 | 99在线免费视频 | 精品久久国产一区 | 911精品美国片911久久久 | 337p日本欧洲亚洲大胆裸体艺术 | 色久网 | 九九精品毛片 | 久久999精品 | 日韩欧美在线视频一区二区 | 国际精品久久久 | 一区二区三区三区在线 | 成人av手机在线 | 欧美一级视频免费看 | 久草免费在线观看 | 99久久这里只有精品 | 亚洲色视频 | 亚洲永久精品在线 | www.亚洲在线 | 亚洲精品一区二区网址 | 丁香婷婷综合五月 | 色婷婷综合久久久久中文字幕1 | 国产成人免费精品 | 成人9ⅰ免费影视网站 | 福利视频午夜 | 国产成人在线观看 | 欧美91片 | 久久一区二区免费视频 | 国产区欧美 | 激情av五月婷婷 | 一级国产视频 | 国产精品美乳一区二区免费 | 婷婷5月色 | www.日韩免费| 久久99久久99精品 | a午夜电影 | 国色天香第二季 | av电影免费观看 | av+在线播放在线播放 | 久久女教师 | 成人av资源在线 |