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

HarmonyOS應用開發-低代碼開發登錄頁

系統 OpenHarmony
本篇文章我來手把手教大家做一個HarmonyOS 應用的登錄頁面,逐步講解,非常細致,百分百能學會,并提供全部源碼。頁面使用 DevEco Studio 的低代碼開發。

想了解更多關于開源的內容,請訪問:

51CTO 鴻蒙開發者社區

https://ost.51cto.com

本篇文章我來手把手教大家做一個HarmonyOS 應用的登錄頁面,逐步講解,非常細致,百分百能學會,并提供全部源碼。頁面使用 DevEco Studio 的低代碼開發。通過本文的實踐經驗,我想告訴大家, HarmonyOS 應用開發其實并不難,只要了解具體的開發流程和開發思想,大家都可以很快上手。

下面這張圖是我們的目標實現圖,具體實現流程將由我一步一步講解:

一、項目初始化

1.創建低代碼項目

下載安裝 DevEco Studio,新建一個支持 Super Visual 低代碼模式的項目。

2.低代碼項目結構解讀

初始項目目錄如下:

├──entry/src/main/ets           // 代碼區
│  ├──entryability              
│  │  └──EntryAbility.ets       // 程序入口類
│  └──pages
│     └──Index.ets              // 首頁的邏輯描述文件
├──entry/src/main/resources     // 資源文件
└──entry/src/main/supervisual
   └──pages
      └──Index.visual           // 首頁的數據模型

其中.ets文件就是我們正常編寫界面邏輯的文件,語言為ArcTS;
.visual為低代碼項目特有的文件,由系統根據我們對界面的可視化設計自動更新,用寫字板打開能看到是存儲界面設計的Json文本;

二、添加靜態文件

1.新增圖片文件

ets 文件下創建 common\images\icon 文件夾,icon內添加我們需要添加的圖片文件,本教程我們用到了3個“其他登錄方式”的圖標。

添加的圖標圖片如下:

增加完三個圖標后,我們的項目結構更新如下:

├──entry/src/main/ets           // 代碼區
│  ├──common                    
│  │  └──images                 
│  │     └──icon                // 圖標圖片
│  │        ├──csdn.png         // 圖標A
│  │        ├──huawei.png       // 圖標B
│  │        └──openatom.png     // 圖標C
│  ├──entryability              
│  │  └──EntryAbility.ets       // 程序入口類
│  └──pages
│     └──Index.ets              // 首頁的邏輯描述文件
├──entry/src/main/resources     // 資源文件
└──entry/src/main/supervisual
   └──pages
      └──Index.visual           // 首頁的數據模型

2.新增常量類

這一步可選,一般意義上,我們會根據系統業務需要把一些固定的參數寫到一個記錄常量的 ArcTS 文件里,比如命名為 Const.ts,本次我們把頁面需要的常量寫到了頁面自帶的 index.ets文件里,所以沒有建立常量類,特此說明。

如果需要添加,我們可以把常量類 Const.ts 放在和 images 文件夾平級的位置,添加 Const.ts 之后的項目結構如下:

├──entry/src/main/ets           // 代碼區
│  ├──common                    
│  │  ├──Const.ts               // 常量類
│  │  └──images                 
│  │     └──icon                // 圖標圖片
│  │        ├──csdn.png         // 圖標A
│  │        ├──huawei.png       // 圖標B
│  │        └──openatom.png     // 圖標C
 
│  ├──entryability              
│  │  └──EntryAbility.ets       // 程序入口類
│  └──pages
│     └──Index.ets              // 首頁的邏輯描述文件
├──entry/src/main/resources     // 資源文件
└──entry/src/main/supervisual
   └──pages
      └──Index.visual           // 首頁的數據模型

三、編寫登錄頁界面

1.低代碼設計界面布局

放置容器組件

初始話的頁面如圖,Root 根結構下包含一個 Column 的容器,容器里有一個 “Hello World” 的 Text 文本控件。

我們直接復用這個 Column 容器,刪除 Text 控件(左側組件樹或右側可視化屏幕里選中控件然后按Backspace鍵就可以刪除)。

放置圖標圖片

如圖,我們需要放置一個水平居中的應用圖標:

思路:下面我們來實現登錄頁面的圖標,我們需要創建一個行容器(Row),然后拖一個圖片組件(Imgae)進去,并使圖片居中。

操作:在列容器(Cloumn)里拖一個行容器(Row)過去,寬度(width)設置為 100%,高度(height)設置為 100vp,設置水平居中、垂直居中,位置為絕對定位(Position),距離頁面上方 95vp 距離。

然后我們拖入圖片組件(Imgae),設置圖片寬高均為 100vp(和Row的高相等)。

圖片的Src(圖片存儲路徑)設置為app自帶的默認圖標,至此我們的登錄頁應用圖標就顯示出來了。

放置描述文字

接下來,我們需要放置描述性文本,如圖:

思路:這里用到的是文本組件(Text),我們需要填寫文字內容、定義字體大小和組件的位置。

操作:拖兩個文本組件(Text)到行容器(Row)下面。

設置內容(Content)為 “用戶登錄”,字體大小(FontSize)為 26fp,字體對齊(TextAlign)為居中(Center),文字組件框體大小(Size)為寬度 100%,高度 50vp,位置為絕對定位(Position),距離頁面頂部 200vp。效果圖如下:

同理,我們制作 “登錄賬號以使用更多服務” 文本框。

我們設置文本框內容(Content)為 “登錄賬號以使用更多服務”,字體大小(FontSize)為 14fp,字體對齊(TextAlign)為居中(Center),文字組件框體大小(Size)為寬度 100%,高度 30vp,位置為絕對定位(Position),距離頁面頂部 250vp,字體顏色(FontColor)為 #8c8c8c(灰色)。效果圖如下:

放置賬號信息輸入框

接下來,我們要制作賬號信息的輸入部分,這里用到的是文本輸入組件(TextInput)。
目標實現效果如下:

思路:我們需要兩個文本輸入組件(TextInput)用來實現賬號信息的錄入,下方 "短信驗證碼登錄" 和 "忘記",我們使用普通文本組件(Text)實現,讓兩個普通文本組件(Text)并列在一行,然后一個左對齊,一個右對齊。

操作流程:

首先,我們處理賬號信息的兩個文本輸入框。

拖兩個文本輸入組件(TextInput)在我們之前拖的組件下面。

設置文本輸入組件一(text-input1):

設置文本占位符(Placeholder)為 “郵箱/手機號/用戶名”,類型(Type)為 Normal。

組件框體大小(Size)為寬度(Width)為 100%,高度(Height)為 50vp。

背景顏色(BackgroundColor)為白色(#ffffff)。

邊框(Border)只要底邊框,底邊框寬度(BorderBottomWidth)為 1vp,邊框顏色(BorderColor)為深灰色(#4a4a4a)。

位置為絕對定位(Position),距離頁面頂部 328vp。

效果圖如下:

設置文本輸入組件二(text-input2):

設置文本占位符(Placeholder)為 “郵箱/手機號/用戶名”,類型(Type)為 Password。

組件框體大小(Size)為寬度(Width)為 100%,高度(Height)為 50vp。

背景顏色(BackgroundColor)為白色(#ffffff)。

邊框(Border)只要底邊框,底邊框寬度(BorderBottomWidth)為 1vp,邊框顏色(BorderColor)為深灰色(#4a4a4a)。

位置為絕對定位(Position),距離頁面頂部 380vp。

效果圖如下:

下一步,我們來制作兩個輸入框下面的 “短信驗證碼登錄” 和 “忘記”。

拖一個行容器(Row)到文本輸入框組件下面,設置行容器(Row)的屬性。

設置組件居中。

設置組件的尺寸(Size),寬度(Width)為 94%,高度(Height)為 30vp。

設置組件位置為絕對定位(Position),距離頁面頂部 430vp,距離左側為 3%;

接著,我們往容器里拖兩個文本組件(Text)。

設置組件屬性如下:

組件一(text5)內容為 “短信驗證碼登錄”,字體居左,字體大小為 14fp。

定義尺寸(Size),寬度(Width)為 50%,高度(Height)為 30vp。

組件位置為絕對定位(Position),距離左側為 0%。

組件二(text6)內容為 “忘記”,字體居右,字體大小為 14fp。

定義尺寸(Size),寬度(Width)為 50%,高度(Height)為 30vp。

組件位置為絕對定位(Position),距離左側為 50%。

放置登錄按鈕

這一步是最簡單的,制作登錄按鈕部分,只需要一個按鈕組件(Button)和一個文本組件(Text)。

目標實現效果如下:

思路:我們拖一個按鈕組件(Button),再在按鈕下方拖一個文本組件(Text)即可。

操作流程:

首先,我們拖一個按鈕組件。

定義組件的屬性:

設置組件寬度(Width)為 90%,高度(Height)為 40vp。

內容為”登錄”,字體默認居中,字體大小為 20fp。

組件位置為絕對定位(Position),距離左側為 5%,距離頂部 530vp。

下方再拖一個文本組件(Text),設置組件屬性:

文本組件內容為 “注冊賬號”,字體居中,字體大小為 14fp。

定義尺寸(Size),寬度(Width)為 100%,高度(Height)為 30vp。

組件位置為絕對定位(Position),距離頂部為 570vp。

放置Grid網格控件

最后,我們來制作其他登錄方式的選擇部分,這里用到的是網格組件(Grid)、網格內單個元素(GridItem)、其他常見組件(圖片、文字、行/列等)。
目標實現效果如下:

思路:我們需要一個網格組件(Grid),組件內包含若干個子元素,這個用Grid內對象組件(GridItem)可以實現,這樣我們就可以根據我們后端傳值的數目來動態顯示登錄方式,而不是把三種登錄方式固定寫死。每個Grid內子元素(GridItem)里放置一個行容器(Row),行容器(Row)里上方放一個圖片組件(Image),下方放一個文本組件(Text)。

操作流程:

首先,我們拖一個網格組件(Grid),設置組件屬性:

組件寬度(width)設置為 100%,高度(height)設置為 10%。

內容居中,絕對定位,距離頂部 90%。

往網格組件(Guid)里拖一個GuidItem組件,這是一個動態顯示的子元素組件,會根據我們提供的參數動態進行內容顯示,由于我們在設計上固定為行內顯示3個,所以寬度就直接定為33.3%了。

設置GridItem組件屬性:
組件寬度(width)設置為 33.3%,高度(height)設置為 100%(因為是相對于Grid)。

往GridItem里拖入一個行容器(Row),設置組件屬性:
高度和寬度均為 100%。

然后再往行容器(Row)里拖一個圖片組件(Image)和一個文本組件(Text)。

設置組件屬性:

圖片(Image)組件:

  • 圖片路徑(Src),我們使用編譯器自帶的 Logo。
  • 對象適應方式(ObjectFit) 為包含(Contain)。
  • 組件寬度(width)設置為 70%,高度(height)設置為 56%。
  • 距離上邊距(MarginTop) 10%。
  • 絕對定位,距離左側 15%。

文字(Text)組件:

  • 文字內容(Content),我們先隨便填個 “測試”。
  • 文本居中。
  • 組件寬度(width)設置為 100%,高度(height)設置為 24%。
  • 絕對定位,距離頂部 60%(60%~70%均可)。

做到這里,我們的ArcUI的設計就完成了,是不是覺得和下面三個圖標的目標效果還有點差距,別急,我們接下來就來實現GridItem數據的動態渲染。

2.實現數據動態渲染

下一步,我們來實現數據的動態渲染,在這個登錄頁面,我們需要對GridItem組件及其內部組件的屬性進行動態賦值。

創建數據源

我們先創建數據源,打開頁面對應的 ArcTS 文件(比如你現在編輯的可視化低代碼界面是Index.visual,那么對應的 ArcTS 文件就是 Index.ets)

默認的頁面 .ets 文件內容如下:

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {

  }
}

我們在這里創建 FunctionType 對象,用來裝配我們需要顯示的圖片路徑和文字內容。

然后再定義狀態變量 avenues,數組類型,用來包含我們裝配圖片路徑和文字內容的 FunctionType 對象。

更新后的代碼如下:

class FunctionType {
  name: string;
  icon: string;
}
 
@Entry
@Component
struct Index {
  @State avenues: Array<FunctionType> = [
    {
      name: 'HuaWei', icon: "common/images/icon/huawei.png"
    },
    {
      name: 'CSDN', icon: "common/images/icon/csdn.png"
    },
    {
      name: 'OpenAtom', icon: "common/images/icon/openatom.png"
    }
  ]
 
  build() {
 
  }
}

更新動態渲染組件屬性

回到我們低代碼頁面 Index.visual,修改網格子元素組件(GridItem)的Render里的ForEach屬性為this.avenues,其他默認;

然后我們再分別選中GridItem里的圖片組件和文本組件,對其勾選動態值。

圖片組件(Image)的圖片路徑(Src)選擇 item1.icon。

文本組件(Text)的內容(Content)選擇 item1.name。

然后我們到預覽器(Preview)的窗口里就可以看到已經完成的效果了。

至此,我們的低代碼開發部分已全部完成!

3.低代碼頁面轉為ArcTs文件

這步是可選步驟,根據實際需要決定是否要轉,低代碼和 ArcTs 在開發頁面上各有優勢。低代碼開發迅速、改動簡單,ArcTS 則更方便自定義一些事件,擁有更好的擴展性。一般對于涉及交互業務的頁面,頁面的功能會相對比較復雜,推薦使用 ArcTS,如果是登錄頁這種簡單業務邏輯頁面,可以保留低代碼版本,不必轉化為 ArcTS 版本。

如果有需要將 .visual 頁面轉換為 .ets 文件,我們可以點擊右上角的轉換按鈕。

此操作能夠將低代碼界面轉換為 ArcTS 的代碼。
注意:轉換完之后原有的 .visual 文件會被刪除!這個過程不可逆!
目前編譯器點擊轉換按鈕后會有 ArcTS 的預覽代碼,需要點擊 Convert 來確認此次操作,本次界面轉換結果的預覽代碼如下:

class FunctionType {
  name: string;
  icon: string;
}
 
@Entry
@Component
struct Index {
  @State avenues: Array<FunctionType> = [
    {
      name: 'HuaWei', icon: "common/images/icon/huawei.png"
    },
    {
      name: 'CSDN', icon: "common/images/icon/csdn.png"
    },
    {
      name: 'OpenAtom', icon: "common/images/icon/openatom.png"
    }
  ]
 
  build() {
    Column() {
      Column() {
        Row() {
          Image($r('app.media.icon'))
            .width("100vp")
            .height("100vp")
            .align(Alignment.Center)
            .offset({ x: "0%", y: "0vp" })
            .backgroundImageSize(ImageSize.Auto)
        }        
        .width("100%")
        .height("100vp")
        .position({ x: "0", y: "95vp" })
        .displayPriority(0)
        .alignItems(VerticalAlign.Center)
        .justifyContent(FlexAlign.Center)
        Text("用戶登錄")
          .width("100%")
          .height("50vp")
          .position({ x: "0vp", y: "200vp" })
          .borderRadius({ topRight: "0vp" })
          .textAlign(TextAlign.Center)
          .textOverflow({ overflow: TextOverflow.Clip })
          .fontSize("26fp")
          .fontWeight(FontWeight.Medium)
          .fontFamily("sans-serif")
        Text("登錄帳號以使用更多服務")
          .width("100%")
          .height("30vp")
          .position({ x: "0vp", y: "250vp" })
          .fontColor("#8c8c8c")
          .textAlign(TextAlign.Center)
          .fontSize("14fp")
        TextInput({ placeholder: "郵箱/手機號/用戶名" })
          .width("100%")
          .height("50vp")
          .position({ x: "0vp", y: "328vp" })
          .borderWidth({ bottom: "1vp" })
          .borderColor({ bottom: "#4a4a4a" })
          .backgroundColor("#ffffff")
          .margin({ bottom: "0vp" })
          .padding({ top: "0vp" })
          .type(InputType.Normal)
        TextInput({ placeholder: "密碼" })
          .width("100%")
          .height("50vp")
          .position({ x: "0vp", y: "380vp" })
          .borderWidth({ bottom: "1vp" })
          .borderColor({ bottom: "#4a4a4a" })
          .backgroundColor("#ffffff")
          .type(InputType.Password)
        Row() {
          Text("忘記密碼")
            .width("50%")
            .height("30vp")
            .position({ x: "50%", y: "0px" })
            .textAlign(TextAlign.End)
            .fontSize("14fp")
          Text("短信驗證碼登錄")
            .width("50%")
            .height("30vp")
            .position({ x: "0%", y: "0vp" })
            .textAlign(TextAlign.Start)
            .fontSize("14fp")
        }        
        .width("94%")
        .height("30vp")
        .position({ x: "3%", y: "430vp" })
        Grid() {
          if (true) {
            ForEach(this.avenues,
            (    item1: any, idx1: number) => {
            GridItem() {
              Row() {
                if (true) {
                  Text(    `    ${item1.name}`
)
                    .width("100%")
                    .height("24%")
                    .position({ x: "0%", y: "60%" })
                    .textAlign(TextAlign.Center)
                    .fontSize("14fp")                
                }
                Image($r('app.media.icon'))
                  .width("70%")
                  .height("56%")
                  .position({ x: "15%", y: "0vp" })
                  .margin({ top: "10%", bottom: "0vp", left: "0%", right: "0%" })
                  .objectFit(ImageFit.Contain)
              }              
              .width("100%")
              .height("100%")
            }            
            .width("33.3%")
            .height("100%")
            .align(Alignment.Start)
            .offset({ x: "0vp", y: "0" })})          
          }
        }        
        .width("100%")
        .height("10%")
        .align(Alignment.Center)
        .position({ x: "0vp", y: "90%" })
        .backgroundImageSize(ImageSize.Auto)
        .opacity(0.99)
        .margin({ top: "0vp", bottom: "0vp", left: "0vp", right: "0vp" })
        .padding({ top: "0vp", bottom: "0vp" })
        .scrollBar(BarState.Off)
        Button("登錄")
          .width("90%")
          .height("40vp")
          .position({ x: "5%", y: "530vp" })
          .fontSize("20fp")
        Text("注冊賬號")
          .width("100%")
          .height("30vp")
          .position({ x: "0vp", y: "570vp" })
          .textAlign(TextAlign.Center)
          .fontSize("14fp")
        Text("其他方式登錄")
          .width("100%")
          .height("4%")
          .align(Alignment.Center)
          .position({ x: "0vp", y: "85%" })
          .textAlign(TextAlign.Center)
          .fontSize("14fp")
      }      
      .width("100%")
      .height("100%")
      .position({ x: "0vp", y: "0vp" })
      .borderWidth({ bottom: "1vp" })
      .borderColor({ bottom: "#4a4a4a" })
      .justifyContent(FlexAlign.Center)
    }    
    .width("100%")
    .height("100%")
  }
}

四、測試應用

1.啟動仿真器

右上角選擇設備,點擊進入設備管理器,如果沒有對應的仿真設備,需要下載安裝,如果已經有,選擇 Huawei_Phone 作為調試的仿真設備,點擊啟動。

2.界面測試

點擊右上角啟動鍵,啟動項目。

有的時候會因為頁面刪除但是頁面配置沒清除完全導致運行失敗,這個需要到項目啟動類的配置文件里手動刪除多出來的頁面,啟動類配置文件的路徑是 :DevEco-Studio\Test-Project\Harmony\entry\src\main\resources\base\profile\main_pages.json;

程序啟動成功,運行效果如圖:

想了解更多關于開源的內容,請訪問:

51CTO 鴻蒙開發者社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 鴻蒙開發者社區
相關推薦

2022-02-21 15:25:47

HarmonyOS鴻蒙低代碼開發

2022-05-07 15:34:16

ETS低代碼應用

2021-11-24 16:02:57

鴻蒙HarmonyOS應用

2021-11-09 15:27:18

鴻蒙HarmonyOS應用

2023-08-29 15:14:32

2020-11-29 15:09:15

騰訊云云開發代碼

2022-04-15 11:32:20

IDE工具鴻蒙操作系統

2021-07-26 09:00:00

開發編程工具

2020-09-08 12:51:35

低代碼開 發代碼平臺

2020-11-09 11:56:49

HarmonyOS

2020-09-28 15:13:04

鴻蒙

2021-07-05 12:36:22

低代碼編程語言開發平臺

2021-07-27 09:00:00

開發Web軟件

2020-07-01 07:00:00

軟件開發低代碼無代碼

2011-08-11 16:50:04

iOSTwitter

2020-10-22 10:34:04

APICloud開發平臺

2022-09-23 08:00:00

開發安全低代碼平臺

2023-09-13 15:09:35

軟件開發數字化進程

2023-07-27 18:39:20

低代碼開發編碼

2021-10-22 15:54:52

代碼開發AI
點贊
收藏

51CTO技術棧公眾號

国产freexxxx性播放麻豆| 亚洲jizzjizz日本少妇| 久久丫精品忘忧草西安产品| 国产韩日精品| 亚洲主播在线观看| 久久亚洲午夜电影| 999av视频| 国产欧美短视频| 中文字幕亚洲欧美日韩在线不卡| 天天干天天色天天干| 草草视频在线| 国产精品视频免费| 国产视频一区二区三区四区| 久久久久亚洲视频| 黄色日韩在线| 日韩中文字幕免费视频| 成年人小视频在线观看| 韩国精品主播一区二区在线观看 | 疯狂做受xxxx欧美肥白少妇| 亚洲欧美日韩在线综合| 色一情一乱一乱一区91av| 蜜桃av噜噜一区二区三区小说| 九九热精品在线| 国产高潮呻吟久久| 国产精品主播在线观看| 在线国产电影不卡| 奇米影视亚洲色图| 午夜在线视频播放| 国产亚洲精品aa午夜观看| 丁香五月网久久综合| ,一级淫片a看免费| 三级欧美在线一区| 欧美亚洲在线视频| xxxx 国产| 欧美视频不卡| 乱亲女秽乱长久久久| 免费看的黄色录像| 欧美猛男同性videos| 亚洲成人久久久| 欧美视频亚洲图片| 免费成人毛片| 欧美中文字幕一二三区视频| 日韩精品xxxx| 国产理论在线| 五月激情综合色| 国产精品一色哟哟| 日韩激情美女| 一区二区成人在线| 日韩中文字幕在线不卡| 最爽无遮挡行房视频在线| 亚洲男同性视频| 国产成人三级视频| 精品51国产黑色丝袜高跟鞋| 国产精品美女久久久久久2018| 欧美一区免费视频| 免费国产在线视频| 国产亚洲一二三区| 日本在线视频一区| wwwww在线观看免费视频| 久久精品一区四区| 亚洲欧美国产不卡| 丝袜美腿美女被狂躁在线观看| 国产欧美精品一区二区三区四区| 欧美一区免费视频| 日本中文字幕在线观看| 亚洲人成影院在线观看| 蜜臀av.com| 伊人电影在线观看| 亚洲成人手机在线| 91看片就是不一样| 国产精品蜜月aⅴ在线| 欧美性受xxxx黑人xyx性爽| 亚洲最大综合网| 日韩一区二区三免费高清在线观看| 欧美色视频一区| 欧美一级小视频| av不卡一区二区| 日韩第一页在线| 中文字幕有码在线播放| 色综合五月天| 久久久久久久国产精品| 黄色在线观看国产| 老司机一区二区| 国产另类自拍| 国产精品久久久久一区二区国产| 国产免费成人在线视频| 超碰97在线看| a欧美人片人妖| 欧美高清视频一二三区 | 日韩视频免费在线观看| 中文字幕一区二区三区人妻不卡| 欧美人妖在线| 欧美精品中文字幕一区| 亚洲第一精品在线观看| 麻豆久久一区二区| 国产欧美在线一区二区| 国产女人在线观看| 一区二区三区中文字幕在线观看| 波多野结衣之无限发射| 精品176极品一区| 亚洲成人精品久久| 欧美一级片在线视频| 9色精品在线| 成人h视频在线观看播放| 亚洲av片一区二区三区| 中文字幕一区二区三区不卡| www.99热这里只有精品| 欧美aaa级| 日韩精品久久久久久福利| 久久爱一区二区| 久久精品主播| 国产美女在线精品免费观看| 91这里只有精品| 天天综合色天天综合| 中文字幕12页| 欧美一区二区麻豆红桃视频| 另类视频在线观看+1080p| 日韩福利二区| www.欧美日本韩国| 一本到一区二区三区| 男人午夜视频在线观看| 亚洲精品进入| 欧美成人在线免费| 丰满人妻一区二区三区四区| 成人黄色小视频在线观看| 影音先锋欧美资源| 欧美舌奴丨vk视频| 亚洲国产第一页| 欧美精品成人久久| 精品亚洲欧美一区| 欧美精品一区二区三区在线四季| 91亚洲天堂| 欧美日韩激情一区| 韩国三级hd中文字幕| 99日韩精品| 国产伦精品一区二区三区| 91亚洲天堂| 欧美一区二区视频在线观看| 鲁丝一区二区三区| 久久午夜激情| 欧美自拍资源在线| 伊人网在线播放| 亚洲精品久久久久久久久久久久久 | 模特精品在线| 久久精品国产美女| 精精国产xxxx视频在线播放| 日韩欧美国产三级电影视频| 天天做夜夜爱爱爱| 国产真实精品久久二三区| 亚洲一区二区三区精品视频| 成人1区2区| 中文字幕在线亚洲| 一级黄色免费看| 综合久久给合久久狠狠狠97色 | 日韩精品无码一区二区| 成人性视频免费网站| 国产精品69久久久| 久久影院资源站| 欧美伊久线香蕉线新在线| 日本人妖在线| 在线观看日韩国产| 亚洲综合图片一区| 国产毛片一区二区| av 日韩 人妻 黑人 综合 无码| 欧美片网站免费| 久久久久久久一| 午夜福利一区二区三区| 色哦色哦哦色天天综合| 日本一区二区视频在线播放| 老司机一区二区| 成人短视频在线观看免费| 风间由美中文字幕在线看视频国产欧美| 欧美精品18videos性欧| 午夜成人免费影院| 欧美色视频一区| 欧美精品99久久久| 久久亚洲捆绑美女| 手机在线成人免费视频| 国产精品videosex极品| 国产精品亚洲不卡a| 电影网一区二区| www.欧美免费| 人妻一区二区三区四区| 色综合天天综合网天天狠天天| 国产精品久久久久久久av| 国产精品亚洲一区二区三区在线| 亚洲精品久久久久久久蜜桃臀| 日韩最新在线| 91在线高清视频| 亚洲妇女成熟| 久久综合免费视频| 亚洲 美腿 欧美 偷拍| 欧美性受xxxx黑人xyx| 欧美黑人精品一区二区不卡| 91网站最新网址| av在线网址导航| 亚洲一区欧美二区| 中文字幕中文字幕在线中心一区| 超碰成人福利| 国产日韩欧美在线播放| 超黄网站在线观看| 日韩中文字幕视频在线观看| 韩国av免费在线| 欧美三级日韩三级| 日韩欧美a级片| 亚洲欧美中日韩| 在线免费观看麻豆| 国产高清视频一区| 毛葺葺老太做受视频| 欧美激情91| 亚洲欧美日韩不卡一区二区三区| 风间由美一区二区av101| 91精品久久久久久久久久入口| 美女高潮视频在线看| 久久久精品国产一区二区| 欧美日韩国产综合视频| 日韩欧美国产一区二区三区| 黄色av网站免费| 婷婷开心激情综合| 欧美高清视频一区二区三区| 欧美激情一区二区三区在线| 国产亚洲色婷婷久久99精品91| 久久99九九99精品| 国产成人手机视频| 国产精品一区毛片| www.99热这里只有精品| 精品1区2区3区4区| 高清无码视频直接看| 国产精品国产一区| 亚洲欧美丝袜| 日韩精品91| 日本在线观看不卡| 国产videos久久| 久久人人爽爽人人爽人人片av| a看欧美黄色女同性恋| 91热精品视频| 高清久久一区| 亚洲japanese制服美女| 粉嫩av国产一区二区三区| 国产免费亚洲高清| 国产精品xxx| 国产精品视频色| 日韩精品一页| 成人欧美一区二区三区在线湿哒哒| 成人av集中营| 成人精品aaaa网站| 日本免费一区二区视频| 99久久久精品免费观看国产| 日韩三级网址| 国产区二精品视| 澳门精品久久国产| 国产精品日韩一区二区免费视频| h视频久久久| 国外成人在线视频网站| 国产一区在线电影| 久久精精品视频| 国产精品三级| 亚洲一区二区三区色| 91精品综合久久久久久久久久久 | 成年人在线观看网站| 亚洲最新av在线网站| av免费在线一区二区三区| 色综合影院在线| av观看在线| 97涩涩爰在线观看亚洲| 性高爱久久久久久久久| 国产精品久久久久久久久久99| 超碰这里只有精品| 91精品久久久久久久久青青| 亚洲啊v在线免费视频| 国产精品一区二区你懂得| 看全色黄大色大片免费久久久| 久久天天狠狠| 欧美hd在线| 男人添女人下部视频免费| 亚洲综合日韩| 中文字幕 91| 国产成人啪午夜精品网站男同| 亚洲男人在线天堂| 中文天堂在线一区| 免费视频一二三区| 欧美丝袜第一区| 一区二区www| 亚洲电影成人av99爱色| yw视频在线观看| 超在线视频97| 亚洲优女在线| 91视频免费在线| 四虎5151久久欧美毛片| 亚洲一区二三| 亚洲免费观看| 亚洲欧美天堂在线| 26uuu色噜噜精品一区二区| 日本不卡一二区| 欧美日韩一二三四五区| 国产偷拍一区二区| 一区二区三区国产视频| 青春草视频在线观看| 国产成人精品一区二区三区| 日韩精品一区二区三区中文| 精品视频一区二区三区四区| 99国产精品一区二区| 看av免费毛片手机播放| 国产精品一区二区在线播放| 中文字幕狠狠干| 亚洲综合色成人| 在线免费看毛片| 亚洲另类图片色| 中文国产字幕在线观看| 国产精品久久久久久av福利软件 | 欧美tickling挠脚心丨vk| 成人亚洲综合天堂| 2019中文字幕免费视频| 午夜视频一区二区在线观看| 日韩电影在线播放| 国产日韩欧美一区在线 | 无码专区aaaaaa免费视频| 国内精品久久久久影院色| 蜜臀久久99精品久久久久久| 亚洲第一福利视频在线| 国产精品无码一区二区桃花视频| 亚洲欧美另类国产| 18aaaa精品欧美大片h| 亚洲最大福利视频| 婷婷综合久久| 色婷婷综合网站| 国产情人综合久久777777| 可以免费看的av毛片| 欧美mv日韩mv国产网站app| 日本电影全部在线观看网站视频| 日韩免费观看网站| 亚洲瘦老头同性70tv| 色综合久久久久无码专区| 丁香婷婷综合五月| 久久网一区二区| 欧美大片免费久久精品三p| 国产在线1区| 91久久久久久久| 亚洲一区色图| 色男人天堂av| 亚洲美女在线一区| 亚洲精品第五页| 欧美高清视频在线| 成人免费在线电影网| 福利在线一区二区| 成人在线综合网| 日韩精品手机在线| 日韩成人在线播放| 精品国产免费人成网站| 日本不卡一区二区三区在线观看 | 婷婷中文字幕在线观看| 日韩毛片一二三区| 国产同性人妖ts口直男| 色综合久久精品亚洲国产| 日韩高清在线观看一区二区| 大桥未久一区二区三区| 国产一区二区视频在线播放| 91高清免费看| 精品播放一区二区| 黄色漫画在线免费看| 农村寡妇一区二区三区| 视频一区在线播放| 91狠狠综合久久久久久| 欧美美女直播网站| 欧美人与禽性xxxxx杂性| 国产精品日韩一区二区免费视频| 在线亚洲激情| 免费黄色片网站| 这里是久久伊人| 国产后进白嫩翘臀在线观看视频 | 天堂av2020| 一区二区三区欧美在线观看| 日本美女一级片| 国产成人精品av| 99成人在线视频| 久久精品女同亚洲女同13| 色天天综合久久久久综合片| 最新av网站在线观看| 成人情视频高清免费观看电影| 亚洲美女黄网| 欧美一区二区三区粗大| 日韩一区二区免费视频| 国产v日韩v欧美v| 日韩精品成人一区二区在线观看| 免费不卡在线视频| 久久网一区二区| 中文字幕久精品免费视频| 一区二区三区四区高清视频| 亚欧无线一线二线三线区别| 国产精品九色蝌蚪自拍| 亚洲精品一区二区三区蜜桃| 青草青草久热精品视频在线网站| 五月综合激情| 欧美深性狂猛ⅹxxx深喉| 欧美剧情片在线观看| 日韩精品极品| 免费日韩在线观看| 欧美国产丝袜视频| 人妻偷人精品一区二区三区| 国产精品男女猛烈高潮激情|