精品欧美一区二区三区在线观看 _久久久久国色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)

阿v天堂2014| 欧美日韩二三区| 成人av手机在线| 亚洲激情国产| 中文欧美日本在线资源| 国产三级精品三级在线| h片在线观看| 欧美激情综合在线| 国产精品国产三级欧美二区| 亚洲精品成人在线视频| 中文字幕一区二区精品区| 日韩精品亚洲元码| 久久综合桃花网| 成人视屏在线观看| 亚洲国产精品天堂| 一区二区三区四区五区视频| 日本xxxxxwwwww| 精品一区二区三区免费视频| 秋霞av国产精品一区| 欧美视频www| 日韩国产欧美| 国产丝袜高跟一区| 亚洲精品乱码久久久久久蜜桃欧美| 亚洲优女在线| 亚洲国产视频在线| 欧美与动交zoz0z| 国产小视频在线| 成人妖精视频yjsp地址| 成人国产精品一区| 亚洲免费视频二区| 麻豆久久婷婷| 91国产美女视频| 亚洲 日韩 国产第一| 男人日女人下面视频| 日韩理伦片在线| 久久久久国产精品免费免费搜索| 97夜夜澡人人双人人人喊| 91午夜交换视频| 蜜桃久久精品一区二区| 国产999视频| 亚洲日韩中文字幕| 自拍视频国产精品| caopor在线| 久久国产精品美女| 91精品在线麻豆| 日本黄色福利视频| 999国产精品亚洲77777| 色综合久久88色综合天天6| 国产美女在线一区| 好久没做在线观看| 亚洲一区二区三区不卡国产欧美| 狠狠干视频网站| 欧美家庭影院| 亚洲成a人v欧美综合天堂| 日韩激情视频一区二区| 日韩三级免费| 亚洲成人av一区二区| 久久久国内精品| a'aaa级片在线观看| 亚洲国产欧美在线| 国产网站免费在线观看| 中文字幕人成乱码在线观看| 黑人精品xxx一区| 国产黄色特级片| 日本一区二区三区视频在线| 在线区一区二视频| 日韩一级免费片| 国产一精品一av一免费爽爽| 日韩三级高清在线| 艳妇乳肉豪妇荡乳xxx| 色综合www| 亚洲欧美在线看| 林心如三级全黄裸体| 色大18成网站www在线观看| 伦理一区二区| 亚洲欧美中文日韩在线v日本| 青青草福利视频| blacked蜜桃精品一区| www.xxxx精品| 国产亚洲欧美精品久久久久久| 亚洲国产黄色| 国产成人+综合亚洲+天堂| 中文字幕在线观看你懂的| 国产在线精品免费av| 国产精品永久入口久久久| 日本高清中文字幕二区在线| 国产精品久久久久影院色老大| 法国空姐在线观看免费| 九色porny自拍视频在线观看 | 韩国成人二区| 色婷婷精品久久二区二区蜜臀av| jizz欧美性11| 第四色在线一区二区| 夜夜嗨av色一区二区不卡| 美女福利视频在线观看| 亚洲一区图片| 91久久精品一区二区别| 国产主播福利在线| 亚洲综合精品久久| a在线观看免费视频| 国产精品网在线观看| 一区二区成人精品| 色妞色视频一区二区三区四区| 亚洲自拍第三页| 亚洲婷婷影院| 色综合久久久888| 懂色av蜜臀av粉嫩av喷吹| 国产大片一区二区| 亚洲综合视频一区| 丁香六月综合| 精品国精品国产尤物美女| 国产精品久久久久久成人| 一本久道综合久久精品| 91亚洲午夜在线| 国产大学生校花援交在线播放 | 日本黄网站色大片免费观看| 另类专区亚洲| 亚洲第一精品自拍| 青青草在线观看视频| 久久精品国产亚洲一区二区三区| 久久久久久精| 国产精品论坛| 亚洲成人激情在线| 久久国产精品波多野结衣| 久88久久88久久久| 亚洲欧美日韩精品| 欧美日韩精品免费观看| 超碰最新在线| 欧美精品日韩精品| 中国1级黄色片| 男人的天堂久久精品| 免费看成人午夜电影| 电影k8一区二区三区久久| 91精品国产91热久久久做人人| 国产在线综合视频| 首页综合国产亚洲丝袜| 欧美高清一区二区| 国产免费不卡| 亚洲日韩中文字幕| www.五月婷婷.com| 欧美激情自拍偷拍| 婷婷免费在线观看| 91蜜臀精品国产自偷在线 | 亚洲三级电影| 精品国产一区二区三区在线观看 | 国产树林野战在线播放| 亚洲伦理久久| 久久亚洲一区二区三区四区五区高| 中文字幕在线观看你懂的| 国产视频911| 最近中文字幕一区二区| 欧美日韩久久精品| 在线播放91灌醉迷j高跟美女 | 免费看av毛片| 亚洲成av人综合在线观看| 欧美日韩人妻精品一区在线| 在线国产欧美| 久久久福利视频| 欧洲av不卡| 中文字幕日韩在线观看| 91亚洲精品国偷拍自产在线观看| 中文字幕五月欧美| 天堂网成人在线| 亚洲第一网站| 神马影院我不卡午夜| 国产在视频一区二区三区吞精| 日韩中文字幕免费看| 精品人妻午夜一区二区三区四区| 亚洲福利一区二区| 国产精品扒开腿做爽爽| 秋霞成人午夜伦在线观看| 伊人久久青草| aaa国产精品| 国产成人精品视频| 麻豆视频在线| 亚洲精品白浆高清久久久久久| 国产成人在线视频观看| 国产精品美女久久久久久2018| 婷婷激情综合五月天| 尤物精品在线| 先锋在线资源一区二区三区| 日韩中文字幕无砖| 奇米成人av国产一区二区三区 | 久久久久久久久久久网站| 亚洲色图21p| 欧美日韩国产高清一区二区三区| 久久午夜鲁丝片午夜精品| 久久综合一区二区| 国内av一区二区| 午夜一区不卡| 一区二区三区欧美成人| 欧美黄色影院| 91久久国产婷婷一区二区| 理论片午夜视频在线观看| 色综久久综合桃花网| 蜜桃av中文字幕| 欧美色视频一区| 亚洲黄色一区二区| 成人免费小视频| 欧美成人午夜精品免费| 国产一区二区成人久久免费影院| 熟妇人妻va精品中文字幕| 欧美成人69av| 亚洲精品中文综合第一页| 在线视频播放大全| 中文av一区| 欧美日韩国产精品一卡| 免费精品一区二区三区在线观看| 奇米成人av国产一区二区三区| 先锋影音在线资源站91| 中文字幕精品在线| 欧美孕妇孕交xxⅹ孕妇交| 日韩你懂的在线播放| 一区二区三区亚洲视频| 色综合久久久网| 国产一卡二卡在线| 亚洲欧美日韩综合aⅴ视频| 在线观看日本中文字幕| 99v久久综合狠狠综合久久| 97人人模人人爽人人澡| 免费xxxx性欧美18vr| 亚洲欧洲日产国码无码久久99| 午夜久久美女| 波多野结衣三级在线| 第九色区aⅴ天堂久久香| 欧美理论一区二区| 久久悠悠精品综合网| 91香蕉视频在线下载| 99亚洲男女激情在线观看| 国产精品日韩精品| 黄色精品视频| 国产精品视频成人| 成人一区视频| 国产精品久久久久一区二区| 成人自拍av| 国产97在线亚洲| 羞羞影院欧美| 日韩免费av一区二区| 无遮挡爽大片在线观看视频| 午夜精品一区二区三区在线视| 欧美午夜大胆人体| 色综合久久天天综线观看| 亚洲综合影视| 欧美国产日本在线| 成人超碰在线| 91国产精品视频在线| 天堂网在线最新版www中文网| 77777少妇光屁股久久一区| 国产精品论坛| 国产91色在线播放| 精品欧美一区二区三区在线观看| 国产精品成熟老女人| 国产福利亚洲| 91久久久久久久久久| 日韩成人视屏| 精品国产乱码久久久久软件| 欧洲vs亚洲vs国产| 欧美亚州在线观看| 91影院成人| 女人被男人躁得好爽免费视频| 亚洲精华国产欧美| 日韩av一二三四| 韩国av一区二区| 亚洲图片在区色| 日本中文字幕一区二区有码在线| 亚洲欧美变态国产另类| av基地在线| 欧美日韩国产成人高清视频| av中文字幕在线看| 国产91在线播放九色快色| 在线不卡一区| 国产无套精品一区二区| 久久超碰99| 三年中国中文在线观看免费播放| 欧美~级网站不卡| 国产白丝袜美女久久久久| 日韩1区2区3区| 日本女人黄色片| ww亚洲ww在线观看国产| 亚洲AV成人无码网站天堂久久| 亚洲精品欧美综合四区| 性无码专区无码| 欧美日本在线观看| 色wwwwww| 久久精品国产91精品亚洲| 国产白丝在线观看| 国产精品久久久| 动漫av一区| 一区不卡视频| 午夜综合激情| 亚洲精品一区二区18漫画| 久久久久久久久久久久久久久99| 成年人一级黄色片| 91久久精品午夜一区二区| 精品久久久无码中文字幕| 亚洲无限av看| a'aaa级片在线观看| 成人国内精品久久久久一区| 牛牛视频精品一区二区不卡| 亚洲一二三区在线| 一区二区毛片| 日本人dh亚洲人ⅹxx| 中文成人av在线| 毛片毛片女人毛片毛片| 91精品欧美福利在线观看| 久草视频在线看| 韩国福利视频一区| 国语精品视频| 亚洲日本精品| 日韩国产成人精品| 成年人在线观看av| 亚洲午夜精品网| 国产乱码久久久| 中文字幕亚洲图片| 欧美艳星kaydenkross| 国产日韩欧美精品| 欧美精品午夜| www.五月天色| 一区在线观看视频| 中文字幕有码无码人妻av蜜桃| 亚洲免费影视第一页| jizzjizz中国精品麻豆| 懂色中文一区二区三区在线视频| 91日韩在线| 五月天视频在线观看| 中文字幕av在线一区二区三区| 毛片视频网站在线观看| 亚洲国产精品视频在线观看| 久久国产波多野结衣| 日韩精品亚洲一区| 精品人妻一区二区三区香蕉| 亚洲电影第三页| 丰满人妻熟女aⅴ一区| 久久国产色av| 蜜桃精品视频| 2021国产视频| 国产乱子轮精品视频| 成年人一级黄色片| 日韩一区二区三区四区五区六区| 九七久久人人| 91精品视频大全| 欧美在线影院| av免费观看不卡| 疯狂做受xxxx欧美肥白少妇 | 成人午夜av电影| 国产一卡二卡在线播放| 精品国产乱码久久久久久图片 | 亚洲激情不卡| 特大黑人巨人吊xxxx| 欧美日韩一区二区在线| 色猫av在线| 国产精品爱久久久久久久| 日韩精品中文字幕第1页| 九九精品久久久| 亚洲男帅同性gay1069| 精品人妻一区二区三区三区四区 | 国产亚洲制服色| 这里只有精品免费视频| 日韩亚洲国产中文字幕| 视频二区欧美| 3d动漫一区二区三区| 国产午夜精品福利| 在线观看黄色网| 欧美成人激情视频免费观看| 狼人天天伊人久久| 日本一本二本在线观看| 国产精品丝袜一区| aaaa一级片| 欧美一区二区视频97| av在线不卡顿| 妖精视频在线观看| 狠狠久久亚洲欧美专区| 在线观看免费黄色| 波多野结衣成人在线| 久久久久久黄| a级黄色片免费看| 亚洲欧洲日产国码av系列天堂| 热久久久久久| 免费看一级大黄情大片| 国产精品美女一区二区| 国产91免费在线观看| 日本乱人伦a精品| 亚洲欧美在线专区| 魔女鞋交玉足榨精调教| 日韩限制级电影在线观看| 成人性生交大片免费观看网站| 久久99国产精品一区| 99re热这里只有精品免费视频| 一区二区三区免费在线| 91精品国产自产91精品| 国产黄色在线观看| 337p日本欧洲亚洲大胆精品| 色综合桃花网| 乱子伦一区二区| 日本一区二区三级电影在线观看| www.欧美国产| 国产欧美婷婷中文| 午夜在线一区| 免费观看一级视频| 成人97在线观看视频|