国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 系統 > Android > 正文

android 九宮格滑動解鎖開機實例源碼學習

2020-04-11 12:35:18
字體:
來源:轉載
供稿:網友
效果圖由于網站占時不能上傳,以后補上。
NinePointLineView.java
復制代碼 代碼如下:

package org.demo.custon_view;
import org.demo.utils.MLog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Cap;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class NinePointLineView extends View {
Paint linePaint = new Paint();
Paint whiteLinePaint = new Paint();
Paint textPaint = new Paint();
// 由于兩個圖片都是正方形,所以獲取一個長度就行了
Bitmap defaultBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.lock);
int defaultBitmapRadius = defaultBitmap.getWidth() / 2;
// 初始化被選中圖片的直徑、半徑
Bitmap selectedBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.indicator_lock_area);
int selectedBitmapDiameter = selectedBitmap.getWidth();
int selectedBitmapRadius = selectedBitmapDiameter / 2;
// 定義好9個點的數組
PointInfo[] points = new PointInfo[9];
// 相應ACTION_DOWN的那個點
PointInfo startPoint = null;
// 屏幕的寬高
int width, height;
// 當ACTION_MOVE時獲取的X,Y坐標
int moveX, moveY;
// 是否發生ACTION_UP
boolean isUp = false;
// 最終生成的用戶鎖序列
StringBuffer lockString = new StringBuffer();
public NinePointLineView(Context context) {
super(context);
this.setBackgroundColor(Color.WHITE);
initPaint();
}
public NinePointLineView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setBackgroundColor(Color.WHITE);
initPaint();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
MLog.i("onMeasure");
// 初始化屏幕大小
width = getWidth();
height = getHeight();
if (width != 0 && height != 0) {
initPoints(points);
}
MLog.i("width、height = " + width + "、" + height);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom) {
MLog.i("onLayout");
super.onLayout(changed, left, top, right, bottom);
}
private int startX = 0, startY = 0;
@Override
protected void onDraw(Canvas canvas) {
canvas.drawText("用戶的滑動順序:" + lockString, 0, 40, textPaint);
if (moveX != 0 && moveY != 0 && startX != 0 && startY != 0) {
// 繪制當前活動的線段
drawLine(canvas, startX, startY, moveX, moveY);
}
drawNinePoint(canvas);
super.onDraw(canvas);
}
// 記住,這個DOWN和MOVE、UP是成對的,如果沒從UP釋放,就不會再獲得DOWN;
// 而獲得DOWN時,一定要確認消費該事件,否則MOVE和UP不會被這個View的onTouchEvent接收
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean flag = true;
if (isUp) {// 如果已滑完,重置每個點的屬性和lockString
finishDraw();
// 當UP后,要返回false,把事件釋放給系統,否則無法獲得Down事件
flag = false;
} else {// 沒滑完,則繼續繪制
handlingEvent(event);
// 這里要返回true,代表該View消耗此事件,否則不會收到MOVE和UP事件
flag = true;
}
return flag;
}
private void handlingEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
moveX = (int) event.getX();
moveY = (int) event.getY();
MLog.i("onMove:" + moveX + "、" + moveY);
for (PointInfo temp : points) {
if (temp.isInMyPlace(moveX, moveY) && temp.isNotSelected()) {
temp.setSelected(true);
startX = temp.getCenterX();
startY = temp.getCenterY();
int len = lockString.length();
if (len != 0) {
int preId = lockString.charAt(len - 1) - 48;
points[preId].setNextId(temp.getId());
}
lockString.append(temp.getId());
break;
}
}
invalidate(0, height - width, width, height);
break;
case MotionEvent.ACTION_DOWN:
int downX = (int) event.getX();
int downY = (int) event.getY();
MLog.i("onDown:" + downX + "、" + downY);
for (PointInfo temp : points) {
if (temp.isInMyPlace(downX, downY)) {
temp.setSelected(true);
startPoint = temp;
startX = temp.getCenterX();
startY = temp.getCenterY();
lockString.append(temp.getId());
break;
}
}
invalidate(0, height - width, width, height);
break;
case MotionEvent.ACTION_UP:
MLog.i("onUp");
startX = startY = moveX = moveY = 0;
isUp = true;
invalidate();
break;
default:
MLog.i("收到其他事件!!");
break;
}
}
private void finishDraw() {
for (PointInfo temp : points) {
temp.setSelected(false);
temp.setNextId(temp.getId());
}
lockString.delete(0, lockString.length());
isUp = false;
invalidate();
}
private void initPoints(PointInfo[] points) {
int len = points.length;
int seletedSpacing = (width - selectedBitmapDiameter * 3) / 4;
// 被選擇時顯示圖片的左上角坐標
int seletedX = seletedSpacing;
int seletedY = height - width + seletedSpacing;
// 沒被選時圖片的左上角坐標
int defaultX = seletedX + selectedBitmapRadius - defaultBitmapRadius;
int defaultY = seletedY + selectedBitmapRadius - defaultBitmapRadius;
// 繪制好每個點
for (int i = 0; i < len; i++) {
if (i == 3 || i == 6) {
seletedX = seletedSpacing;
seletedY += selectedBitmapDiameter + seletedSpacing;
defaultX = seletedX + selectedBitmapRadius
- defaultBitmapRadius;
defaultY += selectedBitmapDiameter + seletedSpacing;
}
points[i] = new PointInfo(i, defaultX, defaultY, seletedX, seletedY);
seletedX += selectedBitmapDiameter + seletedSpacing;
defaultX += selectedBitmapDiameter + seletedSpacing;
}
}
private void initPaint() {
initLinePaint(linePaint);
initTextPaint(textPaint);
initWhiteLinePaint(whiteLinePaint);
}
/**
* 初始化文本畫筆
* @param paint
*/
private void initTextPaint(Paint paint) {
textPaint.setTextSize(30);
textPaint.setAntiAlias(true);
textPaint.setTypeface(Typeface.MONOSPACE);
}
/**
* 初始化黑線畫筆
*
* @param paint
*/
private void initLinePaint(Paint paint) {
paint.setColor(Color.GRAY);
paint.setStrokeWidth(defaultBitmap.getWidth());
paint.setAntiAlias(true);
paint.setStrokeCap(Cap.ROUND);
}
/**
* 初始化白線畫筆
*
* @param paint
*/
private void initWhiteLinePaint(Paint paint) {
paint.setColor(Color.WHITE);
paint.setStrokeWidth(defaultBitmap.getWidth() - 5);
paint.setAntiAlias(true);
paint.setStrokeCap(Cap.ROUND);
}
/**
* 繪制已完成的部分
*
* @param canvas
*/
private void drawNinePoint(Canvas canvas) {
if (startPoint != null) {
drawEachLine(canvas, startPoint);
}
// 繪制每個點的圖片
for (PointInfo pointInfo : points) {
if (pointInfo.isSelected()) {// 繪制大圈
canvas.drawBitmap(selectedBitmap, pointInfo.getSeletedX(),
pointInfo.getSeletedY(), null);
}
// 繪制點
canvas.drawBitmap(defaultBitmap, pointInfo.getDefaultX(),
pointInfo.getDefaultY(), null);
}
}
/**
* 遞歸繪制每兩個點之間的線段
*
* @param canvas
* @param point
*/
private void drawEachLine(Canvas canvas, PointInfo point) {
if (point.hasNextId()) {
int n = point.getNextId();
drawLine(canvas, point.getCenterX(), point.getCenterY(),
points[n].getCenterX(), points[n].getCenterY());
// 遞歸
drawEachLine(canvas, points[n]);
}
}
/**
* 先繪制黑線,再在上面繪制白線,達到黑邊白線的效果
*
* @param canvas
* @param startX
* @param startY
* @param stopX
* @param stopY
*/
private void drawLine(Canvas canvas, float startX, float startY,
float stopX, float stopY) {
canvas.drawLine(startX, startY, stopX, stopY, linePaint);
canvas.drawLine(startX, startY, stopX, stopY, whiteLinePaint);
}
/**
* 用來表示一個點
*
* @author zkwlx
*
*/
private class PointInfo {
// 一個點的ID
private int id;
// 當前點所指向的下一個點的ID,當沒有時為自己ID
private int nextId;
// 是否被選中
private boolean selected;
// 默認時圖片的左上角X坐標
private int defaultX;
// 默認時圖片的左上角Y坐標
private int defaultY;
// 被選中時圖片的左上角X坐標
private int seletedX;
// 被選中時圖片的左上角Y坐標
private int seletedY;
public PointInfo(int id, int defaultX, int defaultY, int seletedX,
int seletedY) {
this.id = id;
this.nextId = id;
this.defaultX = defaultX;
this.defaultY = defaultY;
this.seletedX = seletedX;
this.seletedY = seletedY;
}
public boolean isSelected() {
return selected;
}
public boolean isNotSelected() {
return !isSelected();
}
public void setSelected(boolean selected) {
this.selected = selected;
}
public int getId() {
return id;
}
public int getDefaultX() {
return defaultX;
}
public int getDefaultY() {
return defaultY;
}
public int getSeletedX() {
return seletedX;
}
public int getSeletedY() {
return seletedY;
}
public int getCenterX() {
return seletedX + selectedBitmapRadius;
}
public int getCenterY() {
return seletedY + selectedBitmapRadius;
}
public boolean hasNextId() {
return nextId != id;
}
public int getNextId() {
return nextId;
}
public void setNextId(int nextId) {
this.nextId = nextId;
}
/**
* 坐標(x,y)是否在當前點的范圍內
*
* @param x
* @param y
* @return
*/
public boolean isInMyPlace(int x, int y) {
boolean inX = x > seletedX
&& x < (seletedX + selectedBitmapDiameter);
boolean inY = y > seletedY
&& y < (seletedY + selectedBitmapDiameter);
return (inX && inY);
}
}
}

NinePointView.java
復制代碼 代碼如下:

package org.demo.custon_view;
import org.demo.utils.MLog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Paint.Cap;
import android.graphics.Path;
import android.graphics.Typeface;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
public class NinePointView extends View {
Paint linePaint = new Paint();
Paint textPaint = new Paint();
Path path = new Path();
// 由于兩個圖片都是正方形,所以獲取一個長度就行了
Bitmap defaultBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.lock);
int defaultBitmapRadius = defaultBitmap.getWidth() / 2;
// 初始化被選中圖片的直徑、半徑
Bitmap selectedBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.indicator_lock_area);
int selectedBitmapDiameter = selectedBitmap.getWidth();
int selectedBitmapRadius = selectedBitmapDiameter / 2;
// 初始化指示器的圖片
Bitmap indicateBitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.indicator_lock_area_next);
Bitmap tempBitmap = null;
// 定義好9個點的數組
PointInfo[] points = new PointInfo[9];
// 屏幕的寬高
int width, height;
// 當ACTION_MOVE時獲取的X,Y坐標
int moveX, moveY;
// 是否發生ACTION_UP
boolean isUp = false;
// 最終生成的用戶鎖序列
StringBuffer lockString = new StringBuffer();
Matrix matrix = new Matrix();
public NinePointView(Context context) {
super(context);
this.setBackgroundColor(Color.WHITE);
initLinePaint(linePaint);
initTextPaint(textPaint);
}
public NinePointView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setBackgroundColor(Color.WHITE);
initLinePaint(linePaint);
initTextPaint(textPaint);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
MLog.i("onMeasure");
width = getWidth();
height = getHeight();
if (width != 0 && height != 0) {
initPoints(points);
}
MLog.i("width、height = " + width + "、" + height);
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected void onLayout(boolean changed, int left, int top, int right,
int bottom) {
MLog.i("onLayout");
super.onLayout(changed, left, top, right, bottom);
}
private int startX = 0, startY = 0;
@Override
protected void onDraw(Canvas canvas) {
canvas.drawText("用戶的滑動順序:" + lockString, 0, 40, textPaint);
if (moveX != 0 && moveY != 0 && startX != 0 && startY != 0) {
// 繪制當前活動的線段
canvas.drawLine(startX, startY, moveX, moveY, linePaint);
}
drawNinePoint(canvas, linePaint);
super.onDraw(canvas);
}
// 記住,這個DOWN和MOVE、UP是成對的,如果沒從UP釋放,就不會再獲得DOWN;
// 而獲得DOWN時,一定要確認消費該事件,否則MOVE和UP不會被這個VIEW的onTouchEvent接收
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean flag = true;
if (isUp) {// 如果已滑完,則把整個Canvas重置
finishDraw();
// 當UP后,要返回false,把事件釋放給系統,否則無法獲得Down事件
flag = false;
} else {// 沒滑完,則繼續繪制
handlingEvent(event);
// 這里要返回true,否則代表該View不消耗此事件,交給系統處理,則不會再收到MOVE和UP事件
flag = true;
}
return flag;
}
private void handlingEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
moveX = (int) event.getX();
moveY = (int) event.getY();
MLog.i("onMove:" + moveX + "、" + moveY);
for (PointInfo temp : points) {
if (temp.isInMyPlace(moveX, moveY) && temp.isNotSelected()) {
temp.setSelected(true);
startX = temp.getCenterX();
startY = temp.getCenterY();
int len = lockString.length();
if (len != 0) {
int preId = lockString.charAt(len - 1) - 48;
points[preId].setNextId(temp.getId());
}
lockString.append(temp.getId());
break;
}
}
invalidate(0, height - width, width, height);
break;
case MotionEvent.ACTION_DOWN:
int downX = (int) event.getX();
int downY = (int) event.getY();
MLog.i("onDown:" + downX + "、" + downY);
for (PointInfo temp : points) {
if (temp.isInMyPlace(downX, downY)) {
temp.setSelected(true);
startX = temp.getCenterX();
startY = temp.getCenterY();
lockString.append(temp.getId());
break;
}
}
invalidate(0, height - width, width, height);
break;
case MotionEvent.ACTION_UP:
MLog.i("onUp");
startX = startY = moveX = moveY = 0;
isUp = true;
invalidate();
break;
default:
MLog.i("收到其他事件??!");
break;
}
}
private void finishDraw() {
for (PointInfo temp : points) {
temp.setSelected(false);
temp.setNextId(temp.getId());
}
lockString.delete(0, lockString.length());
isUp = false;
invalidate();
}
private void initPoints(PointInfo[] points) {
int len = points.length;
int seletedSpacing = (width - selectedBitmapDiameter * 3) / 4;
// 被選擇時顯示圖片的左上角坐標
int seletedX = seletedSpacing;
int seletedY = height - width + seletedSpacing;
// 沒被選時圖片的左上角坐標
int defaultX = seletedX + selectedBitmapRadius - defaultBitmapRadius;
int defaultY = seletedY + selectedBitmapRadius - defaultBitmapRadius;
for (int i = 0; i < len; i++) {
if (i == 3 || i == 6) {
seletedX = seletedSpacing;
seletedY += selectedBitmapDiameter + seletedSpacing;
defaultX = seletedX + selectedBitmapRadius
- defaultBitmapRadius;
defaultY += selectedBitmapDiameter + seletedSpacing;
}
points[i] = new PointInfo(i, defaultX, defaultY, seletedX, seletedY);
seletedX += selectedBitmapDiameter + seletedSpacing;
defaultX += selectedBitmapDiameter + seletedSpacing;
}
}
private void initTextPaint(Paint paint) {
textPaint.setTextSize(30);
textPaint.setAntiAlias(true);
textPaint.setTypeface(Typeface.MONOSPACE);
}
/**
* 初始化線畫筆
*
* @param paint
*/
private void initLinePaint(Paint paint) {
paint.setColor(Color.GRAY);
paint.setStrokeWidth(defaultBitmap.getWidth());
paint.setAntiAlias(true);
paint.setStrokeCap(Cap.ROUND);
}
/**
* 繪制已完成的部分
*
* @param canvas
*/
private void drawNinePoint(Canvas canvas, Paint paint) {
// 先把用戶畫出的線繪制好
for (PointInfo pointInfo : points) {
if (pointInfo.hasNextId()) {
int n = pointInfo.getNextId();
canvas.drawLine(pointInfo.getCenterX(), pointInfo.getCenterY(),
points[n].getCenterX(), points[n].getCenterY(), paint);
}
}
// 繪制每個點的圖片
for (PointInfo pointInfo : points) {
if (pointInfo.isSelected()) {
if (pointInfo.hasNextId()) {
matrix.reset();
int i = (int) Math.abs(Math.random() * 1000 - 640);
MLog.i("隨機到的角度:" + i);
matrix.setRotate(i);
tempBitmap = Bitmap.createBitmap(indicateBitmap, 0, 0,
indicateBitmap.getWidth(),
indicateBitmap.getHeight(), matrix, false);
canvas.drawBitmap(tempBitmap, pointInfo.getSeletedX(),
pointInfo.getSeletedY(), paint);
} else {
canvas.drawBitmap(selectedBitmap, pointInfo.getSeletedX(),
pointInfo.getSeletedY(), paint);
}
}
canvas.drawBitmap(defaultBitmap, pointInfo.getDefaultX(),
pointInfo.getDefaultY(), paint);
}
}
private class PointInfo {
// 一個點的ID
private int id;
// 當前點所指向的下一個點的ID,當沒有時為自己ID
private int nextId;
// 是否被選中
private boolean selected;
// 默認時圖片的左上角X坐標
private int defaultX;
// 默認時圖片的左上角Y坐標
private int defaultY;
// 被選中時圖片的左上角X坐標
private int seletedX;
// 被選中時圖片的左上角Y坐標
private int seletedY;
public PointInfo(int id, int defaultX, int defaultY, int seletedX,
int seletedY) {
this.id = id;
this.nextId = id;
this.defaultX = defaultX;
this.defaultY = defaultY;
this.seletedX = seletedX;
this.seletedY = seletedY;
}
public boolean isSelected() {
return selected;
}
public boolean isNotSelected() {
return !isSelected();
}
public void setSelected(boolean selected) {
this.selected = selected;
}
public int getId() {
return id;
}
public int getDefaultX() {
return defaultX;
}
public int getDefaultY() {
return defaultY;
}
public int getSeletedX() {
return seletedX;
}
public int getSeletedY() {
return seletedY;
}
public int getCenterX() {
return seletedX + selectedBitmapRadius;
}
public int getCenterY() {
return seletedY + selectedBitmapRadius;
}
public boolean hasNextId() {
return nextId != id;
}
public int getNextId() {
return nextId;
}
public void setNextId(int nextId) {
this.nextId = nextId;
}
/**
* 坐標(x,y)是否在當前點的范圍內
*
* @param x
* @param y
* @return
*/
public boolean isInMyPlace(int x, int y) {
boolean inX = x > seletedX
&& x < (seletedX + selectedBitmapDiameter);
boolean inY = y > seletedY
&& y < (seletedY + selectedBitmapDiameter);
if (inX && inY) {
return true;
} else {
return false;
}
}
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产第一页在线视频 | 91国内精品在线视频| 久久精品无码一区二区日韩av | 中文乱码字幕av网站| 在线欧美一级视频| 青青青青在线| 国产视频1区| 永久免费不卡在线观看黄网站| 天堂√中文在线| 尤物在线视频| 96精品视频| 国产综合视频一区二区三区免费| 二区三区中文字幕| 国产日产一区二区三区| av在线不卡网站| **三级三级97片毛片| 四虎网站在线观看| 国产不卡精品一区二区三区| 天堂√中文在线| 国产视频中文字幕在线观看| eeuss在线观看| 国产福利视频在线观看| 久久久久久五月天久久久久久久久| 国产精品视频一区二区久久| 免费高清视频日韩| 国产一级片在线播放| av丝袜在线| 国产精品臀控福利在线观看| 尤物视频在线观看视频| 99热在线免费播放| 免费a级毛片在线播放| 国产精品久久麻豆| 高清av中文在线字幕观看1| eeuss影院www在线播放| 国产黄视频在线观看| 中文字幕色视频| 国产在线超碰| 二区三区中文字幕| 国产在线激情视频| 福利在线观看| 九九在线免费视频| 日本三级视频网站| 欧美在线中文| 国产在线视频网站| 中文字幕不卡| 国产传媒在线播放| 91国内精品在线视频| 精品视频三区| jizz亚洲大全| 国产中文在线观看| 国产乱精品一区二区三区| 男女午夜视频在线观看| 久草网在线视频| 国产美女福利在线| 午夜不卡视频| 9999在线视频| 四虎成人免费观看在线网址| eeuss影院www在线观看| 国产在线观看色| 国产一卡二卡3卡4卡四卡在线| 日本中文字幕视频| 18 激情视频在线| 欧美日韩不卡中文字幕在线| 国产在线你懂得| 在线观看中文字幕| 国产中文字幕av| 777电影在线观看| 免费高清视频日韩| 国产精品麻豆一区二区三区| 一区二区三区四区在线免费视频| 在线观看精品一区二区三区| 热99re久久精品精品免费| 午夜av电影| 亚洲精品自产拍在线观看| 国产免费黄网站| 18成年在线观看| 国产精品一区牛牛影视| 亚洲夜夜综合| 国产精品视频一区二区三区麻豆| 亚洲综合在线免费| 国产污污在线观看| 欧美日韩在线资源| 中文av资源在线| 国产一级网站视频在线| 九九热在线视频免费观看| 国产成人精品自线拍| 久久亚洲国产成人亚| 在线观看中文字幕一区| 国产成人天天5g影院| 国产免费高清| 免费看的av| 日本片在线看| av麻豆国产| 18 激情视频在线| 国产日韩网站| 国产黄在线观看| √8天堂资源地址中文在线| 国产精品美女视频免费观看软件| 黄色毛片在线| 国产伦精品一区二区三区高清版禁| 精品av中文字幕在线毛片| 国产一级激情| 国产精品第八页| 国产va在线| 夜色资源网av在先锋网站观看| 国产jizz| 91国内精品久久久久| 精品电影在线| 亚洲成a人v欧美综合天堂麻豆| 在线观看免费观看在线91| 亚洲尤物在线视频| 欧美成人久久电影香蕉| 久青青在线观看视频国产| 久草视频国产| 国产三线在线| 2021av在线| 天天操中文字幕视频| 欧美色第一页| 国产九色视频| 在线成人一区| 国产中文字幕在线观看| 国产娇喘精品一区二区三区图片| 国产区高清在线| 午夜影院在线| 国产精品一区牛牛影视| 国产福利图片| 就爱干草视频| 国产经典三级在线| 欧美96在线| 国产成人综合亚洲欧美在| 亚洲成人电视网| 国产永久免费高清在线观看视频| 国产精品一区二区资源| 一区二区精品区| 成人超碰在线| 亚洲精品视频在线免费| 国产一级又黄| 老师我好爽再深一点的视频| 国产成在线观看免费视频| 国产中文字幕在线视频| 一区免费观看| √天堂中文在线| 日本福利在线观看| 国产福利微拍精品一区二区| 国产女王在线**视频 | 激情丁香久久| 中文字幕av在线播放| 国产69久久| 激情综合网五月激情| 日本在线免费中文字幕| 国产日韩网站| 交换国产精品视频一区| 在线观看av中文| 精品国产免费观看一区| 国产毛片视频| 免费在线看v| free性亚洲| 影音av资源站| 在线激情网站| 在线播放www| 天天艹天天操| sese在线视频| 黄色毛片在线看| 欧美色欧美亚洲另类二区精品| av文字幕在线观看| eeuss影院网站免费观看| gogogogo高清视频在线| 亚洲精品视频区| 欧洲有码在线视频| 日本不卡影院| 狠狠操视频网站| 国产免费黄视频在线观看| 中文字幕不卡免费视频| 国产高清在线a视频大全| 精品福利视频导航大全| 天天草天天爽| 久久久久久久久久久久网站| 丁香视频免费观看| 国产天堂资源| 国产高清免费在线播放| 亚洲视频在线网| 超碰免费在线观看| 国产无遮挡又黄又爽免费网站| 国产二区在线播放| 99在线免费视频| 黄色在线视频观看网站| 国产精品va在线观看视色| av在线第一页| 国产天堂在线| 久久综合精品视频| 国产污污在线观看| 人日人天天爽| 国产精品久久久高清免费| wwww亚洲| 国产福利在线免费观看| 激情亚洲综合网| 97在线超碰| 国产情侣高潮对白| 国产在线中文字幕| 99在线视频观看|