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

酷炫的Android交互動畫和視覺效果:高仿音悅臺播放頁面

移動開發 Android
新版的音悅臺 APP 播放頁面交互非常有意思,可以把播放器往下拖動,這個頁面透明漸變,然后到底部可以左右拖動關閉播放器,然后點擊視頻列表有個頁面彈出來的效果,十分炫酷,于是我自己動手實現了這個交互炫酷的播放器頁面。

新版的音悅臺 APP 播放頁面交互非常有意思,可以把播放器往下拖動,這個頁面透明漸變,然后到底部可以左右拖動關閉播放器,然后點擊視頻列表有個頁面彈出來的效果,十分炫酷,于是我自己動手實現了這個交互炫酷的播放器頁面。

[[181643]]

1.廢話不多說,直接演示實現效果

1.1.點擊某個視頻,然后手指上下拖動,播放器做尺寸比例的漸變,視頻相關信息做透明度漸變

 

 

 

 

1.2.播放器只有在底部的時候,才能左右拖動,此時播放器做透明度漸變,拖動一定范圍可以關閉播放器;然后它只有在原始位置的一小段距離內可以往上拖動

 

 

 

 

1.3.點擊視頻列表的時候,若是上次視頻是左右拖動關閉的話,會有個彈起播放頁面的效果;若是返回鍵和返回箭頭則無效果

 

 

 

 

2.實現的思路講解

毫無疑問,需要自定義一個容器,然后處理它的觸摸事件,對它的子 View 進行不同的處理。觸摸事件的處理使用 ViewDragHelper 是再適合不過了,然后你需要實現容器 onMeasure 和 onLayout,由于使用了 ViewDragHelper,有些坑在代碼解析的時候就會講解。

播放頁面是用新的 Activity 還僅僅是當前 Activity 的View的問題,由于播放器縮小到底部的時候,用戶是可以滑動視頻列表的,所以我個人認為就是在當前 Activity 放置一個自定義容器即可,因此為了效率考慮你可以用 ViewStub 來懶加載處理,這里方便演示我就直接 View 的形式了。

3.代碼解析

3.1.需要的變量

 

 

 

 

3.2.初始化做 ViewDragHelper 的初始化,然后 post 拿到兩個子 View,這里強制規定只能有兩個子元素

 

 

 

 

3.3. ViewDragHelper 的回調需要做的事情比較多,在 mFlexView 拖動的時候需要同時設置 mFlexView 和 mFollowView 的相應變化效果,在 mFlexView 釋放的時候需要處理關閉或收起等效果

 

 

 

 

3.4.接下來是處理測量和定位,我們實現的排列效果類似 LinearLayout 垂直排列的效果,這里被 measureChildWithMargins 的 heightUse 擺了一道;onLayout 的時候在位置緩存不為空的時候直接定位是因為 ViewDragHelper 在處理觸摸事件子元素在做一些平移之類的,若是有元素更新了 UI 會導致重新 Layout,例如我的播放器在更新時間的 TextView 時就會如此,因此在 FlexCallback 的 onViewPositionChanged 方法記錄位置,在重新 Layout 時恢復位置即可,這個也坑了好久

 

 

 

 

3.5.觸摸事件的處理,由于縮放不會影響 mFlexView 真實寬高,ViewDragHelper 仍然會阻斷 mFlexView 的真實寬高的區域,所以這里判斷手指是否落在 mFlexView 視覺上的范圍內,在才去調 ViewDragHelper 的 shouldInterceptTouchEvent 方法

 

 

 

 

3.6.在 computeScroll 中,若是 mIsClosing 為 true,即關閉的整個平移執行完畢了,通知回調事件

 

 

 

 

3.7.容器實現了,接下來我們繼承 YytLayout 實現播放器頁面的組合控件即可,再封裝一些常用的方法,這里使用的是大名鼎鼎的 Ijkplayer 實現的播放器,屏蔽了 IjkVideoView 的觸摸事件自己處理了;順帶一提,為了實現播放器 Controller 跟隨拖動縮放的效果,放棄了常用的 PopupWindow 實現的思路,IjkController 直接是添加到 IjkVideoView 中的,要不彈窗實現跟隨播放器太麻煩了

  1. /** 
  2.  * Created by Oubowu on 2016/12/27 17:32.<p> 
  3.  * 仿音悅臺播放頁面的具體實現,組合控件的形式 
  4.  */ 
  5. public class YytPlayer extends YytLayout { 
  6.     private IjkController mIjkController; 
  7.     private IjkVideoView mIjkVideoView; 
  8.     private ImageView mIvAvatar; 
  9.     private TextView mTvName; 
  10.     private TextView mTvTime; 
  11.     private TextView mTvTitle; 
  12.     private TextView mTvDesc; 
  13.     private RecyclerView mYytRecyclerView; 
  14.     private VideoListAdapter mVideoListAdapter; 
  15.     public YytPlayer(Context context, AttributeSet attrs) { 
  16.         super(context, attrs); 
  17.         init(context, attrs); 
  18.     } 
  19.     private void init(Context context, AttributeSet attrs) { 
  20.         // 繼承YytLayout并且通過merge標簽減少層級來實現組合控件 
  21.         LayoutInflater.from(context).inflate(R.layout.yyt_player, this, true); 
  22.         setOnLayoutStateListener(new OnLayoutStateListener() { 
  23.             @Override 
  24.             public void onClose() { 
  25.                 setVisibility(View.INVISIBLE); 
  26.                 mIjkVideoView.release(true); 
  27.             } 
  28.         }); 
  29.         mIjkVideoView = (IjkVideoView) findViewById(R.id.ijk_player_view); 
  30.         final int scaledTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); 
  31.         mIjkVideoView.setOnTouchListener(new OnTouchListener() { 
  32.             float mDownX = 0; 
  33.             float mDownY = 0; 
  34.             boolean mClickCancel; 
  35.             @Override 
  36.             public boolean onTouch(View v, MotionEvent event) { 
  37.                 float x = event.getX(); 
  38.                 float y = event.getY(); 
  39.                 switch (event.getAction()) { 
  40.                     case MotionEvent.ACTION_DOWN: 
  41.                         mDownX = x; 
  42.                         mDownY = y; 
  43.                         break; 
  44.                     case MotionEvent.ACTION_MOVE: 
  45.                         if (Math.abs(mDownX - x) > scaledTouchSlop || Math.abs(mDownY - y) > scaledTouchSlop) { 
  46.                             mClickCancel = true
  47.                         } 
  48.                         break; 
  49.                     case MotionEvent.ACTION_UP: 
  50.                         if (!mClickCancel && Math.abs(mDownX - x) <= scaledTouchSlop && Math.abs(mDownY - y) <= scaledTouchSlop) { 
  51.                             // 點擊事件偶爾失效,只好這里自己解決了 
  52.                             if (isHorizontalDragEnable()) { 
  53.                                 expand(); 
  54.                             } else { 
  55.                                 mIjkVideoView.toggleMediaControlsVisibility(); 
  56.                             } 
  57.                         } 
  58.                         mClickCancel = false
  59.                         break; 
  60.                     case MotionEvent.ACTION_CANCEL: 
  61.                         mClickCancel = false
  62.                         break; 
  63.                 } 
  64.                 return true
  65.             } 
  66.         }); 
  67.         mIvAvatar = (ImageView) findViewById(R.id.iv_avatar); 
  68.         mTvName = (TextView) findViewById(R.id.tv_name); 
  69.         mTvTime = (TextView) findViewById(R.id.tv_time); 
  70.         mTvTitle = (TextView) findViewById(R.id.tv_title); 
  71.         mTvDesc = (TextView) findViewById(R.id.tv_desc); 
  72.         mVideoListAdapter = new VideoListAdapter(); 
  73.         mVideoListAdapter.setOnItemClickCallback(new OnItemClickCallback() { 
  74.             @Override 
  75.             public void onClick(View viewint position) { 
  76.                 int pos = (Integerview.getTag(); 
  77.                 VideoSummary summary = mVideoListAdapter.getData().get(pos); 
  78.                 playVideo(mVideoListAdapter.getData(), summary); 
  79.             } 
  80.         }); 
  81.         mYytRecyclerView = (RecyclerView) findViewById(R.id.yyt_recycler_view); 
  82.         GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 2, LinearLayoutManager.VERTICAL, false); 
  83.         mYytRecyclerView.setLayoutManager(gridLayoutManager); 
  84.         mYytRecyclerView.setNestedScrollingEnabled(false); 
  85.         mYytRecyclerView.addItemDecoration(new VideoListItemDecoration(context)); 
  86.         mYytRecyclerView.setAdapter(mVideoListAdapter); 
  87.     } 
  88.     // 播放視頻 
  89.     private void playVideo(String path, String name) { 
  90.         try { 
  91.             if (mIjkController == null) { 
  92.                 IjkMediaPlayer.loadLibrariesOnce(null); 
  93.                 IjkMediaPlayer.native_profileBegin("libijkplayer.so"); 
  94.                 mIjkController = new IjkController(mIjkVideoView, name); 
  95.                 mIjkController.setOnViewStateListener(new IjkController.OnViewStateListener() { 
  96.                     @Override 
  97.                     public void onBackPress() { 
  98.                         stop(); 
  99.                     } 
  100.                 }); 
  101.                 mIjkVideoView.setMediaController(mIjkController); 
  102.                 mIjkVideoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() { 
  103.                     @Override 
  104.                     public void onPrepared(IMediaPlayer mp) { 
  105.                         mIjkVideoView.start(); 
  106.                     } 
  107.                 }); 
  108.                 mIjkVideoView.setOnErrorListener(new IMediaPlayer.OnErrorListener() { 
  109.                     @Override 
  110.                     public boolean onError(IMediaPlayer mp, int what, int extra) { 
  111.                         Toast.makeText(getContext(), "視頻播放出錯了╮(╯Д╰)╭", Toast.LENGTH_SHORT).show(); 
  112.                         return true
  113.                     } 
  114.                 }); 
  115.             } else { 
  116.                 // 重新設置視頻名字 
  117.                 mIjkController.setVideoName(name); 
  118.             } 
  119.             // 設置這個TextureView播放器縮放就正常了 
  120.             mIjkVideoView.setRender(IjkVideoView.RENDER_TEXTURE_VIEW); 
  121.             // 因為每次setRender都會移除view再添加,為了縮放效果這里控制器是添加到IjkVideoView中的,所以這里也要重新添加才能在IjkVideoView的最上面 
  122.             mIjkController.updateControlView(); 
  123.             // 顯示加載條 
  124.             mIjkController.showProgress(); 
  125.             // 播放視頻 
  126.             mIjkVideoView.setVideoURI(Uri.parse(path)); 
  127.         } catch (UnsatisfiedLinkError e) { 
  128.             e.printStackTrace(); 
  129.             Toast.makeText(getContext(), "你的CPU是" + Build.CPU_ABI + ",當前播放器使用的編譯版本" + BuildConfig.FLAVOR + "不匹配!", Toast.LENGTH_LONG).show(); 
  130.         } 
  131.     } 
  132.     /** 
  133.      * 顯示布局,并且播放視頻 
  134.      * 
  135.      * @param data    視頻列表,用于播放頁面下面的列表布局 
  136.      * @param summary 播放的視頻信息 
  137.      */ 
  138.     public void playVideo(List<VideoSummary> data, VideoSummary summary) { 
  139.         // 拿到數據,設置到播放的布局的相關信息 
  140.         Glide.with(getContext()).load(summary.mTopicImg).transform(new GlideCircleTransform(getContext())).into(mIvAvatar); 
  141.         mTvName.setText(summary.mTopicName); 
  142.         mTvTime.setText(summary.mPtime); 
  143.         mTvTitle.setText(Html.fromHtml(summary.mTitle)); 
  144.         if (summary.mDescription.isEmpty()) { 
  145.             mTvDesc.setText(summary.mTopicDesc); 
  146.         } else { 
  147.             mTvDesc.setText(Html.fromHtml(summary.mDescription)); 
  148.         } 
  149.         // 設置YytLayout可見,并且展開 
  150.         setVisibility(View.VISIBLE); 
  151.         expand(); 
  152.         mVideoListAdapter.setData(data); 
  153.         mVideoListAdapter.setItemWidth(mYytRecyclerView.getWidth() / 2); 
  154.         mVideoListAdapter.notifyDataSetChanged(); 
  155.         // 播放視頻 
  156.         playVideo(summary.mMp4HdUrl == null ? summary.mMp4Url : summary.mMp4HdUrl, summary.mTitle); 
  157.     } 
  158.     // 開始播放 
  159.     public void start() { 
  160.         if (mIjkVideoView != null && !mIjkVideoView.isPlaying()) { 
  161.             mIjkVideoView.start(); 
  162.         } 
  163.     } 
  164.     // 暫停播放 
  165.     public void pause() { 
  166.         if (mIjkVideoView != null && mIjkVideoView.isPlaying()) { 
  167.             mIjkVideoView.pause(); 
  168.         } 
  169.     } 
  170.     // 停止播放 
  171.     public void stop() { 
  172.         setVisibility(View.INVISIBLE); 
  173.         if (mIjkVideoView != null) { 
  174.             mIjkVideoView.release(true); 
  175.         } 
  176.     } 
  177.     public boolean isShowing() { 
  178.         return getVisibility() == VISIBLE; 
  179.     } 

 

4.總結

說難也不難,就是各種摳細節需要腦洞,各位不妨看到好玩的交互自己打開腦洞一下,接下來可能要實現下 UC 瀏覽器播放器的效果,感覺也是非常有意思。

責任編輯:龐桂玉 來源: 安卓巴士Android開發者門戶
相關推薦

2022-04-12 07:37:08

CSS滾動視差效果前端

2012-02-22 15:51:01

Android視覺效果UI

2013-07-23 16:33:27

Android視覺效果UI

2010-01-18 15:39:41

互聯網

2013-07-23 10:30:48

Android Des應用創新

2015-12-03 09:53:15

jQuery焦點圖動畫

2015-12-07 09:05:37

HTML5動畫源碼

2021-12-28 10:18:16

微軟Windows 11Mica

2013-01-08 11:00:06

YouTubeAJAXCSS

2024-07-12 09:01:37

404頁面代碼

2016-01-18 10:14:44

jQuery相冊動畫

2022-07-21 07:05:13

粒子動畫CSS

2023-10-08 20:32:59

CSS定義Loading

2011-09-02 13:57:11

jQuery

2010-04-28 11:14:20

Windows 7桌面

2025-07-16 09:48:23

2011-08-19 09:15:01

HTML 5

2010-06-23 09:41:35

惠普阿凡達刀片

2024-07-04 11:25:34

2015-01-14 15:27:20

Androidsplash
點贊
收藏

51CTO技術棧公眾號

亚洲成人手机在线观看| 欧美日韩在线观看一区| 久久久久久久久毛片| 香蕉成人app| 欧美性xxxxx| 一区二区日本伦理| 后进极品白嫩翘臀在线视频| 亚洲精品男同| 中文字幕视频一区二区在线有码 | 欧美激情成人动漫| 久久色.com| 亚洲一区二区久久久久久久| 亚洲国产成人精品激情在线| 欧美疯狂party性派对| 亚洲成色777777女色窝| 久久久久久蜜桃一区二区| 欧美日韩经典丝袜| 国产欧美日韩亚州综合 | 亚洲日本欧美天堂| 久久久久久久有限公司| 国产精品国产精品国产专区| 99视频一区| 久久久91精品国产| 久久久久亚洲av无码专区桃色| av一级久久| 色乱码一区二区三区88| 中国女人做爰视频| 日韩精品毛片| 国产丝袜欧美中文另类| 国产精品日韩二区| 国产欧美综合视频| 日本美女一区二区三区视频| 性色av一区二区三区免费| 国产稀缺精品盗摄盗拍| 精品视频97| 亚洲男人7777| 一区二区三区免费在线观看视频| 亚洲成人影音| 欧美一区二区成人| 日韩不卡一二三| 忘忧草在线www成人影院| 亚洲大片免费看| 国产成人一区二区三区别| 免费黄色电影在线观看| 国产精品网曝门| 欧美在线3区| 男人久久精品| 91啪亚洲精品| 六十路精品视频| 亚洲免费成人网| 国产精品91xxx| 亚洲一区二区少妇| 99riav国产| 国产一区二区三区四区五区入口 | 久久不射热爱视频精品| 黄色录像一级片| 99久久精品费精品国产风间由美| 中文字幕国产亚洲| 天天操天天舔天天射| 国产亚洲欧美日韩在线观看一区二区 | 91av视频在线免费观看| 日本在线小视频| 亚洲深夜影院| 人九九综合九九宗合| 亚洲欧美偷拍一区| 麻豆视频一区二区| 国产日本欧美一区| 国产女18毛片多18精品| 国模少妇一区二区三区| 亚洲自拍高清视频网站| 亚洲成a人片77777精品| 成人av网站在线观看免费| 精品视频第一区| 人成免费电影一二三区在线观看| 久久久久亚洲综合| 亚洲精品一区二| fc2ppv国产精品久久| 亚洲一区二区三区精品在线| 国产精品久久..4399| 中文字幕人成乱码在线观看| 在线亚洲免费视频| 天天操精品视频| 99久久香蕉| 亚洲无限av看| 最新一区二区三区| 亚洲二区免费| 国产精品入口日韩视频大尺度| 一区二区久久精品66国产精品| 国产一区二区剧情av在线| 高清国语自产拍免费一区二区三区| 少妇人妻精品一区二区三区| 国产午夜精品一区二区 | 亚洲制服丝袜在线播放| 国产一区二区三区日韩精品| 久久中文字幕国产| 欧美精品二区三区| 久久99国产乱子伦精品免费| 国产日韩一区欧美| 日本在线免费看| 亚洲大型综合色站| 亚洲欧洲日本精品| 国产一区二区三区不卡av| 亚洲天堂av网| 久青草视频在线观看| 丝袜美腿亚洲一区二区图片| 亚洲va男人天堂| 日本私人网站在线观看| 亚洲欧洲精品成人久久奇米网| 少妇高潮喷水在线观看| 日韩国产一二三区| 亚洲精品一区二区网址| 麻豆成人在线视频| 免费av网站大全久久| 国产福利久久精品| 国产在线观看av| 91久久香蕉国产日韩欧美9色| 久久久国产精品久久久| 欧美日韩国产在线观看网站| 久久久亚洲网站| 国产精品久久久久久免费| 久久色成人在线| 九九热只有这里有精品| 国产精品1区在线| 国产午夜精品全部视频播放| 国产一级特黄视频| 国产一区二区福利视频| 视频一区二区三区免费观看| 草草视频在线| 日韩一二在线观看| 国产喷水在线观看| 人人超碰91尤物精品国产| 精品一区二区三区自拍图片区| 大片免费在线看视频| 欧美午夜片在线观看| av直播在线观看| 在线成人欧美| 成人精品一二区| 国产写真视频在线观看| 欧美视频第二页| 亚洲精品成人无码| 新狼窝色av性久久久久久| 国产伦一区二区三区色一情| 尤物视频在线看| 91精品国产综合久久香蕉的特点| 免费在线观看a视频| 日精品一区二区三区| 欧美精品欧美精品系列c| 美女视频在线免费| 亚洲国产精品va在线看黑人动漫| 久久久久久久福利| 国产91丝袜在线18| 丁香婷婷综合激情| aaa国产精品| 久久久久中文字幕2018| 日韩一区免费视频| 欧美日韩美女在线| 91精品人妻一区二区三区蜜桃欧美| 99国产精品视频免费观看一公开| 国产一区高清视频| 亚洲欧洲自拍| 国产一区二区三区直播精品电影| 亚洲国产av一区二区三区| 国产日韩欧美麻豆| 精品综合久久久久| 亚洲91视频| 成人永久免费| 狠狠躁少妇一区二区三区| 日韩电视剧在线观看免费网站| 国产成人亚洲欧洲在线| 91麻豆高清视频| 在线免费观看视频黄| 国产大片一区| 国产欧美日韩一区| 超碰aⅴ人人做人人爽欧美| 亚洲精品永久免费精品| 成人毛片一区二区三区| 中文字幕在线不卡国产视频| 国产调教打屁股xxxx网站| 亚洲福利久久| 欧美一区三区二区在线观看| 全球中文成人在线| 欧美超级乱淫片喷水| 蜜桃av噜噜一区二区三区麻豆| 天天免费综合色| 日本乱子伦xxxx| 国产又黄又大久久| 久久成人免费观看| 日韩精品免费| 国外成人免费视频| 久久久久久久性潮| 久久久久在线观看| 最新电影电视剧在线观看免费观看| 日韩一区二区三区精品视频 | 国产视频一区三区| 亚洲精品在线观看免费| caoporn成人免费视频在线| 国产999精品久久久影片官网| 日本www在线| 亚洲国产欧美一区| 一区二区精品视频在线观看| 午夜激情一区二区| 精品女人久久久| 91亚洲国产成人精品一区二三 | 国产福利一区二区三区视频| 国产亚洲综合视频| 亚洲综合婷婷| 日本一区高清不卡| a看欧美黄色女同性恋| 国产精品欧美亚洲777777| 国内小视频在线看| 日日噜噜噜夜夜爽亚洲精品| 天天综合网在线观看| 欧美卡1卡2卡| 国产视频1区2区| 亚洲第一搞黄网站| 国产三级国产精品国产国在线观看| 91蝌蚪porny九色| 一级黄色大片免费看| 青娱乐精品在线视频| 国产原创中文在线观看| 欧美在线91| 亚洲欧洲久久| 国产精品片aa在线观看| 国外成人免费视频| 91精品国产自产精品男人的天堂 | 九九久久久久久久久激情| shkd中文字幕久久在线观看| 日韩av在线精品| www国产一区| 777奇米四色成人影色区| 香蕉污视频在线观看| 亚洲va欧美va天堂v国产综合| 日本一二三区在线观看| 国产精品久久一卡二卡| 99久久精品免费视频| 久久久午夜精品| 风间由美一二三区av片| 成人免费视频一区| wwwww在线观看| 国产在线不卡视频| 手机在线国产视频| 激情综合亚洲精品| 国产高清999| 狠狠色丁香久久婷婷综| 欧美成人福利在线观看| 麻豆精品蜜桃视频网站| 亚洲欧美日韩综合网| 日本人妖一区二区| 91色国产在线| 男男视频亚洲欧美| 一级做a免费视频| 国产一区二区三区四区五区入口| 999在线精品视频| 国产精品一区二区果冻传媒| 性生活在线视频| 粉嫩13p一区二区三区| 91精品国产高清91久久久久久| 国产成人无遮挡在线视频| 91成人在线观看喷潮蘑菇| 国产精品12区| 日批在线观看视频| 久久精品一区八戒影视| 国产精品免费无码| 中文字幕一区二区三区精华液| 九九热久久免费视频| 亚洲欧洲国产专区| 国产在线观看免费视频今夜| 亚洲成人黄色影院| 波多野结衣啪啪| 欧美日韩国产美| 成人久久精品人妻一区二区三区| 亚洲风情亚aⅴ在线发布| 日本大片在线观看| 日韩最新中文字幕电影免费看| 成人短视频在线| 久久久人成影片一区二区三区观看| 国产污视频在线播放| 国产成人av网| 中文字幕日本一区| 国产一区二区免费在线观看| 国产欧美日韩在线一区二区| 一本久久a久久精品vr综合| 国产真实久久| 成年人在线看片| 国产一区二区在线看| 中文字幕 日本| 国产精品三级在线观看| 麻豆亚洲av成人无码久久精品| 欧美日韩国产麻豆| 一卡二卡三卡在线| 亚洲福利精品在线| 成人动漫在线播放| 欧美激情视频在线免费观看 欧美视频免费一| 99thz桃花论族在线播放| 国产成人自拍视频在线观看| 精品一区二区三区视频在线播放| 久久久福利视频| 欧美3p视频| 99热在线这里只有精品| 久久9热精品视频| 在线精品一区二区三区| 国产精品久久久久影院色老大| 国产精品第72页| 欧美日韩国产一二三| 无码国产精品高潮久久99| 日韩在线精品视频| 在线观看爽视频| 亚洲在线视频福利| 欧美亚洲国产一区| 婷婷五月综合缴情在线视频| 久久99久久久久| 37p粉嫩大胆色噜噜噜| 一区二区三区精密机械公司| 在线免费观看中文字幕| 国产视频久久久| 免费毛片在线看片免费丝瓜视频 | 亚洲警察之高压线| 日本丰满大乳奶| 日本欧洲一区二区| 性色av蜜臀av色欲av| 夜夜亚洲天天久久| 国产又大又粗又硬| 在线播放精品一区二区三区 | 国产一级片在线播放| 高清欧美性猛交| 51精品国产| 天天想你在线观看完整版电影免费| 日韩电影在线观看网站| 日本aaa视频| 精品二区三区线观看| 亚洲不卡免费视频| 九九久久久久99精品| 久久国产精品美女| 久久99国产精品一区| 激情综合五月婷婷| 开心激情五月网| 欧美三电影在线| 成人激情电影在线看| 日韩av片永久免费网站| 网红女主播少妇精品视频| 人体内射精一区二区三区| 高清不卡一区二区| avove在线播放| 日韩欧美一级精品久久| 国产一二区在线| 91久久大香伊蕉在人线| 午夜激情一区| 性猛交╳xxx乱大交| 亚洲一二三四在线观看| 二区三区在线视频| 久久久久在线观看| 亚洲成在人线免费观看| 一本色道无码道dvd在线观看| 91免费版在线| 国产一级片av| 日韩在线中文字| 国产精品高清一区二区| 国产传媒久久久| 97久久精品人人澡人人爽| 国产高清中文字幕| 亚洲日本成人女熟在线观看| 亚洲www啪成人一区二区| 日本成人黄色| 久久99久久99| 青草影院在线观看| 亚洲国产精品人久久电影| 六月婷婷综合| 亚洲韩国在线| 国产精品一品视频| 日韩精品一卡二卡| 亚洲人成网站色ww在线| 欧洲午夜精品| bt天堂新版中文在线地址| 99国产精品久久久| 国产男人搡女人免费视频| 日韩色av导航| 黑人久久a级毛片免费观看| 日韩av资源在线| 国产精品乱码人人做人人爱 | 亚洲美女免费精品视频在线观看| 国产精品迅雷| 中文字幕一区二区三区精彩视频| 国产不卡视频在线观看| 丰满少妇xoxoxo视频| 精品国产欧美成人夜夜嗨| 哺乳挤奶一区二区三区免费看| 日韩中文字幕三区| 国产精品毛片无遮挡高清| 亚洲乱熟女一区二区| 国产不卡在线观看| 欧美区亚洲区| 成熟人妻av无码专区| 日韩精品中文字幕一区| 亚洲成人激情社区| 国产成人生活片| 久久精品视频免费| 性中国xxx极品hd| 国产精品成人aaaaa网站| 欧美.日韩.国产.一区.二区| 一区二区精品免费|