日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

前端悬浮窗效果_Flutter自绘组件:微信悬浮窗(一)

發(fā)布時(shí)間:2024/7/23 HTML 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 前端悬浮窗效果_Flutter自绘组件:微信悬浮窗(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 看微信公眾號的時(shí)候時(shí)常會想退出去回復(fù)消息,但又不想放棄已經(jīng)閱讀一半的文章,因?yàn)榛貜?fù)信息后再從公眾號找到該篇文章之間有不必要的時(shí)間花費(fèi),微信懸浮窗的出現(xiàn)解決了這個煩惱,回復(fù)完消息之后只需要點(diǎn)擊懸浮窗就可以回到之前在閱讀的文章中。在對比多篇公眾號文章的時(shí)候懸浮窗也使得在不同文章之間的切換更方便。懸浮窗的出現(xiàn)主要是為了省去用戶在不同頁面之間頻繁切換時(shí)不必要的時(shí)間和精力的開銷,這個組件小細(xì)節(jié)比較多,完整復(fù)刻估計(jì)需要分成三或四部分來講,這篇文章主要講述的是懸浮窗在點(diǎn)擊前的按鈕形態(tài)的實(shí)現(xiàn),下一篇文章講解按鈕在不同形態(tài)之間切換,動起來。

先上最終效果對比圖:

實(shí)現(xiàn)思路

通過觀察可得,懸浮按鈕處于邊緣的時(shí)候是屬于不規(guī)則形狀。屬于官方的UI庫中是不存在的不規(guī)則圖形,也無法通過組合已有組件實(shí)現(xiàn)。這時(shí)候就需要用到Flutter提供的CustomPaint和CustomPainter來實(shí)現(xiàn)自繪組件,但具體的繪制工作是由Canvas類和Paint類進(jìn)行的。

按鈕圖解

對微信的懸浮按鈕進(jìn)行分析后,發(fā)現(xiàn)微信懸浮按鈕主要有三種形態(tài):左邊緣按鈕形態(tài),中心按鈕形態(tài),和右邊緣按鈕形態(tài),而每一個形態(tài)在按下的時(shí)候會有一個陰影,表示已選中,松開的時(shí)候陰影消失,表示未選中。具體形態(tài)圖解如下(按畫布大小為50x50設(shè)計(jì)):

圖解非一步到位,只是對原組件進(jìn)行分析后大概畫一下,在繪圖的過程中再進(jìn)行一些細(xì)微的調(diào)整達(dá)到較好的視覺效果(并非專業(yè)UI設(shè)計(jì)師,隨便畫畫)。進(jìn)行分析圖解后,便可以著手對每一個形態(tài)進(jìn)行繪制了。

使用到的類

在著手開始繪制前,我們需要了解我們繪制使用到的幾個類:

CustomPaint

構(gòu)造函數(shù)如下:

CustomPaint({
Key key,
this.painter, //背景畫筆
this.foregroundPainter, //前景畫筆
this.size = Size.zero, //畫布即繪制區(qū)域的大小
this.isComplex = false, //是否為復(fù)雜繪制,若是Flutter則會啟用一些緩存策略減少繪制的開銷
this.willChange = false, //和isComplex配合使用,當(dāng)啟用緩存,表示下一幀中繪制是否會改變
Widget child, //子節(jié)點(diǎn),可以為空
})

CustomPainter

CustomPainter中定義的虛函數(shù)paint,主要的繪制工作都是在這個函數(shù)中完成,主要定義如下:

void paint(Canvas canvas, Size size);

size: 表示繪制區(qū)域的大小,傳遞自CustomPaint中的size

canvas: 畫布,其內(nèi)封裝了大量的繪制方法,此處列舉本文中用到方法:?

API名稱功能
drawCircle繪制圓形
drawPath繪制路徑
drawImageRect根據(jù)給出的圖片及原矩形(src)和目標(biāo)矩形(dst)繪制圖片
clipRRect根據(jù)給出的圓角矩形對畫布進(jìn)行剪裁(超出區(qū)域不繪制)
drawShadow繪制陰影
drawColor根據(jù)模式繪制顏色(本文用于繪制圖片背景填充顏色)

Paint

如果說Canvas是畫布,那么Paint就是畫筆。Canvas中封裝的很多繪制方法都需要一個畫筆參數(shù)去進(jìn)行繪制。畫筆Paint中定義了一些畫筆的基本屬性,如畫筆寬度,畫筆顏色,筆觸類型等,例子如下:

Paint _paint = Paint()
..color = Colors.blue //畫筆顏色,此處為藍(lán)色
..strokeCap = StrokeCap.round //畫筆筆觸類型
..isAntiAlias = true //是否啟動抗鋸齒
..blendMode = BlendMode.exclusion //顏色混合模式
..style = PaintingStyle.fill //繪畫風(fēng)格,默認(rèn)為填充
..colorFilter = ColorFilter.mode(Colors.blueAccent,
BlendMode.exclusion) //顏色渲染模式
..maskFilter = MaskFilter.blur(BlurStyle.inner, 3.0) //模糊遮罩效果
..filterQuality = FilterQuality.high //顏色渲染模式的質(zhì)量
..strokeWidth = 15.0; //畫筆的寬度

我們在實(shí)際使用中根據(jù)需要去選擇相應(yīng)的屬性,并不需要全部初始化。

Path

路徑,使用drawPath中繪制不規(guī)則圖形可以通過函數(shù)或者點(diǎn)間連線、曲線等表示。本文用到的方法如下:

API名稱功能
moveTo將路徑起點(diǎn)移動到指定位置
lineTo從當(dāng)前位置連線到指定位置
arcTo曲線

開始繪制

對于工程其他的文件和布局不做討論,主要討論如何實(shí)現(xiàn)繼承CustomPainter實(shí)現(xiàn)paint方法的繪制,對于如何使用這個Painter,可以參考《Flutter實(shí)戰(zhàn)》(https://book.flutterchina.club/chapter10/custom_paint.html)。

邊緣按鈕的繪制

由于左右邊緣按鈕的圖形繪制方法類似,因此我們主要討論 左邊緣按鈕 的實(shí)現(xiàn)。由圖解可知左邊緣按鈕是不規(guī)則的形狀。我們的畫布的尺寸為50x50,我們可以把這個形狀看作一個圓形和一個正方形的重合,這是一種思路。

但我寫的是另一種思路:看作是三條直線和一段圓弧所組成路徑,以邊緣按鈕內(nèi)層的具體代碼實(shí)現(xiàn)為例:

//edgePath: 按鈕外邊緣路徑,黑色線條
var edgePath = new Path() ..moveTo(size.width / 2, size.height); //移動去x軸中點(diǎn)(25,0)
edgePath.lineTo(0.0, size.height); //第一條直線
edgePath.lineTo(0.0, 0.0);//第二條直線
edgePath.lineTo(size.width / 2,0.0);//第三條直線
//圓弧在圓心在(25,25),半徑為25的圓上
Rect rect1 = Rect.fromCircle(center:Offset(size.width / 2,size.height / 2),radius: 25);
edgePath.arcTo(rect1,pi * 1.5,pi,true); //右半圓,從 3/2 Π處起步 經(jīng)過Π 個角度。

var paint = new Paint()
..isAntiAlias = true //畫曲線時(shí)抗鋸齒看起來更圓潤
..strokeWidth = 0.75 //
..strokeCap = StrokeCap.round
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25) //線條模糊
..style = PaintingStyle.stroke //線條,不填充
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);

canvas.drawPath(edgePath, paint);//繪制路徑

效果如下:

同理繪制內(nèi)層陰影部分為:

//繪制按鈕內(nèi)層
var paint = Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);
//..color = Color.fromRGBO(0xDA,0xDA,0xDA,0.9);

//path : 按鈕內(nèi)邊緣路徑
var path = new Path() ..moveTo(size.width / 2 , size.height - 1.5);
path.lineTo(0.0, size.height - 1.5);
path.lineTo(0.0, 1.5);
path.lineTo(size.width / 2 ,1.5);
Rect rect = Rect.fromCircle(center:Offset(size.width / 2,size.height / 2),radius: 23.5);
path.arcTo(rect,pi * 1.5,pi,true);
canvas.drawPath(path, paint);

合起來效果為:

最重點(diǎn)是中間圖標(biāo)logo的繪制。?

此處有踩坑點(diǎn),canvas中繪制圖片的方法

void drawImageRect(Image image, Rect src, Rect dst, Paint paint)?

參數(shù)image的類型Image并不是我們?nèi)粘J褂玫降腎mage類型,而是封裝在ui庫中的一個官方私有類,只能通過監(jiān)聽圖片流返回一個Future,再通過FutureBuilder把image傳遞給CustomPainter的子類。詳情看 ui.Image加載探索(https://cloud.tencent.com/developer/article/1622733)這篇博客。具體內(nèi)容在下一篇文章中再解釋,本文暫時(shí)不涉及,不需要理解。

? 先講繪制。對于中間logo的繪制,我們將原圖片的大小輸出為目標(biāo)區(qū)域的大小。其次,區(qū)域?yàn)榫匦?#xff0c;而我們需要輸出的logo是圓形區(qū)域,因此需要對畫布進(jìn)行剪裁,示意圖如下:

具體實(shí)現(xiàn)代碼如下:

//繪制中間圖標(biāo)
paint = new Paint();
canvas.save(); //剪裁前保存圖層
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 17.5,size.width / 2 - 17.5, 35, 35),Radius.circular(17.5));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);
canvas.restore();//圖片繪制完畢恢復(fù)圖層

完整的左邊緣按鈕繪制代碼:

//繪制左邊界懸浮按鈕
void paintLeftEdgeButton(Canvas canvas,Size size,bool isPress)
{
//繪制按鈕內(nèi)層
var paint = Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);
//..color = Color.fromRGBO(0xDA,0xDA,0xDA,0.9);

//path : 按鈕內(nèi)邊緣路徑
var path = new Path() ..moveTo(size.width / 2 , size.height - 1.5);
path.lineTo(0.0, size.height - 1.5);
path.lineTo(0.0, 1.5);
path.lineTo(size.width / 2 ,1.5);
Rect rect = Rect.fromCircle(center:Offset(size.width / 2,size.height / 2),radius: 23.5);
path.arcTo(rect,pi * 1.5,pi,true);
canvas.drawPath(path, paint);


//edgePath: 按鈕外邊緣路徑,黑色線條
var edgePath = new Path() ..moveTo(size.width / 2, size.height);
edgePath.lineTo(0.0, size.height);
edgePath.lineTo(0.0, 0.0);
edgePath.lineTo(size.width / 2,0.0);
Rect rect1 = Rect.fromCircle(center:Offset(size.width / 2,size.height / 2),radius: 25);
edgePath.arcTo(rect1,pi * 1.5,pi,true);

paint
..isAntiAlias = true
..strokeWidth = 0.75
..strokeCap = StrokeCap.round
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25) //線條模糊
..style = PaintingStyle.stroke
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);
canvas.drawPath(edgePath, paint);

//按下則畫陰影,表示選中
if(isPress) canvas.drawShadow(edgePath, Color.fromRGBO(0xDA, 0xDA, 0xDA, 0.3), 0, false);

//繪制中間圖標(biāo)
paint = new Paint();
canvas.save(); //剪裁前保存圖層
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 17.5,size.width / 2 - 17.5, 35, 35),Radius.circular(17.5));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);
canvas.restore();//圖片繪制完畢恢復(fù)圖層
}

效果圖:

同理,右邊緣按鈕的繪制為:

//繪制右邊界按鈕
void paintRightEdgeButton(Canvas canvas,Size size){

var paint = Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);

var path = Path() ..moveTo(size.width / 2, 1.5);
path.lineTo(size.width,1.5);
path.lineTo(size.width, size.height - 1.5);
path.lineTo(size.width / 2, size.height - 1.5);

Rect rect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 23.5);
path.arcTo(rect, pi * 0.5, pi, true);

canvas.drawPath(path, paint);//繪制


//edgePath: 按鈕外邊緣路徑
var edgePath = Path() ..moveTo(size.width / 2,0.0);
edgePath.lineTo(size.width,0.0);
edgePath.lineTo(size.width, size.height);
edgePath.lineTo(size.width / 2, size.height);
Rect edgeRect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 25);
edgePath.arcTo(edgeRect, pi * 0.5, pi, true);

paint
..isAntiAlias = true
..strokeWidth = 0.75
..strokeCap = StrokeCap.round
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25)
..style = PaintingStyle.stroke
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);
canvas.drawPath(edgePath, paint);

//如果按下則繪制陰影
if(isPress)
canvas.drawShadow(path, Color.fromRGBO(0xDA, 0xDA, 0xDA, 0.3), 0, false);

//繪制中間圖標(biāo)
paint = new Paint();
canvas.save(); //剪裁前保存圖層
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 17.5,size.width / 2 - 17.5, 35, 35),Radius.circular(17.5));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);
canvas.restore();//圖片繪制完畢恢復(fù)圖層

}

中心按鈕的繪制

中心按鈕為規(guī)則的兩個圓型+中間的logo,因此繪制很簡單,具體代碼如下:

//繪制中心按鈕
void paintCenterButton(Canvas canvas,Size size)
{
//繪制按鈕內(nèi)層
var paint = new Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);
canvas.drawCircle(Offset(size.width / 2,size.height / 2), 23.5, paint);

//繪制按鈕外層邊線
paint
..isAntiAlias = true
..style = PaintingStyle.stroke
..strokeWidth = 0.75
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25)
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);
canvas.drawCircle(Offset(size.width / 2,size.height / 2), 25, paint);

//如果按下則繪制陰影
if(isPress){
var circleRect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 25);
var circlePath = new Path() ..moveTo(size.width / 2, size.height / 2);
circlePath.arcTo(circleRect, 0, 2 * 3.14, true);
canvas.drawShadow(circlePath, Color.fromRGBO(0xCF, 0xCF, 0xCF, 0.3), 0.5, false);
}

//繪制中間圖標(biāo)
paint = new Paint();
canvas.save(); //圖片剪裁前保存圖層
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 17.5,size.width / 2 - 17.5, 35, 35),Radius.circular(35));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);
canvas.restore();//恢復(fù)剪裁前的圖層

}

如何選擇繪制

細(xì)心的你可能發(fā)現(xiàn)了一個變量isPress,他代表著什么呢,代表著的是否手指按下懸浮按鈕,若按下則繪制表示選中的陰影部分。當(dāng)你有了邊緣按鈕和中心按鈕,組件的繪制是一幀一幀的畫面,paint(Canvas canvas,Size size)繪制的是一幀的畫面,而如何判斷這一幀時(shí)選擇繪制左邊緣按鈕還是右邊緣按鈕,中心按鈕?因此,在FloatingButtonPainter中還應(yīng)該定義幾個判斷的變量。

FloatingButtonPainter({
Key key,
@required this.isLeft,
@required this.isEdge,
@required this.isPress,
@required this.buttonImage
});

//按鈕是否在屏幕左側(cè),屏幕寬度中線為準(zhǔn)
final bool isLeft;
//按鈕是否在屏幕邊界,左/右邊界
final bool isEdge;
//按鈕是否被按下
final bool isPress;
//內(nèi)按鈕logo ui.image
final ui.Image buttonImage;

在paint方法中進(jìn)行判斷

@overridevoid paint(Canvas canvas, Size size) {// TODO: implement paint //按鈕是否在邊緣 if(isEdge){//按鈕在屏幕左邊或右邊 if(isLeft)
paintLeftEdgeButton(canvas, size);//繪制左邊緣按鈕 else paintRightEdgeButton(canvas, size);//繪制右邊緣按鈕 }else{
paintCenterButton(canvas, size);//繪制中心按鈕 }
}

完整代碼

FloatingButtonPainter完整代碼:

import 'package:flutter/material.dart';
import 'dart:math';
import 'dart:ui' as ui;

class FloatingButtonPainter extends CustomPainter
{
FloatingButtonPainter({
Key key,
@required this.isLeft,
@required this.isEdge,
@required this.isPress,
@required this.buttonImage
});

//按鈕是否在屏幕左側(cè),屏幕寬度 / 2
final bool isLeft;
//按鈕是否在屏幕邊界,左/右邊界
final bool isEdge;
//按鈕是否被按下
final bool isPress;
//內(nèi)按鈕圖片 ui.image
final ui.Image buttonImage;
@override
void paint(Canvas canvas, Size size) {
// TODO: implement paint
if(isEdge){
if(isLeft)
paintLeftEdgeButton(canvas, size);//繪制左邊緣按鈕
else
paintRightEdgeButton(canvas, size);//繪制右邊緣按鈕
}
else{
paintCenterButton(canvas, size); //繪制中心按鈕
}
}

//繪制左邊界懸浮按鈕
void paintLeftEdgeButton(Canvas canvas,Size size)
{
//繪制按鈕內(nèi)層
var paint = Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);
//..color = Color.fromRGBO(0xDA,0xDA,0xDA,0.9);

//path : 按鈕內(nèi)邊緣路徑
var path = new Path() ..moveTo(size.width / 2 , size.height - 1.5);
path.lineTo(0.0, size.height - 1.5);
path.lineTo(0.0, 1.5);
path.lineTo(size.width / 2 ,1.5);
Rect rect = Rect.fromCircle(center:Offset(size.width / 2,size.height / 2),radius: 23.5);
path.arcTo(rect,pi * 1.5,pi,true);
canvas.drawPath(path, paint);


//edgePath: 按鈕外邊緣路徑,黑色線條
var edgePath = new Path() ..moveTo(size.width / 2, size.height);
edgePath.lineTo(0.0, size.height);
edgePath.lineTo(0.0, 0.0);
edgePath.lineTo(size.width / 2,0.0);
Rect rect1 = Rect.fromCircle(center:Offset(size.width / 2,size.height / 2),radius: 25);
edgePath.arcTo(rect1,pi * 1.5,pi,true);

paint
..isAntiAlias = true
..strokeWidth = 0.75
..strokeCap = StrokeCap.round
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25) //線條模糊
..style = PaintingStyle.stroke
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);
canvas.drawPath(edgePath, paint);

//按下則畫陰影,表示選中
if(isPress) canvas.drawShadow(edgePath, Color.fromRGBO(0xDA, 0xDA, 0xDA, 0.3), 0, false);

//繪制中間圖標(biāo)
paint = new Paint();
canvas.save(); //剪裁前保存圖層
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 17.5,size.width / 2 - 17.5, 35, 35),Radius.circular(17.5));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);
canvas.restore();//圖片繪制完畢恢復(fù)圖層
}

//繪制右邊界按鈕
void paintRightEdgeButton(Canvas canvas,Size size){

var paint = Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);

var path = Path() ..moveTo(size.width / 2, 1.5);
path.lineTo(size.width,1.5);
path.lineTo(size.width, size.height - 1.5);
path.lineTo(size.width / 2, size.height - 1.5);

Rect rect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 23.5);
path.arcTo(rect, pi * 0.5, pi, true);

canvas.drawPath(path, paint);//繪制


//edgePath: 按鈕外邊緣路徑
var edgePath = Path() ..moveTo(size.width / 2,0.0);
edgePath.lineTo(size.width,0.0);
edgePath.lineTo(size.width, size.height);
edgePath.lineTo(size.width / 2, size.height);
Rect edgeRect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 25);
edgePath.arcTo(edgeRect, pi * 0.5, pi, true);

paint
..isAntiAlias = true
..strokeWidth = 0.75
..strokeCap = StrokeCap.round
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25)
..style = PaintingStyle.stroke
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);
canvas.drawPath(edgePath, paint);

//如果按下則繪制陰影
if(isPress)
canvas.drawShadow(path, Color.fromRGBO(0xDA, 0xDA, 0xDA, 0.3), 0, false);

//繪制中間圖標(biāo)
paint = new Paint();
canvas.save(); //剪裁前保存圖層
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 17.5,size.width / 2 - 17.5, 35, 35),Radius.circular(17.5));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);
canvas.restore();//圖片繪制完畢恢復(fù)圖層

}

//繪制中心按鈕
void paintCenterButton(Canvas canvas,Size size)
{
//繪制按鈕內(nèi)層
var paint = new Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);
canvas.drawCircle(Offset(size.width / 2,size.height / 2), 23.5, paint);

//繪制按鈕外層邊線
paint
..isAntiAlias = true
..style = PaintingStyle.stroke
..strokeWidth = 0.75
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25)
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);
canvas.drawCircle(Offset(size.width / 2,size.height / 2), 25, paint);

//如果按下則繪制陰影
if(isPress){
var circleRect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 25);
var circlePath = new Path() ..moveTo(size.width / 2, size.height / 2);
circlePath.arcTo(circleRect, 0, 2 * 3.14, true); //使用pi會出錯。
canvas.drawShadow(circlePath, Color.fromRGBO(0xCF, 0xCF, 0xCF, 0.3), 0.5, false);
}

//繪制中間圖標(biāo)
paint = new Paint();
canvas.save(); //圖片剪裁前保存圖層
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 17.5,size.width / 2 - 17.5, 35, 35),Radius.circular(35));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);
canvas.restore();//恢復(fù)剪裁前的圖層

}
//測試?yán)L制
void paintTest(Canvas canvas,Size size){
var paint = Paint()
..isAntiAlias = false
..style = PaintingStyle.fill
..color = Color.fromRGBO(0xF3, 0xF3, 0xF3, 0.9);

var path = Path() ..moveTo(size.width / 2, 1.5);
path.lineTo(size.width,1.5);
path.lineTo(size.width, size.height - 1.5);
path.lineTo(size.width / 2, size.height - 1.5);

Rect rect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 23.5);
path.arcTo(rect, pi * 0.5, pi, true);

canvas.drawPath(path, paint);//繪制


//edgePath: 按鈕外邊緣路徑
var edgePath = Path() ..moveTo(size.width / 2,0.0);
edgePath.lineTo(size.width,0.0);
edgePath.lineTo(size.width, size.height);
edgePath.lineTo(size.width / 2, size.height);
Rect edgeRect = Rect.fromCircle(center: Offset(size.width / 2,size.height / 2),radius: 23.5);
edgePath.arcTo(edgeRect, pi * 0.5, pi, true);

paint
..isAntiAlias = true
..strokeWidth = 0.75
..strokeCap = StrokeCap.round
..maskFilter = MaskFilter.blur(BlurStyle.normal,0.25)
..style = PaintingStyle.stroke
..color = Color.fromRGBO(0xCF, 0xCF, 0xCF, 1);
canvas.drawPath(edgePath, paint);

//繪制中間圖標(biāo)
paint = new Paint();
RRect imageRRect = RRect.fromRectAndRadius(Rect.fromLTWH(size.width / 2 - 20,size.width / 2 - 20, 40, 40),Radius.circular(20));
canvas.clipRRect(imageRRect);//圖片為圓形,圓形剪裁
canvas.drawColor(Colors.white, BlendMode.srcOver); //設(shè)置填充顏色為白色
Rect srcRect = Rect.fromLTWH(0.0, 0.0, buttonImage.width.toDouble(), buttonImage.height.toDouble());
Rect dstRect = Rect.fromLTWH(size.width / 2 - 17.5, size.height / 2 - 17.5, 35, 35);
canvas.drawImageRect(buttonImage, srcRect, dstRect, paint);

//如果按下則繪制陰影
if(isPress)
canvas.drawShadow(path, Color.fromRGBO(0xDA, 0xDA, 0xDA, 0.3), 0, false);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) {
// TODO: implement shouldRepaint
return true;
}
}

總結(jié)

寫這個的篇幅比我料想中需要的篇幅還多,目前只實(shí)現(xiàn)各種形態(tài)繪制,實(shí)現(xiàn)FloatingButtonPainter類。但如何使用這個類,讓它在各個形態(tài)之間切換,讓它動起來,實(shí)現(xiàn)最終效果,在下一篇文章中繼續(xù),有興趣的可以關(guān)注,點(diǎn)贊,點(diǎn)個在看。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的前端悬浮窗效果_Flutter自绘组件:微信悬浮窗(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

天天想夜夜操 | 日日摸日日爽 | 久久人人97超碰精品888 | 最近的中文字幕大全免费版 | 久久久久久久久久久久久国产精品 | 日韩久久久久 | 久久99精品久久久久久三级 | 精品国产三级 | 国产乱码精品一区二区三区介绍 | 激情文学综合丁香 | 中文字幕av免费观看 | 久久久久久久久久久久久久av | 国产91学生| 精品国产亚洲一区二区麻豆 | 九九九热 | 日韩精品欧美一区 | 99精品小视频 | 亚洲有 在线 | 特级黄色一级 | 国产剧在线观看片 | 久草香蕉在线视频 | 99热网站 | 色婷婷 亚洲 | 国产精品系列在线 | 免费成人在线观看 | 91av在线电影 | 欧美日韩高清一区二区 国产亚洲免费看 | 精品美女久久久久久免费 | 一区二区不卡高清 | 四虎成人免费影院 | 正在播放 国产精品 | 五月婷婷在线综合 | 亚洲精品短视频 | 狠狠的日日 | 成人欧美一区二区三区在线观看 | 国产精品一区二区三区99 | 久久1电影院 | 91精彩视频 | 欧美a影视 | 一级a毛片高清视频 | 69性欧美| 天天干天天草天天爽 | 日韩免费在线播放 | 国产九色在线播放九色 | 久久社区视频 | 色爽网站| 日韩在线第一 | 97av超碰| 99久久精品国产亚洲 | 亚洲精品视频在线观看免费视频 | 97人人射 | 开心色婷婷 | 亚洲精品视频在线看 | 久久久久久蜜桃一区二区 | 久久久久国产一区二区三区 | 91成人在线视频 | 9992tv成人免费看片 | 久久草精品 | 亚洲开心激情 | av片在线观看 | 久久久黄色免费网站 | 中文在线 | 韩国av免费观看 | a√天堂中文在线 | 91精品一区二区三区蜜臀 | 中文字幕日韩一区二区三区不卡 | www178ccom视频在线 | 国内久久精品 | 亚洲国产片色 | 国产精品欧美日韩在线观看 | 日韩国产欧美在线视频 | 人人干天天干 | 久久久久美女 | 日韩网站中文字幕 | 激情综合狠狠 | 久久久国产精华液 | 超碰激情在线 | 久久69精品 | 欧美色插 | 国产日产在线观看 | 欧美成人一区二区 | 国产中文字幕在线播放 | 亚洲综合精品视频 | www日韩欧美 | 一区二区三区在线视频111 | 国产欧美久久久精品影院 | 福利视频午夜 | 免费国产黄线在线观看视频 | www.在线观看视频 | 亚洲精品乱码久久久久v最新版 | 最新高清无码专区 | 国产无限资源在线观看 | 国产亚洲精品成人av久久ww | 免费观看的黄色片 | 91麻豆高清视频 | 999一区二区三区 | 波多野结衣理论片 | av三级在线播放 | 美女视频a美女大全免费下载蜜臀 | 黄色在线视频网址 | a一片一级 | 日本中文字幕在线电影 | 日韩成人一级大片 | 精品久久久久久久久久久院品网 | av解说在线| 右手影院亚洲欧美 | 在线观看日本高清mv视频 | 九九免费观看视频 | 热久久国产精品 | 麻豆视频免费在线 | 国产亚洲精品成人 | a在线视频v视频 | 97视频在线免费播放 | 国产三级香港三韩国三级 | 91丨九色丨国产丨porny精品 | 日本精品久久久久 | 在线观看精品一区 | 在线观看中文字幕一区二区 | 国产v在线播放 | 麻豆免费视频网站 | 亚洲美女在线国产 | 亚洲日本激情 | 日本成址在线观看 | 婷婷色五| 麻豆国产精品永久免费视频 | 欧美日韩中文在线观看 | 久久国产精品视频 | 精品国产免费一区二区三区五区 | av在线播放中文字幕 | 视频国产精品 | 免费看精品久久片 | 成人久久久久久久久 | 中文字幕 在线 一 二 | 一区二区精品在线视频 | 五月婷婷狠狠 | 久久国产经典 | 午夜在线免费视频 | 亚洲欧美综合精品久久成人 | 美女国内精品自产拍在线播放 | 亚洲午夜精品久久久久久久久 | 一区免费视频 | 国产成人三级在线播放 | 久久99亚洲精品久久 | 国产亲近乱来精品 | 欧美 国产 视频 | 日韩欧美高清在线观看 | 亚洲在线精品视频 | 99视频免费 | 91精品国产自产老师啪 | 国产亚洲欧美一区 | 不卡的av电影在线观看 | wwwwwww色| 午夜精品导航 | 正在播放国产一区 | 免费在线观看黄 | 在线免费观看国产黄色 | 久久国产亚洲 | 亚洲亚洲精品在线观看 | 99久久精品视频免费 | 欧美色888| 免费看的黄色片 | 日日干天天干 | 亚洲一二三久久 | 国产午夜一区二区 | 波多野结衣理论片 | av天天干 | 日韩免费高清在线 | 少妇性bbb搡bbb爽爽爽欧美 | 九九九热精品 | 亚洲永久字幕 | 最新中文在线视频 | 蜜臀av夜夜澡人人爽人人桃色 | 色爱区综合激月婷婷 | 中文字幕在线观看视频网站 | 久久99久久99精品免观看软件 | 色婷婷狠狠五月综合天色拍 | 婷婷伊人综合 | 久久成视频 | 亚洲另类xxxx | 久久免费视频播放 | 午夜 久久 tv | 美女网站在线观看 | 亚洲一级在线观看 | 婷婷成人亚洲综合国产xv88 | 中文字幕在线免费播放 | 国产精品网站一区二区三区 | 国产日韩精品在线观看 | 超碰在线人人97 | 色噜噜日韩精品一区二区三区视频 | 狠狠的干 | 91麻豆精品国产自产 | 九九免费视频 | 国产精品麻豆视频 | 激情五月在线观看 | 97精品国产97久久久久久免费 | 免费亚洲黄色 | 精品国产乱码久久久久久浪潮 | 涩涩网站在线看 | 国产免费观看视频 | 国内精品久久久久 | 黄色视屏在线免费观看 | 在线播放精品一区二区三区 | 成人v| 高清av免费观看 | 999视频网站 | 91av电影在线观看 | 国产亚洲字幕 | 免费观看视频黄 | 射射射综合网 | 亚洲精品乱码久久久久久按摩 | 国产欧美在线一区二区三区 | 黄色av电影免费观看 | 91av99| 午夜免费久久看 | 亚洲国产理论片 | 黄色成人av | 国产精品 国内视频 | 天天干天天做 | 日本老少交 | 在线观看中文字幕第一页 | 最近中文字幕高清字幕免费mv | 操久 | 一级黄色电影网站 | 国产不卡av在线播放 | 国产精品久久久免费看 | 免费久久99精品国产 | 香蕉视频导航 | 狠狠狠狠狠狠狠狠干 | 国产黄色美女 | 在线播放视频一区 | 日韩精品一区二区三区在线播放 | 国产我不卡 | 欧美国产精品久久久久久免费 | 日韩免费观看一区二区 | 久久久精品99 | 国产亚洲精品中文字幕 | 欧美伦理一区二区三区 | 在线黄色免费av | 亚洲视频每日更新 | 免费福利在线视频 | 99精品电影 | 欧美色综合 | 能在线观看的日韩av | 日韩在线视频观看 | 视频在线观看入口黄最新永久免费国产 | 99精品国产在热久久下载 | 成人v | 日韩电影在线观看一区二区三区 | 韩国精品在线 | 日韩中出在线 | 免费高清av在线看 | 在线观看完整版免费 | 亚洲色视频 | 激情综合狠狠 | 欧美色综合 | 国产美女被啪进深处喷白浆视频 | 五月天综合在线 | 欧美亚洲国产精品久久高清浪潮 | 麻豆视频在线观看免费 | 日韩有码第一页 | 久久婷婷五月综合色丁香 | av在线最新 | 韩国av免费 | 国产一二三四在线视频 | 日韩在线观看一区二区三区 | 国产精品videoxxxx | 黄网站色| 亚洲精品美女久久 | 青草视频在线免费 | 91在线日韩 | 国产精品去看片 | 激情视频网页 | va视频在线观看 | 亚洲欧美成人 | 丁香久久婷婷 | 欧美黄网站 | 国产视频在线观看免费 | 黄色亚洲在线 | 九九热在线播放 | 美女黄频在线观看 | 亚洲成av人片在线观看无 | 日韩字幕 | 久久情爱 | 在线天堂中文www视软件 | 亚洲视频在线播放 | 一区中文字幕电影 | 久久综合久久88 | 亚洲爱视频 | 超碰个人在线 | 中文字幕在线观看完整版电影 | 国产精品毛片一区二区三区 | 国产精品一区二区中文字幕 | 亚洲夜夜网 | 婷婷色网站 | 一区二区三区四区五区在线 | 日批网站免费观看 | 91视频 - x99av | 欧美精品久久久久a | 久久久久久久久久久成人 | 东方av在 | 成人在线视频在线观看 | 在线小视频| 日本二区三区在线 | 久久国产精品一区二区三区 | 午夜电影一区 | 国产福利91精品一区二区三区 | 日韩精品一区二区电影 | 亚洲三级黄色 | 波多野结衣电影一区二区 | 久久成人毛片 | 婷婷天天色 | 97在线视频免费看 | 国产一区视频免费在线观看 | 永久免费观看视频 | 日本三级大片 | 成人在线网站观看 | 96av在线| 天天操夜夜操夜夜操 | 在线观看岛国 | 97视频在线播放 | 欧美久草在线 | 国产专区第一页 | 久久视频一区二区 | 欧美日韩视频在线 | 女人高潮特级毛片 | 91xav| 久久精品一二区 | 91麻豆看国产在线紧急地址 | 亚洲精品欧洲精品 | 日本一区二区不卡高清 | 久久久久成人精品亚洲国产 | 国产96在线观看 | 伊人夜夜| 免费情缘| 午夜国产福利视频 | 久久国产精品99久久久久久丝袜 | 中文字幕在线视频一区 | 国产成人精品av | 久草在线视频新 | 久久精品国产精品亚洲 | 国产精品一区二区精品视频免费看 | 日本久草电影 | 911国产在线观看 | 91中文在线 | 天天操伊人| 四虎欧美| 国产二区视频在线观看 | 亚洲视频h | 国产精品久久久视频 | 成人免费视频网址 | 久久欧洲视频 | 久久99免费观看 | 国产欧美在线一区二区三区 | 丁香六月激情 | 99久久夜色精品国产亚洲96 | 国产精品99免费看 | 欧美精品久久久久久 | 99久久久成人国产精品 | 去看片| 国产在线播放不卡 | 国产视频黄 | 色com | aaa日本高清在线播放免费观看 | 欧美做受69 | 精品国产一区二区三区久久久 | 九月婷婷综合网 | 日韩久久久久久久久 | 国产欧美最新羞羞视频在线观看 | 免费看一级特黄a大片 | 国产99久久99热这里精品5 | 91精品国产一区二区三区 | 国产精品18久久久久白浆 | 欧美日韩在线视频观看 | 久久成人久久 | 国产护士在线 | 99c视频高清免费观看 | 亚洲精品视频网站在线观看 | 婷久久| 99久久爱| 播五月综合 | 美女视频一区 | 国产黄色成人 | 激情偷乱人伦小说视频在线观看 | 亚洲精品小区久久久久久 | 国产在线播放一区二区 | 五月香视频在线观看 | 成人国产一区 | 免费看日韩片 | 日韩欧美精品一区二区 | 日本三级香港三级人妇99 | 日韩在线免费观看视频 | 伊香蕉大综综综合久久啪 | 婷婷丁香七月 | 国产精品久久片 | 亚洲日本欧美 | 最近中文国产在线视频 | 欧美在线视频精品 | av免费网站在线观看 | 国产香蕉97碰碰久久人人 | 国产黄色高清 | 免费看黄视频 | 97中文字幕 | 日韩经典一区二区三区 | 欧美激情第28页 | 在线观看亚洲精品 | 精品国产一区二区三区噜噜噜 | 久久久亚洲麻豆日韩精品一区三区 | 国产成人a v电影 | 精品a在线 | 亚洲韩国一区二区三区 | 97在线观看免费高清完整版在线观看 | 日韩黄色大片在线观看 | 国产黄色大片 | 夜色资源站wwwcom | 欧美亚洲国产日韩 | 日日天天av | 国产精品99久久久久久大便 | 亚洲国产中文字幕在线视频综合 | 久久尤物电影视频在线观看 | 丁香婷婷综合激情 | 五月婷婷视频在线观看 | 999久久久久久久久久久 | 色综合久久综合 | 六月色 | 草久视频在线观看 | 国产精品美女www爽爽爽视频 | 夜又临在线观看 | 日本最新中文字幕 | 久久这里只有精品23 | 成人av资源站 | 色婷婷免费视频 | 亚洲免费不卡 | 玖玖在线资源 | 久久av不卡 | 国色天香第二季 | 看片网站黄 | 91精品啪啪| 天堂网一区 | 视频直播国产精品 | 91视频在线观看下载 | 亚洲国产日韩一区 | 久久亚洲私人国产精品va | 九九爱免费视频 | 国产小视频在线观看免费 | 天天操夜夜操天天射 | 成人黄色在线看 | 国产精品自产拍在线观看 | 国产精品久久一区二区三区不卡 | 国产在线精品福利 | 97超碰国产精品女人人人爽 | 国产一区二区在线视频观看 | 丁香六月激情婷婷 | 成人在线视频观看 | 欧美日韩视频在线观看一区二区 | 亚洲精品综合一二三区在线观看 | 在线观看中文字幕dvd播放 | 91成人精品一区在线播放 | 成人av资源网站 | 欧美性色黄 | 亚洲美女精品区人人人人 | 亚洲精品短视频 | 色综合天天色 | 香蕉看片 | 亚洲黄色高清 | 国产亚洲精品久久 | 涩五月婷婷 | 免费的黄色的网站 | 99视频一区 | 国产 精品 资源 | 中文在线a∨在线 | 国产永久免费 | 四虎最新入口 | 97超碰资源网 | 亚洲精品tv久久久久久久久久 | 色偷偷888欧美精品久久久 | 久久在草 | 狠狠的操狠狠的干 | 久久精彩| 西西444www大胆高清图片 | 色搞搞 | 久久小视频 | 一级久久精品 | 亚洲精品永久免费视频 | 亚洲精品国产拍在线 | www.久久99 | 91成人天堂久久成人 | 日韩在线观看你懂的 | 伊人六月| 国产精品18久久久久vr手机版特色 | 免费一级片视频 | 亚洲精品一区二区18漫画 | www视频免费在线观看 | 精品999在线观看 | 91av免费看| 国产精品久久久久久高潮 | 91香蕉视频黄 | 色偷偷网站视频 | 黄色毛片一级 | 久草国产在线 | 中文字幕一区二区三区四区久久 | 国产999精品久久久久久麻豆 | 国产精品毛片久久蜜 | 午夜精品一二区 | 国产精品一区在线观看 | 男女视频久久久 | 精品99久久久久久 | 日韩欧美综合在线视频 | 国产91综合一区在线观看 | 国产剧在线观看片 | 91在线成人 | 中文在线字幕免费观 | 激情欧美国产 | 99久久精品国产系列 | 亚洲视频综合在线 | 日本一区二区高清不卡 | 一本一本久久a久久精品牛牛影视 | 91色在线观看 | 欧美成人亚洲成人 | 成人免费在线播放 | 中文字幕国产一区 | 在线观看中文字幕亚洲 | 日韩久久久久久久久久 | 麻豆精品视频在线 | 丁香在线观看完整电影视频 | 三级在线视频播放 | 一本一本久久a久久精品牛牛影视 | 日韩欧美电影网 | 国产精品久久久久四虎 | 天天干天天草天天爽 | 成人四虎 | 99在线播放| 天天干天天操天天爱 | 精品久久久久久久久久久久久久久久 | 99久久精品国产亚洲 | 亚洲激情国产精品 | 久久综合九色综合97婷婷女人 | 香蕉影视 | 色网站视频 | 成年人免费看片网站 | 色伊人网| 日韩在线视频在线观看 | 五月婷婷毛片 | 五月开心色 | 国产精品自产拍在线观看桃花 | 人人干人人艹 | 亚洲精品国产精品国自 | 国产特级毛片aaaaaaa高清 | 在线视频手机国产 | 国产视频日本 | 日女人电影 | 久久久18 | 国产一级淫片在线观看 | 免费看三级网站 | 一区二区不卡在线观看 | 欧美日韩不卡在线视频 | 欧美成人基地 | 人人擦 | 中文字幕有码在线 | 91av99| 97超碰在线播放 | 国产在线观看污片 | 色干综合| 三级黄免费看 | 国产精品久久久久久久久久三级 | 超碰97在线资源 | 欧美亚洲久久 | 伊人色**天天综合婷婷 | 午夜精品久久久久久久久久久久久久 | 狠狠88综合久久久久综合网 | 精品一区二区免费视频 | 国产91在线观 | 国产免费国产 | 黄色亚洲精品 | 国产中文在线字幕 | 天天射综合网视频 | 天天曰天天射 | 日韩在线高清免费视频 | 国产字幕在线观看 | 草樱av | 手机成人免费视频 | 最近av在线 | 在线观看国产成人av片 | 国产精品18久久久久久首页狼 | 中文在线天堂资源 | 在线不卡视频 | 亚洲精品视频免费看 | av一区二区三区在线播放 | 久久久久亚洲最大xxxx | 国产一二三四在线观看视频 | 国产高清视频免费 | 四虎伊人| 最近高清中文在线字幕在线观看 | 中文永久免费观看 | 国产色视频123区 | 成人黄色一级视频 | 欧美一级视频一区 | 中文十次啦 | 99精品视频在线播放观看 | 在线观看完整版免费 | 国产一级小视频 | 久久国产欧美日韩 | 99精品视频精品精品视频 | 亚洲精选久久 | 亚洲精品在线免费看 | 黄色软件网站在线观看 | 在线免费视频一区 | 久久久久国产精品视频 | 国产精品久久久久999 | 啪啪免费试看 | 国产精品久久久久免费观看 | av电影免费在线播放 | 中文字幕免费高清在线观看 | 九九久久视频 | 欧美性做爰猛烈叫床潮 | 很黄很黄的网站免费的 | 1区2区3区在线观看 三级动图 | 国产麻豆精品一区二区 | 色 免费观看 | 91精品国产99久久久久久久 | 91男人影院 | 久久久久www | 久久免费播放 | 97在线看片 | 国产精品欧美日韩 | 久久 一区| 午夜av色| 色婷婷午夜 | 亚洲精品国 | 亚洲国产精品va在线看黑人动漫 | 色视频在线 | 久久国产精品久久w女人spa | 日韩欧美精品在线视频 | 婷婷亚洲五月色综合 | 国产精品成久久久久三级 | 99免在线观看免费视频高清 | 奇米网777| 久久免费观看少妇a级毛片 久久久久成人免费 | av黄色av| 国产乱对白刺激视频在线观看女王 | 日本二区三区在线 | 黄色网在线免费观看 | 亚洲视频高清 | 特黄色大片| 九九九九免费视频 | 久香蕉 | 欧美激情精品久久久 | 免费av大片 | 六月丁香伊人 | 色综久久 | 黄色在线看网站 | 韩国av在线播放 | 久久激情五月婷婷 | 免费观看黄色12片一级视频 | 成人免费在线观看电影 | 免费在线日韩 | 91精品国产91p65 | 亚洲综合导航 | 国产精品久久久久久久电影 | 一区三区视频在线观看 | 色福利网站| 97超级碰碰碰碰久久久久 | 美女免费黄网站 | 色99久久| 国产日韩一区在线 | 日韩av在线小说 | 欧美污在线观看 | 国产视频午夜 | 亚洲综合一区二区精品导航 | 韩国精品福利一区二区三区 | 99r在线视频| 久久久久久看片 | 久久精品区| 黄色国产高清 | 人人爽人人爽人人爽学生一级 | 成年人黄色免费视频 | 18国产精品福利片久久婷 | 久久人人射| 国产精品美女www爽爽爽视频 | 97精品免费视频 | 婷婷综合国产 | 高清av中文在线字幕观看1 | 久久字幕网 | 久久av在线 | 玖玖玖精品 | 在线观看亚洲精品视频 | 国产啊v在线 | 日韩免费三区 | 六月色婷婷 | 久久国产精品小视频 | 国产区精品在线观看 | 视频一区二区在线 | 久久99网站 | 欧美视频在线观看免费网址 | 在线免费观看欧美日韩 | 超碰人人在线 | 日韩一区正在播放 | 日韩在线观看中文 | 日韩午夜小视频 | 又湿又紧又大又爽a视频国产 | 国产小视频免费观看 | 在线视频久久 | 成人观看视频 | 色无五月 | 日韩r级在线 | 在线黄色av电影 | 国产精品免费不卡 | 久久成人精品视频 | 青草视频在线 | 91麻豆网站 | 国产日产亚洲精华av | 亚洲精品视频www | 国产精品婷婷午夜在线观看 | 97网站| 久草网站在线观看 | 午夜久久网站 | 国产伦精品一区二区三区… | 中文字幕黄色网址 | 中文字幕在线观看免费高清完整版 | 久久久91精品国产一区二区三区 | 在线观看免费一区 | 国产网站av| 一区在线免费观看 | 在线观看日韩视频 | 国产99免费视频 | 91中文字幕在线 | 玖玖爱国产在线 | 国产精品九九九九九九 | 免费美女av| 五月天婷婷狠狠 | 久久久免费视频播放 | 欧美视频日韩视频 | www.888av| 人人射人人澡 | 麻豆激情电影 | 中国一 片免费观看 | 天天天天天天天操 | 中文字幕亚洲在线观看 | 中文字幕黄色网 | 免费在线观看成人 | 午夜视频免费播放 | 日韩欧美在线视频一区二区三区 | 在线国产视频观看 | 婷婷综合伊人 | 久久久久久久国产精品 | 日韩精品短视频 | 国产精品剧情在线亚洲 | 久久精品亚洲精品国产欧美 | 亚洲深爱激情 | 久久另类小说 | 色婷婷国产精品一区在线观看 | 婷婷六月综合网 | 久久99亚洲热视 | 日韩一区二区在线免费观看 | 日产乱码一二三区别免费 | 91视频国产免费 | 日韩av免费大片 | 久久久久久毛片精品免费不卡 | 精品一区二区三区电影 | 99精品国产在热久久 | aaaaaa毛片| 国产一区在线观看免费 | 99久久精品午夜一区二区小说 | 91日韩免费| 日韩羞羞| 免费在线电影网址大全 | 久草在线免费色站 | 在线精品亚洲 | 成人网大片 | 手机av在线网站 | 国产又粗又猛又爽又黄的视频先 | 亚洲区二区 | 国产亚洲精品精品精品 | 天天色图 | 国产不卡视频在线播放 | 91视频国产高清 | 一区二区三区免费 | 00av视频 | 一区二区三区动漫 | 色婷婷www | 免费久久片 | 久久久久久久久久毛片 | 日韩精品在线观看av | 国产精品一区二区av日韩在线 | 在线免费国产视频 | 在线观看日本高清mv视频 | 国产国语在线 | 天天操天天色综合 | 亚洲精品美女久久17c | 9ⅰ精品久久久久久久久中文字幕 | 久草免费在线 | 在线va网站 | 99热亚洲精品 | 不卡电影免费在线播放一区 | 免费在线黄网 | 在线小视频 | 最近最新中文字幕视频 | 狠色狠色综合久久 | 亚洲精品一区二区三区高潮 | 草久视频在线观看 | 亚洲五月花| 精品日本视频 | 热久久这里只有精品 | 中文视频在线看 | 天天天干 | 色噜噜日韩精品欧美一区二区 | 日韩网站视频 | 久久精品在线免费观看 | 蜜桃av人人夜夜澡人人爽 | 又色又爽又黄高潮的免费视频 | 三级av中文字幕 | 久久精品视频日本 | 久久伦理 | 欧美一级久久 | 深夜视频久久 | 青青草国产在线 | 国产做aⅴ在线视频播放 | 国产精品激情在线观看 | 国产黄色片久久久 | 国产精品久久久久久久久久尿 | 六月丁香婷婷在线 | 国产最新在线视频 | 91精品啪在线观看国产 | 国产精品 中文在线 | 麻豆一区二区 | 精品视频成人 | 国产精品一区欧美 | 亚洲高清在线观看视频 | 国产网红在线观看 | 亚洲精品在线观看视频 | 女女av在线 | 国产精品免费视频网站 | 国产欧美在线一区二区三区 | 亚洲国产成人精品久久 | 久久激情电影 | 99在线精品视频 | 精产嫩模国品一二三区 | 成人小视频在线播放 | 成人av电影免费在线播放 | 亚洲免费av在线播放 | 麻豆久久久久 | 一区二区国产精品 | 一级片免费观看视频 | 日韩色在线 | 亚洲精品在线视频网站 | 中文字幕一区二区三区在线观看 | 国产一区二区三区免费视频 | 国产精品岛国久久久久久久久红粉 | 91香蕉视频色版 | 91精品国自产拍天天拍 | 天天操夜夜叫 | 国产精品一区专区欧美日韩 | 日韩精品免费在线观看视频 | 色网站国产精品 | 国产一级片免费观看 | 亚洲综合色视频 | 缴情综合网五月天 | 国产精品成人久久久久久久 | 婷婷六月天在线 | 黄色av电影在线观看 | 免费精品国产va自在自线 | 最新av在线免费观看 | 国产成人黄色片 | 97超碰在线久草超碰在线观看 | 黄色网址在线播放 | 亚洲日本中文字幕在线观看 | 中文字幕中文字幕中文字幕 | 日韩精品中文字幕一区二区 | 国产精品va在线观看入 | 婷婷色网 | 一区二区三区四区影院 | 久久久久久久久久久久影院 | 97超碰中文 | 日韩理论影院 | 久草观看视频 | 欧美a影视 | 久久成人18免费网站 | 在线成人av| 久久久久久久99 | 波多野结衣电影一区二区三区 | 中文在线最新版天堂 | 中文字幕一区二区三 | 国内小视频在线观看 | 亚洲激情综合网 | 一本一本久久a久久精品综合小说 | 久久久国产精品视频 | 欧美精品在线一区二区 | 国产午夜精品福利视频 | 国产色视频网站 | 日韩高清久久 | 日韩欧美在线免费观看 | 成人黄色在线观看视频 | 欧洲高潮三级做爰 | 91自拍成人 | 99精品99| 黄色片视频在线观看 | 免费成人在线观看视频 | 久久久久免费精品视频 | 欧美一级免费片 | 国产99久久久国产精品免费二区 | 精品国产电影 | 欧美精品久久 | 亚洲精品色婷婷 | 久久国产精品电影 | 香蕉视频国产在线观看 | 久在线观看视频 | 婷色在线| 激情五月看片 | 亚洲精品黄色在线观看 | 久久精品爱视频 | 国产成免费视频 | 天天天天天天天天操 | 四虎www com| 99re久久精品国产 | 欧美黄色免费 | 欧美伦理电影一区二区 | 91成熟丰满女人少妇 | 一级欧美黄 | 九九九九九九精品任你躁 | 激情婷婷综合 | 国产亚洲精品xxoo | 人人爽人人爽人人片av | av三级在线免费观看 | 亚洲精品视频免费 | 久久精品国产第一区二区三区 | 国产在线精品区 | 欧美日韩在线观看一区二区三区 | 久久久久久久久久久电影 | 国产美女视频网站 | 久久综合九色九九 | 成年人精品 | 精品国模一区二区三区 | 日韩免费久久 | 国产精品美女久久久久久2018 | 色999在线 | 午夜电影久久 | 97视频在线免费播放 | 国产精品国产三级国产不产一地 | 成人高清在线 | 6080yy午夜一二三区久久 | 久久免费高清视频 | 色综合天天色 | 麻豆 videos| 久草在线免费播放 | 日韩av在线影视 | 成人免费毛片aaaaaa片 | 91视频麻豆视频 | 91网在线看 | av高清影院 | 久久免费视频一区 | 黄网站大全 | 91成人免费视频 | 日本精品一区二区在线观看 | 日韩精品第1页 | 人人干狠狠操 | 精品亚洲成a人在线观看 | 免费一级黄色 | 国产精品第72页 | 色天天综合久久久久综合片 | 视频 天天草 | 久草视频资源 | 在线天堂日本 | 亚洲日本一区二区在线 | 国外av在线 | 成人免费在线播放视频 | 久久这里只有精品23 | 久久婷婷一区 | 婷婷视频在线观看 | 综合av在线 | 国产色视频一区 | 婷婷九月激情 | 国产特级毛片aaaaaa高清 | 久久丝袜视频 | 国产老太婆免费交性大片 | 精品视频在线免费观看 | 欧美a级一区二区 | 91久久久国产精品 | 成人欧美在线 | 国产天天爽 | 97电院网手机版 | 国产一区二区免费看 | 中文字幕乱码一区二区 | 久久首页 | 久久兔费看a级 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 天天干 夜夜操 | 探花在线观看 | 九九在线播放 | 午夜精品一区二区三区可下载 | 日韩激情小视频 | 亚洲国产wwwccc36天堂 | 成人中文字幕在线 | av在线色 | 免费a v在线 | 伊人热| 国产裸体无遮挡 | 成年人视频在线观看免费 | 精品国产乱码久久久久 | 99视频精品视频高清免费 |