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

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

Android 仿微信小程序入口動畫

瀏覽:161日期:2022-06-03 16:35:17
目錄效果對比流程分析自定義ViewGroup小程序縮放比例值計算動畫遮罩MainActivity效果對比

微信原版

Android 仿微信小程序入口動畫

仿照效果

Android 仿微信小程序入口動畫

流程分析自定義ViewGroup

整個布局是通過自定義ViewGroup來管理的,在自定義ViewGroup中,子布局一共有兩個,一個是小程序布局,一個是會話列表布局,然后按照上下分別擺放就可以了。

Android 仿微信小程序入口動畫

package com.example.kotlindemo.widget.weixinimport android.content.Contextimport android.content.res.Resourcesimport android.util.AttributeSetimport android.util.Logimport android.view.MotionEventimport android.view.Viewimport android.view.ViewGroupimport androidx.core.view.ViewCompatimport androidx.customview.widget.ViewDragHelperimport com.example.kotlindemo.Rimport java.math.BigDecimalclass WeiXinMainPullViewGroup @JvmOverloads constructor( context: Context?, attrs: AttributeSet? = null, defStyleAttr: Int = 0) : ViewGroup(context, attrs, defStyleAttr) { public var viewDragHelper: ViewDragHelper = ViewDragHelper.create(this, 0.5f, DragHandler()); var headerMaskView: WeiXinPullHeaderMaskView? = null var isOpen: Boolean = false; val NAVIGAATION_HEIGHT = 100 init { } override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {for (index in 0 until childCount) { if (getChildAt(index) != headerMaskView) {getChildAt(index).layout(l, paddingTop, r, b) }} } override fun computeScroll() {if (viewDragHelper.continueSettling(true)) { ViewCompat.postInvalidateOnAnimation(this);} } override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {Log.i('TAG', 'onInterceptTouchEvent: ${ev.action}')MotionEvent.ACTION_MOVEreturn true } override fun onTouchEvent(event: MotionEvent): Boolean {viewDragHelper.processTouchEvent(event)return true } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {super.onMeasure(widthMeasureSpec, heightMeasureSpec)measureChildren(widthMeasureSpec, heightMeasureSpec) } fun createMaskView() {if (headerMaskView == null) { headerMaskView = WeiXinPullHeaderMaskView(context, null, 0) addView(headerMaskView)} } inner class DragHandler : ViewDragHelper.Callback() {override fun tryCaptureView(child: View, pointerId: Int): Boolean { return child is WeiXinMainLayout;}override fun onViewDragStateChanged(state: Int) { super.onViewDragStateChanged(state)}/** * 設置進度,設置遮罩layout */override fun onViewPositionChanged( changedView: View, left: Int, top: Int, dx: Int, dy: Int) { createMaskView(); var programView = getChildAt(0) var divide = BigDecimal(top.toString()).divide(BigDecimal(measuredHeight - NAVIGAATION_HEIGHT),4,BigDecimal.ROUND_HALF_UP ) divide = divide.multiply(BigDecimal('100')) divide = divide.multiply(BigDecimal('0.002')) divide = divide.add(BigDecimal('0.8')) if (!isOpen) {programView.scaleX = divide.toFloat()programView.scaleY = divide.toFloat() } else {programView.top = paddingTop + (-((measuredHeight - NAVIGAATION_HEIGHT) - top)) } headerMaskView!!.maxHeight = measuredHeight / 3 headerMaskView!!.layout(0, paddingTop, measuredWidth, top) headerMaskView!!.setProgress(top.toFloat() / ((measuredHeight - (NAVIGAATION_HEIGHT + paddingTop)) / 3) * 100,measuredHeight - (NAVIGAATION_HEIGHT + paddingTop) ) if (top == paddingTop) {isOpen = false } if (top == measuredHeight - NAVIGAATION_HEIGHT) {isOpen = true }}override fun onViewCaptured(capturedChild: View, activePointerId: Int) { super.onViewCaptured(capturedChild, activePointerId) var programView = getChildAt(0) programView.top = paddingTop;}/** * 釋放 */override fun onViewReleased(releasedChild: View, xvel: Float, yvel: Float) { /** * 如果已經打開或者釋放后小于屏幕三分之一,回到原位 */ if (isOpen or (releasedChild.top + paddingTop <= measuredHeight / 3)) {viewDragHelper.smoothSlideViewTo(releasedChild, 0, paddingTop);ViewCompat.postInvalidateOnAnimation(this@WeiXinMainPullViewGroup);return } viewDragHelper.smoothSlideViewTo(releasedChild, 0, measuredHeight - NAVIGAATION_HEIGHT); ViewCompat.postInvalidateOnAnimation(this@WeiXinMainPullViewGroup);}override fun clampViewPositionVertical(child: View, top: Int, dy: Int): Int { if (top <= paddingTop) {return paddingTop } return (child.top + dy / 1.3).toInt();} }}

還要增加一個用來填充狀態欄的View,他的高度是動態獲取的,整體布局是RelativeLayout,因為可以方便的設置中間View在狀態下面和在導航欄上面。

class ViewUtils { companion object{@JvmStaticfun getStatusBarHeight(resources: Resources): Int { var result = 0 val resourceId = resources.getIdentifier('status_bar_height', 'dimen', 'android') if (resourceId > 0) {result = resources.getDimensionPixelSize(resourceId) } return result} }}小程序縮放比例值計算

然后要做的就是拖動View,可以借助ViewDragHelper來完成,當拖動會話布局的時候,小程序的布局開始做一個縮放比例動畫,這個縮放值我在這是這樣做的,因為不可能是從0開始,要從一個基礎值開始,這個基礎值就是0.8,那么剩下0.2的縮放值,就是從開始下拉算起,到整體的高度的百分比。

比如屏幕高度是1000,下拉到500的時候,那么這個縮放值就是0.1,在加上基礎值0.8,計算方式如下,整體高度還要減去導航欄的高度。

var divide = BigDecimal(top.toString()).divide(BigDecimal(measuredHeight-NAVIGAATION_HEIGHT), 4, BigDecimal.ROUND_HALF_UP) divide = divide.multiply(BigDecimal('100')) divide = divide.multiply(BigDecimal('0.002' )) divide = divide.add(BigDecimal('0.8')) if (!isOpen) { programView.scaleX = divide.toFloat() programView.scaleY = divide.toFloat() } else { programView.top = paddingTop + (-((measuredHeight - NAVIGAATION_HEIGHT) - top)) }

這里就注意細節了,下拉的時候,小程序布局是通過縮放呈現的,但是上滑關閉的時,小程序布局是和會話布局同時向上走的。

動畫遮罩

這是比較麻煩的一步,就是繪制進度動畫,也就是那三個圓點。

這個原點有三種狀態,一是出現時從小到大,二是到一定大小后,分離出兩個固定大小的圓,但是這兩個圓比此時中間的要小,并且和下拉進度慢慢向兩邊擴撒,三是中間的圓開始縮小,直到和其余兩個圈同等大小。

這里就要另一波細節了,當還在屏幕的三分之一下拉時,這個頭部遮罩布局整體還是不透明的,但是到屏幕的三分之一時,這個布局的透明度開始從255到0運動。并且到達三分之一的時候,還要振動一下,并且只要振動過了,那么在手指未松開時,再次到達屏幕的三分之一時,不會產生振動。

還有一波細節,狀態欄由于使用了View填充,所以,從屏幕三份之一后開始,這個View的透明度也要從255-0開始運動。

完整代碼如下。

package com.example.kotlindemo.widget.weixinimport android.content.Contextimport android.graphics.Canvasimport android.graphics.Colorimport android.graphics.Paintimport android.os.VibrationEffectimport android.os.Vibratorimport android.util.AttributeSetimport android.util.Logimport android.view.Viewimport androidx.core.content.ContextCompatimport com.example.kotlindemo.MainActivityimport com.example.kotlindemo.Rclass WeiXinPullHeaderMaskView @JvmOverloads constructor( context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : View(context, attrs, defStyleAttr) { var isVibrator: Boolean = false; var progress: Int = 0; var maxHeight: Int = 0; private val CIRCLE_MAX_SIZE = 32; var parentHeight=0; var paint = Paint() private val DEFAULT_CIRCLE_SIZE=8f; init {setBackgroundColor(Color.argb(255 , 239, 239, 239))paint.alpha=255;paint.color = ContextCompat.getColor(context!!, R.color.circleColor)paint.isAntiAlias = true; } override fun onDraw(canvas: Canvas) {super.onDraw(canvas)var value = height.toFloat() / maxHeightif (height <= maxHeight / 2) { canvas.drawCircle((width / 2).toFloat(), (height / 2).toFloat(), CIRCLE_MAX_SIZE * value, paint)} else { if (progress<100){ var diff = (value - 0.5f) * CIRCLE_MAX_SIZE canvas.drawCircle(((width / 2).toFloat()-((0.4f-value)*100)), (height / 2).toFloat(), DEFAULT_CIRCLE_SIZE, paint) canvas.drawCircle(((width / 2).toFloat()+((0.4f-value)*100)), (height / 2).toFloat(), DEFAULT_CIRCLE_SIZE, paint) if ((CIRCLE_MAX_SIZE * 0.5f) - diff<=DEFAULT_CIRCLE_SIZE){ canvas.drawCircle((width / 2).toFloat(), (height / 2).toFloat(), DEFAULT_CIRCLE_SIZE, paint) }else{ canvas.drawCircle((width / 2).toFloat(), (height / 2).toFloat(), (CIRCLE_MAX_SIZE * 0.5f) - diff, paint) } }else{ paint.alpha=getAlphaValue(); canvas.drawCircle((width / 2).toFloat(), (height / 2).toFloat(), DEFAULT_CIRCLE_SIZE, paint) canvas.drawCircle((width / 2).toFloat()-((0.4f)*100), (height / 2).toFloat(), DEFAULT_CIRCLE_SIZE, paint) canvas.drawCircle((width / 2).toFloat()+(((0.4f)*100)), (height / 2).toFloat(), DEFAULT_CIRCLE_SIZE, paint) }} } private fun getAlphaValue():Int{val dc=parentHeight/3-ViewUtils.getStatusBarHeight(resources);val alpha=((height).toFloat()-dc)/(parentHeight-(dc)) return 255-(255*alpha).toInt() } private fun vibrator() {var vibrator = context.getSystemService(Context.VIBRATOR_SERVICE) as Vibratorif (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { var createOneShot = VibrationEffect.createOneShot(7, 255) vibrator.vibrate(createOneShot)} else { vibrator.vibrate(7)} } fun setProgress(value: Float,parentHeight:Int) {this.progress = value.toInt();this.parentHeight=parentHeight;if (value >= 100 && !isVibrator) { vibrator() isVibrator = true;}if (value < 100) { isVibrator = false;}if (progress>=100){ setBackgroundColor(Color.argb(getAlphaValue() , 239, 239, 239)) var mainActivity = context as MainActivity mainActivity.changeStatusBackgroundAlphaValue(getAlphaValue())}else{ setBackgroundColor(Color.argb(255, 239, 239, 239))}invalidate() }}

還有就是這三個原點是始終位于遮罩View中間的,繪制的時候只需要在中間繪制,遮罩View的高度會被外界View所更改。

MainActivity

import android.graphics.Colorimport android.os.Buildimport android.os.Bundleimport android.view.Viewimport android.view.Windowimport androidx.appcompat.app.AppCompatActivityimport androidx.databinding.DataBindingUtilimport com.example.kotlindemo.databinding.ActivityMainBindingimport com.example.kotlindemo.widget.weixin.ChatSessionimport com.example.kotlindemo.widget.weixin.ChatSessionAdapterimport com.example.kotlindemo.widget.weixin.ViewUtilsclass MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding; fun changeStatusBackgroundAlphaValue(value: Int){binding.statusBar.setBackgroundColor(Color.argb(value, 239, 239, 239)) } override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)binding = DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main);var layoutParams = binding.statusBar.layoutParamslayoutParams.height=ViewUtils.getStatusBarHeight(resources)binding.statusBar.layoutParams=layoutParamsbinding.wxMain.setPadding(0, ViewUtils.getStatusBarHeight(resources), 0, 0)if (Build.VERSION.SDK_INT >= 21) { val window: Window = window window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREENor View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR ) window.setStatusBarColor(Color.TRANSPARENT)}val chatSessions= mutableListOf<ChatSession>()for (index in 0 .. 10){ chatSessions.add(ChatSession('https://img2.baidu.com/it/u=3538084390,1079314259&fm=26&fmt=auto&gp=0.jpg','馬云','你來,我把公司給你','上午')) chatSessions.add(ChatSession('https://img0.baidu.com/it/u=273576249,1042072491&fm=26&fmt=auto&gp=0.jpg','奧巴馬','哥哥在哪呢','上午')) chatSessions.add(ChatSession('https://img1.baidu.com/it/u=152902017,4157746361&fm=11&fmt=auto&gp=0.jpg','成龍','馬上接你','上午')) chatSessions.add(ChatSession('https://img0.baidu.com/it/u=3789809038,289359647&fm=26&fmt=auto&gp=0.jpg','竊瓦辛格','我教你啊','上午'))}binding.chatList.adapter=ChatSessionAdapter(chatSessions,this) }}

<?xml version='1.0' encoding='utf-8'?><layout xmlns:android='http://schemas.android.com/apk/res/android' xmlns:app='http://schemas.android.com/apk/res-auto' xmlns:tools='http://schemas.android.com/tools'> <data> </data> <RelativeLayoutandroid:background='@drawable/program_background'android:layout_width='match_parent'android:layout_height='match_parent'android:orientation='vertical'tools:context='.MainActivity'><com.example.kotlindemo.widget.weixin.WeiXinMainPullViewGroupandroid:paddingTop='40dp' android:layout_above='@+id/navigation' android: android:layout_width='match_parent' android:layout_height='match_parent' > <com.example.kotlindemo.widget.weixin.WeiXinProgramandroid:paddingLeft='30dp'android:paddingRight='30dp'android:orientation='vertical'android:layout_width='match_parent'android:layout_height='match_parent'><TextView android:textSize='17sp' android:textColor='#C8C8C8' android:gravity='center' android:text='最近' android:layout_width='match_parent' android:layout_height='40dp'></TextView><androidx.cardview.widget.CardView android:background='#424459' app:cardBackgroundColor='#424459' app:cardElevation='0dp' app:cardCornerRadius='8dp' android:layout_width='match_parent' android:layout_height='46dp'> <LinearLayoutandroid:gravity='center'android:layout_width='match_parent'android:layout_height='match_parent'><TextView android:textSize='15sp' android:textColor='#C8C8C8' android:text='搜索小程序' android:gravity='center' android:layout_width='wrap_content' android:layout_height='wrap_content'></TextView> </LinearLayout></androidx.cardview.widget.CardView><com.example.kotlindemo.widget.weixin.ProgramGridLayout android:layout_marginTop='20dp' android:layout_width='match_parent' android:layout_height='wrap_content'></com.example.kotlindemo.widget.weixin.ProgramGridLayout><com.example.kotlindemo.widget.weixin.ProgramGridLayout android:layout_marginTop='20dp' android:layout_width='match_parent' android:layout_height='wrap_content'></com.example.kotlindemo.widget.weixin.ProgramGridLayout> </com.example.kotlindemo.widget.weixin.WeiXinProgram> <com.example.kotlindemo.widget.weixin.WeiXinMainLayoutandroid:layout_width='match_parent'android:layout_height='match_parent'android:orientation='vertical'><RelativeLayout android:layout_width='match_parent' android:layout_height='44dp' android:background='@color/navigation_color'> <TextViewandroid:textStyle='bold'android:textSize='16sp'android:textColor='#000000'android:layout_centerInParent='true'android:gravity='center'android:text='微信(323)'android:layout_width='wrap_content'android:layout_height='match_parent'></TextView> <ImageViewandroid:layout_marginRight='45dp'android:scaleType='center'android:layout_centerVertical='true'android:layout_alignParentRight='true'android:src='http://www.gepszalag.com/bcjs/@drawable/ic_search'android:layout_width='28dp'android:layout_height='28dp'></ImageView> <ImageViewandroid:layout_marginRight='10dp'android:scaleType='center'android:layout_centerVertical='true'android:layout_alignParentRight='true'android:src='http://www.gepszalag.com/bcjs/@drawable/ic_add'android:layout_width='28dp'android:layout_height='28dp'> </ImageView></RelativeLayout><com.example.kotlindemo.widget.weixin.WeiXinChatSessionListView android:paddingLeft='15dp' android:paddingRight='15dp' android:dividerHeight='10dp' android: android:background='#FBFAFA' android:layout_width='match_parent' android:layout_height='match_parent'></com.example.kotlindemo.widget.weixin.WeiXinChatSessionListView> </com.example.kotlindemo.widget.weixin.WeiXinMainLayout></com.example.kotlindemo.widget.weixin.WeiXinMainPullViewGroup><LinearLayout android:background='@color/navigation_color' android:orientation='vertical' android: android:layout_alignParentBottom='true' android:layout_width='match_parent' android:layout_height='60dp'></LinearLayout><View android:background='@color/navigation_color' android: android:layout_width='match_parent' android:layout_height='100dp'></View> </RelativeLayout></layout>

以上就是Android 仿微信小程序入口動畫的詳細內容,更多關于Android 微信小程序入口動畫的資料請關注好吧啦網其它相關文章!

標簽: 微信
相關文章:
主站蜘蛛池模板: 亚洲免费小视频 | 久久99国产伦子精品免费 | 男女国产网站 | 国产一区二区三区不卡在线观看 | 久久精品小视频 | 色综合久久久久综合99 | 久久久精彩视频 | 婷婷狠狠 | 午夜色视频在线观看 | 亚洲视频精品一区 | 国产视频久久久久 | 黄久久久 | 日本三级电影天堂 | 九草在线 | 中文字幕日韩视频 | 久久国产成人 | 99精品免费 | 国产精品s色 | 精品国产不卡一区二区三区 | 中文字幕乱码亚洲精品一区 | 91丨九色丨国产在线 | 中国1级黄色片 | 国产乱人伦av在线a jizz久久久 www.亚洲 | 成人二区 | 99福利视频| 狠狠色狠狠色合久久伊人 | 狠狠久久伊人中文字幕 | 中文字幕精品三级久久久 | 久久综合激情 | 国产免费观看一区二区三区 | 蜜桃视频精品 | 日韩欧美二区 | 精品电影 | 拍拍无遮挡人做人爱视频免费观看 | 色视频网站在线观看 | 日韩激情免费 | 日韩视频中文字幕 | 国产精品视频免费 | 亚洲av毛片一区二二区三三区 | 97国产一区二区精品久久呦 | 久久成人在线 | 一区二区中文字幕 | 国产精品视频导航 | 欧美天天| www.在线播放 | 欧美三级在线 | 欧美激情一区二区 | 成人福利视频 | 亚洲专区中文字幕 | 精品免费一区 | 亚洲精品二区 | 欧美精品乱码久久久久久按摩 | 精品美女久久久 | 日日做夜夜爽毛片麻豆 | 国产精品亚洲综合 | 99爱视频 | 99精品欧美一区二区三区 | 国产精品久久久久久久久免费软件 | 99精品一区二区 | 亚洲欧美中文字幕 | 国产高清一区 | 亚洲精品成人 | 国产精品久久久久久吹潮 | 99精品国产高清一区二区麻豆 | 国产精品高潮呻吟久久av黑人 | 国产精品一区二区在线观看 | 在线观看亚洲a | 久久中文字幕一区 | 欧美一级特 | 亚洲色域网 | 一级视频网站 | 国产精品精品 | 日韩快播电影网 | 欧美精品区 | 日日夜夜免费精品视频 | 国产精品久久久爽爽爽麻豆色哟哟 | 成人黄色短视频在线观看 | 国产成人精品一区二 | 91精品在线观看入口 | av在线干 | 国产精品一区三区 | 在线观看中文字幕 | 久色视频| 欧美不卡 | 亚洲男人av | 久草网站 | 亚洲激情视频在线播放 | 男人天堂网址 | 亚洲综合影院 | 亚洲va中文字幕 | 久久在线 | 日本精品在线 | 天天操天天碰 | 国产一区二区影院 | 91久久久久久| 这里有精品在线视频 | 欧美日韩视频一区二区 | 久久丁香 | 亚洲国产区| 国产精品久久久久久久久免费桃花 | 国产成人精品久久二区二区 | 中国电影黄色一级片免费观看 | 久草在线高清 | 君岛美绪一区二区三区在线视频 | 亚洲精品久久久久久下一站 | 6080亚洲精品一区二区 | 成年人网站免费在线观看 | 麻豆专区一区二区三区四区五区 | 色视频www在线播放国产人成 | 国产精品一区二区在线看 | 久久久久国产 | 欧美日韩福利视频 | 欧美日韩视频 | 久久久美女 | 美女视频一区二区三区 | 欧美精品一区二 | 中文字幕成人网 | 精品久久久久香蕉网 | 国产精品久久久久久久久久 | 午夜免费视频 | 国产亚洲综合一区二区 | 亚洲一区不卡 | 欧美成人免费在线观看 | 91短视频版在线观看www免费 | 久久99精品久久久噜噜最新章节 | 国产精品视频播放 | 国产视频久久精品 | 一级毛片在线看aaaa | av成人在线观看 | 精品国产一区二区在线 | 久久国产精品免费一区二区三区 | 国产免费一区 | 毛片一区二区三区 | avmans最新导航地址 | 国产婷婷精品av在线 | 欧美日韩不卡 | 日日精品 | 中文字幕在线免费看 | 国产91色在线 | 亚洲 | 欧美精品综合 | 日韩三区视频 | 在线免费黄色 | 久久久www| 97伦理电影 | 精品亚洲成a人在线观看 | 日韩高清一区二区 | 中文字幕本久久精品一区 | 成人免费视频网站在线看 | 亚洲一区国产精品 | 欧美日韩久久 | 中文精品一区二区三区 | 一a毛片 | 国产成人99久久亚洲综合精品 | 黄久久久| 亚洲精品一区二区三区麻豆 | 精品视频一区二区三区四区 | 欧美视频在线免费看 | 国产乱码精品一区二区三区忘忧草 | 国产一二三四在线 | 免费国产黄色大片 | 91干在线观看 | 亚洲国产精品成人久久久 | 91久久久久久 | 午夜精品一区二区三区在线播放 | 日本一级淫片免费看 | 香蕉婷婷 | 欧美在线视频一区二区 | 日韩2区| 国产亚洲视频在线观看 | 激情999| 亚洲日韩欧美一区二区在线 | 成人三级在线 | 日韩精品一区在线 | 亚洲一区二区在线播放 | 欧美aaa大片 | 久久久久久国产精品 | 一区二区三区免费看 | 伊人网视频在线观看 | 91视频一88av | 国产精品久久国产愉拍 | 日韩精品一区二区三区在线观看 | 91精品国产乱码久久久久久久久 | 婷婷激情五月 | 二区视频| 欧美一区国产一区 | 久久草视频 | av在线第一页 | 亚洲精品一 | 中文字幕一区二区三区日韩精品 | 欧洲一级黄 | 久草青青| 亚洲精品影院 | 亚洲第一色 | 久久久久中文 | av网站在线免费观看 | 欧美日韩a v | 伊人夜夜躁av伊人久久 | 国产精品美女视频 | 亚洲国产免费 | 国产精品一区二区久久 | 黄片毛片在线观看 | 亚洲综合二区 | 欧美自拍一区 | 久久久久久国产视频 | 日韩中文一区 | 国产乱人伦av在线a jizz久久久 www.亚洲 | 亚洲视频欧美视频 | 国产精品一卡二卡 | 久久久高清 | 精品一区二区久久久久久久网站 | 第一色综合 | 最新亚洲黄色网址 | 国产精品天天干 | 亚洲成人一区二区三区 | 国产精品精品视频一区二区三区 | 国产探花 | 精品久久久久久久久久久久久久 | 亚洲国产精品成人久久久 | 日穴视频在线观看 | 在线亚洲一区二区 | 国产精品久久久久久久久久久久午夜片 | 99精品全国免费观看视频软件 | 日本久久精品视频 | av在线免费观看网站 | 国产欧美在线视频 | 91精品国产综合久久久久久丝袜 | 亚洲精品久久久久久下一站 | 奇米色777欧美一区二区 | 日韩精品在线一区 | 亚洲精品视频在线播放 | 色婷婷av一区二区三区软件 | 综合网在线 | 日本黄a三级三级三级 | 亚洲一区二区三区在线免费观看 | 亚州av在线 | 国产精品三级在线 | 国产日韩精品一区二区在线观看播放 | 日韩精品一 | 国产91成人在在线播放 | 成人av免费观看 | 国产极品视频在线观看 | 亚洲精品视频在线播放 | 久操成人 | 综合久久99 | 国产高清精品一区二区三区 | 中文字幕亚洲区 | 国产精品欧美一区二区三区 | 蜜桃精品在线观看 | 在线观看免费视频日韩 | 亚洲小视频 | 麻豆自拍偷拍 | 日韩在线视频观看 | 99热热热热 | 亚洲啪啪网站 | 欧美一区二区免费 | 在线播放国产一区二区三区 | 精品久久久久久国产 | 一区二区三区精品 | 久久久精彩视频 | 欧美色v| 激情久久久久 | 性色av一二三杏吧传媒 | 夜本色 | 91精品国产乱码久久久久久久久 | 久久99深爱久久99精品 | 中文字幕视频免费观看 | 免费黄色录像视频 | 日本久久久久久久 | 欧美一区二区三 | 狠狠中文字幕 | 国产午夜精品久久久久久久 | 久久99精品久久久久久久青青日本 | 国产黄色大片网站 | 福利片在线观看 | a一级黄 | 欧美视频精品在线 | 一级欧美日韩 | 亚洲视频在线播放 | 亚洲高清视频在线 | 成人亚洲精品 | 电影91久久久 | 黄色毛片在线观看 | 国产综合区 | www.色综合| 欧美日韩成人一区 | 一区二区三区四区日韩 | 视频精品一区二区三区 | 欧美视频一二 | 99热国产在线观看 | 国产成人福利在线 | 国产伦精品一区二区三区四区视频 | 欧美日韩电影一区二区 | 欧美电影一区 | 久久91久久久久麻豆精品 | 国产浪潮av色综合久久超碰 | 伊人久久一区二区三区 | 亚洲欧美精品一区二区三区 | 欧美精品一区二区三区蜜桃视频 | 国产激情性色视频在线观看 | 一本一道久久久a久久久精品91 | 色伊人久久 | 黄色在线免费看 | 国产精品毛片久久久久久 | 国产99999 | 天天舔天天干 | 国产一区二区在线播放 | 亚洲一区二区在线播放 | 亚洲 欧美 自拍偷拍 | 激情开心成人网 | 国产成人精品在线 | 一区二区视频网站 | 中文字幕在线视频一区 | 国产第一亚洲 | 91亚洲免费 | 欧洲成人午夜免费大片 | 亚洲国产婷婷 | 国产一区二区精品在线观看 | 龙珠z普通话国语版在线观看 | 国产毛片在线看 | 久久这 | 在线免费毛片 | 国产美女精品 | 欧美激情一区二区三级高清视频 | 日韩在线成人 | 日韩精品一区二 | 二区在线观看 | 99综合在线| 国产一区国产二区在线观看 | 日韩av一区二区三区在线 | 国产香蕉视频在线播放 | 欧美一级黄视频 | 精品久久久久久久久久久久久久 | 久草免费在线 | 亚洲精品亚洲人成人网 | 国产一级特黄aaa | 亚洲美女视频在线观看 | 成人午夜在线观看 | 嫩草视频入口 | 国产精品久久久久久久久 | 久久加勒比 | 粉嫩视频在线观看 | 精品久久久久久久久久 | www亚洲成人 | 亚洲一二三 | 国产情侣小视频 | 精品国产一区二区三区四 | 欧美专区中文字幕 | 在线观看中文字幕 | 操片| 亚洲网站在线观看 | 91精品国产综合久久精品 | 午夜视频在线观看网站 | 午夜国产精品视频 | 国产一区二 | 四虎免费看黄 | 日韩成人一区二区 | 国产高清在线a视频大全 | 久久99国产精品久久99大师 | 中文字幕66页 | 国产精品视频免费 | 午夜视频在线观看网站 | 婷婷色在线 | 欧美日韩精品亚洲 | 国产电影一区二区三区图片 | 精品国产欧美 | 久久久久久久久成人 | 一级片在线观看视频 | 国产福利片在线 | 国产精品久久久久久久午夜片 | 久久草在线视频 | 欧美成人精品在线视频 | 日韩视频在线观看 | 在线观看国产wwwa级羞羞视频 | 91在线精品一区二区 | 7777av| 亚洲精品国产高清 | 毛片网免费 | 亚洲激情一区 | 欧美另类一区二区 | 亚洲成人精品在线 | 大黑人交xxx极品hd | 国产日韩免费 | 青青草久 | 午夜激情免费在线观看 | 一区二区三区国产 | 午夜社区| 亚洲不卡视频 | 欧美高清成人 | 亚洲a级| 精一区二区| 日韩极品视频 | 欧美午夜三级视频 | 春色av| 天天澡天天狠天天天做 | 国产1区在线观看 | 久久99精品久久久久久噜噜 | 午夜免费小视频 | 久久99精品视频 | 91在线精品一区二区 | 日韩一区二区三区在线观看 | 久久久久久久久久久久久久久久久久久 | 81精品国产乱码久久久久久 | 亚洲一区二区三区免费在线观看 | 99精品欧美一区二区三区综合在线 | 国产视频一区在线 | 成人免费网站www网站高清 | 99热这里有 | a级在线免费观看 | 日韩精品一区二区在线观看 | 国精日本亚洲欧州国产中文久久 | av免费网站在线观看 | 久久久精品久久久久 | 国产亚洲精品久久久久久久 | 成人免费视频网站在线观看 | 日韩激情一区二区 | 另类视频在线 | 国产欧美一区二区精品性色 | 在线观看91精品国产入口 | 日韩在线免费视频 | 国产精品久久久久久妇女6080 | 日韩乱码中文字幕 | 韩国毛片在线观看 | 久久精品欧美 | 2019国产精品| 成人美女免费网站视频 | 成人免费精品视频 | 欧美成人免费 | 精品在线一区二区 | 狠狠入ady亚洲精品经典电影 | 在线中文字幕av | 国产区福利| 91精品国产综合久久久久久丝袜 | 久久久久久久国产精品视频 | 男女av在线 | 精品九九九 | 国产成人在线视频 | 国产精品s色 | 欧洲成人午夜免费大片 | 国产成人精品亚洲777人妖 | 综合激情久久 | 久久免费小视频 | 综合伊人| 成人一区二区三区 | 91欧美| 国产超碰在线 | 91一区| 国产激情午夜 | 国产精品免费观看 | 欧美久久久久久久久久伊人 | 高清三区| 国产成人一区二区 | 黄色一级影视 | 玖玖成人| 日韩免费在线观看视频 | 1区2区免费视频 | 久久综合色视频 | 成人1区 | 亚洲精品1区2区 | www.操.com| 中文在线a在线 | 亚洲精品一区二区三区在线观看 | 日韩亚洲一区二区 | 欧美男人的天堂 | 一二三区在线 | 欧美激情欧美激情在线五月 | 国产一级视频在线观看 | 国产在线精品一区 | 男女免费在线观看 | 91最新视频| 国产成人精品一区二区三区视频 | 欧美成人激情视频 | 午夜家庭影院 | 99国产精品一区 | 午夜爱爱毛片xxxx视频免费看 | 国内自拍偷拍视频 | 久在线视频 | 做视频免费观看网站 | 成人黄色一级片 | 国产精品自产av一区二区三区 | 99免费视频| 国产精品久久久久久无遮挡 | 国产剧情一区二区 | 欧日韩毛片 | 色999视频 | 天天澡天天狠天天天做 | 欧美视频亚洲视频 | 国产精品久久久久久吹潮 | 亚洲精品二区 | 成人午夜免费视频 | 亚洲第一成人在线视频 | 中国黄色毛片 大片 | 一区二区三区四区在线 | 91社影院在线观看 | 成人毛片在线观看 | 久久久久黄 | 午夜精品一区二区三区免费视频 | 亚洲 欧美 日韩 在线 | av第一页| 精品亚洲一区二区三区四区五区 | 天堂av2020| 成人av影视在线观看 | 成人精品鲁一区一区二区 | 欧美在线观看一区 | 国产精品日日 | 青青草免费在线视频 | 久久综合久久久 | 久久久久香蕉视频 | 午夜小影院 | 国产日韩欧美一二三区 | 午夜精品视频在线观看 | 精品九九九 | 久久国产视频精品 | 日韩国产欧美一区 | 国产精品视频免费观看 | 婷婷激情五月 | 色香阁99久久精品久久久 | 日韩中文不卡 | 99成人 | 日韩在线一区二区 | 亚洲国产精品久久久久秋霞不卡 | 亚洲国产一区二区三区四区 | 草久在线视频 | 欧美一级视频在线观看 | 亚洲免费视频在线观看 | 国产激情性色视频在线观看 | 宅男lu666噜噜噜在线观看 | 国产最新网站 | 久久精品国产免费 | 久久久天堂 | 日韩一区不卡 | 亚洲乱码国产乱码精品精的特点 | 丁香五月亚洲综合在线 | 毛片a级片 | 欧美一级片在线 | 久久免费在线观看 | 先锋资源av在线 | 图片区 国产 欧美 另类 在线 | 国产综合久久久久久鬼色 | 高清国产一区二区三区四区五区 | 久久久久国产精品免费免费搜索 | 欧美日韩不卡视频 | 91视频播放 | 欧美日韩精品一区二区 | 中文字幕av黄色 | 亚洲精品视频在线 | 91精品一区二区三区久久久久 | 亚洲综合二区 | 亚洲福利av| 99re国产 | 超碰官网 | 国色天香成人网 | 色欧美综合 | 欧美成人免费一级人片100 | 亚洲欧美一区二区三区在线 | 欧美精品在线一区 | 伊人青青操 | 三级视频在线 | 黄色一级片在线观看 | 国产激情91久久精品导航 | 一区二区中文 | 日韩成人高清电影 | 在线中文字幕视频 | 中文字幕在线一区 | 日本黄色的视频 | 瑟瑟视频在线看 | 日韩一级二级三级 | 亚洲三区在线观看 | 国产在线精品一区二区三区 | 精品久久久久久久久久久久久久 | 久久久久久亚洲 | 精品久久久久久亚洲综合网 | 久久亚洲二区 | 国产真实精品久久二三区 | 国产免费一区二区 | 久久精品免费一区二区三区 | 国产玖玖 | 性视频一区 | 欧美日韩成人免费 | 欧美激情自拍偷拍 | 成人午夜免费视频 | 黄色大片视频 | 日本少妇bbbb爽爽bbb美 | 欧美色图亚洲自拍 | 国产香蕉97碰碰久久人人九色 | 日本欧美在线观看 | 97狠狠 | 色综合天天综合网国产成人网 | 久久久成 | 欧美在线视频一区二区 | 亚洲综合无码一区二区 | 国产精品久久久久久久久久99 | 精品久久久久久久久久久久久久久 | 欧洲成人在线 | 国产成人免费 | 午夜亚洲电影 | 噜噜噜噜狠狠狠7777视频 | 日韩福利| 久久国产精品免费一区二区三区 | 成人精品视频一区二区三区 | 不用播放器的毛片 | 国产高清在线精品一区二区三区 | 中文久久| 天天天天综合 | 黄色av毛片 | 亚洲免费在线观看 | 在线播放国产视频 | 日本在线视频一区二区 | 日本免费视频 | 天天干人人 | 日韩免费视频一区二区 | 九九在线视频 | 性一交一乱一透一a级 | 亚洲精品久久久狠狠狠爱 | 四虎成人在线视频 | 国产一区二区在线播放 |