久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Android自定義控件實現方向盤效果

瀏覽:2日期:2022-09-24 17:21:45

在很多開發中,為了界面更加的友好,在自定義View的基礎上,開發者會開發出各種各樣的自定義控件來滿足實際開發需要,其中有一種”方向盤”的控件在實際開發中非常常見,便于用戶進行一些實際性的方向控制。

在復習參考了許多自定義控件的基礎上,我實現了一個最最基本的方向盤空間,并且可以根據方向做出相應的反應。話不多說,先看看效果。

做的有點丑,大家可以看看實際原理,后期再優化具體“方向盤”.

Android自定義控件實現方向盤效果

空間下面的幾行字是我為了確定方向所寫的一些參數,基本思想就是在方向盤的中心確定一個坐標軸,根據中間這個小圓的和中心點的距離與方向確定所處的方向。在手離開屏幕以后,小圓回到原點。

一言不合就放代碼~~~~

具體是怎么實現的呢??

來我們一起看看代碼,看完一目了然。

package com.sshhsun.socketudp.utils;import android.annotation.SuppressLint;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;public class MyWheel extends View implements Runnable,View.OnTouchListener { public MyWheel(Context context) { super(context); // TODO Auto-generated constructor stub } //先定義一些繪圖要用的基本參數 public static final int BOTTOM = 7; public static final int BOTTOM_LEFT = 8; public static final long DEFAULT_LOOP_INTERVAL = 100L; public static final int FRONT = 3; public static final int FRONT_RIGHT = 4; public static final int LEFT = 1; public static final int LEFT_FRONT = 2; public static final int RIGHT = 5; public static final int RIGHT_BOTTOM = 6; private final double RAD = 57.295779500000002D; private Paint button; private int buttonRadius; public double centerX = 0.0D; public double centerY = 0.0D; private Paint horizontalLine; private int joystickRadius; private int lastAngle = 0; private int lastPower = 0; private long loopInterval = 100L; private Paint mainCircle; //整個控件的大圓,及小紅點的活動范圍 //自定義的接口用于監聽處理控件的觸摸事件 private OnMyWheelMoveListener onmywheelMoveListener; private Paint secondaryCircle;//第二個內圓,小紅圓超過后開始處理角度 private Thread thread = new Thread(this); private Paint verticalLine; private int xPosition = 0; private int yPosition = 0; private static final String tag='MyWheel'; public MyWheel(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); initMyWheel(); //好吧,我知道MyWheel這個名字有點太隨便了........ } public MyWheel(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); initMyWheel(); } //根據所處的位置得到角度 private int getAngle() { if (this.xPosition > this.centerX) { if (this.yPosition < this.centerY) {int m = (int) (90.0D + 57.295779500000002D * Math .atan((this.yPosition - this.centerY)/ (this.xPosition - this.centerX)));this.lastAngle = m;return m; } if (this.yPosition > this.centerY) {int k = 90 + (int) (57.295779500000002D * Math .atan((this.yPosition - this.centerY)/ (this.xPosition - this.centerX)));this.lastAngle = k;return k; } this.lastAngle = 90; return 90; } if (this.xPosition < this.centerX) { if (this.yPosition < this.centerY) {int j = (int) (57.295779500000002D * Math .atan((this.yPosition - this.centerY)/ (this.xPosition - this.centerX)) - 90.0D);this.lastAngle = j;return j; } if (this.yPosition > this.centerY) {int i = -90 + (int) (57.295779500000002D * Math.atan((this.yPosition - this.centerY) / (this.xPosition - this.centerX)));this.lastAngle = i;return i; } this.lastAngle = -90; return -90; } if (this.yPosition <= this.centerY) { this.lastAngle = 0; return 0; } if (this.lastAngle < 0) { this.lastAngle = -180; return -180; } this.lastAngle = 180; return 180; } //根據紅色圓的距離和角度得到方向 private int getDirection() { int k; int j = 0; int i; if ((this.lastPower == 0) && (this.lastAngle == 0)) { k = 0; return k; } if (this.lastAngle <= 0) j = 90 + -1 * this.lastAngle; while (true) { k = 1 + (j + 22) / 45; if (k <= 8) {break; } if (this.lastAngle <= 90) {j = 90 - this.lastAngle;continue; } j = 360 - (-90 + this.lastAngle); } return k; } //得到紅色圓與中心的距離 private int getPower() { return (this.lastPower=(int) (100.0D * Math.sqrt((this.xPosition - this.centerX)* (this.xPosition - this.centerX)+ (this.yPosition - this.centerY)* (this.yPosition - this.centerY)) / this.joystickRadius)); } private int measure(int paramInt) { int i = View.MeasureSpec.getMode(paramInt); int j = View.MeasureSpec.getSize(paramInt); if (i == 0) return 200; return j; } //初始化一些基本參數 protected void initMyWheel() { this.mainCircle = new Paint(1); this.mainCircle.setColor(Color.BLUE); this.mainCircle.setStrokeWidth(3.0f); this.mainCircle.setStyle(Paint.Style.STROKE); this.secondaryCircle = new Paint(); this.secondaryCircle.setColor(-16711936); this.secondaryCircle.setStrokeWidth(3.0f); this.secondaryCircle.setStyle(Paint.Style.STROKE); this.verticalLine = new Paint(); this.verticalLine.setStrokeWidth(5.0F); this.verticalLine.setColor(-65536); this.horizontalLine = new Paint(); this.horizontalLine.setStrokeWidth(2.0F); this.horizontalLine.setColor(-16777216); this.button = new Paint(1); this.button.setColor(Color.RED); this.button.setStyle(Paint.Style.FILL); } //初始化以后繪制方向盤。 protected void onDraw(Canvas paramCanvas) { this.centerX = (getWidth() / 2); this.centerY = (getHeight() / 2); paramCanvas.drawCircle((int) this.centerX, (int) this.centerY,this.joystickRadius, this.mainCircle); paramCanvas.drawCircle((int) this.centerX, (int) this.centerY,this.joystickRadius / 2, this.secondaryCircle); paramCanvas.drawLine((float) this.centerX, (float) this.centerY, (float) this.centerX, (float) (this.centerY - this.joystickRadius), this.verticalLine); paramCanvas.drawLine((float) (this.centerX - this.joystickRadius),(float) this.centerY,(float) (this.centerX + this.joystickRadius),(float) this.centerY, this.horizontalLine); paramCanvas.drawLine((float) this.centerX, (float) (this.centerY + this.joystickRadius), (float) this.centerX, (float) this.centerY, this.horizontalLine); paramCanvas.drawCircle(this.xPosition, this.yPosition,this.buttonRadius, this.button); } protected void onFinishInflate() { } protected void onMeasure(int paramInt1, int paramInt2) { int i = Math.min(measure(paramInt1), measure(paramInt2)); setMeasuredDimension(i, i); } protected void onSizeChanged(int paramInt1, int paramInt2, int paramInt3, int paramInt4) { super.onSizeChanged(paramInt1, paramInt2, paramInt3, paramInt4); this.xPosition = (getWidth() / 2); this.yPosition = (getWidth() / 2); int i = Math.min(paramInt1, paramInt2); this.buttonRadius = (int) (0.20D * (i / 2)); this.joystickRadius = (int) (0.75D * (i / 2)); } @Override public boolean onTouchEvent(MotionEvent paramMotionEvent) { //根據手觸碰的坐標決定紅色小圓的位置 this.xPosition = (int) paramMotionEvent.getX(); this.yPosition = (int) paramMotionEvent.getY(); double d = Math.sqrt((this.xPosition - this.centerX)* (this.xPosition - this.centerX)+ (this.yPosition - this.centerY)* (this.yPosition - this.centerY)); if (d > this.joystickRadius) { this.xPosition = (int) ((this.xPosition - this.centerX) * this.joystickRadius / d + this.centerX); this.yPosition = (int) ((this.yPosition - this.centerY) * this.joystickRadius / d + this.centerY); } invalidate();//再重新繪制 if (paramMotionEvent.getAction() == 1) { this.xPosition = (int) this.centerX; this.yPosition = (int) this.centerY; this.thread.interrupt(); if (this.onmywheelMoveListener != null)this.onmywheelMoveListener.onValueChanged(getAngle(), getPower()); } if ((this.onmywheelMoveListener != null)&& (paramMotionEvent.getAction() == 0)) { if ((this.thread != null) && (this.thread.isAlive()))this.thread.interrupt(); this.thread = new Thread(this); this.thread.start(); if (this.onmywheelMoveListener != null)//自定義接口處理觸摸事件this.onmywheelMoveListener.onValueChanged(getAngle(), getPower()); } return true; } @Override public void run() { while (true) { if (Thread.interrupted())return; post(new Runnable() {public void run() {// Log.e(tag, '運行在'+Thread.currentThread().getName()+'線程中'); if (MyWheel.this.onmywheelMoveListener != null) MyWheel.this.onmywheelMoveListener.onValueChanged(MyWheel.this.getAngle(),MyWheel.this.getPower());} }); try {Thread.sleep(this.loopInterval); } catch (InterruptedException localInterruptedException) { } } } public void setOnMyWheelMoveListener( OnMyWheelMoveListener paramOnJoystickMoveListener, long paramLong) { this.onmywheelMoveListener = paramOnJoystickMoveListener; this.loopInterval = paramLong; } public static abstract interface OnMyWheelMoveListener { public abstract void onValueChanged(int paramInt1, int paramInt2); } @SuppressLint('ClickableViewAccessibility') @Override public boolean onTouch(View v, MotionEvent event) { /*處理這個控件的觸摸事件*/ return true; }}

怎么用?下面我給出我的調用實例進行講解

首先在XML文件中應用。

<LinearLayout xmlns:android='http://schemas.android.com/apk/res/android' android:layout_width='match_parent' android:layout_height='match_parent' android:gravity='center' android:orientation='vertical' > <LinearLayout android:layout_width='wrap_content' android:layout_height='wrap_content' android:orientation='horizontal' > <Button android: android:layout_width='0dp' android:layout_height='wrap_content' android:layout_weight='1' android:text='蹲下' /> <Button android: android:layout_width='0dp' android:layout_height='wrap_content' android:layout_weight='1' android:text='站立' /> <Button android: android:layout_width='0dp' android:layout_height='wrap_content' android:layout_weight='1' android:text='準備' /> <Button android: android:layout_width='0dp' android:layout_height='wrap_content' android:layout_weight='1' android:text='坐下' /> <Button android: android:layout_width='0dp' android:layout_height='wrap_content' android:layout_weight='1' android:text='零態' /> </LinearLayout> <com.sshhsun.socketudp.utils.MyWheel android: android:layout_width='wrap_content' android:layout_height='wrap_content' /> <TextView android: android:layout_width='wrap_content' android:layout_height='wrap_content' android:text='這是簡單控制界面' /> <LinearLayout android:layout_width='wrap_content' android:layout_height='wrap_content' android:orientation='vertical' > <SeekBar android: android:layout_width='match_parent' android:layout_height='wrap_content' android:minHeight='3dp' android:minWidth='260dp' android:progress='100' /> </LinearLayout></LinearLayout>

在一個Fragment中引用實例并處理相應監聽事件。

package com.sshhsun.socketudp.fragment;import android.content.Context;import android.os.Bundle;import android.os.Vibrator;import android.support.v4.app.Fragment;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.webkit.WebView.FindListener;import android.widget.Button;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;import android.widget.Toast;import com.sshhsun.socketudp.R;import com.sshhsun.socketudp.activity.constant.Constant;import com.sshhsun.socketudp.utils.MyWheel;import com.sshhsun.socketudp.utils.MyWheel.OnMyWheelMoveListener;import com.sshhsun.socketudp.utils.UDPUtil;public class SimpleFragment extends Fragment implements View.OnClickListener { private MyWheel mtwheel; private TextView notice; private TextView show; private String direction = 'none'; private SeekBar seekbar; private static final String tag = 'SimpleFragment'; Vibrator vibator; private Context context = getActivity(); private boolean isturn = false; private Button stand; private Button sit; private Button standinit; private Button rest; private Button standzero; private UDPUtil udpUtil; private boolean issend = false; private boolean isstop = true; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return initView(inflater, container, savedInstanceState); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); initData(); initListener(); } public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_simple, null); //我的方向盤控件mtwheel mtwheel = (MyWheel) view.findViewById(R.id.mywheel); //控件下面的提示信息notice,其他控件大家可以忽略. notice = (TextView) view.findViewById(R.id.notice); seekbar = (SeekBar) view.findViewById(R.id.turns); seekbar.setProgress(50); stand = (Button) view.findViewById(R.id.simple_stand); sit = (Button) view.findViewById(R.id.simple_sit); standinit = (Button) view.findViewById(R.id.simple_standinit); rest = (Button) view.findViewById(R.id.simple_rest); standzero = (Button) view.findViewById(R.id.simple_standzero); return view; } public void initListener() { sit.setOnClickListener(this); standinit.setOnClickListener(this); rest.setOnClickListener(this); standzero.setOnClickListener(this); stand.setOnClickListener(this); //下面的監聽器代碼最為重要!!!!?。。?! mtwheel.setOnMyWheelMoveListener(new OnMyWheelMoveListener() { @Override // paramInt1:角度 // paramInt2:距離 根據這兩個參數可以算出方向盤的方位 public void onValueChanged(int paramInt1, int paramInt2) {boolean isdistance = false;if (paramInt2 >= 50) { isdistance = true; int temp = Math.abs(paramInt1); if (paramInt1 >= 0) { if (temp > 50 && temp < 120) { direction = 'right'; if (!issend) {udpUtil.UdpSend(direction, Constant.port);issend = true;isstop = false; } } else if (temp < 40) { direction = 'forward'; if (!issend) {udpUtil.UdpSend(direction, Constant.port);issend = true;isstop = false; } } else if (temp > 140) { direction = 'back'; if (!issend) {udpUtil.UdpSend(direction, Constant.port);issend = true;isstop = false; } } else { direction = '指向不明確'; issend = false; } } else { if (temp > 50 && temp < 120) { direction = 'left'; if (!issend) {udpUtil.UdpSend(direction, Constant.port);issend = true;isstop = false; } } else if (temp < 40) { direction = 'forward'; if (!issend) {udpUtil.UdpSend(direction, Constant.port);issend = true;isstop = false; } } else if (temp > 140) { direction = 'back'; if (!issend) {udpUtil.UdpSend(direction, Constant.port);issend = true;isstop = false; } } else { direction = '指向不明確'; issend = false; } }} else { isdistance = false; direction = 'stop'; issend = false;}notice.setText(' getAngle:' + paramInt1 + 'n' + ' getPower:' + paramInt2 + 'n' + 'direction:' + direction);if (direction.equals('stop') && (!isstop)) { udpUtil.UdpSend(direction, Constant.port); isstop = true;} } }, 100L); seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) {seekbar.setProgress(50);isturn = false;String command = 'stop';udpUtil.UdpSend(command, Constant.port); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {int cucrrent = seekbar.getProgress();String command = 'hello';if (cucrrent < 20) { Toast.makeText(getActivity(), 'onProgressChanged' + '左轉', 0) .show(); if (!isturn) { Log.e(tag, 'onProgressChanged' + '左轉'); command = 'turnleft'; udpUtil.UdpSend(command, Constant.port); vibator.vibrate(100); isturn = true; }} else if (cucrrent > 80) { Toast.makeText(getActivity(), 'onProgressChanged' + '右轉', 0) .show(); if (!isturn) { Log.e(tag, 'onProgressChanged' + '右轉'); command = 'turnright'; udpUtil.UdpSend(command, Constant.port); vibator.vibrate(100); isturn = true; }} } }); } public void initData() { udpUtil = new UDPUtil(Constant.Address); vibator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE); Thread.currentThread().setName(tag); } public void processClick(View v) { String command = 'hello'; switch (v.getId()) { case R.id.simple_rest: command = 'rest'; break; case R.id.simple_sit: command = 'sit'; break; case R.id.simple_stand: command = 'stand'; break; case R.id.simple_standinit: command = 'standinit'; break; case R.id.simple_standzero: command = 'standzero'; break; default: break; } udpUtil.UdpSend(command, Constant.port); } @Override public void onClick(View v) { processClick(v); } @Override public void onDestroy() { super.onDestroy(); vibator.cancel(); } // @Override // public boolean onTouch(View v, MotionEvent event) { // if (v.getId() == R.id.turns) { // String notice = ''; // switch (event.getAction()) { // case MotionEvent.ACTION_DOWN: // notice = 'ACTION_DOWN'+event.getX(); // int process=(int) Math.floor(event.getX()+0.5); // seekbar.setProgress(process); // break; // case MotionEvent.ACTION_UP: // notice = 'ACTION_UP'; // break; // case MotionEvent.ACTION_CANCEL: // notice = 'ACTION_CANCEL'; // break; // default: // break; // } // if (!TextUtils.isEmpty(notice)) { // Toast.makeText(getActivity(), notice, 0).show(); // } // } // return true; // }}

聲明一下:

1.上面的控件代碼(第一部分代碼)可以實際使用 2.第二部分代碼演示了控件的使用與處理 3.關于控件的實現原理和思想在代碼與注釋中已經詳細標記

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Android
相關文章:
主站蜘蛛池模板: 欧美精品一区二区视频 | 欧美视频在线观看一区 | 久久夜视频 | 国产高清不卡 | 日本在线观看视频网站 | 黄网在线观看 | 黄色影片网址 | 成人福利av| 国产精品精品 | 亚洲xxxx3d | 亚洲综合网站 | 欧美一区二区视频 | 亚洲欧美网址 | 精品在线一区二区三区 | 久久精品免费观看 | 91麻豆精品国产91久久久资源速度 | 亚洲一区二区三区四区五区中文 | 国产精精品| www.欧美.com | 欧美日韩成人在线播放 | 亚洲97| 久久久久亚洲精品国产 | 日韩一区二区久久 | 中文在线资源 | 99久久久成人国产精品 | 成年免费观看 | 色天天综合久久久久综合片 | 欧美一区二区免费 | 中文字幕在线观看第一页 | 国产99久久久久久免费看农村 | 亚洲欧洲一区二区三区 | 国产精品自产拍在线观看桃花 | 亚洲一区二区三区欧美 | 欧美日本韩国一区二区 | av片免费 | 亚洲精品资源在线观看 | 婷婷亚洲五月 | 成人精品一区二区三区中文字幕 | 99福利视频| 亚洲 欧美 精品 | 国产精品久久久久久吹潮 | 一级片免费视频 | 精品国产不卡一区二区三区 | 久久免费视频网 | 91精品国产91久久久久久最新 | 国产最好的av国产大片 | 午夜精品 | 日比视频网站 | 欧美综合一区 | 成年人网站国产 | 国产女人爽到高潮免费视频 | 亚洲视频一区二区三区 | 日韩精品小视频 | 国偷自产av一区二区三区 | 欧美一区二区伦理片 | 日韩福利| 一呦二呦三呦国产精品 | 一本久久a久久精品亚洲 | 99中文字幕| 久久久国产精品入口麻豆 | 色乱码一区二区三区网站 | 欧美成人久久 | 日韩av免费| 久色 | 久久精品在线观看视频 | 97色婷婷成人综合在线观看 | 偷偷干夜夜拍 | 久久婷婷色 | 久久天堂电影 | 天天天操 | 午夜视频在线 | 日本a v网站 | 日韩精品在线观看视频 | 日韩欧美一区二区三区久久婷婷 | 亚洲国产视频一区 | 欧美色图亚洲自拍 | 日本免费视频 | 激情欧美一区二区三区中文字幕 | 九色在线 | 男女视频网站 | 国产精品久久久久久久午夜 | 中文字幕在线观看www | www国产在线观看 | 日韩精品视频在线 | 天堂一区| 1204国产成人精品视频 | 欧美日韩六区 | 国产精选一区二区三区不卡催乳 | 一级片视频免费 | 亚洲精品久久久一区二区三区 | 国产精品成人一区二区 | 国产精品乱码一二三区的特点 | 成人精品视频 | 欧美激情一区二区三区四区 | 每日更新亚洲 | 日日鲁鲁 | 欧美精品1区 | 久久久久久久久久久久国产精品 | 成人免费视频网址 | 国产色99精品9i | 在线观看国产 | 欧美精品网站 | 国产综合在线视频 | 午夜精品一区二区三区免费视频 | 精品久久久久久久久久久 | 欧美国产一区二区 | 国产视频亚洲精品 | 99久久久久久 | 蜜桃久久av| 欧美日韩综合视频 | 亚洲理论电影在线观看 | 奇米色欧美一区二区三区 | 成人精品一区 | 一区二区观看 | 天堂综合网 | 中文久久 | 狠狠草视频 | 久久久中文字幕 | 欧美日韩一区二区中文字幕 | 国产精品久久影院 | 男女中文字幕 | 日韩一区二区在线观看 | 青青草精品 | 韩日在线观看视频 | 午夜成人在线视频 | 国产精品久久久久久吹潮 | 亚洲欧美日韩精品久久亚洲区 | 久久中文字幕一区二区三区 | 黄色的视频免费 | 黄色影视在线免费观看 | 国产无区一区二区三麻豆 | 日韩精品一区二区三区在线观看 | 亚洲精品成人无限看 | 91精品国产综合久久久久久 | 亚洲高清av在线 | 亚洲精品视频在线 | 美女一区二区三区在线观看 | 91视频免费看 | 国产丝袜在线 | 国产精品久久久久久久久久久久久久 | 久久精品视 | 狠狠狠| 亚洲国产免费 | 美女毛片| 国产精品国产 | 亚洲精品视频在线观看网站 | 国产精品99久久 | 99久久夜色精品国产亚洲1000部 | 久久国产亚洲精品 | 欧美电影一区二区三区 | 看亚洲a级一级毛片 | 中文字幕一区二区三区四区五区 | 一级大毛片 | 一级黄片毛片 | 亚洲一区中文字幕永久在线 | av男人天堂网 | 国产精品96久久久久久久 | 欧美一级黄色片 | 一区二区在线视频免费观看 | 久久久精品视频免费观看 | 美女视频一区 | 日韩精品影院 | www日韩| 黄视频在线播放 | 国产成人精品免高潮在线观看 | 一区二区三区av | 视频一区二区中文字幕 | 伊人一二三区 | 色就是色欧美 | 国产一二三四在线 | 精品中文在线 | 国产亚洲一区二区三区在线观看 | 九九国产 | 中文字幕成人免费视频 | www亚洲成人| 成人欧美一区二区三区色青冈 | concern超碰在线 | 91中文字幕网 | 亚洲最大免费视频 | 在线二区 | 黄色国产一级视频 | 国产亚洲精品美女久久久久久久久久 | 国产一区二区精品久久岳 | a级在线观看 | 久久久久久久久久久久久av | 亚洲高清不卡视频 | 91精品国产一区二区 | 国产伦精品一区二区三区四区视频 | 在线观看91 | 国产精品久久在线观看 | 国产精品久久久久久一区二区三区 | 91嫩草在线 | 韩国精品视频在线观看 | 黄色一级大片视频 | 操操操日日日 | 国产日韩一区二区三免费高清 | 91麻豆精品国产91久久久久久 | 欧美日韩精品在线 | 在线看成人片 | 欧洲尺码日本国产精品 | 亚洲电影中文字幕 | 伊人伊人伊人 | 真人女人一级毛片免费播放 | 欧美综合视频 | 亚洲国产一区二区三区四区 | 五月婷婷导航 | 日韩精品 | 特黄特黄视频 | 亚洲精品一区二区三区在线 | 午夜国产在线 | 日韩成人av在线 | 国产精品久久久99 | 91香蕉| 日韩欧美网址 | 91爱啪啪| 黄p在线看 | 久久99久久99精品免视看婷婷 | 日本特黄特色aaa大片免费 | 少妇淫片aaaaa毛片叫床爽 | 成人精品视频在线 | 日本一区二区成人 | 国产精品久久一区二区三区 | 九九爱爱视频 | 成人欧美一区二区三区在线播放 | 久草色视频在线观看 | 日本三级国产 | 天天草av| 亚洲永久免费 | 久久精品国产91精品亚洲高清 | 国产一区精品视频 | 国产精品久久久久久久久费观看 | 精品一区免费 | 日韩成人精品视频在线观看 | 中文字幕一二三 | 日韩色区 | 日韩另类 | 精品一区二区三区四区视频 | 中字一区 | 精久久| 日韩爽妇网 | 国内自拍第一页 | 五月婷婷色 | 男女激情网址 | 综合亚洲精品 | 国产视频综合在线 | 美女在线国产 | 欧美一区二区三区爽大粗免费 | 欧美一级精品片在线看 | 玖草在线视频 | 欧美lesbianxxxxhd视频社区 | 久久久久久久av | 超碰激情 | 色婷婷一区二区三区四区 | 999免费视频 | 成人二区 | 国产成人精品亚洲777人妖 | 激情国产 | 久久久久久久国产精品 | 91精品久久久久久9s密挑 | 日本欧美在线观看 | 中文字幕视频在线 | 欧美日韩精品久久久 | 欧美一区二区三区四区不卡 | 亚洲一区二区三区免费 | 色欧美片视频在线观看 | 国产农村妇女精品久久 | 人人看人人插 | 亚洲骚片 | 日韩中文视频 | 91久久久久久久久 | 国产亚洲精品久久久久动 | 黄色毛片视频网站 | 伊人青青久| 99精品一级欧美片免费播放 | 99国产精品久久久久久久久久 | 欧美激情在线观看 | 天天看天天操 | 国产精品色婷婷亚洲综合看 | 日韩一区电影 | 午夜大片网| 6080yy午夜一二三区久久 | 日韩在线视频资源 | av在线播放免费 | 欧美视频第一页 | 在线观看亚洲视频 | 久久国产欧美日韩精品 | 在线播放亚洲 | 一级黄色片欧美 | 久久爱9191 | 欧美亚洲国产一区 | 中文字幕日韩一区 | 日本天天色 | 99热欧美| 国产成人亚洲综合 | 欧洲精品乱码久久久久蜜桃 | 伊人色综合久久久天天蜜桃 | 午夜国产精品视频 | 最新高清无码专区 | 深夜福利亚洲 | 中文久久 | 人妖一区 | 日韩在线免费电影 | 亚洲视频一区在线 | 精品视频在线免费 | 97超碰人人 | 亚洲艹| 国产精品日本欧美一区二区三区 | 国产精品久久久久久久9999 | 欧美日一区二区 | 在线二区| h片在线看| 亚洲欧美日韩在线 | 国产精品久久久久久久久久免费 | 国产日韩一区 | 日本美女一区二区三区 | 久久99精品国产自在现线 | 亚洲国产精品第一区二区 | 欧洲免费av | 成人一区二区三区久久精品嫩草 | 一级黄色毛片免费 | 综合一区 | 欧洲成人在线 | 国产一区二区在线播放 | 日韩专区一区二区三区 | 毛片网络 | 国产小视频在线观看 | 日韩一本| www.麻豆av| 国产精品成人国产乱一区 | 久久精品美女 | 欧洲成人一区 | 久草网在线视频 | 天天看天天摸天天操 | 欧美一区二区三区 | 亚洲精品不卡 | 久久二| 中文字幕日韩欧美 | 国产一区二区在线观看视频 | 狠狠操狠狠操 | 亚洲免费视频在线观看 | 成人av在线网 | 亚洲一区二区伦理 | 91xxx在线观看 | 国产精品99久久 | 亚洲视频在线播放 | 久久久久久国产精品 | 91精品国产91久久久久久蜜臀 | 在线观看亚洲免费 | 久久亚洲精品裙底抄底 | 亚洲精品久久久久久下一站 | 国产午夜精品久久 | 欧美视频在线免费 | 成人免费观看49www在线观看 | 欧洲视频一区二区三区 | 日韩成人一区二区 | 欧美一级在线 | 午夜精品福利一区二区三区蜜桃 | 亚州中文字幕蜜桃视频 | 久久99深爱久久99精品 | 四虎av在线 | 国产免费观看一区二区三区 | 中文精品在线 | 国内精品久久久久久影视8 91一区二区在线观看 | 中文字幕在线视频免费播放 | 国产欧美一区二区视频 | 久久夜精| 亚洲aⅴ网站 | 亚洲xxxx3d| 欧美性一区二区三区 | 国产精品日韩专区 | 成人在线观看免费视频 | 久久综合激情 | 精品国产一区二区三区久久久蜜 | 国产a久久精品一区二区三区 | 一区二区三区国产 | 91污在线 | 国产成人午夜 | 米奇成人网 | 99精品在线 | 激情综合五月 | 黄网站免费在线观看 | 色www精品视频在线观看 | 精品欧美日韩 | 不卡一区二区三区视频 | 天堂亚洲 | 看毛片软件 | 久久久久久久久久久免费视频 | 99国产精品99久久久久久 | 一区二区三区免费视频网站 | 99热国产精品| 国产免费看 | 一区二区免费视频 | 尤物视频在线观看 | 黄视频免费在线 | 91久久国产综合久久 | 欧美日韩精品综合 | 99re视频在线播放 | 中文字幕在线免费 | 日韩av电影在线免费观看 | 日韩视频一区二区三区四区 | 91精品久久久久久久久中文字幕 | 91精品国产一区二区三区香蕉 | 久热精品视频 | av一区二区三区 | 日韩欧美在线观看一区二区三区 | 韩国毛片在线观看 | 三级黄色片在线观看 | 91久久艹 | 免费日本视频 | 欧美日韩国产综合在线 | 天天看片天天干 | 青青草91在线视频 | 日韩激情网 | 国产精品成人国产乱一区 | 亚洲久久一区 | √天堂在线 | 久久久久国产精品午夜一区 | 99爱视频 | 欧美成人免费观看 | 91观看| 国产一区日韩欧美 | av网站观看| 一区二区三区影院 | 一区二区三区在线免费观看 | 97国产在线视频 | 欧美a级成人淫片免费看 | 嫩草影院在线观看91麻豆 | 色婷婷av久久久久久久 | 亚洲国产成人在线 | 日韩一区二区在线视频 | 亚洲一区中文字幕 | 久久久久亚洲av毛片大全 | 一级特黄毛片 | 日韩免费福利视频 | 日韩精品日韩激情日韩综合 | 国产高清在线精品一区二区三区 | 国产成人综合网 | 日本精品一区二区三区在线观看视频 | 久久免费国产精品 | 亚洲国产成人一区二区精品区 | 在线国产专区 | www.99热这里只有精品 | 97成人在线 | 精品免费久久 | 亚洲欧美激情在线 | 在线精品国产 | 成人中文字幕在线 | 欧美激情国产日韩精品一区18 | 国产精品免费视频一区 | 一区二区三区国产精品 | 国产九九九 | 亚洲一区不卡在线 | 国产成人综合一区二区三区 | 在线精品亚洲欧美日韩国产 | 国产激情在线观看 | 国产精品久久久久久久久久久久久久 | 国产高清一区二区 | 黄色欧美视频 | 亚洲一区二区三 | 日韩欧美国产一区二区 | 精品国产乱码久久久久久1区2区 | 国产欧美日韩精品一区二区三区 | 亚洲一区二区三区日韩 | 精品永久免费 | 91久久精品国产亚洲a∨麻豆 | 日韩视频在线观看中文字幕 | 日韩草比 | 日韩国产一区二区 | 久久精品| 在线视频成人 | 欧美日韩国产一区二区三区不卡 | 天天做天天看 | 亚洲精品一区二区三区在线 | 九九热这里 | 欧美一级成人欧美性视频播放 | 超级乱淫片国语对白免费视频 | 在线免费观看毛片 | 羞羞视频在线免费 | 国产精品免费久久 | 中文字幕精品一区 | 久草在线免费福利资源 | 成年人视频在线观看免费 | 国产成人精品一区二区三区四区 | 午夜亚洲 | 日本毛片视频 | 国产91九色 | 精品亚洲一区二区 | 亚州中文字幕 | 国产三级视频 | 91免费在线播放 | 草草久久久 | 在线日本中文字幕 | 国产高清美女一级a毛片久久 | 欧美一区二区三区在线 | 成人在线播放 | 亚洲一区中文字幕在线观看 | 亚洲精品免费视频 | 一区二区三区福利视频 | 国产乱码精品一区二区三区忘忧草 | 中文在线播放 | 国产成人视屏 | 精品视频99 | 色婷婷亚洲一区二区三区 | 羞羞视频免费看 | 国产96在线视频 | 一区二区三区四区免费观看 | 国产成人午夜视频 | 国产高清一二三区 | 久久久久久成人 | 国产干干干 | 二区在线视频 | 亚洲欧美日韩国产综合精品二区 | a一级片在线观看 | 黄在线看| 视频精品一区 | 在线视频二区 | 欧美区国产 | 久久久久一区二区三区 | 91精品入口蜜桃 | 国产成人一区 | 精品美女久久久 | 欧美日韩精品在线一区 | 国产成人在线视频 | 精品国产一区二区 | 久草视频在线播放 | 久久精品无码一区二区日韩av | 国产传媒毛片精品视频第一次 | 亚洲人成人一区二区在线观看 | 亚洲一区二区三区视频 | 天堂中文资源在线 | 久久二 | 欧美一级片免费观看 | 综合视频一区二区三区 | 伊人一区| 国产综合久久 | 精品视频一区二区三区 | 欧洲成人午夜免费大片 | 99精品欧美一区二区三区 | 亚洲精品久久久久一区二区三区 | 国产福利91精品 | 免费高清一级毛片 | 国产精品第一 | porn一区| 在线成人av观看 | 国产精品福利91 | 国产97久久 | 久久久久久久久久久久久久久久久久久 | 男人的天堂在线视频 | 日本一区二区高清不卡 | 国产成人精品综合 | 天天天干夜夜夜操 | 成人亚州 | 精品国产91久久久久久久 | 国产午夜精品久久 | 亚洲成人精品一区 | 欧美视频第一页 | 亚洲人成网亚洲欧洲无码 | 精品毛片 | 热re99久久精品国99热线看 | 国产一区二区免费视频 | 国产精品无码永久免费888 | 2020国产在线 | 黑色丝袜脚足j国产在线看68 | 91夜夜| 一区二区三区有限公司 | 久久久免费观看 | 精品第一页 | 日韩美香港a一级毛片免费 国产综合av | 91porn在线| 午夜视频在线观看网站 | 国产精品一区二区三区四区 | 成人一级片视频 | 欧美亚洲日本 | 中文字幕日韩专区 | 成人免费视频网址 | 国产一区二区三区免费 | 欧美激情视频一区二区三区在线播放 | 国产一区二区视频在线 | 日韩在线不卡 | 国产精品美女久久 | 欧美日韩精品一二区 | 日本在线观看视频一区 | www.日韩在线视频 | 日日爱影视 | 欧美成在线观看 | 欧美专区中文字幕 | 精品1区2区 | 久久久蜜桃 | 国产一区二区视频在线 | 国产精品久久久久久久午夜 | 国产精品久久精品 | 国产高清一区二区 | 精品国产一区二区三区小蝌蚪 | www.久久精品| 在线观看一区二区三区四区 | 在线免费观看毛片 | av av在线| 99久久99 | 精品亚洲一区二区三区 | 久久国产经典视频 | 91在线视频 | 国产精品一区一区 | 国产一区二区三区不卡在线观看 | 91观看| 国产九九精品视频 | 中文一区 | 久久一区 | 色av综合在线 | 另类亚洲专区 | 四季久久免费一区二区三区四区 | 亚洲精品网址 | 激情欧美日韩一区二区 | 懂色av色香蕉一区二区蜜桃 | 国产精品久久久久久久久久99 | 欧美成人免费视频 |