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

我們一起聊聊鴻蒙富文本實(shí)踐

系統(tǒng) 其他OS
想要實(shí)現(xiàn)表情圖片自動(dòng)匹配,首先就需要先有表情圖片,要有對(duì)應(yīng)的表情配置表,項(xiàng)目中的表情配置分程序內(nèi)置默認(rèn)配置與線上后臺(tái)下發(fā)配置。

1.鴻蒙中的文本展示-Text組件

Text 組件的普通用法和其他語(yǔ)言一樣,可以直接使用字符串Text('我是一段文本')

通過(guò)點(diǎn)語(yǔ)法設(shè)置文本樣式:

Text('我是超長(zhǎng)文本,超出的部分顯示省略號(hào)。I am an extra long text, with ellipses displayed for any excess。')
  .width(250)
  .textOverflow({ overflow: TextOverflow.Ellipsis })
  .maxLines(1)
  .fontSize(12)
  .border({ width: 1 })
  .padding(10)

也可以將 Text 組件作為容器,添加 Span 、ImageSpan,針對(duì)每段文本設(shè)置不同的樣式并且統(tǒng)一換行,ImageSpan 可以展示本地圖片與網(wǎng)絡(luò)圖片:

Text() {
  Span('我是Span1,').fontSize(16).fontColor(Color.Grey)
    .decoration({ type: TextDecorationType.LineThrough, color: Color.Red })
  Span('我是Span2').fontColor(Color.Blue).fontSize(16)
    .fontStyle(FontStyle.Italic)
    .decoration({ type: TextDecorationType.Underline, color: Color.Black })
  Span(',我是Span3').fontSize(16).fontColor(Color.Grey)
    .decoration({ type: TextDecorationType.Overline, color: Color.Green })
}
.borderWidth(1)
.padding(10)

圖片圖片

// xxx.ets
@Entry
@Component
struct SpanExample {
  build() {
    Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
      Text() {
        Span('This is the Span and ImageSpan component').fontSize(25).textCase(TextCase.Normal)
          .decoration({ type: TextDecorationType.None, color: Color.Pink })
      }.width('100%').textAlign(TextAlign.Center)

      Text() {
        ImageSpan($r('app.media.icon'))
          .width('200px')
          .height('200px')
          .objectFit(ImageFit.Fill)
          .verticalAlign(ImageSpanAlignment.CENTER)
        Span('I am LineThrough-span')
          .decoration({ type: TextDecorationType.LineThrough, color: Color.Red }).fontSize(25)
        ImageSpan($r('app.media.icon'))
          .width('50px')
          .height('50px')
          .verticalAlign(ImageSpanAlignment.TOP)
        Span('I am Underline-span')
          .decoration({ type: TextDecorationType.Underline, color: Color.Red }).fontSize(25)
        ImageSpan($r('app.media.icon'))
          .size({ width: '100px', height: '100px' })
          .verticalAlign(ImageSpanAlignment.BASELINE)
        Span('I am Underline-span')
          .decoration({ type: TextDecorationType.Underline, color: Color.Red }).fontSize(25)
        ImageSpan($r('app.media.icon'))
          .width('70px')
          .height('70px')
          .verticalAlign(ImageSpanAlignment.BOTTOM)
        Span('I am Underline-span')
          .decoration({ type: TextDecorationType.Underline, color: Color.Red }).fontSize(50)
      }
      .width('100%')
      .textIndent(50)
    }.width('100%').height('100%').padding({ left: 0, right: 0, top: 0 })
  }
}

圖片圖片

這樣通過(guò) Span、ImageSpan 混排就實(shí)現(xiàn)了基礎(chǔ)的圖文混排。

2.表情圖片自動(dòng)匹配

對(duì)于實(shí)際中的實(shí)操,往往不是固定寫(xiě)好的混排代碼,而是需要針對(duì)后端下發(fā)的數(shù)據(jù)自動(dòng)進(jìn)行轉(zhuǎn)譯。比如帶表情的文本。

項(xiàng)目中的自定義表情一般會(huì)以配置表的形式進(jìn)行管理:

{"imageName":"icon_emotion_1","description":"[微笑]","id":44},{"imageName":"icon_emotion_2","description":"[嘻嘻]","id":43}

用特殊格式的字符串,如:"[微笑]"、"[嘻嘻]",來(lái)分別對(duì)應(yīng)相應(yīng)的表情圖片。

而后端下發(fā)的數(shù)據(jù)則只是一段包含表情關(guān)鍵字的普通文本,并且沒(méi)有額外下發(fā)表情文本的位置信息,如:"第一次見(jiàn)面她幫他出頭,他被她拽拽的氣質(zhì)吸引,對(duì)她一見(jiàn)鐘情,多年后重逢續(xù)寫(xiě)故事[色]這該死的羈絆~",轉(zhuǎn)換后為:

圖片圖片

這樣就需要將文本切塊,把本文中的表情關(guān)鍵字提取出來(lái)。上面的文本就轉(zhuǎn)換為:"第一次見(jiàn)面她幫他出頭,他被她拽拽的氣質(zhì)吸引,對(duì)她一見(jiàn)鐘情,多年后重逢續(xù)寫(xiě)故事"、"[色]"、"這該死的羈絆~"。切塊的過(guò)程采用正則匹配方式。

首先,需要將表情配置表中的所有關(guān)鍵字整合加工為正則匹配字符串:"[微笑]|[嘻嘻]|[哭笑]...",這樣只要目標(biāo)文本中包含任意一個(gè)關(guān)鍵字,都可以獲得匹配結(jié)果。在加工正則字符串的過(guò)程中,同時(shí)將表情關(guān)鍵字與圖片名組裝為鍵值對(duì)表:["[微笑]":"icon_emotion_1","[嘻嘻]":"icon_emotion_2",...],用以后續(xù)獲取轉(zhuǎn)譯圖片。

鴻蒙中的正則匹配代碼:

let reg = RegExp(EmoticonManager.getInstance().emojiRegExpStr,'g') //正則匹配串
let result: IterableIterator<RegExpMatchArray> = content.matchAll(reg)//可迭代匹配結(jié)果
let next = result.next()//第一個(gè)結(jié)果
while (next.done == false) {
 let matchArr: RegExpMatchArray = next.value
  
  //分割字符串
  
 next = result.next() //下一個(gè)結(jié)果
}

注意項(xiàng):RegExp(xxx,'g') ,'g' 代表貪婪模式,會(huì)返回所有匹配結(jié)果,不然只會(huì)獲取第一個(gè)匹配結(jié)果。

最終將文本 "第一次見(jiàn)面她幫他出頭,他被她拽拽的氣質(zhì)吸引,對(duì)她一見(jiàn)鐘情,多年后重逢續(xù)寫(xiě)故事[色]這該死的羈絆~" 轉(zhuǎn)換為數(shù)據(jù)模型數(shù)組:

[
 [
  content: "第一次見(jiàn)面她幫他出頭,他被她拽拽的氣質(zhì)吸引,對(duì)她一見(jiàn)鐘情,多年后重逢續(xù)寫(xiě)故事",
  type: Text,
  resource: NULL
 ],
 [
  content: "[色]",
  type: Emoji,
  resource: xxxx
 ],
 [
  content: "這該死的羈絆~",
  type: Text,
  resource: NULL
 ]
]

再在 Text 組件中遍歷組裝:

Text(){
 ForEach(this.model.getDecodedContentArr(), (element: CommentTextModel) => {
  if (element.type == CommentTextType.Text) {
      Span(element.content)
        .onClick(() => {
         this.openCommentInput()
       })
    }
    if (element.type == CommentTextType.Emoji && element.resource != null) {
      ImageSpan(element.resource)
        .width(EmoticonManager.emojiSideLengthForFontSize(this.contentFontSize))
        .height(EmoticonManager.emojiSideLengthForFontSize(this.contentFontSize))
        .verticalAlign(ImageSpanAlignment.CENTER)
        .onClick(() => {
         this.openCommentInput()
       })
    }
  })
}

這樣就完成了字符串到帶圖富文本的自動(dòng)轉(zhuǎn)換。

2.1 表情配置管理

想要實(shí)現(xiàn)表情圖片自動(dòng)匹配,首先就需要先有表情圖片,要有對(duì)應(yīng)的表情配置表,項(xiàng)目中的表情配置分程序內(nèi)置默認(rèn)配置與線上后臺(tái)下發(fā)配置。

2.1.1 本地配置

我們采用字符串的形式,將配置表保存到管理類(lèi)的靜態(tài)屬性中:

export class LocalEmoticon {
  static readonly data = '{"emoticons":[{"imageName":"icon_emotion_1","description":"[微笑]","id":44},{"imageName":"icon_emotion_2","description":"[嘻嘻]","id":43},{"imageName":"icon_emotion_3","description":"[笑哭]","id":42}, ... ]}'
}

這樣讀取字符串后直接映射就可以得到序列化好的類(lèi)型數(shù)據(jù):

let jsonString = LocalEmoticon.data
const model = plainToClass(EmoticonConfigModel,JSON.parse(jsonString))

表情圖片文件直接放置在 resources -> base -> media 文件夾中,獲取的時(shí)候直接通過(guò):

let str = 'app.media.' + imageName
let resourceStr = $r(str)

獲取 ResourceStr ,這里選取 media 文件夾是因?yàn)?運(yùn)行中生成的字符串不生效,但是r 可以

圖片圖片

2.1.2 線上配置

線上配置會(huì)下發(fā)配置表數(shù)據(jù)以及對(duì)應(yīng)的圖片壓縮包下載地址,配置表和本地配置一樣讀取并序列化就可以,但是圖片文件需要先下載到沙盒文件夾中再訪問(wèn)。

鴻蒙中下載文件需要使用 request.downloadFile ,下載到指定的文件夾目錄后再使用 zlib.decompressFile 解壓縮到圖片存儲(chǔ)目錄。

讀取的時(shí)候拼接出文件地址,再通過(guò) fileUri 獲取文件 uri 字符串就可以:

let path = EmoticonManager.getInstance().folderPath() + '/' + imageName
return fileUri.getUriFromPath(path)

這樣無(wú)論是本地配置還是線上配置獲取到的圖片資源都統(tǒng)一成了 ResourceStr 類(lèi)型,直接丟給 ImageSpan 就可以加載出對(duì)應(yīng)圖片。

3.富文本輸入框

輸入框選用 RichEditor 組件。RichEditor 通過(guò)綁定 RichEditorController 來(lái)控制布局樣式和插入富文本內(nèi)容。

圖片圖片

圖片圖片

3.1 自定義表情面板

通過(guò) customKeyboard 傳入自定義組件,并在點(diǎn)擊事件中通過(guò) RichEditorController 來(lái)控制輸入框的插入和刪除:

RichEditor({controller:this.editorController})
  .key(this.editorKey)
  .customKeyboard(this.useCustomKeyboard ? this.emojiKeyboard():undefined)

//自定義鍵盤(pán)實(shí)體
@Builder emojiKeyboard() {
  EmojiKeyboard({
    currentWidth:this.currentWidth,
    emojiOnClick: (model) => { this.emojiOnClick(model) },
    deleteOnClick: () => { this.emojiOnDelete() }})
    .backgroundColor('#F2F5F7')
    .width('100%')
    .height(this.emojiKeyboardHeight)
    .onAreaChange((oldValue:Area,newValue:Area) => {
     if (typeof newValue.width === 'number') {
        this.currentWidth = newValue.width as number
      }
  })
}

//插入圖片
emojiOnClick(model: EmoticonModel) {
  this.editorController.addImageSpan(
    EmoticonManager.getInstance().getPixelMap(model.description),
    {imageStyle: {
      size:[EmoticonManager.emojiSideLengthForFontSize(this.fontSize),
            EmoticonManager.emojiSideLengthForFontSize(this.fontSize)],
      verticalAlign:ImageSpanAlignment.CENTER },
     offset: this.editorController.getCaretOffset() })
  }

//刪除按鈕點(diǎn)擊
emojiOnDelete() {
  const currentIndex = this.editorController.getCaretOffset() //獲取光標(biāo)位置
  if (currentIndex > 0) {
    this.editorController.deleteSpans({start:currentIndex-1,end:currentIndex})//從光標(biāo)位置向前刪除
  }
}

圖片圖片

3.2 獲取已輸入內(nèi)容

想要將輸入的富文本作為評(píng)論發(fā)送出去,還需要拿到轉(zhuǎn)譯之前的原始字符串,但是鴻蒙不是像 iOS 一樣給文字掛載樣式掛載圖片。iOS 這種給圖文掛載樣式的實(shí)現(xiàn)原始文字一直都在,直接獲取就可以了。鴻蒙的輸入框中的文字是文字組件,圖片是圖片組件,而且圖片組件里面只有圖片相關(guān)的屬性,沒(méi)有關(guān)聯(lián)文字的地方。只能先獲取所有組件,再反向轉(zhuǎn)譯。獲取全部組件是通過(guò) RichEditorController 的 getSpans API 。

圖片圖片

但是從上面的截圖可以看到 getSpans 所獲取到的數(shù)組,內(nèi)容物是聯(lián)合類(lèi)型,轉(zhuǎn)譯之前就需要先判斷。鴻蒙沒(méi)有像iOS isKindOfClass 一樣的判斷方法,由于 RichEditorImageSpanResult 比 RichEditorTextSpanResult 多了一個(gè) imageStyle 屬性,鴻蒙官方推薦使用判斷該屬性是不是 undefined 的方式來(lái)區(qū)分類(lèi)型:

if (typeof (element as RichEditorImageSpanResult)['imageStyle'] != 'undefined')

區(qū)分出類(lèi)型之后,文字組件 RichEditorTextSpanResult 直接獲取 .value 就可以獲取到文字。圖片組件 RichEditorImageSpanResult 就麻煩一些,首先通過(guò) .valueResourceStr 可以獲取到圖片的資源路徑 resource:///icon_emotion_8.png ,刨除協(xié)議頭 resource:/// 與文件后綴 .png ,就得到了圖片名 icon_emotion_8,通過(guò)配置表可以匹配到對(duì)應(yīng)的表情關(guān)鍵字"[鼓掌]"。這樣按照順序?qū)⑽淖纸M裝起來(lái),就實(shí)現(xiàn)了富文本的反向轉(zhuǎn)譯。

責(zé)任編輯:武曉燕 來(lái)源: 搜狐技術(shù)產(chǎn)品
相關(guān)推薦

2023-04-07 07:14:34

2023-06-30 08:18:51

敏捷開(kāi)發(fā)模式

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-09-10 21:42:31

2024-02-20 21:34:16

循環(huán)GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-11-03 12:54:00

KAFKA探索中間件

2024-07-26 09:47:28

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2022-02-23 08:41:58

NATIPv4IPv6

2022-09-22 08:06:29

計(jì)算機(jī)平板微信

2024-11-28 09:57:50

C#事件發(fā)布器

2021-08-12 07:49:24

mysql

2023-07-24 09:41:08

自動(dòng)駕駛技術(shù)交通

2023-03-26 23:47:32

Go內(nèi)存模型

2023-07-27 07:46:51

SAFe團(tuán)隊(duì)測(cè)試

2022-06-26 09:40:55

Django框架服務(wù)

2023-12-28 09:55:08

隊(duì)列數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)
點(diǎn)贊
收藏

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

欧美丝袜一区二区三区| 久久丁香综合五月国产三级网站| 亚洲成人av在线| 欧美网站免费观看| 五月香视频在线观看| 国产精品一区二区久激情瑜伽| 午夜精品久久久久久久男人的天堂| 法国伦理少妇愉情| 国产麻豆精品| 高跟丝袜一区二区三区| 中文字幕欧美日韩一区二区| 日韩一卡二卡在线| 美美哒免费高清在线观看视频一区二区 | 欧美视频精品全部免费观看| 亚洲成人资源网| 亚洲一区美女| 欧美老女人性开放| 成人做爰69片免费看网站| 国产精品第一视频| 日韩免费黄色片| 91不卡在线观看| 国产亚洲福利一区| 精品国产一区在线| 精品91福利视频| 欧美调教femdomvk| 无码播放一区二区三区| 日本在线观看大片免费视频| 中文欧美字幕免费| 久久综合色一本| 丰满人妻一区二区三区免费视频| 久久电影网电视剧免费观看| 国产成人短视频| 日韩欧美中文字幕一区二区| 午夜性色一区二区三区免费视频| 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | 91超碰caoporn97人人| 综合五月激情网| 久久在线电影| 中文日韩电影网站| 亚洲人成人无码网www国产| 高潮按摩久久久久久av免费| 91精品国产乱| 超碰中文字幕在线观看| 欧美成人高清视频在线观看| 欧美亚洲国产一区二区三区va | 国产精品1区2区| 国产欧美一区二区三区视频| 亚洲第一区av| 日韩av中文字幕一区二区| 538国产精品一区二区在线| 国产精品9191| 亚洲精品色图| 97香蕉久久超级碰碰高清版| 日本学生初尝黑人巨免费视频| 激情欧美日韩| 69久久夜色精品国产69| 国产a∨精品一区二区三区仙踪林| 欧美天堂亚洲电影院在线观看| 欧美精品免费在线| 免费在线观看黄色av| 黄色日韩精品| 88xx成人精品| 欧美a在线视频| 91免费的视频在线播放| 色欲av无码一区二区三区| 另类在线视频| 国产婷婷色综合av蜜臀av| 人妻丰满熟妇aⅴ无码| 精品影片在线观看的网站| 亚洲欧美日韩精品久久亚洲区 | 久久影院一区二区三区| 精品国精品国产尤物美女| 日本人添下边视频免费| 偷窥自拍亚洲色图精选| 国产亚洲精品91在线| 91禁男男在线观看| 亚洲区综合中文字幕日日| 久久久久日韩精品久久久男男| 国产成人免费观看视频 | 樱花草www在线| 91麻豆精品激情在线观看最新| 亚洲国产精品女人久久久| 亚洲激情视频小说| chinese偷拍一区二区三区| 99精品中文字幕| 男人的天堂免费在线视频| 欧美丝袜一区二区| av亚洲天堂网| 国产精品白浆| 国产亚洲精品日韩| 国产97免费视频| 99亚洲一区二区| 国产精品无av码在线观看| 国产a级免费视频| 91毛片在线观看| 99精品视频网站| 亚洲啊v在线| 91麻豆精品国产自产在线| 超碰97在线资源站| 99热国内精品| 欧美亚洲一区在线| 99视频在线观看免费| 99视频在线观看一区三区| 亚洲精品一区二| aa国产成人| 91精品国产欧美一区二区| wwwwxxxx国产| 在线成人www免费观看视频| 国产精品啪视频| 香蕉久久国产av一区二区| 亚洲欧美另类图片小说| 妓院一钑片免看黄大片| 红杏成人性视频免费看| 久久精品国产精品亚洲| 日韩久久中文字幕| 成人手机在线视频| 日本老太婆做爰视频| 成人免费一区| 精品香蕉一区二区三区| 精品无码m3u8在线观看| 久久av中文字幕片| 五月天国产一区| 色在线视频观看| 精品福利一区二区三区| 四虎884aa成人精品| 日韩国产在线观看| 久久综合给合久久狠狠色| 欧洲成人综合网| 717成人午夜免费福利电影| 少妇一级黄色片| 久久精品在线| 免费毛片一区二区三区久久久| 91超碰在线免费| 欧美电影免费提供在线观看| 在线日韩国产网站| 麻豆视频观看网址久久| 日韩理论片在线观看| 中文在线аv在线| 亚洲精品国产精品国自产在线 | 五月开心婷婷久久| 久久久国产精品久久久| 在线观看日韩| 51国偷自产一区二区三区的来源| 黄色网页在线播放| 欧美日韩不卡视频| 国产在线免费看| 国内精品伊人久久久久影院对白| 一区二区三视频| 亚洲香蕉久久| 欧美成人精品激情在线观看| 国产成人麻豆精品午夜在线| 一区二区国产视频| 国产精品一级无码| 亚洲乱码久久| 欧美日韩系列| 九七电影院97理论片久久tvb| 日韩在线视频二区| 国产精品久久免费| 国产精品久久久久久久久动漫 | 在线观看国产精品入口男同| 国产精品免费久久| 国产福利精品一区二区三区| 牛夜精品久久久久久久99黑人| 亚洲最大福利视频| 国产后进白嫩翘臀在线观看视频 | 亚洲av无码国产精品久久| 国产农村妇女精品一区二区| 日本欧美精品久久久| 国产精品第一| 久久91亚洲精品中文字幕| 好吊视频一区二区三区| 福利一区视频在线观看| 欧美色图17p| 围产精品久久久久久久| 亚洲视频大全| 91tv亚洲精品香蕉国产一区7ujn| 国外av在线| 欧美另类z0zxhd电影| 日本精品在线免费观看| 成人中文字幕在线| 97视频在线免费播放| 欧美国产偷国产精品三区| 91福利入口| 伊人久久视频| 久久人体大胆视频| 日本精品久久久久| 欧美日韩三级在线| 久久黄色小视频| 欧美国产一区视频在线观看| 伊人久久久久久久久| 日韩高清不卡一区二区| 国产专区在线视频| 久久最新网址| 成人在线免费观看一区| 777午夜精品电影免费看| 欧美成人中文字幕| 国产专区在线| 精品国产一区二区精华| 中文字幕在线播放av| 亚洲国产婷婷综合在线精品| 在线观看亚洲大片短视频| 成码无人av片在线观看网站| 一本久久青青| 97免费中文视频在线观看| 波多野结衣一区二区| 精品国产制服丝袜高跟| 97人妻精品视频一区| 亚洲观看高清完整版在线观看| 91精品久久久久久久久久久久| 成人国产精品免费网站| 久久久久久久高清| 久久精品导航| 日韩av新片网| 888久久久| 天天爽天天狠久久久| 久久97精品| 亚洲影视中文字幕| 国产极品嫩模在线观看91精品| 91av视频在线免费观看| 新版中文在线官网| 日韩在线视频观看| h视频在线免费| 亚洲精品一区av在线播放| 亚洲毛片在线播放| 日韩午夜精品电影| 亚洲在线免费观看视频| 欧美中文字幕一区| 精品免费囯产一区二区三区 | 中文字幕第28页| 亚洲三级电影全部在线观看高清| 日本黄色小视频在线观看| 91视频.com| 国产白嫩美女无套久久| 99久久精品久久久久久清纯| 国产成人av片| 丁香六月久久综合狠狠色| 中文字幕av一区二区三区人妻少妇| 蜜臀a∨国产成人精品| 日韩免费高清在线| 狂野欧美性猛交xxxx巴西| 成熟了的熟妇毛茸茸| 国产亚洲精品久久久久婷婷瑜伽| 91午夜在线观看| 伊人精品成人久久综合软件| cao在线观看| 国产农村妇女精品一二区| 久久婷婷五月综合色国产香蕉| 亚洲欧美激情诱惑| 韩国日本在线视频| 日韩高清一区二区| 在线观看岛国av| 国产一区二区三区不卡在线观看 | 欧美激情喷水视频| 牛牛精品在线| 国内精品久久影院| 芒果视频成人app| 国产精品入口尤物| 亚洲一区导航| av免费精品一区二区三区| 1204国产成人精品视频| 国产精品一区二区欧美黑人喷潮水| 盗摄牛牛av影视一区二区| 国产欧美综合精品一区二区| 亚洲国产欧美日韩在线观看第一区| 欧美日韩在线高清| 日韩伦理一区| 成人免费a级片| 亚洲高清成人| 亚欧在线免费观看| 精品无人码麻豆乱码1区2区| 伊人影院在线观看视频| 久久色在线视频| 国产又粗又猛又爽又黄的视频小说| 亚洲色图欧美激情| 日韩av无码中文字幕| 91国内精品野花午夜精品| 一二三区中文字幕| 精品不卡在线视频| 成人免费在线视频网| 久久天堂av综合合色| 国产三线在线| 国产精品白嫩初高中害羞小美女| 国产精品一区二区三区www| 精品高清视频| 色狮一区二区三区四区视频| 免费在线看黄色片| 丝袜国产日韩另类美女| 四虎国产精品永久免费观看视频| 91美女在线视频| 免费在线观看一级片| 一道本成人在线| 国内老熟妇对白xxxxhd| 亚洲男人7777| 亚洲91av| 国产精品入口日韩视频大尺度 | 亚洲欧美国产日韩中文字幕| 黄视频网站在线看| 97在线免费视频| 高清久久一区| 奇米精品在线| 亚洲国产专区校园欧美| 色噜噜狠狠一区二区| 93久久精品日日躁夜夜躁欧美| 欧美一级特黄高清视频| 日韩欧美有码在线| 黄色av网址在线| 日韩一区av在线| 狠狠操一区二区三区| 国产精品自产拍在线观看中文| 伦理一区二区三区| www成人免费| 精品一二三四区| 亚洲精品视频网址| 欧美日韩激情视频| 性色av蜜臀av| 久久精品国产亚洲精品2020| 日本.亚洲电影| 欧美日韩国产综合在线| 亚洲国产激情| 中文字幕第3页| 亚洲精品国产视频| 国产精品一二三四五区| 伊人伊人伊人久久| 神马久久资源| 蜜桃精品久久久久久久免费影院 | 丰满少妇被猛烈进入| 久久韩国免费视频| 欧美高清免费| 亚洲精品一区二区三区四区五区| 久久电影一区| 欧美熟妇一区二区| 狠狠久久亚洲欧美专区| 深爱激情五月婷婷| 国内精品一区二区三区| 大奶在线精品| 老司机激情视频| 成人午夜又粗又硬又大| 欧美三级小视频| 日韩视频不卡中文| 污影院在线观看| av成人在线电影| 激情综合中文娱乐网| 99免费观看视频| 午夜亚洲福利老司机| 污视频网站免费观看| 97热精品视频官网| 欧美变态网站| 欧美aⅴ在线观看| 久久综合五月天婷婷伊人| 无码人妻av一区二区三区波多野 | 国产在线精品日韩| 99av国产精品欲麻豆| 日本aaa视频| 欧美在线观看一区| 99se视频在线观看| 91天堂在线视频| 欧美日韩一区自拍| 亚洲欧美在线不卡| 一本久久精品一区二区| 99reav在线| 91免费视频网站| 在线不卡亚洲| jizz中文字幕| 欧美精品日韩精品| 色yeye免费人成网站在线观看| 国产精品美女久久久久av福利| 国产精品毛片在线| 国产精品情侣呻吟对白视频| 欧美一区二区三区视频在线观看 | 性久久久久久久| 欧美日韩在线中文字幕| 国产精品免费视频xxxx| 欧美一区二区三区另类| 色噜噜在线观看| 欧美日韩视频专区在线播放| 欧美黄色视屏| 欧美日韩亚洲综合一区二区三区激情在线 | 鲁一鲁一鲁一鲁一av| 亚洲精品成人在线| 色久视频在线播放| 成人看片人aa| 国产农村妇女精品一二区 | 亚洲va欧美va人人爽午夜| 激情小视频在线| 亚洲一区二区三区四区视频| 亚洲美女啪啪| 亚洲欧美综合7777色婷婷| 欧美精品一区二区三区在线播放 | 在线观看免费亚洲| 国产调教视频在线观看| 裸模一区二区三区免费| 精品一区二区久久久| 日本va欧美va国产激情| 色噜噜狠狠狠综合曰曰曰| 美女扒开腿让男人桶爽久久动漫| 三上悠亚av一区二区三区| 精品毛片网大全| 成人影院在线观看| 日韩欧美99| 99国产精品久久久|