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

ViewPager實現輪播廣告圖

移動開發 Android
輪播廣告在現在的應用中比較常見,下面就來實現下該功能(文章參考了網上流傳的黑馬的視頻教程)先來看下具體的實現效果。首先需要說明的就是在這篇文章里并沒有同時實現左右循環滑動和手指觸碰自動停止的功能,這個問題還沒有解決,留待以后再解決,也希望有知道的朋友在下面留言。

[[177558]]

輪播廣告在現在的應用中比較常見,下面就來實現下該功能(文章參考了網上流傳的黑馬的視頻教程)先來看下具體的實現效果:  

 

實現思路:

1.為ViewPager設置數據源,實現ViewPager的滾動

2.將圓點指示器與ViewPager的頁面對應起來

3.實現左右滑動均能無限循環

4.實現自動播放

5.實現當手指滑動的時候取消自動播發

首先需要說明的就是在這篇文章里并沒有同時實現左右循環滑動和手指觸碰自動停止的功能,這個問題還沒有解決,留待以后再解決,也希望有知道的朋友在下面留言,先謝謝拉。

1.首先我們定義布局文件,用來顯示Banner

這里我們采用對的是相對布局RelativeLayout,當然也可以采用幀布局FrameLayout。布局文件activity_mian.xml代碼:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     xmlns:tools="http://schemas.android.com/tools" 
  4.     android:id="@+id/activity_main" 
  5.     android:layout_width="match_parent" 
  6.     android:layout_height="match_parent" 
  7.     tools:context="com.qc.admin.mylunbotu.MainActivity"
  8.  
  9.     <RelativeLayout 
  10.         android:layout_width="match_parent" 
  11.         android:layout_height="160dp"
  12.  
  13.         <android.support.v4.view.ViewPager 
  14.             android:id="@+id/viewpager" 
  15.             android:layout_width="match_parent" 
  16.             android:layout_height="match_parent"
  17.  
  18.         </android.support.v4.view.ViewPager> 
  19.  
  20.         <LinearLayout 
  21.             android:layout_width="match_parent" 
  22.             android:layout_height="40dp" 
  23.             android:layout_alignParentBottom="true" 
  24.             android:background="#66000000" 
  25.             android:gravity="center_horizontal" 
  26.             android:orientation="vertical" 
  27.             android:padding="5dp"
  28.  
  29.             <TextView 
  30.                 android:id="@+id/tv_desc" 
  31.                 android:layout_width="wrap_content" 
  32.                 android:layout_height="wrap_content" 
  33.                 android:maxLines="1" 
  34.                 android:text="這是圖片描述" 
  35.                 android:textColor="@android:color/white" /> 
  36.  
  37.             <!--用來填充圓點指示器的容器--> 
  38.             <LinearLayout 
  39.                 android:id="@+id/point_container" 
  40.                 android:layout_width="wrap_content" 
  41.                 android:layout_height="wrap_content" 
  42.                 android:layout_marginTop="5dp" 
  43.                 android:orientation="horizontal" /> 
  44.         </LinearLayout> 
  45.     </RelativeLayout> 
  46. </RelativeLayout>  

2.初始化圓點指示器

這里我們提供的圖片數據和顯示的文本數據都是靜態的,直接從數組資源中獲得的,如:

  1. //圖片資源id數組 
  2.         imageResIds = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e}; 
  3.         // 文本描述 
  4.         contentDescs = new String[]{ 
  5.                 "鞏俐不低俗,我就不能低俗"
  6.                 "撲樹又回來啦!再唱經典老歌引萬人大合唱"
  7.                 "揭秘北京電影如何升級"
  8.                 "樂視網TV版大派送"
  9.                 "熱血屌絲的反殺" 
  10.         };  

我們可以自己定義兩個shape,來顯示圓點指示器的兩種不同顯示狀態,然后再定義一個selector,將它設置為控件的背景(ImageView),通過其setEnable(Boolean bool)方法可以自動的決定使用哪個圖片。代碼分別如下:

a.正常狀態下,灰色圓點,point_normal.xml:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:shape="oval"
  4.     <size 
  5.         android:width="5dp" 
  6.         android:height="5dp" /> 
  7.     <solid android:color="#44000000" /> 
  8.  
  9. </shape>  

b.點擊狀態下,白色圓點 point_pressed.xml:

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:shape="oval"
  4.     <size android:width="5dp" android:height="5dp"/> 
  5.     <solid android:color="#FFFFFFFF"/> 
  6. </shape>  

c.設置背景時的xml文件, point_bg.xml:

  1. <selector xmlns:android="http://schemas.android.com/apk/res/android"
  2.  
  3.     <item android:state_enabled="true" android:drawable="@drawable/point_pressed"/> 
  4.     <item android:state_enabled="false" android:drawable="@drawable/point_normal"/> 
  5. </selector>  

具體代碼:

  1. private void initData() { 
  2.  
  3.        //圖片資源id數組 
  4.        imageResIds = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e}; 
  5.        // 文本描述 
  6.        contentDescs = new String[]{ 
  7.                "鞏俐不低俗,我就不能低俗"
  8.                "撲樹又回來啦!再唱經典老歌引萬人大合唱"
  9.                "揭秘北京電影如何升級"
  10.                "樂視網TV版大派送"
  11.                "熱血屌絲的反殺" 
  12.        }; 
  13.        imageViewList = new ArrayList<>(); 
  14.        LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
  15.        mParams.leftMargin = 15; 
  16.        mParams.topMargin = 2; 
  17.  
  18.        ImageView imageView; 
  19.        ImageView pointView; 
  20.        //初始化要展示的ImageView,并添加圓點指示器 
  21.        for (int i = 0; i < imageResIds.length; i++) { 
  22.            // 初始化圖片 
  23.            imageView = new ImageView(this); 
  24.            imageView.setBackgroundResource(imageResIds[i]); 
  25.            imageViewList.add(imageView); 
  26.  
  27.            // 初始化指示器 
  28.            pointView = new ImageView(this); 
  29.            pointView.setBackgroundResource(R.drawable.point_bg); 
  30.            pointView.setLayoutParams(mParams); 
  31.            if (i == 0) { 
  32.                textView.setText(contentDescs[0]); 
  33.                pointView.setEnabled(true); 
  34.            } else { 
  35.                pointView.setEnabled(false); 
  36.            } 
  37.            mPointsLayout.addView(pointView); 
  38.        } 
  39.    }  

注意:創建shape文件的時候,如果找不到,可以切換到project目錄下,在drawable目錄下右鍵,new->Drawable resource file ,得到如下界面: 

 

將selector直接改為shape即可

3.為ViewPager設置適配器

  1. class MyAdapter extends PagerAdapter { 
  2.  
  3.        // 1.返回條目的總數 
  4.        @Override 
  5.        public int getCount() { 
  6.  
  7.            //return imageViewList.size(); 
  8.            return Integer.MAX_VALUE; 
  9.        } 
  10.  
  11.        // 2.返回要顯示的條目,并創建條目 
  12.        @Override 
  13.        public Object instantiateItem(ViewGroup container, int position) { 
  14.            //container:容器,其實也就是ViewPager 
  15.            //position:當前要顯示的條目的位置 
  16.  
  17.            int newPosition = position % imageViewList.size(); 
  18.            ImageView imageView = imageViewList.get(newPosition); 
  19.            //a.將View對象添加到container容器中 
  20.            container.addView(imageView); 
  21.            //b.把View對象返回給框架,適配器 
  22.            return imageView; 
  23.        } 
  24.  
  25.        // 3.銷毀條目,其實就是將要銷毀的對象object從container中移除出去就好了 
  26.        @Override 
  27.        public void destroyItem(ViewGroup container, int position, Object object) { 
  28.            container.removeView((View) object); 
  29.        } 
  30.  
  31.        // 4.指定復用的判斷邏輯(一般為固定寫法) 
  32.        @Override 
  33.        public boolean isViewFromObject(View view, Object object) { 
  34.            // 當滑動到新的條目之后,又返回回來,view是否可以被復用 
  35.            return view == object; 
  36.        } 
  37.    }  

在這里我們實現的是偽無限循環,其實就是將我們的第一項設置為一個很大的數的中間位置(Integer.MAX_VALUE),這樣當我們向左向右滑動的時候,將返回的position對數據的大小進行取模運算%,根據相應的位置設置相應的圖片或者文字即可。這樣就實現了向右向左都是無限循環了。

4.實現自動播放

我們當然可以直接開啟一個線程,在里面設置ViewPager的當前項,但是直接使用Handler更便于進行控機制,因為我們可以為ViewPager設置滾動監聽器。自動播放控制代碼:

  1. private void startRun() { 
  2.         mHandler = new Handler(); 
  3.         mHandler.postDelayed(mTaskRunnable, delayMillis); 
  4.  
  5.     } 
  6.  
  7.     //該線程一直運行著,知道activity被銷毀,此時將isActivityAlive設置為false 
  8.     final Runnable mTaskRunnable = new Runnable() { 
  9.         @Override 
  10.         public void run() { 
  11.             // 如果activity未被銷毀,就一直執行該線程 
  12.             // 在ViewPager的OnPageChangeListener方法中決定是否將isAutoRun置反 
  13.             if (isActivityAlive) { 
  14.                 if (isAutoRun) { 
  15.                     viewPager.setCurrentItem((viewPager.getCurrentItem() + 1) % imageViewList.size()); 
  16.                     mHandler.postDelayed(mTaskRunnable, delayMillis); 
  17.                 } else { 
  18.                     mHandler.postDelayed(mTaskRunnable, delayMillis); 
  19.                 } 
  20.             } 
  21.         } 
  22.     };  

為ViewPager設置滾動監聽器,這里我們直接讓當前類實現ViewPager.OnPageChangeListener接口,實現其中的抽象方法:

  1. @Override 
  2.     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
  3.  
  4.     } 
  5.  
  6.     @Override 
  7.     public void onPageSelected(int position) { 
  8.         int newPosition = position % imageViewList.size(); 
  9.         textView.setText(contentDescs[newPosition]); 
  10.  
  11.         // 先將上一個置位false,將當前位置置位true,這樣可以使得初始化的時候就在第一個位置 
  12.         // (因為previousSelectedItem的未賦值時候的初始值默認為0) 
  13.         mPointsLayout.getChildAt(previousSelectedItem).setEnabled(false); 
  14.         mPointsLayout.getChildAt(newPosition).setEnabled(true); 
  15.         previousSelectedItem = newPosition; 
  16.     } 
  17.  
  18.     @Override 
  19.     public void onPageScrollStateChanged(int state) { 
  20.         switch (state) { 
  21.             // 靜止狀態 
  22.             case SCROLL_STATE_IDLE: 
  23.                 isAutoRun = true
  24.                 break; 
  25.             // 拖拽中 
  26.             case SCROLL_STATE_DRAGGING: 
  27.                 isAutoRun = false
  28.                 break; 
  29.             // 拖拽后松手,自動回到最終位置的過程 
  30.             case SCROLL_STATE_SETTLING: 
  31.                 isAutoRun = true
  32.                 break; 
  33.         } 
  34.     }  

這里面我們就實現了當手指滑動的時候停止自動播放,當手指抬起的時候又開始了自動播放。但是,注意,你以為這些代碼組合起來就能實現循環滾動的同時還能手指控制是否自動播放?好吧,我當時也是這樣以為的,運行后會報錯:

  1. java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first 

 

意思是我們待加入的子視圖已經有了一個父視圖,需要調用它的父視圖的removeView()方法來將其移除,之后再添加,然而事實證明并沒有什么卵用。留待以后解決吧,在只能犧牲掉無線循環了,這里我們需要將getCount方法中的返回值改成我們數據的大小就好了: 

  1. @Override 
  2.        public int getCount() { 
  3.  
  4.            return imageViewList.size(); 
  5.           // return Integer.MAX_VALUE; 
  6.        }  

然后將之前設置的默認的第一項:

  1. private void initAdapter() { 
  2.         int firstPosition = Integer.MAX_VALUE / 2 - (Integer.MAX_VALUE / 2 % imageViewList.size()); 
  3.         //viewPager.setOffscreenPageLimit(imageViewList.size()); 
  4.         viewPager.setAdapter(new MyAdapter()); 
  5.         // 設置從中間的某個位置開始滑動,從而能夠實現向左向右的循環滑動 
  6.         viewPager.setCurrentItem(firstPosition); 
  7.     }  

改為: 

  1. private void initAdapter() { 
  2.  
  3.        viewPager.setAdapter(new MyAdapter()); 
  4.        // 設置從中間的某個位置開始滑動,從而能夠實現向左向右的循環滑動 
  5.        viewPager.setCurrentItem(0); 
  6.    }  

可能說了這么多,看的都混了,在最后就貼一下完整的源碼吧(支持自動播放、手指控制,但是不支持左右無限循環)。 

  1. package com.qc.admin.mylunbotu; 
  2.  
  3. import android.os.Bundle; 
  4. import android.os.Handler; 
  5. import android.support.v4.view.PagerAdapter; 
  6. import android.support.v4.view.ViewPager; 
  7. import android.support.v7.app.AppCompatActivity; 
  8. import android.view.View
  9. import android.view.ViewGroup; 
  10. import android.widget.ImageView; 
  11. import android.widget.LinearLayout; 
  12. import android.widget.TextView; 
  13.  
  14. import java.util.ArrayList; 
  15. import java.util.List; 
  16.  
  17. import static android.support.v4.view.ViewPager.SCROLL_STATE_DRAGGING; 
  18. import static android.support.v4.view.ViewPager.SCROLL_STATE_IDLE; 
  19. import static android.support.v4.view.ViewPager.SCROLL_STATE_SETTLING; 
  20.  
  21.  
  22. public class MainActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener { 
  23.  
  24.  
  25.     private ViewPager viewPager; 
  26.     private int[] imageResIds; 
  27.     private List<ImageView> imageViewList; 
  28.     private LinearLayout mPointsLayout; 
  29.     private String[] contentDescs; 
  30.     private int previousSelectedItem; 
  31.     private TextView textView; 
  32.     private Handler mHandler; 
  33.     boolean isAutoRun = true
  34.     boolean isActivityAlive = true
  35.     private int delayMillis = 2000; 
  36.  
  37.     @Override 
  38.     protected void onCreate(Bundle savedInstanceState) { 
  39.         super.onCreate(savedInstanceState); 
  40.         setContentView(R.layout.activity_main); 
  41.  
  42.         //初始化視圖 
  43.         initViews(); 
  44.  
  45.         //初始化數據 
  46.         initData(); 
  47.  
  48.         //初始化適配器 
  49.         initAdapter(); 
  50.  
  51.         //開始自動播放 
  52.         startRun(); 
  53.  
  54.     } 
  55.  
  56.     private void startRun() { 
  57.         mHandler = new Handler(); 
  58.         mHandler.postDelayed(mTaskRunnable, delayMillis); 
  59.  
  60.     } 
  61.  
  62.     //該線程一直運行著,知道activity被銷毀,此時將isActivityAlive設置為false 
  63.     final Runnable mTaskRunnable = new Runnable() { 
  64.         @Override 
  65.         public void run() { 
  66.             // 如果activity未被銷毀,就一直執行該線程 
  67.             // 在ViewPager的OnPageChangeListener方法中決定是否將isAutoRun置反 
  68.             if (isActivityAlive) { 
  69.                 if (isAutoRun) { 
  70.                     viewPager.setCurrentItem((viewPager.getCurrentItem() + 1) % imageViewList.size()); 
  71.                     mHandler.postDelayed(mTaskRunnable, delayMillis); 
  72.                 } else { 
  73.                     mHandler.postDelayed(mTaskRunnable, delayMillis); 
  74.                 } 
  75.             } 
  76.         } 
  77.     }; 
  78.  
  79.     private void initAdapter() { 
  80.         //int firstPosition = Integer.MAX_VALUE / 2 - (Integer.MAX_VALUE / 2 % imageViewList.size()); 
  81.         //viewPager.setOffscreenPageLimit(imageViewList.size()); 
  82.         viewPager.setAdapter(new MyAdapter()); 
  83.         // 設置從中間的某個位置開始滑動,從而能夠實現向左向右的循環滑動 
  84.         //viewPager.setCurrentItem(firstPosition); 
  85.         viewPager.setCurrentItem(0); 
  86.     } 
  87.  
  88.     private void initData() { 
  89.  
  90.         //圖片資源id數組 
  91.         imageResIds = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.d, R.drawable.e}; 
  92.         // 文本描述 
  93.         contentDescs = new String[]{ 
  94.                 "鞏俐不低俗,我就不能低俗"
  95.                 "撲樹又回來啦!再唱經典老歌引萬人大合唱"
  96.                 "揭秘北京電影如何升級"
  97.                 "樂視網TV版大派送"
  98.                 "熱血屌絲的反殺" 
  99.         }; 
  100.         imageViewList = new ArrayList<>(); 
  101.         LinearLayout.LayoutParams mParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
  102.         mParams.leftMargin = 15; 
  103.         mParams.topMargin = 2; 
  104.  
  105.         ImageView imageView; 
  106.         ImageView pointView; 
  107.         //初始化要展示的ImageView,并添加圓點指示器 
  108.         for (int i = 0; i < imageResIds.length; i++) { 
  109.             // 初始化圖片 
  110.             imageView = new ImageView(this); 
  111.             imageView.setBackgroundResource(imageResIds[i]); 
  112.             imageViewList.add(imageView); 
  113.  
  114.             // 初始化指示器 
  115.             pointView = new ImageView(this); 
  116.             pointView.setBackgroundResource(R.drawable.point_bg); 
  117.             pointView.setLayoutParams(mParams); 
  118.             if (i == 0) { 
  119.                 textView.setText(contentDescs[0]); 
  120.                 pointView.setEnabled(true); 
  121.             } else { 
  122.                 pointView.setEnabled(false); 
  123.             } 
  124.             mPointsLayout.addView(pointView); 
  125.         } 
  126.     } 
  127.  
  128.     private void initViews() { 
  129.  
  130.         viewPager = (ViewPager) findViewById(R.id.viewpager); 
  131.         viewPager.addOnPageChangeListener(this); 
  132.  
  133.         textView = (TextView) findViewById(R.id.tv_desc); 
  134.         // 用來添加圓點指示器 
  135.         mPointsLayout = (LinearLayout) findViewById(R.id.point_container); 
  136.     } 
  137.  
  138.     @Override 
  139.     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
  140.  
  141.     } 
  142.  
  143.     @Override 
  144.     public void onPageSelected(int position) { 
  145.         int newPosition = position % imageViewList.size(); 
  146.         textView.setText(contentDescs[newPosition]); 
  147.  
  148.         // 先將上一個置位false,將當前位置置位true,這樣可以使得初始化的時候就在第一個位置 
  149.         // (因為previousSelectedItem的未賦值時候的初始值默認為0) 
  150.         mPointsLayout.getChildAt(previousSelectedItem).setEnabled(false); 
  151.         mPointsLayout.getChildAt(newPosition).setEnabled(true); 
  152.         previousSelectedItem = newPosition; 
  153.     } 
  154.  
  155.     @Override 
  156.     public void onPageScrollStateChanged(int state) { 
  157.         switch (state) { 
  158.             // 靜止狀態 
  159.             case SCROLL_STATE_IDLE: 
  160.                 isAutoRun = true
  161.                 break; 
  162.             // 拖拽中 
  163.             case SCROLL_STATE_DRAGGING: 
  164.                 isAutoRun = false
  165.                 break; 
  166.             // 拖拽后松手,自動回到最終位置的過程 
  167.             case SCROLL_STATE_SETTLING: 
  168.                 isAutoRun = true
  169.                 break; 
  170.         } 
  171.     } 
  172.  
  173.     // 創建一個MyAdapter類,繼承自PagerAdapter來為ViewPager設置適配器 
  174.     class MyAdapter extends PagerAdapter { 
  175.  
  176.         // 1.返回條目的總數 
  177.         @Override 
  178.         public int getCount() { 
  179.  
  180.             return imageViewList.size(); 
  181. //            return Integer.MAX_VALUE; 
  182.         } 
  183.  
  184.         // 2.返回要顯示的條目,并創建條目 
  185.         @Override 
  186.         public Object instantiateItem(ViewGroup container, int position) { 
  187.             //container:容器,其實也就是ViewPager 
  188.             //position:當前要顯示的條目的位置 
  189.  
  190.             int newPosition = position % imageViewList.size(); 
  191.             ImageView imageView = imageViewList.get(newPosition); 
  192.             //a.將View對象添加到container容器中 
  193.             container.addView(imageView); 
  194.             //b.把View對象返回給框架,適配器 
  195.             return imageView; 
  196.         } 
  197.  
  198.         // 3.銷毀條目,其實就是將要銷毀的對象object從container中移除出去就好了 
  199.         @Override 
  200.         public void destroyItem(ViewGroup container, int position, Object object) { 
  201.             container.removeView((View) object); 
  202.         } 
  203.  
  204.         // 4.指定復用的判斷邏輯(一般為固定寫法) 
  205.         @Override 
  206.         public boolean isViewFromObject(View view, Object object) { 
  207.             // 當滑動到新的條目之后,又返回回來,view是否可以被復用 
  208.             return view == object; 
  209.         } 
  210.     } 
  211.  
  212.     @Override 
  213.     protected void onDestroy() { 
  214.         isActivityAlive = false
  215.         super.onDestroy(); 
  216.     } 
  217.  
責任編輯:龐桂玉 來源: segmentfault
相關推薦

2023-08-08 14:31:42

輪播圖鴻蒙

2022-09-19 19:16:42

輪播圖has

2024-06-11 00:00:00

前端輪播圖硬件

2015-07-21 12:30:15

Swift輪播圖無限循環

2022-06-16 09:55:58

css輪播圖

2012-02-03 09:56:27

移動廣告信息圖

2018-04-16 14:39:10

Vue輪播切換

2024-03-20 09:40:27

動畫技巧CSS逐幀動畫

2024-07-03 10:36:14

2015-05-28 10:20:34

js相冊翻頁

2016-03-31 11:28:21

imageView圖片輪播

2018-04-18 14:38:14

廣告

2018-01-08 16:19:04

微信程序輪播圖

2016-12-07 10:58:35

移動應用開發底部導航android

2011-12-24 18:01:42

應用

2013-03-04 12:58:09

原生廣告移動廣告

2025-05-19 08:15:00

ChromeCSS輪播特效

2024-01-03 12:57:38

輪播圖零代碼底層

2021-11-03 07:58:27

SaaSRta技術

2017-06-14 10:45:21

點贊
收藏

51CTO技術棧公眾號

26uuu久久噜噜噜噜| 色婷婷一区二区| 3d精品h动漫啪啪一区二区| 朝桐光av在线| 理论片一区二区在线| 色综合色综合色综合| 正在播放亚洲| 神马午夜一区二区| 日韩av网站免费在线| 久久福利视频导航| 亚洲欧美日本一区| 欧美天堂在线| 婷婷丁香久久五月婷婷| 日本一区二区精品| av中文在线观看| 免费日韩视频| 欧美高清视频免费观看| 少妇久久久久久久久久| 深夜福利一区| 欧美在线视频全部完| 国产在线无码精品| 国产色在线 com| 成人精品免费网站| 成人精品一区二区三区电影免费 | 欧美一区二区三区……| 日本女人性生活视频| 欧美色图婷婷| 欧美不卡123| 日本新janpanese乱熟| 黄污视频在线观看| 亚洲桃色在线一区| 日韩在线电影一区| 日韩在线免费播放| 成人性生交大片免费看视频在线| 国产精品亚洲欧美导航| 日韩欧美成人一区二区三区| 欧美网站在线| 久久久99久久精品女同性| 90岁老太婆乱淫| 久久porn| 亚洲精品一区二区三区精华液 | 成人动漫中文字幕| 91在线色戒在线| 一级做a爰片久久毛片16| 噜噜噜躁狠狠躁狠狠精品视频| 欧美精品久久久久| 免费网站看av| 午夜国产欧美理论在线播放| 日韩视频在线观看免费| 男人天堂资源网| 日韩在线第七页| 在线成人激情视频| 国产真人做爰视频免费| 国产精品嫩模av在线| 亚洲美女性生活视频| 国产精品久久AV无码| www.久久东京| 精品国产乱码久久久久久1区2区| 先锋资源在线视频| 日韩一区二区三区高清在线观看| 欧美男同性恋视频网站| 亚洲黄色av片| 国产精品一区二区三区av| 在线播放一区二区三区| 国产女同无遮挡互慰高潮91| 99精品美女视频在线观看热舞 | 欧美在线不卡区| 好看的av在线| 日韩av在线播放中文字幕| 国产精品无av码在线观看| 一区二区视频在线免费观看| 久久国产成人午夜av影院| 91精品在线观| 韩国av免费在线| 91麻豆精品在线观看| 青青草成人激情在线| 91sp网站在线观看入口| 亚洲欧美激情在线| 台湾无码一区二区| 亚洲同志男男gay1069网站| 日本高清成人免费播放| 狠狠操狠狠干视频| 伊人www22综合色| 亚洲国产精品推荐| 日本乱子伦xxxx| 天天精品视频| 97在线免费观看| 国产成人自拍偷拍| 国产一区不卡视频| 久久久com| 在线观看黄av| 午夜精品免费在线| 午夜激情在线观看视频| 日韩在线网址| 亚洲视频电影图片偷拍一区| 亚洲国产123| 99国产精品99久久久久久粉嫩| 国产成人激情视频| 亚洲av无码国产精品久久不卡 | 狠狠久久综合婷婷不卡| 大地资源中文在线观看免费版| 亚洲男同性恋视频| 青青视频在线播放| 亚洲一区二区三区免费| 亚洲网站在线播放| 久久久综合久久久| 秋霞午夜av一区二区三区| www.成人av| 97视频精彩视频在线观看| 亚洲一区在线观看视频| 亚洲污视频在线观看| 久久国产精品色av免费看| 中文字幕视频在线免费欧美日韩综合在线看 | 国产福利影院在线观看| 国产一区丝袜| 久久久97精品| 天天干,天天干| 国产v综合v亚洲欧| 亚洲三区四区| 性欧美1819sex性高清| 日韩精品一区二| 成人精品一二三区| 美女被久久久| 激情小说综合区| 四虎影视国产在线视频| 欧美日韩和欧美的一区二区| 性色av蜜臀av色欲av| 欧美日韩国产探花| 亚洲999一在线观看www| 91在线导航| 在线观看91视频| 久久久久国产精品区片区无码| 欧美 日韩 国产 一区| 国产欧美日韩综合精品| 国产免费a∨片在线观看不卡| 亚洲成a天堂v人片| 在线观看欧美一区二区| 久久精品青草| 91色中文字幕| 欧美jizzhd69巨大| 日韩欧美国产视频| 黄瓜视频污在线观看| aⅴ色国产欧美| 精品综合在线| 伊人网在线播放| 日韩风俗一区 二区| 久久9999久久免费精品国产| 国产成人免费在线| 欧美黄网在线观看| av不卡一区二区| 97精品伊人久久久大香线蕉 | 波多野结衣精品在线| 无码熟妇人妻av在线电影| 欧洲精品99毛片免费高清观看| 北条麻妃99精品青青久久| 一级特黄特色的免费大片视频| 国产精品久久久久久久岛一牛影视| 中文字幕无码不卡免费视频| 欧美综合久久| 91精品久久久久久久久久另类| av大片在线看| 欧美另类久久久品| 中文字幕在线有码| 成人美女视频在线看| 天堂…中文在线最新版在线| 校园春色另类视频| 国产精品99久久久久久www| 国产午夜精品一区理论片| 欧美日韩在线精品一区二区三区激情| 国产免费嫩草影院| 国产一区二区三区在线观看免费视频 | 国产成人一区二| 在线观看a视频| 日韩精品一区二区三区在线播放 | 7777精品伊人久久久大香线蕉完整版 | 国产精品久久久久精k8| 日韩精品视频网址| 亚洲高清激情| 三区精品视频| 国产亚洲字幕| 欧美一区二区.| 久草中文在线| 日韩电影在线观看中文字幕| 中文字幕av在线免费观看| 亚洲精品欧美专区| 久久国产精品无码一级毛片| 日本va欧美va欧美va精品| 精品一区二区三区毛片| 啪啪国产精品| 国产欧美精品xxxx另类| 草美女在线观看| 国产一区二区三区网站| www.黄色小说.com| 色婷婷久久一区二区三区麻豆| 久久人妻无码aⅴ毛片a片app| 大胆亚洲人体视频| 91精品无人成人www| 欧美黄色精品| 日韩欧美视频一区二区三区四区 | 日韩欧美综合一区| 影音先锋在线国产| 亚洲乱码中文字幕| 在线观看日本中文字幕| 国产成人精品1024| www.日本一区| 午夜在线视频观看日韩17c| 宅男噜噜99国产精品观看免费| 奇米影视777在线欧美电影观看| 成人精品一区二区三区电影免费| 性感女国产在线| 欧美成人在线免费| a√资源在线| 日韩精品极品视频| www.中文字幕| 5月丁香婷婷综合| 无码人妻丰满熟妇区五十路| 亚洲综合色成人| 手机av在线不卡| 2023国产精品视频| 中国特级黄色大片| 激情综合色播五月| 欧美日韩亚洲自拍| 亚洲一区图片| 国产亚洲黄色片| 欧美在线国产| 一区二区三区欧美在线| 精品盗摄女厕tp美女嘘嘘| 久久青青草综合| 免费日韩一区二区三区 | 天堂成人娱乐在线视频免费播放网站| 亚洲a级在线播放观看| 欧美三级电影网址| 国产精品视频永久免费播放| 91av亚洲| 5566日本婷婷色中文字幕97| 国产精品电影| 久久久免费高清电视剧观看| 图片区小说区亚洲| 欧美成人精品在线观看| 国产精品va在线观看视色| 色爱av美腿丝袜综合粉嫩av| av在线免费一区| 尤物精品国产第一福利三区| 国产青青草在线| 在线观看国产精品淫| 在线视频婷婷| 中文字幕成人在线| 婷婷五月在线视频| 久久综合久久八八| 91黄色在线| 欧美日韩国产二区| 国产又色又爽又黄刺激在线视频| 欧美激情亚洲视频| 91福利区在线观看| 69**夜色精品国产69乱| 爱啪啪综合导航| 情事1991在线| 素人啪啪色综合| 成人动漫网站在线观看| 成人噜噜噜噜| 国产91社区| 奇米777国产一区国产二区| 欧美lavv| 久久一区二区三区喷水| 中文字幕乱码免费| 国产精品多人| 黄色动漫网站入口| 免费成人av资源网| 亚洲av毛片在线观看| 国产不卡视频一区| 久久精品一区二区免费播放| 国产欧美久久久精品影院| 女人18毛片毛片毛片毛片区二| 亚洲免费观看在线观看| 国产亚洲精品码| 一本一道久久a久久精品综合蜜臀| 无码人妻熟妇av又粗又大| 欧美久久免费观看| 黄色小视频免费观看| 精品视频在线播放| 生活片a∨在线观看| 久久久久久国产精品| 在线天堂资源www在线污| 国产精品视频自在线| 超碰在线一区| 天堂社区 天堂综合网 天堂资源最新版 | 日韩精品视频在线免费观看| 国产女人在线观看| 九九视频这里只有精品| 成人免费看视频网站| 成人黄色大片在线免费观看| 国产毛片久久久| 亚洲午夜在线观看| 日韩午夜免费| 欧美大片久久久| 91亚洲精品久久久蜜桃| 久久久久久久麻豆| 狠狠色狠色综合曰曰| 一道本无吗一区| 亚洲激情在线观看视频免费| 四虎久久免费| 欧美一乱一性一交一视频| 久久国产精品美女| 日韩av电影免费在线观看| 欧美久久一区| 天天操,天天操| 91一区二区在线| 一区二区在线观看免费视频| 在线观看国产精品网站| 日本免费不卡视频| 久久精品视频在线播放| japanese23hdxxxx日韩| 国产精品二区三区四区| 国产精品久久久久9999赢消| 人妻内射一区二区在线视频| 国产精品亚洲第一| 看黄色录像一级片| 日本精品一级二级| 搡老岳熟女国产熟妇| 欧美成aaa人片免费看| 456成人影院在线观看| 精品欧美一区二区精品久久| 欧美国产三级| 色男人天堂av| 亚洲天堂av一区| 夜夜嗨aⅴ一区二区三区| 亚洲欧美日韩在线一区| а√在线天堂官网| av一区和二区| 欧美一区亚洲| 91丝袜超薄交口足| 国产精品久久久久精k8 | 亚洲免费福利| 国产精选一区二区| 在线日韩中文| 黄色激情在线观看| 亚洲一区二区欧美| 午夜免费福利视频| 欧美日韩国产二区| 哺乳挤奶一区二区三区免费看| 亚洲精品天堂成人片av在线播放| 精品综合久久久久久8888| 黄大色黄女片18免费| 在线观看网站黄不卡| 国产中文字幕在线观看| 日韩av电影院| re久久精品视频| 邪恶网站在线观看| 国产精品久久免费看| 一区二区三区免费观看视频| 久青草国产97香蕉在线视频| 成人污污www网站免费丝瓜| 免费观看黄色大片| 国产在线视频一区二区三区| www日韩在线| 日韩午夜精品电影| 国产探花视频在线观看| 国产一区自拍视频| 久久精品导航| 免费黄色在线网址| 91精品欧美综合在线观看最新 | 四虎影院在线播放| 亲子乱一区二区三区电影| 国产日产一区| 亚洲精品20p| 亚洲精品国产a久久久久久| 亚洲av综合色区无码一二三区| 欧美激情a在线| 亚洲人成网www| www.精品在线| 亚洲午夜三级在线| 你懂的免费在线观看视频网站| 国产精品白嫩美女在线观看| 久久国产亚洲| 麻豆tv在线观看| 欧美性xxxx极品hd欧美风情| 91网页在线观看| 91黄在线观看| 久久福利一区| 亚洲色图27p| 亚洲第一免费播放区| 亚洲爱爱视频| 欧美a级免费视频| 久久精品夜色噜噜亚洲aⅴ| 97免费观看视频| 97精品视频在线| 国产精品久久久久久影院8一贰佰| 日韩成人av影院| 在线观看亚洲专区| 毛片网站在线看| 欧美亚州在线观看| 国产精品1区2区| 潘金莲一级淫片aaaaaa播放| 伦伦影院午夜日韩欧美限制| 日韩深夜福利| 1314成人网| 在线观看一区日韩| 嗯啊主人调教在线播放视频| 亚洲一区二区三区色| 不卡av电影在线播放|