国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何在Android上開發(fā)屬于自己的定制化啟動器

譯文
移動開發(fā) Android
在今天的教程中,我們將利用基本用戶界面創(chuàng)建出一款簡單的啟動器,它將由兩部分屏幕構(gòu)成:在主屏幕中顯示的是該設(shè)備的墻紙圖案;另一屏幕中顯示的是已經(jīng)安裝在設(shè)備當(dāng)中的應(yīng)用程序圖標(biāo)及其它細(xì)節(jié)信息。

【51CTO譯文】我們要開發(fā)的就是這樣一套方案。

介紹

從最基本的概念角度來講,啟動器其實(shí)應(yīng)該是一款能夠?qū)崿F(xiàn)以下功能的應(yīng)用程序:

  • 它代表著一臺設(shè)備的主屏幕。
  • 它能夠列出并啟動已經(jīng)安裝在該設(shè)備當(dāng)中的應(yīng)用程序。

換句話來說,它就是那款用戶按下home按鈕后所顯示的應(yīng)用程序。除非大家已經(jīng)安裝了定制化啟動器,否則我們目前正在使用的應(yīng)該都是Android系統(tǒng)自帶的默認(rèn)啟動方案。不少設(shè)備制造商都會在產(chǎn)品中默認(rèn)使用由其定制的啟動器,從而確保我們獲得與廠商預(yù)期相符的外觀效果與使用感受,例如三星TouchWiz以及HTC Sense。

在今天的教程中,我們將利用基本用戶界面創(chuàng)建出一款簡單的啟動器,它將由兩部分屏幕構(gòu)成:

  • 在主屏幕中顯示的是該設(shè)備的墻紙圖案。
  • 另一屏幕中顯示的是已經(jīng)安裝在設(shè)備當(dāng)中的應(yīng)用程序圖標(biāo)及其它細(xì)節(jié)信息。

1.要求

大家需要在自己的開發(fā)設(shè)備上預(yù)先安裝并配置好以下項(xiàng)目:

  • Android SDK以及平臺工具
  • Eclipse IDE 3.7.2或者更高版本,同時(shí)具備ADT插件
  • 運(yùn)行有Android 2.2或者更高版本的模擬器或者Android設(shè)備

大家可以點(diǎn)擊此處通過Android開發(fā)者門戶下載對應(yīng)SDK及平臺工具。

2.項(xiàng)目設(shè)置

首先我們需要啟動Eclipse并創(chuàng)建一個(gè)新的Android應(yīng)用程序項(xiàng)目。我為這個(gè)應(yīng)用取了個(gè)非常直白的名稱——SimpleLauncher,當(dāng)然大家也可以自由選擇自己想要的名稱。請確保軟件包名稱沒有與其它項(xiàng)目出現(xiàn)重復(fù)。我們的啟動器所能支持的***SDK版本為“凍酸奶”,而主要的面向版本則為“果凍豆”。

由于我們不打算創(chuàng)建Activity,因此取消“Create Activity”勾選項(xiàng),然后點(diǎn)擊“Finish”以繼續(xù)。

3.項(xiàng)目清單

接下來我們需要通過添加兩個(gè)activity對AndroidManifest.xml文件進(jìn)行修改。***個(gè)Activity用于顯示主屏幕,我們?nèi)缦滤緦⑵涿麨镠omeActivity。

  1. <activity 
  2.  
  3.     android:name="ah.hathi.simplelauncher.HomeActivity" 
  4.  
  5.     android:label="Simple Launcher Home" 
  6.  
  7. android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen" 
  8.  
  9.     android:launchMode="singleTask" 
  10.  
  11.     android:stateNotNeeded="true" 
  12.  
  13.     > 
  14.  
  15.     <intent-filter> 
  16.  
  17.       <action android:name="android.intent.action.MAIN" /> 
  18.  
  19.       <category android:name="android.intent.category.HOME" /> 
  20.  
  21.       <category android:name="android.intent.category.DEFAULT" /> 
  22.  
  23.     </intent-filter>         
  24.  
  25. </activity> 

通過將android.intent.category.HOME與android.intent.category.DEFAULT兩個(gè)類添加至intent-filter組當(dāng)中,相關(guān)Activity得以擁有與啟動器概念相符的運(yùn)行方式。當(dāng)大家按下設(shè)備上的home按鈕時(shí),其還將作為選項(xiàng)方案顯示出來。

我們還需要將launchMode設(shè)置到singleTask當(dāng)中,從而確保無論何時(shí)都只有單一Activity實(shí)例由系統(tǒng)負(fù)責(zé)運(yùn)行。要顯示用戶的墻紙圖案,大家必須將主題設(shè)置為Theme.Wallpaper.NoTitleBar.FullScreen。

我們需要添加的第二個(gè)Activity負(fù)責(zé)顯示已經(jīng)安裝在用戶設(shè)備中的應(yīng)用程序條目。它還有另一項(xiàng)任務(wù),即啟動這些應(yīng)用程序。我們不需要對該Activity進(jìn)行任何特殊配置,將其命名為AppsListActivity即可。

  1. <activity 
  2.  
  3.     android:name="ah.hathi.simplelauncher.AppsListActivity" 
  4.  
  5.     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
  6.  
  7.     >            
  8.  
  9. </activity> 

4.Activity布局

下面在項(xiàng)目的res/layout文件夾中為HomeActivity類創(chuàng)建一個(gè)XML文件,并將其命名為activity_home.xml。該布局擁有一個(gè)單獨(dú)的Button用以響應(yīng)點(diǎn)觸事件。點(diǎn)觸該按鈕能夠讓用戶由主屏幕切換至應(yīng)用程序列表。

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.  
  3.     xmlns:tools="http://schemas.android.com/tools" 
  4.  
  5.     android:layout_width="match_parent" 
  6.  
  7.     android:layout_height="match_parent" 
  8.  
  9.     tools:context=".HomeActivity" > 
  10.  
  11.     <Button 
  12.  
  13.         android:id="@+id/apps_button" 
  14.  
  15.         android:layout_width="wrap_content" 
  16.  
  17.         android:layout_height="wrap_content" 
  18.  
  19.         android:layout_alignParentRight="true" 
  20.  
  21.         android:layout_alignParentTop="true" 
  22.  
  23.         android:layout_marginRight="10dp" 
  24.  
  25.         android:layout_marginTop="10dp" 
  26.  
  27.         android:text="Show Apps" 
  28.  
  29.         android:onClick="showApps" 
  30.  
  31.         /> 
  32.  
  33. </RelativeLayout> 

接下來,在項(xiàng)目的res/layout文件夾中為AppsListActivity類創(chuàng)建一個(gè)XML文件并將其命名為activity_apps_list.xml。該布局當(dāng)中包含一個(gè)占據(jù)整個(gè)屏幕的ListView。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  4.  
  5.     android:layout_width="match_parent" 
  6.  
  7.     android:layout_height="match_parent" 
  8.  
  9.     android:orientation="vertical" > 
  10.  
  11.     <ListView 
  12.  
  13.         android:id="@+id/apps_list" 
  14.  
  15.         android:layout_width="match_parent" 
  16.  
  17.         android:layout_height="match_parent" 
  18.  
  19.         >        
  20.  
  21.     </ListView>    
  22.  
  23. </LinearLayout> 

***,在同樣的位置創(chuàng)建第三個(gè)XML文件并將其命名為list_item.xml。該文件用于定義ListView當(dāng)中各個(gè)條目的布局方案。列表視圖中的每個(gè)條目都代表著已經(jīng)安裝在用戶設(shè)備上的一款應(yīng)用程序。它能夠顯示該應(yīng)用程序的圖標(biāo)、標(biāo)簽以及軟件包名稱。我們可以利用ImageView實(shí)例來顯示該應(yīng)用的圖標(biāo),并通過TextView實(shí)例顯示標(biāo)簽與軟件包名稱。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2.  
  3. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  4.  
  5.     android:layout_width="match_parent" 
  6.  
  7.     android:layout_height="match_parent" 
  8.  
  9.     android:padding="10dp" 
  10.  
  11.     > 
  12.  
  13.     <ImageView 
  14.  
  15.         android:id="@+id/item_app_icon" 
  16.  
  17.         android:layout_width="wrap_content" 
  18.  
  19.         android:layout_height="wrap_content" 
  20.  
  21.         android:layout_alignParentLeft="true" 
  22.  
  23.         android:layout_centerVertical="true"        
  24.  
  25.         /> 
  26.  
  27.     <TextView 
  28.  
  29.         android:id="@+id/item_app_label" 
  30.  
  31.         android:layout_width="wrap_content" 
  32.  
  33.         android:layout_height="wrap_content" 
  34.  
  35.         android:layout_toRightOf="@+id/item_app_icon" 
  36.  
  37.         android:paddingLeft="10dp" 
  38.  
  39.         /> 
  40.  
  41.     <TextView 
  42.  
  43.         android:id="@+id/item_app_name" 
  44.  
  45.         android:layout_width="wrap_content" 
  46.  
  47.         android:layout_height="wrap_content" 
  48.  
  49.         android:layout_below="@+id/item_app_label" 
  50.  
  51.         android:layout_toRightOf="@+id/item_app_icon" 
  52.  
  53.         android:paddingLeft="10dp" 
  54.  
  55.         /> 
  56.  
  57. </RelativeLayout> 

5.創(chuàng)建Acitivity類

HomeActivity

應(yīng)用程序的布局方案創(chuàng)建完成之后,現(xiàn)在要做的是創(chuàng)建兩個(gè)Activity類。當(dāng)創(chuàng)建這兩個(gè)類時(shí),請確保每個(gè)類的名稱都與我們之前在項(xiàng)目清單文件中所指定的內(nèi)容相匹配。

創(chuàng)建一個(gè)名為HomeActivity的新類,然后將android.app.Activity設(shè)置為其超類。

  1. package ah.hathi.simplelauncher; 
  2.  
  3. import android.app.Activity; 
  4.  
  5. import android.content.Intent; 
  6.  
  7. import android.os.Bundle; 
  8.  
  9. import android.view.View; 
  10.  
  11. public class HomeActivity extends Activity { 
  12.  
  13.     @Override 
  14.  
  15.     protected void onCreate(Bundle savedInstanceState) { 
  16.  
  17.         super.onCreate(savedInstanceState); 
  18.  
  19.         setContentView(R.layout.activity_home); 
  20.  
  21.     } 
  22.  
  23.     public void showApps(View v){ 
  24.  
  25.         Intent i = new Intent(this, AppsListActivity.class); 
  26.  
  27.         startActivity(i); 
  28.  
  29.     } 
  30.  

在該類的onCreate方法中,我們調(diào)用setContentView并將其傳遞至之前已經(jīng)創(chuàng)建完成的布局當(dāng)中。大家可能還記得,我們曾為activity_home布局添加過一個(gè)按鈕,用于觸發(fā)名為showApps的方法。現(xiàn)在我們要做的是將該方法引入HomeActivity類當(dāng)中。整個(gè)添加過程非常簡單,各位需要做的只是為AppsListActivity類創(chuàng)建一個(gè)Intent并付諸運(yùn)行。

#p#

AppsListActivity

創(chuàng)建另一個(gè)名為AppsListActivity的Activity類,而后將android.app.Activity設(shè)置為其超類。在該類的onCreate方法當(dāng)中,我們調(diào)用setContentView并將其傳遞至此前已經(jīng)創(chuàng)建完成的activity_apps_list布局當(dāng)中。

  1. package ah.hathi.simplelauncher; 
  2.  
  3. import android.app.Activity; 
  4.  
  5. import android.content.Intent; 
  6.  
  7. import android.os.Bundle; 
  8.  
  9. import android.view.View; 
  10.  
  11. public class AppsListActivity extends Activity { 
  12.  
  13.     @Override 
  14.  
  15.     protected void onCreate(Bundle savedInstanceState) {    
  16.  
  17.         super.onCreate(savedInstanceState); 
  18.  
  19.         setContentView(R.layout.activity_apps_list); 
  20.  
  21.     } 
  22.  

雖然我們的啟動器方案還沒有最終完成,但到這里大家已經(jīng)可以保存現(xiàn)有內(nèi)容并借此啟動自己設(shè)備上的應(yīng)用程序了。當(dāng)各位按下設(shè)備上的home按鈕時(shí),系統(tǒng)會能夠彈窗詢問我們希望使用哪種啟動器方案。

如果大家選擇了Simple Launcher Home,則可以看到自己創(chuàng)建的全新主屏幕,其右上屏幕位置還配備一個(gè)按鈕。大家還能看到自己設(shè)備上原本設(shè)定的墻紙圖案。

[[117878]]

現(xiàn)在回到Eclipse并創(chuàng)建一個(gè)名為AppDetail的類,其中將包含與應(yīng)用程序相關(guān)的細(xì)節(jié)信息、軟件包名稱、標(biāo)簽以及應(yīng)用程序圖標(biāo)。該界面非常基礎(chǔ),大家可以利用如下代碼實(shí)現(xiàn):

  1. package ah.hathi.simplelauncher; 
  2.  
  3. import android.graphics.drawable.Drawable; 
  4.  
  5. public class AppDetail { 
  6.  
  7.         CharSequence label; 
  8.  
  9.         CharSequence name; 
  10.  
  11.         Drawable icon; 
  12.  

6.獲取應(yīng)用程序

在AppsListActivity類的loadApps方法當(dāng)中,我們可以使用PackageManager類的queryIntentActivities方法以獲取Intent.CATEGORY_LAUNCHER類別當(dāng)中的所有Intents。該查詢能夠返回一份列表,其中包含全部能夠經(jīng)由啟動器實(shí)現(xiàn)啟動的應(yīng)用程序。我們可以將查詢返回結(jié)果中的每個(gè)條目添加到名為apps的列表當(dāng)中。大家可以通過以下代碼片段進(jìn)一步了解其效果。

  1. private PackageManager manager; 
  2.  
  3. private List<AppDetail> apps; 
  4.  
  5. private void loadApps(){ 
  6.  
  7.     manager = getPackageManager(); 
  8.  
  9.     apps = new ArrayList<AppDetail>(); 
  10.  
  11.     Intent i = new Intent(Intent.ACTION_MAIN, null); 
  12.  
  13.     i.addCategory(Intent.CATEGORY_LAUNCHER); 
  14.  
  15.     List<ResolveInfo> availableActivities = manager.queryIntentActivities(i, 0); 
  16.  
  17.     for(ResolveInfo ri:availableActivities){ 
  18.  
  19.         AppDetail app = new AppDetail(); 
  20.  
  21.         app.label = ri.loadLabel(manager); 
  22.  
  23.         app.name = ri.activityInfo.packageName; 
  24.  
  25.         app.icon = ri.activityInfo.loadIcon(manager); 
  26.  
  27.         apps.add(app); 
  28.  
  29.     } 
  30.  

7.顯示應(yīng)用程序列表

由于apps變量當(dāng)中包含有我們所需要的全部細(xì)節(jié)信息,因此大家可以利用ListView類顯示出完整的應(yīng)用程序列表。我們首先創(chuàng)建一個(gè)簡單的ArrayAdapter并覆蓋其getView方法以獲取列表中的條目信息。接下來,將該ListView與適配器相關(guān)聯(lián)。

  1. private ListView list;    
  2.  
  3. private void loadListView(){ 
  4.  
  5.     list = (ListView)findViewById(R.id.apps_list); 
  6.  
  7.     ArrayAdapter<AppDetail> adapter = new ArrayAdapter<AppDetail>(this
  8.  
  9.             R.layout.list_item, 
  10.  
  11.             apps) { 
  12.  
  13.         @Override 
  14.  
  15.         public View getView(int position, View convertView, ViewGroup parent) { 
  16.  
  17.             if(convertView == null){ 
  18.  
  19.                 convertView = getLayoutInflater().inflate(R.layout.list_item, null); 
  20.  
  21.             } 
  22.  
  23.             ImageView appIcon = (ImageView)convertView.findViewById(R.id.item_app_icon); 
  24.  
  25.             appIcon.setImageDrawable(apps.get(position).icon); 
  26.  
  27.             TextView appLabel = (TextView)convertView.findViewById(R.id.item_app_label); 
  28.  
  29.             appLabel.setText(apps.get(position).label); 
  30.  
  31.             TextView appName = (TextView)convertView.findViewById(R.id.item_app_name); 
  32.  
  33.             appName.setText(apps.get(position).name); 
  34.  
  35.             return convertView; 
  36.  
  37.         } 
  38.  
  39.     }; 
  40.  
  41.     list.setAdapter(adapter);           
  42.  

8.偵聽點(diǎn)觸操作

當(dāng)用戶點(diǎn)觸ListView當(dāng)中的某個(gè)條目時(shí),我們的啟動器應(yīng)該能夠運(yùn)行相應(yīng)的應(yīng)用程序。我們可以通過PackageManager類中的getLaunchIntentForPackage方法來創(chuàng)建一個(gè)Intent,用于指定我們要啟動哪款應(yīng)用程序。請大家查看以下代碼片段。

  1. private void addClickListener(){        
  2.  
  3.     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
  4.  
  5.         @Override 
  6.  
  7.         public void onItemClick(AdapterView<?> av, View v, int pos, 
  8.  
  9.                 long id) { 
  10.  
  11.             Intent i = manager.getLaunchIntentForPackage(apps.get(pos).name.toString()); 
  12.  
  13.             AppsListActivity.this.startActivity(i); 
  14.  
  15.         } 
  16.  
  17.     }); 
  18.  

9.通過整合實(shí)現(xiàn)完整功能

為了讓前面提到的全部內(nèi)容整合起來并實(shí)現(xiàn)完整功能,我們需要在AppsListActivity類的onCreate方法中調(diào)用loadApps、loadListView與addClickListener,具體代碼如下所示。

  1. protected void onCreate(Bundle savedInstanceState) {    
  2.  
  3.     super.onCreate(savedInstanceState); 
  4.  
  5.     setContentView(R.layout.activity_apps_list); 
  6.  
  7.     loadApps(); 
  8.  
  9.     loadListView(); 
  10.  
  11.     addClickListener(); 
  12.  

下面編譯并運(yùn)行我們的啟動器應(yīng)用,并再一次運(yùn)行以查看結(jié)果。大家現(xiàn)在應(yīng)該已經(jīng)能夠在啟動器主屏幕中點(diǎn)擊該按鈕后查看所有可以啟用的應(yīng)用程序了。別猶豫,快點(diǎn)觸其中一個(gè)嘗試一下吧。

總結(jié)

大家現(xiàn)在已經(jīng)擁有自己的定制化啟動器了。它很簡單也很粗糙,但我們完全可以陸續(xù)為其添加更多功能特性、從而讓它逐步得到完善。如果大家想進(jìn)一步了解能夠在啟動器中引入哪些自定義項(xiàng)目,我建議各位點(diǎn)擊此處查看Android開發(fā)者門戶當(dāng)中給出的示例應(yīng)用程序。

原文鏈接:Build A Custom Launcher on Android

核子可樂譯

責(zé)任編輯:閆佳明 來源: 51CTO譯文
相關(guān)推薦

2014-08-19 13:56:23

移動技術(shù)半月刊

2013-01-09 17:16:41

Android開發(fā)Camera

2014-08-26 10:05:37

框架開發(fā)AngularJS

2024-09-14 14:09:40

2009-06-30 13:58:00

Java啟動器

2021-08-27 11:03:57

Azure公有云云原生

2013-11-25 15:11:21

Linux桌面啟動器

2011-04-02 11:46:50

UI嵌入式開發(fā)

2012-11-09 14:33:38

WindowsChrome

2011-10-19 09:56:58

Gnome Pie程序啟動器

2012-06-20 10:21:50

Windows Pho

2018-03-26 10:20:13

2013-04-19 15:22:31

Windows Pho啟動器與選擇器

2013-04-18 13:28:19

Windows Pho啟動器與選擇器

2013-04-18 13:56:09

Windows Pho啟動器與選擇器

2013-04-18 11:13:04

Windows Pho啟動器與選擇器BingMapsDir

2017-02-09 09:30:18

UbuntuDokuWikiApache

2021-12-14 16:15:47

LinuxNginxWeb

2018-05-14 08:36:06

JavaFedoraOpenJDK

2013-04-18 13:47:43

Windows Pho啟動器與選擇器發(fā)送短信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲日本va中文字幕久久| 欧美69xxxxx| 欧美人成在线| 久久久久久久久中文字幕| 男男gaygays亚洲| 欧美美女激情18p| 欧美3p视频在线观看| 亚洲精品成人精品456| 日韩福利视频在线| 国产白丝网站精品污在线入口| 极品校花啪啪激情久久| 亚洲澳门在线| 国产精品久久久久久av下载红粉 | 在线观看精品一区二区三区| 亚洲一区二区在线免费看| www.日本一区| 国产丝袜美腿一区二区三区| 久久久999视频| 久久蜜桃av一区精品变态类天堂| 凹凸国产熟女精品视频| 久久久久久久精| 182午夜在线观看| 亚洲欧美日韩国产手机在线| 女人黄色片免费| 色婷婷亚洲一区二区三区| 在线视频资源站| 5858s免费视频成人| 韩国精品一区| 日韩在线免费视频观看| www999久久| 日本国产精品视频| 日韩理论电影| 精品久久精品久久| 精品一区二区三区免费| av高清在线免费观看| 国产精品久久久久毛片软件| 97影视大全免费追剧大全在线观看| 激情久久av一区av二区av三区| 高清中文字幕一区二区三区| 精品剧情v国产在线观看在线| 3d欧美精品动漫xxxx无尽| 久久久伊人欧美| 综合五月婷婷| 综合久久国产| 国产日韩欧美一区二区三区综合| 免费av片在线观看一道本| 91久久国产综合久久| 国产中文在线播放| 午夜精品久久久久久久久久久久久| 国产精品麻豆久久| 亚洲第一精品区| 亚洲欧洲美洲综合色网| avtt亚洲| 欧美另类极品videosbest最新版本| 日韩在线第七页| 最近看过的日韩成人| 国产精品色呦呦| 日韩三级影院| 久久精品久久久久久| 99久久.com| 欧美性猛交内射兽交老熟妇| 一区二区三区四区亚洲| 蜜臀av在线| 国产综合在线看| 国产精品普通话对白| 成年人网站免费视频| 欧美日韩在线影院| 99久久婷婷国产综合精品首页| 国产精品中文字幕在线| 国产乱色国产精品免费视频| 四虎永久在线| 中文字幕国产精品久久| 66国产精品| 131美女爱做视频| 欧美日韩一区二区三区不卡| 日韩中文字幕无砖| 日本成人看片网址| 一区二区三区四区激情| 一区二区三区电影大全| 91九色国产视频| 久久婷婷综合激情| 日韩av激情| 国产精国产精品| 国产精品77777| 污污网站在线| 欧美巨大黑人极品精男| 久久婷婷麻豆| 黄页网站视频在线观看| www.亚洲一区| 久久亚洲风情| 作爱视频免费观看视频在线播放激情网| 精品亚洲精品福利线在观看| 亚洲女同一区| 欧美大尺度做爰床戏| 亚洲精品一区久久久久久| 日韩精品2区| 亚洲精品中文字幕无码蜜桃| 精品国产不卡一区二区三区| 91av精品| 石原莉奈一区二区三区高清在线| 中文字幕在线观看亚洲| 奇米精品一区二区三区四区| 在线观看免费视频一区二区三区| 日韩亚洲成人av在线| 日韩电影在线免费观看| 国产中文在线观看| 国产精品久久久久久亚洲影视| www.欧美色图| 在线观看v片| 偷拍视频一区二区| 欧美三级日韩三级| 亚洲国产精品久久久久蝴蝶传媒| 四虎黄色影院| 欧美黄色免费网站| 26uuu欧美| 日本国产亚洲| 欧美高清中文字幕| 亚洲摸下面视频| 久久99国产精品久久99| 欧美1—12sexvideos| 免费久久久一本精品久久区| 色伊人久久综合中文字幕| 欧美精品尤物在线观看| baoyu777.永久免费视频| 欧美精品电影免费在线观看| 99精品偷自拍| 91精品视频一区二区| 福利视频一区二区三区四区| 亚洲色图综合久久| 高清在线不卡av| 久久爱.com| 无码日韩人妻精品久久蜜桃| 日韩中文字在线| 久久亚洲精品小早川怜子| 看片一区二区| 久久午夜夜伦鲁鲁一区二区| 欧美黑人性猛交| 国产精品国产三级国产专播品爱网| 精品一区二区三区中文字幕 | 亚洲小说区图片区| 国产福利在线视频| 产国精品偷在线| 3d成人动漫网站| 日日夜夜免费精品| xxxx在线视频| 一区二区三区四区免费观看| 亚洲欧洲午夜一线一品| 波多野结衣精品在线| 久久伊人影院| 国产网站免费观看| 成人久久久久久久| 欧美精品aⅴ在线视频| 免费成人在线视频观看| 国产精品诱惑| 91xxxxx| 97自拍视频| 精品日韩欧美一区二区| 国产成人精品午夜视频免费 | 亚洲最大中文字幕| 国产欧美精品一区| 日韩欧美伦理| av软件在线观看| 热久久最新地址| 久久久噜噜噜久久中文字免| 亚洲国产欧美在线| 亚洲综合另类| 成人做爰视频www| www.99com| 国产v亚洲v天堂无码| 精品久久免费看| 久久网这里都是精品| 久久精品亚洲人成影院| 青草影视电视剧免费播放在线观看| 午夜久久久久久久久久久| 国产亚洲美女久久| 欧美裸体网站| 精品99久久久久久| 成人免费视频app| 婷婷久久五月天| 日韩av在线电影网| 26uuu精品一区二区| 啄木系列成人av电影| 国产69精品久久app免费版| 亚洲精品影院| 美日韩精品免费视频| 一区二区视频在线看| 伊人久久大香线蕉av超碰演员| 欧美大片黄色| 国产 porn| 高清国产在线一区| 亚洲黄色在线看| 中文字幕在线观看不卡| 99精品久久| 国产精品国产亚洲精品| 欧美色18zzzzxxxxx| 中文字幕第50页| 国产精品黄色av| 亚洲精品成人久久电影| 亚洲精品成人a在线观看| 青青草视频一区|