精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android開發中的窗口小部件App Widget

移動開發
Widget開發有很多值得學習的地方,這里向大家簡單介紹一下Android開發指南-窗口小部件App Widgets ,希望本文介紹對你有所幫助。

本文和大家重點討論一下Android開發指南-窗口小部件App Widgets ,應用程序窗口小部件Widget開發是微小的應用程序視圖,可以被嵌入到其它應用程序中(比如桌面)并接收周期性的更新。

Android開發指南-窗口小部件App Widgets

應用程序窗口小部件App Widgets

應用程序窗口小部件Widget開發是微小的應用程序視圖,可以被嵌入到其它應用程序中(比如桌面)并接收周期性的更新。你可以通過一個App Widget provider來發布一個Widget。可以容納其它App Widget的應用程序組件被稱為App Widget宿主。下面的截屏顯示了一個音樂App Widget。

 

這篇文章描述了如何使用App Widget Provider發布一個App Widget。


基礎知識

The Basics為了創建一個App Widget,你需要下面這些:

AppWidgetProviderInfo 對象

描述一個App Widget元數據,比如App Widget的布局,更新頻率,以及AppWidgetProvider 類。這應該在XML里定義。

AppWidgetProvider 類的實現

定義基本方法以允許你編程來和App Widget連接,這基于廣播事件。通過它,當這個App Widget被更新,啟用,禁用和刪除的時候,你都將接收到廣播通知。

視圖布局

為這個App Widget定義初始布局,在XML中。

另外,你可以實現一個App Widget配置活動。這是一個可選的活動Activity,當用戶添加App Widget時加載并允許他在創建時來修改App Widget的設置。#p#

下面的章節描述了如何建立這些組件:


在清單中聲明一個應用小部件

首先,在應用程序AndroidManifest.xml文件中聲明AppWidgetProvider 類,比如:

復制到剪貼板  XML/HTML代碼

  1. <receiver android:name="ExampleAppWidgetProvider" >     
  2.      
  3.     <intent-filter>     
  4.      
  5.         <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />     
  6.      
  7.     </intent-filter>     
  8.      
  9.     <meta-data android:name="android.appwidget.provider"     
  10.      
  11.                android:resource="@xml/example_appwidget_info   
  12. < srcsrc="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" type="text/javascript">
  13.  < srcsrcsrcsrc="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" type="text/javascript"> " />     
  14.      
  15. </receiver>   

 

 

<receiver>元素需要Android:name屬性,它指定了App Widget使用的AppWidgetProvider 。

<intent-filter> 元素必須包括一個含有android:name屬性的<action>元素。該元素指定AppWidgetProvider接受ACTION_APPWIDGET_UPDATE 廣播。這是唯一你必須顯式聲明的廣播。當需要的時候,AppWidgetManager 會自動發送所有其他App Widget廣播給AppWidgetProvider。

<meta-data> 元素指定了AppWidgetProviderInfo 資源并需要以下屬性:

◆android:name – 指定元數據名稱。

◆android:resource – 指定AppWidgetProviderInfo 資源路徑。


增加AppWidgetProviderInfo元數據

AppWidgetProviderInfo定義一個App Widget的基本特性,比如最小布局尺寸,初始布局資源,刷新頻率,以及(可選的)創建時加載的一個配置活動。使用單獨的一個<appwidget-provider>元素在XML資源里定義AppWidgetProviderInfo 對象并保存到項目的res/xml/目錄下。

比如:

復制到剪貼板  XML/HTML代碼

  1. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     
  2.      
  3.     android:minWidth="294dp" <!-- density-independent pixels -->     
  4.      
  5.     android:minHeight="72dp"     
  6.      
  7.     android:updatePeriodMillis="86400000" <!-- once per day -->     
  8.      
  9.     android:initialLayout="@layout/example_appwidget"     
  10.      
  11.     android:configure="com.example.android.ExampleAppWidgetConfigure" >     
  12.      
  13. </appwidget-provider>    
  14.  

 

下面是<appwidget-provider>屬性的總結:

◆minWidth 和minHeight 屬性的值指定了這個App Widget布局需要的最小區域。

缺省的App Widgets所在窗口的桌面位置基于有確切高度和寬度的單元網格。如果App Widget的最小長寬和這些網格單元的尺寸不匹配,那么這個App Widget將收縮到最接近的單元尺寸。(參見App Widget Design Guidelines 以獲取更多關于桌面單元尺寸的信息)

因為桌面布局方向(由此,單元的尺寸)可以變化,按照拇指規則,你應該假設最壞情況單元尺寸是74像素高和寬。不過,你必須從***的尺寸中減去2以把像素計算過程中產生的任何的整數舍入誤差考慮在內。要找到像素密度無關的最小寬度和高度,使用這個公式:
(number of cells * 74) - 2
遵循這個公式,你應該使用72dp為每一個單元高度,294dp為四個單元寬度。

◆updatePerdiodMillis 屬性定義了App Widget框架調用onUpdate()方法來從AppWidgetProvider請求一次更新的頻度。實際更新時間并不那么精確,而且我們建議更新頻率越低越好-也許每小時不超過一次以節省電源。你也許還會允許用戶在配置中調整這個頻率-一些人可能想每15分鐘一次股票報價,或者一天只要四次。

◆initialLayout屬性指向定義App Widget布局的資源。

◆configure屬性定義了Activity ,當用戶添加App Widget時啟動,以為他或她配置App Widget特性。這是可選的(閱讀下面的Creating an App Widget Configuration Activity)。

參見AppWidgetProviderInfo 類以獲取更多可以被<appwidget-provider>元素接受的屬性信息。


創建App Widget開發布局

你必須在XML中為你的App Widget定義一個初始布局并保存到項目的res/layout/ 目錄下。你可以使用如下所列的視圖對象來設計你的App Widget,但是在此之前,請先閱讀并理解App Widget Design Guidelines.

如果你熟悉在XML中聲明布局,那么創建這個App Widget布局是很簡單的。但是,你必須意識到那個App Widget布局是基于RemoteViews, 這并不支持所有類型的布局或視圖小部件。

一個RemoteViews對象(以及,相應的,一個App Widget)可以支持下面這個布局類:

以及下面的小部件類:

◆FrameLayout

◆LinearLayout

◆RelativeLayout
◆AnalogClock

◆Button

◆Chronometer

◆ImageButton

◆ImageView

◆ProgressBar

◆TextView

不支持這些類的派生。#p#

使用AppWidgetProvider類

你必須通過在清單文件中使用<receiver>元素來聲明你的AppWidgetProvider 類實現為一個廣播接收器(參見上面的Declaring an App Widget in the Manifest)。

AppWidgetProvider 類擴展BroadcastReceiver 為一個簡便類來處理App Widget廣播。AppWidgetProvider只接收和這個App Widget相關的事件廣播,比如這個App Widget被更新,刪除,啟用,以及禁用。當這些廣播事件發生時,AppWidgetProvider 將接收到下面的方法調用:

onUpdate(Context, AppWidgetManager, int[])

這個方法調用來間隔性的更新App Widget,間隔時間用AppWidgetProviderInfo 里的updatePeriodMillis屬性定義(參見添加AppWidgetProviderInfo元數據)。這個方法也會在用戶添加App Widget時被調用,因此它應該執行基礎的設置,比如為視圖定義事件處理器并啟動一個臨時的服務Service,如果需要的話。但是,如果你已經聲明了一個配置活動,這個方法在用戶添加App Widget時將不會被調用,而只在后續更新時被調用。配置活動應該在配置完成時負責執行***次更新。(參見下面的創建一個App Widget配置活動Creating an App Widget Configuration Activity。)

onDeleted(Context, int[])

當App Widget從宿主中刪除時被調用。

onEnabled(Context)

當一個App Widget實例***次創建時被調用。比如,如果用戶添加兩個你的App Widget開發實例,只在***次被調用。如果你需要打開一個新的數據庫或者執行其他對于所有的App Widget實例只需要發生一次的設置,那么這里是完成這個工作的好地方。

onDisabled(Context)

當你的App Widget的***一個實例被從宿主中刪除時被調用。你應該在onEnabled(Context)中做一些清理工作,比如刪除一個臨時的數據庫。

onReceive(Context, Intent)

這個接收到每個廣播時都會被調用,而且在上面的回調函數之前。你通常不需要實現這個方法,因為缺省的AppWidgetProvider 實現過濾所有App Widget 廣播并恰當的調用上述方法。

注意: 在Android 1.5中, 有一個已知問題,onDeleted()方法在該調用時不被調用。為了規避這個問題,你可以像Group post中描述的那樣實現onReceive() 來接收這個onDeleted()回調。

最重要的AppWidgetProvider 回調函數是onUpdated(), 因為它是在每個App Widget添加進宿主時被調用的(除非你使用一個配置活動)。如果你的App Widget 要接受任何用戶交互事件,那么你需要在這個回調函數中注冊事件處理器。如果你的App Widget不創建臨時文件或數據庫,或者執行其它需要清理的工作,那么onUpdated() 可能是你需要定義的唯一的回調函數。比如,如果你想要一個帶一個按鈕的App Widget,當點擊時啟動一個活動,你可以使用下面的AppWidgetProvider實現:

 

  1. public class ExampleAppWidgetProvider extends AppWidgetProvider {      
  2.           
  3.     public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {      
  4.      
  5.         final int N = appWidgetIds.length;      
  6.          
  7.      
  8.         // Perform this loop procedure for each App Widget that belongs to this provider      
  9.      
  10.         for (int i=0; i<N; i++) {      
  11.      
  12.             int appWidgetId = appWidgetIds[i];      
  13.      
  14.           
  15.             // Create an Intent to launch ExampleActivity      
  16.      
  17.             Intent intent = new Intent(context, ExampleActivity.class);      
  18.      
  19.             PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);      
  20.      
  21.                     // Get the layout for the App Widget and attach an on-click listener to the button      
  22.      
  23.             RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider_layout);      
  24.      
  25.             views.setOnClickPendingIntent(R.id.button, pendingIntent);      
  26.      
  27.           
  28.             // Tell the AppWidgetManager to perform an update on the current App Widget      
  29.      
  30.             appWidgetManager.updateAppWidget(appWidgetId, views);      
  31.            }         
  32.     }         
  33. }    

這個AppWidgetProvider 僅定義了onUpdated() 方法,為了定義一個PendingIntent,來啟動一個活動并使用setOnClickPendingIntent(int, PendingIntent)方法把它附著到這個App Widget的按鈕上。注意它包含了一個遍歷appWidgetIds中所有項的循環,這是一個IDs數組,每個ID用來標識由這個Provider創建的一個App Widget。這樣,如果用戶創建多于一個這個App Widget的實例,那么它們將被同步更新。不過,對于所有的App Widget實例,只有一個updatePeriodMillis 時間表被管理。比如,如果這個更新時間表被定義為每隔兩個小時,而且App Widget的第二個實例是在***個后面一小時添加的,那么它們將按照***個所定義的周期來更新而第二個被忽略(它們將都是每2個小時進行更新,而不是每小時)。

注意: 因為這個AppWidgetProvider 是一個廣播接收器BroadcastReceiver,不能保證你的進程在回調函數返回后仍然繼續運行(參見應用程序基礎>廣播接收器的生命周期Application Fundamentals > Broadcast Receiver Lifecycle以獲取更多信息)。如果你的App Widget設置過程能持續幾秒鐘(也許當執行網頁請求時)而且你要求你的進程繼續,考慮在onUpdated()方法里啟動一個服務Service 。從這個服務里,你可以執行自己的App Widget更新,而不必擔心AppWidgetProvider 由于一個應用程序無響應錯誤Application Not Responding (ANR)而關閉。參見Wiktionary sample's AppWidgetProvider,這是個App Widget運行一個Service的例子。

同樣參見ExampleAppWidgetProvider.Java 例子類。#p#


接收App Widget廣播意圖

AppWidgetProvider 只是一個簡便類。如果你想直接接收App Widget 廣播,你可以實現自己的BroadcastReceiver 或者重寫 onReceive(Context, Intent) 回調函數。你需要注意的4個意圖如下:

◆ACTION_APPWIDGET_UPDATE

◆ACTION_APPWIDGET_DELETED

◆ACTION_APPWIDGET_ENABLED

◆ACTION_APPWIDGET_DISABLED

創建一個App Widget 配置活動

如果你想讓用戶在添加一個新的App Widget時調整設置,你可以創建一個App Widget開發配置活動。這個活動將被App Widget宿主自動啟動并允許用戶在創建時配置可用的設置,比如App Widget顏色,尺寸,更新周期或者其它功能設置。

這個配置活動應該在Android清單文件中聲明為一個通用活動。不過,它將被通過ACTION_APPWIDGET_CONFIGURE活動而被App Widget宿主啟動,因此這個活動需要接受這個意圖。比如:

  1. <activity android:name=".ExampleAppWidgetConfigure">      
  2.      
  3.     <intent-filter>      
  4.      
  5.         <action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />      
  6.      
  7.     </intent-filter>      
  8.      
  9. </activity>     
  10.  

 

同樣的,活動必須在AppWidgetProviderInfo XML 文件中聲明,通過android:configure屬性(參見上面的添加AppWidgetProviderInfo元數據Adding the AppWidgetProviderInfo Metadata)。比如,配置活動可以聲明如下:

  1. <appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"     
  2.        ...      
  3.       android:configure="com.example.android.ExampleAppWidgetConfigure"       
  4.        ... >      
  5.    </appwidget-provider>      
  6.     
  7.  

 

注意這個活動是用全名聲明的,因為它將從你的程序包外被引用。

這就是所有關于配置活動你一開始需要了解的。現在你需要一個真實的活動。這兒就有,不過,當你實現這個活動時記住兩件重要的事情:

◆  App Widget 宿主調用配置活動而且配置活動應該總是返回一個結果.這個結果應該包含這個通過啟動該活動的意圖傳遞的App Widget ID(以EXTRA_APPWIDGET_ID保存在意圖的附加段Intent extras中)

◆  當這個 App Widget 被創建時將不會調用onUpdate() 方法(當一個配置活動啟動時,系統將不會發送ACTION_APPWIDGET_UPDATE廣播).配置活動應該在 App Widget ***次被創建時負責從AppWidgetManager請求一個更新.不過, onUpdate() 將在后續更新中被調用-只忽略***次.

參見下面章節的代碼片斷,該示例說明了如何從配置中返回一個結果并更新這個App Widget. #p#

從配置活動中更新一個App Widget

當一個App Widget使用一個配置活動,那么當配置結束時,就應該由這個活動來更新這個App Widget.你可以直接AppWidgetManager里請求一個更新來這么做.

下面是恰當的更新App Widget 以及關閉配置活動這個過程的一個概要描述:

1,首先,從啟動這個活動的意圖中獲取App Widget ID:
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
    mAppWidgetId = extras.getInt(
            AppWidgetManager.EXTRA_APPWIDGET_ID,
            AppWidgetManager.INVALID_APPWIDGET_ID);
}
2,實施你的App Widget開發配置。

3,當配置完成后,通過調用getInstance(Context)獲取一個AppWidgetManager實例:
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

4,以一個RemoteViews布局調用updateAppWidget(int, RemoteViews)更新App Widget:
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.example_appwidget);
appWidgetManager.updateAppWidget(mAppWidgetId, views);

5,***,創建返回意圖,設置活動結果,并結束這個活動:
Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();

提示: 當你的配置活動***次打開時,設置活動結果為RESULT_CANCELED。這樣,如果用戶在結束之前從活動外返回,這個App Widget 宿主會接收到配置取消通知而不會添加這個App Widget。參見ApiDemos里面的ExampleAppWidgetConfigure.java 例子。

【編輯推薦】

  1. AndroidWidget開發系列解讀
  2. AndroidWidget開發詳解
  3. 全面認識WebWidget開發
  4. DashBoard的Widget開發指南
  5. 解析AndroidWidget開發中如何構建Activity類


 

責任編輯:佚名 來源: dev.10086.cn
相關推薦

2021-02-23 13:27:28

Android 12谷歌小部件

2010-05-13 10:19:09

Widget開發

2009-06-25 14:26:33

JSFDojo小部件

2011-09-06 14:19:54

UbuntuConky

2011-09-07 14:20:42

Android Wid組件

2009-11-23 20:11:51

ibmdwLotus

2010-07-13 09:02:19

Widget開發

2011-09-09 20:14:58

Android Wid

2014-07-18 13:37:23

Android開發App Widget

2023-12-05 10:03:02

Web組件開發

2011-09-09 10:00:20

Android Wid開發

2010-07-23 08:54:02

2011-09-07 17:54:40

Android Wid開發

2021-02-10 10:56:56

微軟蘋果iOS 14

2023-10-26 07:58:18

PyQt6Python

2010-07-13 09:08:27

Widget開發

2021-12-24 10:20:28

Windows 11任務欄小部件

2011-09-07 14:39:47

Android Wid設計

2011-09-07 13:00:36

2011-09-08 13:11:07

Android Wid實例
點贊
收藏

51CTO技術棧公眾號

亚洲国产欧美不卡在线观看| 97国产在线观看| 成人亚洲视频在线观看| 91高清在线视频| 精品一区二区三区不卡| 国自产精品手机在线观看视频| av无码一区二区三区| 久久亚洲精品爱爱| 伊人色综合久久天天人手人婷| 国产综合精品一区二区三区| 欧美在线视频精品| av免费在线观| 久久在线观看免费| 91香蕉电影院| 黄色片网站在线免费观看| 国产精品精品国产一区二区| 丁香五六月婷婷久久激情| 天天综合色天天综合色hd| 久久不卡免费视频| 久久神马影院| 亚洲精品久久久久中文字幕二区| 国产精品久久久久久久久电影网| 偷拍自拍在线| 国产成人午夜视频| 国产日韩欧美日韩大片| 婷婷丁香综合网| 欧美人妖在线观看| 日韩视频123| 午夜激情av在线| 欧产日产国产精品视频| 一级中文字幕一区二区| 亚洲精品在线免费| 九色在线观看视频| gogogo免费视频观看亚洲一| 亚洲a成v人在线观看| 人妻中文字幕一区二区三区| 亚洲深夜激情| 久久久亚洲影院你懂的| 日日骚一区二区三区| 91久久夜色精品国产按摩| 亚洲天堂免费视频| 你懂的在线观看网站| 日韩欧美中文在线观看| 亚洲伊人色欲综合网| 一区二区三区三区在线| yiren22亚洲综合伊人22| 日韩经典中文字幕一区| 18性欧美xxxⅹ性满足| 国产一级一片免费播放放a| 91精品动漫在线观看| 中文字幕久久精品| 三区四区在线观看| 日韩久久精品| 欧美一区二区三区在| 91极品视频在线观看| 欧美gay视频| 一本一道久久a久久精品| 无码精品a∨在线观看中文| 6699嫩草久久久精品影院| 亚洲精品乱码久久久久久久久 | 男女av免费观看| 激情aⅴ欧美一区二区欲海潮| 亚洲国产日韩一级| 日韩欧美一区二| 亚洲精品动漫| 在线免费不卡视频| 亚洲xxx在线观看| 9999在线精品视频| 日韩欧美色电影| 精品熟女一区二区三区| 欧美久久精品| 亚洲人成网站999久久久综合| 久久久久久久久久久久久久久| 九九精品久久| 久久精品成人欧美大片古装| 九九九久久久久| 99精品福利视频| 中文字幕亚洲欧美日韩高清| av在线播放中文字幕| 五月久久久综合一区二区小说| 久久电影一区二区| 国产精品50页| 日韩国产精品久久| 亚洲www视频| 天堂在线观看视频| 欧美激情一区二区三区| 最近看过的日韩成人| 国产桃色电影在线播放| 欧美日韩亚洲一区二| 中文字幕第80页| 欧美日韩午夜电影网| 亚洲国产精品va在线看黑人动漫| 一区二区三区伦理片| 亚洲精品va| 97婷婷涩涩精品一区| 啪啪小视频网站| 国产高清成人在线| 人禽交欧美网站免费| 国产网友自拍视频导航网站在线观看| 亚洲电影一区二区| 欧美成人福利在线观看| 成人知道污网站| 在线观看久久久久久| 久久久久久激情| 日本在线播放一区二区三区| 亚洲最大福利网站| 伊人网免费视频| 成人精品在线视频观看| 色婷婷精品国产一区二区三区| 91亚洲天堂| 在线视频中文字幕一区二区| 91成人在线观看喷潮蘑菇| 成人区精品一区二区婷婷| 欧美极品少妇与黑人| 波多野结衣二区三区| 丁香婷婷综合色啪| 免费在线观看污污视频| sis001欧美| 精品久久人人做人人爱| 日本免费网站视频| 可以免费看不卡的av网站| 爱情岛论坛亚洲入口| www.我爱av| 欧美高清一级片在线观看| 激情伊人五月天| 欧美xxxhd| 日韩欧美在线123| sm捆绑调教视频| 蜜桃视频一区二区三区| 欧美亚洲精品日韩| 欧美日韩在线观看首页| 精品久久99ma| 久久精品视频免费在线观看| 久久97超碰色| 一本色道婷婷久久欧美| 美女网站视频一区| 欧美日韩中文字幕一区| 色无极影院亚洲| 国产农村妇女精品一区二区| 国产欧美韩日| 136福利第一导航国产在线| 欧美一区二区三区啪啪| 国产小视频你懂的| 另类小说视频一区二区| 日本欧美色综合网站免费| 成人影院入口| 精品在线观看国产| 日韩精品1区2区| 97se狠狠狠综合亚洲狠狠| 日本在线xxx| 九色丨蝌蚪丨成人| 51久久精品夜色国产麻豆| 色一情一乱一乱一区91av| 天天亚洲美女在线视频| 国产aaaaa毛片| 欧美另类69xxxxx| 欧美黑人狂野猛交老妇| 亚洲国产精品二区| 一级精品视频在线观看宜春院 | 五月天综合激情| 97久久超碰国产精品电影| www国产精品内射老熟女| 天天躁日日躁狠狠躁欧美| 亚洲天堂av在线免费| 无码视频一区二区三区| 欧美国产精品一区二区三区| 男人搞女人网站| 婷婷综合伊人| 成人免费视频视频在| 国产社区精品视频| 亚洲人成伊人成综合网久久久| 天堂av免费在线观看| 中文字幕日韩一区二区| 人妻激情偷乱视频一区二区三区| 国内成人在线| 欧美成ee人免费视频| 91大神在线观看线路一区| 美女视频久久黄| 香蕉久久一区二区三区| 欧洲在线/亚洲| 极品美妇后花庭翘臀娇吟小说| 国产99精品国产| 欧美在线观看成人| 残酷重口调教一区二区| 999热视频在线观看| 深夜在线视频| 久久精品99国产精品酒店日本 | 精品人妻人人做人人爽| 麻豆一区二区| 国产一区二区丝袜高跟鞋图片| 在线不卡日本v二区707| 亚洲男人天堂2019| 国产绿帽一区二区三区| 欧美日韩在线视频观看| 欧美一级片在线视频| 26uuuu精品一区二区| 777一区二区| 免费视频一区| 国产一区二区精品免费| 日本精品在线中文字幕| 欧美夫妻性生活xx| 成人jjav| 亚洲国产一区二区三区在线观看| 伊人22222| 欧美日韩亚洲网| 欧美三级日本三级| 国产女人aaa级久久久级 | 国产欧美一区二区在线| 1314成人网| 国产精品成人一区二区不卡| 国产亚洲精品自在久久| 日韩成人精品一区二区三区| 91av在线免费观看视频| 成人黄视频在线观看| 亚洲天堂网在线观看| 午夜小视频免费| 日韩视频在线永久播放| 中文字幕自拍偷拍| 色综合久久88色综合天天免费| 日本在线观看视频网站| 一区二区三区欧美视频| 战狼4完整免费观看在线播放版| www国产亚洲精品久久麻豆| 激情av中文字幕| 国产另类ts人妖一区二区| 日韩欧美国产片| 热久久一区二区| 久久久久久久片| 久久国产66| 美女福利视频在线| 日韩视频一区| 成人性免费视频| 一区二区导航| 狠狠色伊人亚洲综合网站色| 亚洲视频国产精品| 7777精品伊久久久大香线蕉语言 | 99精品免费| 欧美中日韩在线| 欧美日韩1区| 国产一区二区视频在线免费观看| 国产精品久久久久久久久久辛辛 | 亚洲乱码中文字幕久久孕妇黑人| 黄色日韩精品| 老子影院午夜伦不卡大全| 欧美日韩精品| 一卡二卡三卡视频| 亚洲国产高清一区| 97视频久久久| 久久国产福利| 日本老熟妇毛茸茸| 视频一区中文字幕| 国产三级三级三级看三级| 久久精品欧洲| 日韩爱爱小视频| 久久99九九99精品| 久久久九九九热| 国产不卡高清在线观看视频| 波多野结衣三级视频| 岛国av在线一区| 三级电影在线看| 久久免费美女视频| 国产精品美女高潮无套| 国产精品国产三级国产aⅴ无密码| 中文字幕在线视频一区二区| 国产高清成人在线| 午夜视频在线观看国产| xnxx国产精品| 精品少妇一区二区三区密爱| 亚洲精品中文在线影院| 免费在线看黄网址| 午夜精品福利一区二区蜜股av | 黑人另类av| 国产亚洲一区二区三区啪 | 韩日视频一区| 男人日女人bb视频| 久久精品国产久精国产爱| 国内av免费观看| 91网站黄www| 黄色片网站在线播放| 亚洲精品国产视频| 制服.丝袜.亚洲.中文.综合懂色| 欧美伊人精品成人久久综合97| 国产午夜精品无码| 欧美性猛交xxxx免费看| 亚洲性生活大片| 精品久久久久久无| 成人精品一区二区三区免费| 欧美猛少妇色xxxxx| 欧美大胆成人| 91手机在线观看| 蜜桃一区二区三区| 男女裸体影院高潮| 久久九九99| 少妇熟女视频一区二区三区| 久久看人人爽人人| 黄色片在线观看网站| 国产精品狼人久久影院观看方式| 丰满少妇高潮久久三区| 日韩欧美福利视频| av高清一区二区| 亚洲人成电影网站色| 在线观看av免费| 国产精品热视频| 欧美日韩一区二区三区四区不卡| 中文字幕乱码一区二区三区| 亚洲综合国产| 日本人dh亚洲人ⅹxx| 中文欧美字幕免费| 久久久久久久极品| 日韩美女在线视频| 91精品国产91久久久久游泳池| 午夜精品久久久久久久99热 | 成人在线直播| 欧美中文字幕精品| 范冰冰一级做a爰片久久毛片| 91精品视频播放| 欧美限制电影| 国产成人a亚洲精v品无码| 国产成人8x视频一区二区 | 欧洲伦理片一区 二区 三区| 久久久91精品国产| 成人在线高清| 欧美日韩在线一区二区三区| 亚洲精品裸体| www.黄色网| 曰韩精品一区二区| 国产精品视频一二区| 日韩在线视频一区| 日韩毛片在线| 欧美日本亚洲| 翔田千里一区二区| 丰满少妇一区二区三区| 亚洲成人av一区二区三区| 午夜精品一二三区| 欧美精品在线免费| 精品精品视频| 国产精品88久久久久久妇女| 好吊一区二区三区| 超级砰砰砰97免费观看最新一期| 亚洲天堂久久久久久久| 91丨porny丨在线中文| 日韩欧美黄色影院| 激情成人四房播| 5g国产欧美日韩视频| 欧美精品播放| 国产欧美视频一区| 亚洲观看高清完整版在线观看| 亚洲精品免费在线观看视频| 久久97久久97精品免视看| 91精品国产乱码久久久竹菊| 99在线观看视频免费| 成人丝袜18视频在线观看| 国产一级黄色av| 亚洲精品国产拍免费91在线| 成人短视频app| 日韩电影免费观看高清完整| 欧美aaaaaa午夜精品| 国产第一页精品| 3d动漫精品啪啪1区2区免费| 偷拍自拍在线| 国产精品v日韩精品| 日韩系列欧美系列| 亚洲热在线视频| 亚洲国产色一区| 欧美日韩激情视频一区二区三区| 国产成人亚洲精品| 亚洲一二三区视频| 欧美精品卡一卡二| 久久久噜噜噜久久人人看 | 青娱乐精品视频| 成人一级片免费看| 欧美一级理论性理论a| 草美女在线观看| 欧美精品七区| 九色综合狠狠综合久久| 国产一级视频在线播放| 亚洲精品永久免费精品| 福利一区二区免费视频| 8x8ⅹ国产精品一区二区二区| av电影天堂一区二区在线 | 国产一二三在线| 水蜜桃一区二区| 福利91精品一区二区三区| 亚洲精品男人的天堂| 久久亚洲精品小早川怜子66| 国产成人高清精品免费5388| 中文精品一区二区三区| 国产成人在线影院| 无码任你躁久久久久久久| 成人97在线观看视频| 美女视频亚洲色图| 欧美日韩一区二区三区69堂| 精品久久久免费| 国产在线看片| 欧美一区免费视频| 国产精品一区一区三区| 无码任你躁久久久久久久| 欧美精品久久久久久久免费观看| 国产日韩视频在线| 中文视频在线观看|