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

基于Java的界面布局DSL的設(shè)計與實現(xiàn)

開發(fā) 后端
在本文中,基于Java的界面布局,我們會給出一種更好的解決方案,使用DSL來設(shè)計和實現(xiàn)Java的界面布局。

Java界面設(shè)計應(yīng)該是一項充滿創(chuàng)造性、富有樂趣的工作,但是卻往往被認(rèn)為非常的枯燥和繁瑣。究其原因,是因為界面布局領(lǐng)域所采用的描述概念和具體的實現(xiàn)語言之間存在很大的語義隔閡。而一般的界面開發(fā)工具提供的所見即所得以及界面布局管理器等方案也無法很好地解決這個問題。

在本文中,我們會給出一種更好的解決方案,我們不是去試圖把界面設(shè)計者頭腦中的設(shè)計概念和樣式逐步降級、分解成所使用的實現(xiàn)語言能夠理解的低層概念,也不是提供一些已經(jīng)完成的、確定的但難以擴(kuò)充和更改的布局樣式庫供界面設(shè)計者使用。我們所提供的是一種專門用于描述高層界面設(shè)計樣式的語言。通過這種語言,界面設(shè)計者可以直接、明確地描述出他們頭腦中的布局設(shè)計樣式;通過這種語言,界面設(shè)計者可以自己方便地、靈活地制定自己需要的布局樣式。此外,本文中給出的設(shè)計思想對于其他領(lǐng)域的設(shè)計也有很好的借鑒作用。

創(chuàng)造性,還是乏味

界面設(shè)計是一項非常有創(chuàng)造性,甚至富有藝術(shù)性的工作,一個簡潔、易用、漂亮的界面在帶給使用者方便的同時,也會給界面設(shè)計者帶來極大的成就感。但是,在現(xiàn)實中,情況似乎并非如此,很多人都認(rèn)為做界面是一項非常繁瑣、機(jī)械、乏味的工作,并千方百計地去逃避界面相關(guān)的工作。這是為什么呢?

原因很簡單,因為做界面其實涉及兩項工作,一項是界面的一些設(shè)計創(chuàng)意,包括界面的布局樣式以及和使用者的交互方式,這項工作充滿挑戰(zhàn)和樂趣。但是,這些設(shè)計創(chuàng)意最終是要落實到實現(xiàn)上的,這就是第二項工作。此時,你頭腦中那些清晰、完整的設(shè)計概念開始變得瑣碎,你不得不和那些低層次的坐標(biāo)位置打交道。更糟糕的是,當(dāng)你好不容易做好了一個界面,但是發(fā)現(xiàn)其中某些元素的布局需要一些調(diào)整時,這個你本應(yīng)認(rèn)為是一個很簡單的改變卻造成大量重復(fù)的低層次坐標(biāo)位置更改時,你肯定會認(rèn)為做界面是多么的機(jī)械和乏味呀!

其實,造成這種認(rèn)識的根源在于界面設(shè)計創(chuàng)意和實現(xiàn)這些創(chuàng)意概念的語言之間存在很大的斷層。這樣,在具體實現(xiàn)時,你就必須得把這些清晰、完整的布局樣式降級成一些瑣碎、沒有什么意義的低層次的坐標(biāo)值,使得實現(xiàn)語言能夠理解。這項工作不僅乏味,而且最終的實現(xiàn)也非常的脆弱 —— 一個在布局樣式層面非常簡單的更改,就會造成實現(xiàn)層面的巨大變動。比如:我們可以說把一組元素同時按比例縮小 10%,做過界面的朋友肯定知道這個更改意味著什么。

為了應(yīng)對這個斷層的問題,目前幾乎所有的涉及界面制作的開發(fā)工具都提供了相同的解決方法:可視化的界面設(shè)計工具以及布局管理器。但是這兩種方法都沒有從根本上解決這個問題。

可視化界面設(shè)計工具確實避免了不少繁瑣的界面元素擺放工作,但是對于專業(yè)的界面設(shè)計來說,通過拖放設(shè)計出來的界面在準(zhǔn)確度和規(guī)范性上都有待提高,此外還有更為重要的一點,那就是存在于設(shè)計者頭腦中的布局樣式仍然沒有被明確地描述出來,而是被降級成一個個擺放在一起的零散的組件,雖然這些組件本身是可視的。這個語義斷層的存在同樣會使得通過可視化界面設(shè)計工具設(shè)計出來的界面非常脆弱。

布局管理器試圖通過提供一些常用的布局樣式來解決這個問題。但是,這種做法非常僵化,也就是說你只能使用現(xiàn)有的布局管理器,如果它們無法滿足你的要求,你也無法自己定制。此外,這些布局管理器僅僅適合于一些簡單的情況。對于一些復(fù)雜的布局樣式來說,它們的描述能力就顯得非常的不足。那些曾經(jīng)和 GridBagLayOut 斗爭過的朋友對此肯定深有體會。

在本文中,我們會給出一種更好的解決方案,我們不是去試圖把界面設(shè)計者頭腦中的設(shè)計概念和樣式逐步降級、分解成所使用的實現(xiàn)語言能夠理解的低層概念,也不是提供一些已經(jīng)完成的、確定的但難以擴(kuò)充和更改的布局樣式庫供界面設(shè)計者使用。我們所提供的是一種專門用于描述高層界面設(shè)計樣式的語言。通過這種語言,界面設(shè)計者可以直接、明確地描述出他們頭腦中的布局設(shè)計樣式,通過這種語言,界面設(shè)計者可以自己方便地、靈活地制定自己需要的布局樣式。也就是說,本來僅存在于界面設(shè)計者頭腦中的抽象布局樣式,現(xiàn)在也變得可描述,可編程了。

界面布局語言介紹

在學(xué)習(xí)界面布局語言的設(shè)計之前,先來了解一下該語言的使用是非常有幫助的。我們的界面布局語言非常簡單,簡單到只有一種原子:Component。Component 是一種基本的布局元素,可以對 Component 進(jìn)行平移和伸縮,使其和給定的一個布局空間 Rectangle 匹配。比如對于 Button 這個 Component 來講,它具有傳統(tǒng)按鈕的外觀,但是它在布局上所占的實際空間則是由為其指定的 Rectangle 決定的。此外,Component 要最終在界面上顯示出來,就必須有一個物理上的 Container。也就是說,界面設(shè)計應(yīng)該是一項充滿創(chuàng)造性、富有樂趣的工作,但是卻往往被認(rèn)為非常的枯燥和繁瑣。究其原因,是因為界面布局領(lǐng)域所采用的描述概念和具體的實現(xiàn)語言之間存在很大的語義隔閡。而一般的界面開發(fā)工具提供的所見即所得以及界面布局管理器等方案也無法很好地解決這個問題。

在本文中,我們會給出一種更好的解決方案,我們不是去試圖把界面設(shè)計者頭腦中的設(shè)計概念和樣式逐步降級、分解成所使用的實現(xiàn)語言能夠理解的低層概念,也不是提供一些已經(jīng)完成的、確定的但難以擴(kuò)充和更改的布局樣式庫供界面設(shè)計者使用。我們所提供的是一種專門用于描述高層界面設(shè)計樣式的語言。通過這種語言,界面設(shè)計者可以直接、明確地描述出他們頭腦中的布局設(shè)計樣式;通過這種語言,界面設(shè)計者可以自己方便地、靈活地制定自己需要的布局樣式。此外,本文中給出的設(shè)計思想對于其他領(lǐng)域的設(shè)計也有很好的借鑒作用。

創(chuàng)造性,還是乏味?

界面設(shè)計是一項非常有創(chuàng)造性,甚至富有藝術(shù)性的工作,一個簡潔、易用、漂亮的界面在帶給使用者方便的同時,也會給界面設(shè)計者帶來極大的成就感。但是,在現(xiàn)實中,情況似乎并非如此,很多人都認(rèn)為做界面是一項非常繁瑣、機(jī)械、乏味的工作,并千方百計地去逃避界面相關(guān)的工作。這是為什么呢?

原因很簡單,因為做界面其實涉及兩項工作,一項是界面的一些設(shè)計創(chuàng)意,包括界面的布局樣式以及和使用者的交互方式,這項工作充滿挑戰(zhàn)和樂趣。但是,這些設(shè)計創(chuàng)意最終是要落實到實現(xiàn)上的,這就是第二項工作。此時,你頭腦中那些清晰、完整的設(shè)計概念開始變得瑣碎,你不得不和那些低層次的坐標(biāo)位置打交道。更糟糕的是,當(dāng)你好不容易做好了一個界面,但是發(fā)現(xiàn)其中某些元素的布局需要一些調(diào)整時,這個你本應(yīng)認(rèn)為是一個很簡單的改變卻造成大量重復(fù)的低層次坐標(biāo)位置更改時,你肯定會認(rèn)為做界面是多么的機(jī)械和乏味呀!

其實,造成這種認(rèn)識的根源在于界面設(shè)計創(chuàng)意和實現(xiàn)這些創(chuàng)意概念的語言之間存在很大的斷層。這樣,在具體實現(xiàn)時,你就必須得把這些清晰、完整的布局樣式降級成一些瑣碎、沒有什么意義的低層次的坐標(biāo)值,使得實現(xiàn)語言能夠理解。這項工作不僅乏味,而且最終的實現(xiàn)也非常的脆弱 —— 一個在布局樣式層面非常簡單的更改,就會造成實現(xiàn)層面的巨大變動。比如:我們可以說把一組元素同時按比例縮小 10%,做過界面的朋友肯定知道這個更改意味著什么。

為了應(yīng)對這個斷層的問題,目前幾乎所有的涉及界面制作的開發(fā)工具都提供了相同的解決方法:可視化的界面設(shè)計工具以及布局管理器。但是這兩種方法都沒有從根本上解決這個問題。

可視化界面設(shè)計工具確實避免了不少繁瑣的界面元素擺放工作,但是對于專業(yè)的界面設(shè)計來說,通過拖放設(shè)計出來的界面在準(zhǔn)確度和規(guī)范性上都有待提高,此外還有更為重要的一點,那就是存在于設(shè)計者頭腦中的布局樣式仍然沒有被明確地描述出來,而是被降級成一個個擺放在一起的零散的組件,雖然這些組件本身是可視的。這個語義斷層的存在同樣會使得通過可視化界面設(shè)計工具設(shè)計出來的界面非常脆弱。

布局管理器試圖通過提供一些常用的布局樣式來解決這個問題。但是,這種做法非常僵化,也就是說你只能使用現(xiàn)有的布局管理器,如果它們無法滿足你的要求,你也無法自己定制。此外,這些布局管理器僅僅適合于一些簡單的情況。對于一些復(fù)雜的布局只要給定了一個 Rectangle 和一個 Container,一個 Component 就可以在界面上指定的布局位置呈現(xiàn)出來。

例如,當(dāng)我們使用布局語言在一個 JFrame 上坐標(biāo)位置為 (0,0) 展示一個 width 為 200,height 為 60 的按鈕時,我們可以這樣來描述(為了簡潔起見,后面的代碼實例中均略去 Layout 名字空間前綴):

Button().title(“button1”).at(0,0,200,60).in(this.getContentPane());

僅僅提供這樣一種原子元素的語言顯然無法滿足我們前面提到的目標(biāo)。在我們的界面布局語言中,還提供了兩種在布局中非常常用的兩種從已有組件構(gòu)造新組件的組合手段:above 和 beside。其中 above 組合子接收 3 個參數(shù):兩個現(xiàn)有 Component 以及一個比例,它會產(chǎn)生出一個新的復(fù)合 Component,其中按照給定的比例把第一個 Component 擺放在第二個 Component 之上。Beside 組合子接收同樣的 3 個參數(shù),并且也產(chǎn)生出一個新的復(fù)合 Component,其中按照給定的比例把第一個 Component 擺放在第二個Component左邊。

例如,如果我們希望在一個給定的 Container C 上的 Rectangle(0,0,300,40) 中,平行擺放一個 TextField 和一個 Button,且希望 TextField 占據(jù) 80% 的比例時,可以這樣來描述:

beside(TextField(), Button().title(“ok”), 0.8).at(0,0,300,40).in(C)

同樣,我們可以使用 above 來進(jìn)行如下描述:

above(TextField(), Button().title(“ok”), 0.5).at(0,0,300,60).in(C)

值得注意的是,在我們的界面布局語言中,Component 在 beside 和 above 操作下是封閉的,也就是說 beside 和 above 操作的結(jié)果同樣也是 Component,并完全可以作為基本的 Component 來再次進(jìn)行 beside 和 above 組合。這樣我們就可以使用這兩個簡單的操作生成更加復(fù)雜的 Component 來,從而完成復(fù)雜的界面布局。比如,我們可以這樣來進(jìn)行描述:

Component L = beside(TextField (), Button().title(“…”), 0.8);
above(L, Button().title(“ok”), 0.5). at(0,0,300,60).in(C)

為了保證界面布局語言的完備性,我們增加了一種特殊的原子元素:Empty。它的作用只是占據(jù)一定的布局空間。比如,如果我們希望在一個布局空間中右半邊放置一個 Button,左半邊空置,就可以這些描述:

beside(Empty(), Button(), 0.5).at(0,0,200,40).in(C)

讀者在后面可以看到,正是這個 Empty 以及 beside 和 above 操作的閉包性質(zhì)為我們描述任意復(fù)雜的布局樣式提供了可能。

在有了這些基礎(chǔ)的Java布局元素和組合手段后,我們就可以通過組合手段來把一些典型的布局樣式抽象出來。在下一小節(jié)中讀者將會看到,布局語言中的 beside 和 above 組合操作其實就是 Java 中的普通方法,因此我們的布局語言中不需要什么特別的抽象手段。也就是說,我們可以直接使用 Java 中已有的抽象手段。

例如,如果我們希望抽象出這樣一種布局樣式,其中給定一個布局空間和一個布局組件,我們期望該組件能夠按照指定的縱、橫留白比例位于該布局空間的中心地帶。我們可以把該布局樣式抽象出來,并命名它為 center。并可以在更復(fù)雜的布局樣式中把 center 當(dāng)作一個基本語素使用。center 的實現(xiàn)如下:

public Component center(Component cp, float hRatio, float vRatio) {
float s1 = (1-2.0* hRatio)/ (1.0 - hRatio);
float s2 = (1-2.0*vRatio)/ (1.0-vRatio);
Component u = above(Empty(), above(cp, Empty(), s2), vRatio);
return beside(Empty(), beside(u,Empty(), s1), hRatio);
}

當(dāng)我們想把一個按鈕放置按照在橫向 0.2,縱向 0.1 的留白比例放在布局空間 (0,0,100,30) 中時,我們可以簡單的進(jìn)行如下描述:

center(Button().title(“I am at center.”), 0.1,0.1).at(0,0,300,60).in(C)

我們還可以構(gòu)建出 h_seq 和 v_seq 這樣的布局樣式,它們分別為把一組給定的布局元素橫向順序排列和縱向順序排列,其實現(xiàn)如下:

public Component h_seq(Component[] cps) {
int len = cps.length;
if(len == 1) return cps[0];
return beside(cps[0], h_seq(slice(cps, 1, len)), 1.0/len);
}

public Component v_seq(Component[] cps) {
int len = cps.length;
if(len == 1) return cps[0];
return above(cps[0], v_seq(slice(cps, 1, len)), 1.0/len);
}

其中 slice 方法有 3 個參數(shù),一個為布局元素數(shù)組,另外兩個為區(qū)間的起止位置,該方法把給定布局元素數(shù)組中指定起止位置的區(qū)間部分作為一個新的布局元素數(shù)組返回。這兩個方法的實現(xiàn)都比較簡單直接。下面是兩個應(yīng)用例子:

Component[] cps = new Component[]
{ Button().title(“1”), Button().title(“2”), Button().title(“3”) };
h_seq(cps).at(0,0,300,60).in(C)
v_seq(cps).at(0,0,150,200).in(C)

在 center、h_seq、v_seq 這些布局樣式的基礎(chǔ)上,我們可以定義出更加高階的樣式來,比如,給定一布局元素序列,我們希望它們在給定的布局空間中按照 N 行、M 列排列。我們稱之為 block,其實現(xiàn)如下:

public Component block (Component[] cps, int N, int M) {
Component[][] fcps = formalize(cps, N, M);
Component[] rows = new Component[fcps.length];
for(int i = 0; i < fcps.length; i++) {
rows[i] = h_seq(fcps[i]);
}
return v_seq(rows);
}

其中 formalize 是一個工具方法,它把一個給定的布局元素數(shù)組規(guī)范化為 N 行 M 列的形式,如果不足則用 Empty 組件補齊。

如果希望在 block 中,每個元素都可以指定一些橫向和縱向的留白,則可以定義一個 block_with_margin 布局樣式,其實現(xiàn)如下:

public Component block_with_margin(Component[] cps, int N, int M,
float hRatio, float vRatio) {
Component[] ncps = new Component[cps.length];
for(int i=0; i<cps.length; i++) {
ncps[i] = center(cps[i], hRatio, vRatio);
}
return block(ncps, N, M);
}

好了,現(xiàn)在我們來看一個稍微復(fù)雜一些的例子,我們將使用前面制作的一些布局樣式構(gòu)建一個迷你計算器的外觀,如下圖所示:

對應(yīng)的描述代碼如下:

Component[] cs = new Component[]{
Button().title("0"),
Button().title("1"),
Button().title("2"),
Button().title("+"),
Button().title("3"),
Button().title("4"),
Button().title("5"),
Button().title("-"),
Button().title("6"),
Button().title("7"),
Button().title("8"),
Button().title("*"),
Button().title("9"),
Button().title("="),
Button().title("%"),
Button().title("/")
};
Component opLayout = block(cs,4,4);
above( above( TextField(),
beside( Button().title("Backspace"), Button().title("C"),0.5), 0.5),
block(cs,4,4), 0.3).at(0,0,300,200).in(C); 

如果我們現(xiàn)在希望將所有數(shù)字以及操作按鈕按照橫向和縱向各 2% 進(jìn)行留白,我們所要做的僅僅是一行的改動,就是把:

Component opLayout = block(cs,4,4); 

更改為:

Component opLayout = block_with_margin(cs, 4, 4, 0.02, 0.02); 

這意味著什么呢?這意味著我們可以直接使用DSL布局語言進(jìn)行界面制作,我們可以直接針對布局進(jìn)行編程,我們所寫出來的界面代碼就是我們的布局規(guī)格說明。

從上面的介紹中,讀者可以看出,我們的界面布局語言可以非常方便地定義出一些常見的布局樣式,還可以把這些樣式組合成更為復(fù)雜的一些高階布局樣式,并且這種組合是沒有任何限制的。此外,這些布局樣式的定義描述方式是和界面設(shè)計者頭腦中所使用的一些布局詞匯和規(guī)則貼近的。通過使用界面布局語言,界面設(shè)計者完全可以擺脫那些呆板、機(jī)械又難以定制和擴(kuò)展的布局管理器,可以輕松地把頭腦中的布局創(chuàng)意直接描述出來,逐步形成自己的布局樣式庫,充分享受這種創(chuàng)造性的工作所帶來的樂趣。

【編輯推薦】

  1. Java線程超時控制的實現(xiàn)
  2. 深入Java事物的原理與應(yīng)用
  3. 一則運算Java運算器相關(guān)代碼

責(zé)任編輯:王觀 來源: 論壇整理
相關(guān)推薦

2010-08-12 15:59:23

Flex應(yīng)用程序

2021-11-24 08:55:38

代理網(wǎng)關(guān)Netty

2017-04-05 10:06:59

工作流界面抽象組件

2009-06-29 10:34:34

VxWorks視頻采集系統(tǒng)

2009-12-31 11:23:23

Silverlight

2024-08-02 19:49:41

2021-06-01 06:59:58

運維Jira設(shè)計

2022-09-13 15:33:48

KubeEdge邊緣計算容器

2013-01-21 10:26:13

2011-04-11 17:07:33

布局基礎(chǔ)用戶界面設(shè)計Android

2011-04-11 17:25:30

線性布局用戶界面設(shè)計Android

2011-04-19 09:19:37

相對布局界面設(shè)計Android

2011-04-22 11:01:36

框架布局界面設(shè)計Android

2015-09-16 09:24:49

2018-04-23 12:41:21

云計算政務(wù)云平臺架構(gòu)

2011-06-01 09:31:46

用戶界面設(shè)計

2023-08-04 13:34:00

人工智能深度學(xué)習(xí)

2019-04-30 09:00:33

SQL數(shù)據(jù)庫Apache Flin

2021-12-14 15:35:33

Flink數(shù)據(jù)分析數(shù)據(jù)集成平臺

2022-09-02 11:59:41

AI算法
點贊
收藏

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

欧美日韩国产一级二级| www日韩大片| 欧美国产激情18| 一级国产黄色片| 精品九九久久| 亚洲第一成人在线| 日日夜夜精品网站| 丰满人妻一区二区三区免费视频| 久久亚洲欧美| 九色成人免费视频| 欧美多人猛交狂配| 波多野结衣欧美| 在线精品国精品国产尤物884a| 日韩视频在线观看视频| 日韩欧美在线观看一区二区| 蜜臀久久99精品久久久画质超高清| 欧美乱妇高清无乱码| 手机免费看av| 国产精品毛片视频| 91精品国产91久久久久久最新毛片| 日本韩国欧美在线观看| 国产黄色在线网站| 国产拍欧美日韩视频二区| 国产欧美一区二区视频| aaa级黄色片| 日韩国产高清影视| 97超碰国产精品女人人人爽| 日本妇女毛茸茸| 日韩aaaa| 亚洲欧美日韩中文视频| 四虎成人免费视频| 国产一区二区高清在线| 欧美日韩免费高清一区色橹橹| 黄色av网址在线播放| 日韩伦理电影网站| 国产精品久久网站| 日本欧美色综合网站免费| 无码精品黑人一区二区三区 | 可以看毛片的网址| 伦xxxx在线| 国产精品天干天干在观线| 蜜桃网站成人| 全色精品综合影院| 91网页版在线| 精品视频高清无人区区二区三区| 亚洲国产精品欧美久久| 久久精品论坛| 国产精品久久久久久久一区二区 | 麻豆精品一区二区av白丝在线| 午夜精品福利视频| 久久综合成人网| 欧美久色视频| 欧美激情乱人伦| 美女视频黄免费| 欧美精品一区二区三区久久久竹菊| 日韩专区在线播放| 黄色香蕉视频在线观看| 国产韩日影视精品| 久久电影一区二区| 麻豆影视在线播放| 亚洲精品影院在线观看| 欧美一区二区视频97| 国产精品777777| 久久资源在线| 国产精选久久久久久| 91国内精品视频| 国产麻豆午夜三级精品| 99久热re在线精品996热视频 | 国产丝袜视频一区| 李宗瑞91在线正在播放| 日韩久久电影| 久久99国产综合精品女同| 国产一级视频在线播放| 日韩午夜一区| 国产精品久久久久久久久久久新郎 | 18video性欧美19sex高清| 亚洲成人在线网站| 777米奇影视第四色| 在线一区视频观看| 欧美一级高清片| 内射中出日韩无国产剧情| 国模精品一区| 九九久久久久久久久激情| 日产电影一区二区三区| 日本中文字幕一区| 91九色蝌蚪国产| 天天干,夜夜爽| 亚洲国产精品传媒在线观看| 国产经典久久久| 亚洲风情在线资源| 69av一区二区三区| 成人手机在线免费视频| 久久国产中文字幕| 国内精品久久久| 中文资源在线播放| 成人午夜又粗又硬又大| 特级西西444www大精品视频| 国产三级三级三级看三级| 亚洲视频在线观看免费视频| 国产1区2区3区精品美女| 日本一区二区三不卡| 在线中文字幕第一页| 欧美性少妇18aaaa视频| 男插女视频网站| 国产精品嫩模av在线| 欧美巨乳美女视频| 国产精品无码粉嫩小泬| 波多野结衣中文一区| 亚洲最大免费| 中文字幕不卡三区视频| 日韩一区二区精品| 蜜桃传媒一区二区亚洲| 精品动漫一区| 成人av电影天堂| 国产视频第一区| 亚洲电影中文字幕在线观看| 亚洲欧美日韩精品一区| 免费看日本一区二区| 欧美精品日韩三级| 中文字幕日韩三级| 91亚洲国产成人精品一区二区三 | 久操av在线| 欧美嫩在线观看| 中文字幕在线1| 亚洲精品1区| 国产九色精品成人porny| 久久91精品国产| 中文字幕一区二区三区人妻四季 | 成人影音在线| 欧美一区二区女人| 亚洲色图27p| 蜜臀va亚洲va欧美va天堂| 久久影院理伦片| 国产h片在线观看| 日韩一级欧美一级| 欧美第一页在线观看| 日韩黄色小视频| 欧洲一区二区日韩在线视频观看免费| 欧美私密网站| 亚洲国产精品久久久久久| www.av视频| 国产高清无密码一区二区三区| 中文精品一区二区三区 | 欧美精品一级二级三级| 在线观看日本黄色| 美女视频免费一区| 亚洲国产一区二区精品视频 | 一道本在线观看| 久久国产日韩| 蜜桃狠狠色伊人亚洲综合网站| 成av人片在线观看www| 欧美精品一区二区三区很污很色的 | 亚洲8888| 欧美重口另类videos人妖| 香港三日本三级少妇66| 欧美日韩国产麻豆| 受虐m奴xxx在线观看| 狂野欧美一区| 午夜久久资源| 国产视频网站一区二区三区| 不卡av在线网站| 亚洲第一视频在线| 无码av免费一区二区三区试看 | zjzjzjzjzj亚洲女人| 精品福利电影| 欧美日韩精品一区| 黄色成人小视频| 不卡毛片在线看| 日本免费网站在线观看| 欧美日韩亚洲一区二区三区| 玖玖爱在线观看| 久久精品99国产精品日本| 黄色a级在线观看| jizz18欧美18| 日韩美女在线观看| 嫩草在线视频| 精品sm捆绑视频| 91蝌蚪视频在线| 国产肥老妇视频| 国产精品乱码人人做人人爱 | 日韩中文字幕国产精品| 国产免费福利视频| 五月婷婷欧美视频| gv天堂gv无码男同在线观看| 国产一区999| 成人中文字幕在线播放| 久久免费精品视频在这里| 成人在线观看网址| 亚洲承认视频| 久久99久久久久久久噜噜| 外国精品视频在线观看| 欧美日韩一本到| 午夜偷拍福利视频| 中文字幕免费一区| 国产精品嫩草69影院| 美女国产精品| 国产肉体ⅹxxx137大胆| 国内黄色精品| 99在线影院| 精品无人乱码一区二区三区 | 久久99久久98精品免观看软件 | 国产无码精品视频| 国产精品久久久久三级| yy6080午夜| 国内精品第一页| 一级特黄性色生活片| 韩日视频一区| 正在播放国产精品| 国产日产精品一区二区三区四区的观看方式 | 99在线小视频| 欧美日韩综合不卡| 国产区在线观看视频| 亚洲麻豆国产自偷在线| 少妇一级黄色片| 久久免费看少妇高潮| 亚洲无人区码一码二码三码| 精品中文字幕一区二区| 青青在线视频免费| 国产日韩亚洲| 中文字幕成人一区| 日产精品一区二区| 欧美精品一区二区视频| 白嫩白嫩国产精品| 3d动漫精品啪啪一区二区三区免费 | 91精品国产综合久久久久久蜜臀 | 亚洲国产专区校园欧美| 免费观看中文字幕| 日韩影院二区| 亚洲 国产 欧美一区| 国产在视频线精品视频www666| 国模精品一区二区三区| 91成人午夜| 91久久伊人青青碰碰婷婷| 亚洲一区av| 91精品免费看| 国内精品视频| 成人午夜在线视频一区| **国产精品| 成人免费自拍视频| 亚洲图片小说区| 亚洲精品免费在线视频| 玖玖玖电影综合影院| 亚洲a在线观看| 精品视频在线观看网站| 99久久久精品免费观看国产| 亚洲精品a区| 国产精品免费在线播放| 999久久精品| 精品视频高清无人区区二区三区| 久9re热视频这里只有精品| 精品免费视频123区| 日韩欧美在线精品| 欧美精品亚洲| 久久国产电影| av久久久久久| 99av国产精品欲麻豆| 91九色在线观看视频| 久久国产直播| 色婷婷.com| 国产毛片精品一区| 日本黄色录像片| 久久精品男人天堂av| 精品一区二区三孕妇视频| 国产精品久久久久影视| 日韩影院一区二区| 午夜电影久久久| 人妻中文字幕一区二区三区| 欧美日韩视频在线观看一区二区三区| 国产精品国产一区二区三区四区| 91麻豆精品国产91久久久更新时间| 国产三级三级在线观看| 精品国产一区二区国模嫣然| 天天操天天射天天舔| 在线日韩欧美视频| 黄色在线观看网站| 国产+人+亚洲| 外国电影一区二区| 7777精品伊久久久大香线蕉语言| 欧美三级午夜理伦三级在线观看| 日本电影一区二区三区| 女生裸体视频一区二区三区| 极品美女扒开粉嫩小泬| 免费观看一级特黄欧美大片| 亚洲综合伊人久久| 久久伊人中文字幕| 欧美爱爱免费视频| 欧美性xxxx极品高清hd直播| 91影院在线播放| 日韩精品极品视频| 麻豆传媒在线完整视频| 2019亚洲日韩新视频| 电影91久久久| 欧美精品成人一区二区在线观看 | 啪啪国产精品| 中文字幕欧美日韩一区二区三区| 亚洲日本免费| 超碰在线免费av| 久久久久青草大香线综合精品| 视频这里只有精品| 欧美综合天天夜夜久久| 亚洲国产精品一| 色琪琪综合男人的天堂aⅴ视频| hd国产人妖ts另类视频| 成人福利在线观看| 国产日产一区| 国产婷婷一区二区三区| 国产专区综合网| 久久丫精品忘忧草西安产品| 亚洲影院在线观看| 亚洲自拍偷拍另类| 亚洲人成伊人成综合网久久久| 免费网站在线观看人| 国产精品永久免费| 亚洲亚洲免费| 妞干网在线观看视频| 国产伦精品一区二区三区免费 | 粉嫩av蜜桃av蜜臀av| 亚洲自拍偷拍九九九| 国产精品视频第一页| 亚洲图片欧美日产| a级黄色一级片| 国产精品久久国产愉拍| 一二三区视频在线观看| 亚洲三级在线观看| 亚洲一区二区三区高清视频| 国产亚洲精品美女| 美女搞黄视频在线观看| 俄罗斯精品一区二区| 亚洲精品成人| 欧美视频国产视频| 国产精品午夜在线| 无码视频在线观看| 亚洲精品永久免费精品| 蜜桃视频在线观看播放| 国产伦一区二区三区色一情| 牛牛国产精品| 极品白嫩少妇无套内谢| 亚洲在线视频免费观看| 精品久久人妻av中文字幕| 欧美成人精品在线视频| 精品一区二区三区免费看| 法国空姐在线观看免费| 韩日精品视频一区| 久久中文免费视频| 日韩区在线观看| 日韩少妇视频| 国产日韩精品推荐| 一本色道久久综合| 日本少妇高潮喷水xxxxxxx| 欧美性xxxx极品hd欧美风情| 蜜桃视频在线入口www| 国产福利视频一区二区| 最近高清中文在线字幕在线观看| 亚洲妇女屁股眼交7| 国产理论视频在线观看| 久久夜色精品亚洲噜噜国产mv| 国产精品欧美一区二区三区不卡| 男插女免费视频| 国产xxx精品视频大全| 国语对白一区二区| 亚洲乱码一区二区| 91天天综合| 少妇高潮大叫好爽喷水| 懂色一区二区三区免费观看| 天堂在线免费观看视频| 中文字幕亚洲一区在线观看 | 欧美喷水一区二区| 超鹏97在线| 国产一区在线免费观看| 久久九九精品| 99热这里只有精品4| 欧美哺乳videos| 国产伦精品一区二区三区视频金莲| 欧洲亚洲一区二区三区四区五区| 久久国产日韩欧美精品| 久久精品www人人爽人人| 日韩精品视频免费在线观看| 国产韩日精品| 国产欧美精品aaaaaa片| 久久久久免费观看| 国产成人麻豆精品午夜在线| 97香蕉久久超级碰碰高清版| 日韩免费视频| 亚洲欧美高清在线| 欧美三级中文字幕在线观看| 尤物yw193can在线观看| 欧美日韩一区二区三| 国产在线视频一区二区三区| 日韩免费在线视频观看| 最近2019年中文视频免费在线观看| 一区二区在线视频观看| 无码少妇一区二区三区芒果| 亚洲日本乱码在线观看| 免费在线黄色影片| 97人人模人人爽人人少妇| 亚洲欧美视频| 久久久久久久久久久久久久免费看 | 日韩欧美国产三级电影视频| 欧美艳星kaydenkross| 黄色网zhan|