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

Android瀑布流照片墻實(shí)現(xiàn),體驗(yàn)不規(guī)則排列的美感Demo

移動(dòng)開(kāi)發(fā)
Android瀑布流照片墻實(shí)現(xiàn),體驗(yàn)不規(guī)則排列的美感Demo。

源碼簡(jiǎn)介

Android瀑布流照片墻實(shí)現(xiàn),體驗(yàn)不規(guī)則排列的美感Demo。
源碼運(yùn)行截圖

 

源碼片段

 

  1. /** 
  2.  * 自定義的ScrollView,在其中動(dòng)態(tài)地對(duì)圖片進(jìn)行添加。 
  3.  * 
  4.  * @author guolin 
  5.  */ 
  6. public class MyScrollView extends ScrollView implements OnTouchListener { 
  7.   
  8.     /** 
  9.      * 每頁(yè)要加載的圖片數(shù)量 
  10.      */ 
  11.     public static final int PAGE_SIZE = 15
  12.   
  13.     /** 
  14.      * 記錄當(dāng)前已加載到第幾頁(yè) 
  15.      */ 
  16.     private int page; 
  17.   
  18.     /** 
  19.      * 每一列的寬度 
  20.      */ 
  21.     private int columnWidth; 
  22.   
  23.     /** 
  24.      * 當(dāng)前第一列的高度 
  25.      */ 
  26.     private int firstColumnHeight; 
  27.   
  28.     /** 
  29.      * 當(dāng)前第二列的高度 
  30.      */ 
  31.     private int secondColumnHeight; 
  32.   
  33.     /** 
  34.      * 當(dāng)前第三列的高度 
  35.      */ 
  36.     private int thirdColumnHeight; 
  37.   
  38.     /** 
  39.      * 是否已加載過(guò)一次layout,這里onLayout中的初始化只需加載一次 
  40.      */ 
  41.     private boolean loadOnce; 
  42.   
  43.     /** 
  44.      * 對(duì)圖片進(jìn)行管理的工具類(lèi) 
  45.      */ 
  46.     private ImageLoader imageLoader; 
  47.   
  48.     /** 
  49.      * 第一列的布局 
  50.      */ 
  51.     private LinearLayout firstColumn; 
  52.   
  53.     /** 
  54.      * 第二列的布局 
  55.      */ 
  56.     private LinearLayout secondColumn; 
  57.   
  58.     /** 
  59.      * 第三列的布局 
  60.      */ 
  61.     private LinearLayout thirdColumn; 
  62.   
  63.     /** 
  64.      * 記錄所有正在下載或等待下載的任務(wù)。 
  65.      */ 
  66.     private static Set<loadimagetask> taskCollection; 
  67.   
  68.     /** 
  69.      * MyScrollView下的直接子布局。 
  70.      */ 
  71.     private static View scrollLayout; 
  72.   
  73.     /** 
  74.      * MyScrollView布局的高度。 
  75.      */ 
  76.     private static int scrollViewHeight; 
  77.   
  78.     /** 
  79.      * 記錄上垂直方向的滾動(dòng)距離。 
  80.      */ 
  81.     private static int lastScrollY = -1
  82.   
  83.     /** 
  84.      * 記錄所有界面上的圖片,用以可以隨時(shí)控制對(duì)圖片的釋放。 
  85.      */ 
  86.     private List<imageview> imageViewList = new ArrayList<imageview>(); 
  87.   
  88.     /** 
  89.      * 在Handler中進(jìn)行圖片可見(jiàn)性檢查的判斷,以及加載更多圖片的操作。 
  90.      */ 
  91.     private static Handler handler = new Handler() { 
  92.   
  93.         public void handleMessage(android.os.Message msg) { 
  94.             MyScrollView myScrollView = (MyScrollView) msg.obj; 
  95.             int scrollY = myScrollView.getScrollY(); 
  96.             // 如果當(dāng)前的滾動(dòng)位置和上次相同,表示已停止?jié)L動(dòng) 
  97.             if (scrollY == lastScrollY) { 
  98.                 // 當(dāng)滾動(dòng)的最底部,并且當(dāng)前沒(méi)有正在下載的任務(wù)時(shí),開(kāi)始加載下一頁(yè)的圖片 
  99.                 if (scrollViewHeight + scrollY >= scrollLayout.getHeight() 
  100.                         && taskCollection.isEmpty()) { 
  101.                     myScrollView.loadMoreImages(); 
  102.                 } 
  103.                 myScrollView.checkVisibility(); 
  104.             } else { 
  105.                 lastScrollY = scrollY; 
  106.                 Message message = new Message(); 
  107.                 message.obj = myScrollView; 
  108.                 // 5毫秒后再次對(duì)滾動(dòng)位置進(jìn)行判斷 
  109.                 handler.sendMessageDelayed(message, 5); 
  110.             } 
  111.         }; 
  112.   
  113.     }; 
  114.   
  115.     /** 
  116.      * MyScrollView的構(gòu)造函數(shù)。 
  117.      * 
  118.      * @param context 
  119.      * @param attrs 
  120.      */ 
  121.     public MyScrollView(Context context, AttributeSet attrs) { 
  122.         super(context, attrs); 
  123.         imageLoader = ImageLoader.getInstance(); 
  124.         taskCollection = new HashSet<loadimagetask>(); 
  125.         setOnTouchListener(this); 
  126.     } 
  127.   
  128.     /** 
  129.      * 進(jìn)行一些關(guān)鍵性的初始化操作,獲取MyScrollView的高度,以及得到第一列的寬度值。并在這里開(kāi)始加載第一頁(yè)的圖片。 
  130.      */ 
  131.     @Override 
  132.     protected void onLayout(boolean changed, int l, int t, int r, int b) { 
  133.         super.onLayout(changed, l, t, r, b); 
  134.         if (changed && !loadOnce) { 
  135.             scrollViewHeight = getHeight(); 
  136.             scrollLayout = getChildAt(0); 
  137.             firstColumn = (LinearLayout) findViewById(R.id.first_column); 
  138.             secondColumn = (LinearLayout) findViewById(R.id.second_column); 
  139.             thirdColumn = (LinearLayout) findViewById(R.id.third_column); 
  140.             columnWidth = firstColumn.getWidth(); 
  141.             loadOnce = true
  142.             loadMoreImages(); 
  143.         } 
  144.     } 
  145.   
  146.     /** 
  147.      * 監(jiān)聽(tīng)用戶(hù)的觸屏事件,如果用戶(hù)手指離開(kāi)屏幕則開(kāi)始進(jìn)行滾動(dòng)檢測(cè)。 
  148.      */ 
  149.     @Override 
  150.     public boolean onTouch(View v, MotionEvent event) { 
  151.         if (event.getAction() == MotionEvent.ACTION_UP) { 
  152.             Message message = new Message(); 
  153.             message.obj = this
  154.             handler.sendMessageDelayed(message, 5); 
  155.         } 
  156.         return false
  157.     } 
  158.   
  159.     /** 
  160.      * 開(kāi)始加載下一頁(yè)的圖片,每張圖片都會(huì)開(kāi)啟一個(gè)異步線程去下載。 
  161.      */ 
  162.     public void loadMoreImages() { 
  163.         if (hasSDCard()) { 
  164.             int startIndex = page * PAGE_SIZE; 
  165.             int endIndex = page * PAGE_SIZE + PAGE_SIZE; 
  166.             if (startIndex < Images.imageUrls.length) { 
  167.                 Toast.makeText(getContext(), "正在加載...", Toast.LENGTH_SHORT) 
  168.                         .show(); 
  169.                 if (endIndex > Images.imageUrls.length) { 
  170.                     endIndex = Images.imageUrls.length; 
  171.                 } 
  172.                 for (int i = startIndex; i < endIndex; i++) { 
  173.                     LoadImageTask task = new LoadImageTask(); 
  174.                     taskCollection.add(task); 
  175.                     task.execute(Images.imageUrls[i]); 
  176.                 } 
  177.                 page++; 
  178.             } else { 
  179.                 Toast.makeText(getContext(), "已沒(méi)有更多圖片", Toast.LENGTH_SHORT) 
  180.                         .show(); 
  181.             } 
  182.         } else { 
  183.             Toast.makeText(getContext(), "未發(fā)現(xiàn)SD卡", Toast.LENGTH_SHORT).show(); 
  184.         } 
  185.     } 
  186.   
  187.     /** 
  188.      * 遍歷imageViewList中的每張圖片,對(duì)圖片的可見(jiàn)性進(jìn)行檢查,如果圖片已經(jīng)離開(kāi)屏幕可見(jiàn)范圍,則將圖片替換成一張空?qǐng)D。 
  189.      */ 
  190.     public void checkVisibility() { 
  191.         for (int i = 0; i < imageViewList.size(); i++) { 
  192.             ImageView imageView = imageViewList.get(i); 
  193.             int borderTop = (Integer) imageView.getTag(R.string.border_top); 
  194.             int borderBottom = (Integer) imageView 
  195.                     .getTag(R.string.border_bottom); 
  196.             if (borderBottom > getScrollY() 
  197.                     && borderTop < getScrollY() + scrollViewHeight) { 
  198.                 String imageUrl = (String) imageView.getTag(R.string.image_url); 
  199.                 Bitmap bitmap = imageLoader.getBitmapFromMemoryCache(imageUrl); 
  200.                 if (bitmap != null) { 
  201.                     imageView.setImageBitmap(bitmap); 
  202.                 } else { 
  203.                     LoadImageTask task = new LoadImageTask(imageView); 
  204.                     task.execute(imageUrl); 
  205.                 } 
  206.             } else { 
  207.                 imageView.setImageResource(R.drawable.empty_photo); 
  208.             } 
  209.         } 
  210.     } 
  211.   
  212.     /** 
  213.      * 判斷手機(jī)是否有SD卡。 
  214.      * 
  215.      * @return 有SD卡返回true,沒(méi)有返回false。 
  216.      */ 
  217.     private boolean hasSDCard() { 
  218.         return Environment.MEDIA_MOUNTED.equals(Environment 
  219.                 .getExternalStorageState()); 
  220.     } 
  221.   
  222.     /** 
  223.      * 異步下載圖片的任務(wù)。 
  224.      * 
  225.      * @author guolin 
  226.      */ 
  227.     class LoadImageTask extends AsyncTask<string, void,="" bitmap=""> { 
  228.   
  229.         /** 
  230.          * 圖片的URL地址 
  231.          */ 
  232.         private String mImageUrl; 
  233.   
  234.         /** 
  235.          * 可重復(fù)使用的ImageView 
  236.          */ 
  237.         private ImageView mImageView; 
  238.   
  239.         public LoadImageTask() { 
  240.         } 
  241.   
  242.         /** 
  243.          * 將可重復(fù)使用的ImageView傳入 
  244.          * 
  245.          * @param imageView 
  246.          */ 
  247.         public LoadImageTask(ImageView imageView) { 
  248.             mImageView = imageView; 
  249.         } 
  250.   
  251.         @Override 
  252.         protected Bitmap doInBackground(String... params) { 
  253.             mImageUrl = params[0]; 
  254.             Bitmap imageBitmap = imageLoader 
  255.                     .getBitmapFromMemoryCache(mImageUrl); 
  256.             if (imageBitmap == null) { 
  257.                 imageBitmap = loadImage(mImageUrl); 
  258.             } 
  259.             return imageBitmap; 
  260.         } 
  261.   
  262.         @Override 
  263.         protected void onPostExecute(Bitmap bitmap) { 
  264.             if (bitmap != null) { 
  265.                 double ratio = bitmap.getWidth() / (columnWidth * 1.0); 
  266.                 int scaledHeight = (int) (bitmap.getHeight() / ratio); 
  267.                 addImage(bitmap, columnWidth, scaledHeight); 
  268.             } 
  269.             taskCollection.remove(this); 
  270.         } 
  271.   
  272.         /** 
  273.          * 根據(jù)傳入的URL,對(duì)圖片進(jìn)行加載。如果這張圖片已經(jīng)存在于SD卡中,則直接從SD卡里讀取,否則就從網(wǎng)絡(luò)上下載。 
  274.          * 
  275.          * @param imageUrl 
  276.          *            圖片的URL地址 
  277.          * @return 加載到內(nèi)存的圖片。 
  278.          */ 
  279.         private Bitmap loadImage(String imageUrl) { 
  280.             File imageFile = new File(getImagePath(imageUrl)); 
  281.             if (!imageFile.exists()) { 
  282.                 downloadImage(imageUrl); 
  283.             } 
  284.             if (imageUrl != null) { 
  285.                 Bitmap bitmap = ImageLoader.decodeSampledBitmapFromResource( 
  286.                         imageFile.getPath(), columnWidth); 
  287.                 if (bitmap != null) { 
  288.                     imageLoader.addBitmapToMemoryCache(imageUrl, bitmap); 
  289.                     return bitmap; 
  290.                 } 
  291.             } 
  292.             return null
  293.         } 
  294.   
  295.         /** 
  296.          * 向ImageView中添加一張圖片 
  297.          * 
  298.          * @param bitmap 
  299.          *            待添加的圖片 
  300.          * @param imageWidth 
  301.          *            圖片的寬度 
  302.          * @param imageHeight 
  303.          *            圖片的高度 
  304.          */ 
  305.         private void addImage(Bitmap bitmap, int imageWidth, int imageHeight) { 
  306.             LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( 
  307.                     imageWidth, imageHeight); 
  308.             if (mImageView != null) { 
  309.                 mImageView.setImageBitmap(bitmap); 
  310.             } else { 
  311.                 ImageView imageView = new ImageView(getContext()); 
  312.                 imageView.setLayoutParams(params); 
  313.                 imageView.setImageBitmap(bitmap); 
  314.                 imageView.setScaleType(ScaleType.FIT_XY); 
  315.                 imageView.setPadding(5555); 
  316.                 imageView.setTag(R.string.image_url, mImageUrl); 
  317.                 findColumnToAdd(imageView, imageHeight).addView(imageView); 
  318.                 imageViewList.add(imageView); 
  319.             } 
  320.         } 
  321.   
  322.         /** 
  323.          * 找到此時(shí)應(yīng)該添加圖片的一列。原則就是對(duì)三列的高度進(jìn)行判斷,當(dāng)前高度最小的一列就是應(yīng)該添加的一列。 
  324.          * 
  325.          * @param imageView 
  326.          * @param imageHeight 
  327.          * @return 應(yīng)該添加圖片的一列 
  328.          */ 
  329.         private LinearLayout findColumnToAdd(ImageView imageView, 
  330.                 int imageHeight) { 
  331.             if (firstColumnHeight <= secondColumnHeight) { 
  332.                 if (firstColumnHeight <= thirdColumnHeight) { 
  333.                     imageView.setTag(R.string.border_top, firstColumnHeight); 
  334.                     firstColumnHeight += imageHeight; 
  335.                     imageView.setTag(R.string.border_bottom, firstColumnHeight); 
  336.                     return firstColumn; 
  337.                 } 
  338.                 imageView.setTag(R.string.border_top, thirdColumnHeight); 
  339.                 thirdColumnHeight += imageHeight; 
  340.                 imageView.setTag(R.string.border_bottom, thirdColumnHeight); 
  341.                 return thirdColumn; 
  342.             } else { 
  343.                 if (secondColumnHeight <= thirdColumnHeight) { 
  344.                     imageView.setTag(R.string.border_top, secondColumnHeight); 
  345.                     secondColumnHeight += imageHeight; 
  346.                     imageView 
  347.                             .setTag(R.string.border_bottom, secondColumnHeight); 
  348.                     return secondColumn; 
  349.                 } 
  350.                 imageView.setTag(R.string.border_top, thirdColumnHeight); 
  351.                 thirdColumnHeight += imageHeight; 
  352.                 imageView.setTag(R.string.border_bottom, thirdColumnHeight); 
  353.                 return thirdColumn; 
  354.             } 
  355.         } 
  356.   
  357.         /** 
  358.          * 將圖片下載到SD卡緩存起來(lái)。 
  359.          * 
  360.          * @param imageUrl 
  361.          *            圖片的URL地址。 
  362.          */ 
  363.         private void downloadImage(String imageUrl) { 
  364.             if (Environment.getExternalStorageState().equals( 
  365.                     Environment.MEDIA_MOUNTED)) { 
  366.                 Log.d("TAG""monted sdcard"); 
  367.             } else { 
  368.                 Log.d("TAG""has no sdcard"); 
  369.             } 
  370.             HttpURLConnection con = null
  371.             FileOutputStream fos = null
  372.             BufferedOutputStream bos = null
  373.             BufferedInputStream bis = null
  374.             File imageFile = null
  375.             try { 
  376.                 URL url = new URL(imageUrl); 
  377.                 con = (HttpURLConnection) url.openConnection(); 
  378.                 con.setConnectTimeout(5 * 1000); 
  379.                 con.setReadTimeout(15 * 1000); 
  380.                 con.setDoInput(true); 
  381.                 con.setDoOutput(true); 
  382.                 bis = new BufferedInputStream(con.getInputStream()); 
  383.                 imageFile = new File(getImagePath(imageUrl)); 
  384.                 fos = new FileOutputStream(imageFile); 
  385.                 bos = new BufferedOutputStream(fos); 
  386.                 byte[] b = new byte[1024]; 
  387.                 int length; 
  388.                 while ((length = bis.read(b)) != -1) { 
  389.                     bos.write(b, 0, length); 
  390.                     bos.flush(); 
  391.                 } 
  392.             } catch (Exception e) { 
  393.                 e.printStackTrace(); 
  394.             } finally { 
  395.                 try { 
  396.                     if (bis != null) { 
  397.                         bis.close(); 
  398.                     } 
  399.                     if (bos != null) { 
  400.                         bos.close(); 
  401.                     } 
  402.                     if (con != null) { 
  403.                         con.disconnect(); 
  404.                     } 
  405.                 } catch (IOException e) { 
  406.                     e.printStackTrace(); 
  407.                 } 
  408.             } 
  409.             if (imageFile != null) { 
  410.                 Bitmap bitmap = ImageLoader.decodeSampledBitmapFromResource( 
  411.                         imageFile.getPath(), columnWidth); 
  412.                 if (bitmap != null) { 
  413.                     imageLoader.addBitmapToMemoryCache(imageUrl, bitmap); 
  414.                 } 
  415.             } 
  416.         } 
  417.   
  418.         /** 
  419.          * 獲取圖片的本地存儲(chǔ)路徑。 
  420.          * 
  421.          * @param imageUrl 
  422.          *            圖片的URL地址。 
  423.          * @return 圖片的本地存儲(chǔ)路徑。 
  424.          */ 
  425.         private String getImagePath(String imageUrl) { 
  426.             int lastSlashIndex = imageUrl.lastIndexOf("/"); 
  427.             String imageName = imageUrl.substring(lastSlashIndex + 1); 
  428.             String imageDir = Environment.getExternalStorageDirectory() 
  429.                     .getPath() + "/PhotoWallFalls/"
  430.             File file = new File(imageDir); 
  431.             if (!file.exists()) { 
  432.                 file.mkdirs(); 
  433.             } 
  434.             String imagePath = imageDir + imageName; 
  435.             return imagePath; 
  436.         } 
  437.     } 
  438.   
  439. }</string,></loadimagetask></imageview></imageview></loadimagetask> 

源碼下載:http://down.51cto.com/data/1980596

責(zé)任編輯:chenqingxiang 來(lái)源: 網(wǎng)絡(luò)整理
相關(guān)推薦

2011-06-20 17:06:56

Qt Widget

2024-09-03 17:04:15

前端算法布局

2012-05-02 13:53:00

JavaScript

2015-07-17 13:31:20

按鈕單獨(dú)控制

2024-08-19 14:01:00

2013-04-03 15:45:51

Android瀑布流android_wat

2009-12-25 10:20:28

WPF窗口

2015-02-26 18:09:29

WaterFall V瀑布流Dynamic Gri

2010-09-08 17:20:42

CSS

2013-07-12 09:49:41

Android設(shè)計(jì)

2010-08-31 09:46:23

C#

2009-07-10 11:31:45

Swing支持透明和不規(guī)則窗口

2020-11-10 15:22:46

算法PythonIoU

2021-03-30 07:47:46

SVG 濾鏡 CSS技巧

2018-12-03 09:00:00

App應(yīng)用設(shè)計(jì)移動(dòng)應(yīng)用

2010-09-14 10:34:17

DIV CSS

2022-04-14 15:53:12

開(kāi)發(fā)瀑布流組件

2016-06-13 10:21:49

二維碼條形碼二進(jìn)制

2022-12-22 08:34:22

CSS不規(guī)則圖形

2012-06-15 09:35:42

JavaScript
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲欧洲国产精品久久| 国模私拍视频一区| av在线网址导航| 中文字幕在线观看播放| 99久久综合国产精品| 国产91免费看片| 91免费公开视频| 欧美成a人免费观看久久| 欧美性xxxxx极品少妇| 一级性生活视频| 精品美女视频在线观看免费软件| 国产在线播放一区二区三区| 欧美亚洲视频一区二区| 欧美三级日本三级| 免费看av成人| 欧美videos中文字幕| 国产精品人人爽人人爽| 国产91足控脚交在线观看| 国产欧美一区二区精品秋霞影院 | 色天使综合视频| 亚洲欧美精品午睡沙发| 日韩av影视| 少妇人妻一区二区| 国产综合色产在线精品| 日韩美女视频中文字幕| 国产真实乱偷精品视频| 久久精品国内一区二区三区水蜜桃 | 国产ts一区| 在线播放日韩导航| 日韩中文字幕二区| 2020国产在线| 亚洲欧美视频在线观看| 亚洲高清资源综合久久精品| 男人天堂资源在线| 不卡在线视频中文字幕| 99久久精品免费看国产一区二区三区| 久久精品偷拍视频| 奶水喷射视频一区| 国模吧一区二区| 国产一级片播放| 欧美激情 亚洲a∨综合| 国产av麻豆mag剧集| 亚洲 欧美 中文字幕| 亚洲黑丝一区二区| 欧美成人免费小视频| 国精产品视频一二二区| 欧美亚洲国产激情| 亚洲欧洲xxxx| 在线观看福利片| 牛牛影视一区二区三区免费看| 精品国产乱码久久久久久老虎| 日本特黄在线观看| 久久久久九九精品影院| 欧美电影一区二区三区| 五月天视频在线观看| 香蕉久久一区| 欧美精品高清视频| 亚洲激情在线看| 高清久久精品| 欧美一区二区三区婷婷月色| 久久久精品视频国产| 日本精品在线播放 | 亚洲一区二区三| 人人干人人干人人干| 亚洲国产高清视频| 91禁国产网站| www五月天com| 青青草原综合久久大伊人精品优势| 国产成人亚洲综合91| 日韩精品在线一区二区三区| 美日韩一区二区| 91精品视频免费观看| 亚洲AV无码精品国产| 成人一级片网址| 国产一区再线| 福利片在线看| 亚洲人一二三区| 成人午夜免费在线| 成人va天堂| 欧美精品久久久久久久多人混战| 中文字幕在线观看视频www| 韩国精品福利一区二区三区| 亚洲精品一二区| 五月天婷婷丁香网| 欧美网站在线| 国产精品黄视频| 国产探花精品一区二区| jizz一区二区| 一本久久a久久精品vr综合| 亚洲性图自拍| 色综合天天做天天爱| 中文字幕 欧美日韩| 大伊香蕉精品在线品播放| 亚洲少妇激情视频| av激情在线观看| 久久激情一区| 147欧美人体大胆444| 免费在线观看污视频| 中文字幕一区二区三区不卡在线 | 在线视频中文字幕第一页| 午夜视频一区在线观看| 在线观看免费污视频| 狠狠一区二区三区| 色婷婷久久一区二区| 日韩av片在线播放| 久久99蜜桃精品| 久久久久久a亚洲欧洲aⅴ| 午夜精品一区| 无码av中文一区二区三区桃花岛| 一个色综合久久| 欧美午夜寂寞| 欧美激情视频网站| 又污又黄的网站| 91免费观看视频在线| 大地资源网在线观看免费官网| 中文字幕这里只有精品| 精品日韩成人av| 中国特黄一级片| 免费在线观看成人av| 亚洲直播在线一区| a天堂中文在线| 欧美日韩中文在线| 久久精品aⅴ无码中文字字幕重口| 欧美丝袜一区| 热99在线视频| 免费观看a视频| 亚洲九九爱视频| 中文字幕在线观看日| 欧美日韩国产免费观看视频| 欧美一乱一性一交一视频| 国产成人手机在线| 亚洲欧美另类综合偷拍| 午夜久久福利视频| 全球成人免费直播| 国产精品v片在线观看不卡| 性猛交xxxx| 欧美日韩国产色| 成年人的黄色片| 黄页网站一区| 成人免费在线看片| 色婷婷av在线| 欧美成人精品1314www| 手机在线免费看片| 国精品**一区二区三区在线蜜桃| 正在播放91九色| 57pao成人永久免费| 色老头一区二区三区| 亚洲中文无码av在线| 国产欧美精品一区aⅴ影院| www日韩在线观看| 精品免费在线| 国产精品久久久久久久久借妻| 国内精品在线视频| 在线观看不卡视频| 国产传媒在线看| 极品少妇一区二区三区精品视频| 亚洲一区二区三区在线观看视频| 久久人体av| 久久精品国产一区| 国产成人a人亚洲精品无码| 伊人婷婷欧美激情| 国产女人18毛片水真多18| 亚洲狼人精品一区二区三区| 欧美一级爽aaaaa大片| 成人免费网站www网站高清| 在线看福利67194| 99热这里精品| 亚洲成在线观看| 99久久人妻无码中文字幕系列| 久久婷婷激情| 亚洲巨乳在线观看| 精品一区二区三区中文字幕| 欧美福利视频网站| 亚洲欧洲精品视频| 91传媒视频在线播放| 国产一二三av| 粉嫩欧美一区二区三区高清影视| 久久久999免费视频| 欧美午夜精品一区二区三区电影| 91理论片午午论夜理片久久| 大桥未久在线视频| 亚洲偷欧美偷国内偷| 国产乱码精品一区二区三区精东 | 亚洲乱码国产乱码精品| 中文一区二区在线观看 | aa级大片欧美| 鲁一鲁一鲁一鲁一av| 欧美 日韩 国产一区二区在线视频 | 91欧美日韩麻豆精品| 亚洲尤物视频在线| 88久久精品无码一区二区毛片| 国产乱子轮精品视频| 色欲av无码一区二区人妻| 欧美hd在线| 久久久久久久久久久久久久久久av| 粉嫩91精品久久久久久久99蜜桃| 欧美成人精品一区二区三区| 色av男人的天堂免费在线| 欧美日韩性生活| 97久久久久久久| 一区视频在线播放| 黄色在线观看av| 狠狠色狠狠色合久久伊人| 无码aⅴ精品一区二区三区浪潮 | 亚洲成人激情av| 精品亚洲aⅴ无码一区二区三区| 国产69精品久久99不卡| 黄色三级视频在线| 日韩图片一区| 精品国产一区二区三区在线| 国产一区二区三区探花 | 欧美亚洲高清| 久久国产精品亚洲va麻豆| 免费精品一区| 国产欧美精品xxxx另类| 香蕉视频亚洲一级| 97免费视频在线| 黄色小说在线播放| 久久精品久久久久久| 国产午夜在线观看| 亚洲精品日韩久久久| 亚洲精品国偷拍自产在线观看蜜桃 | 久久国产亚洲精品无码| 午夜亚洲福利| 日本黄色播放器| 日韩综合网站| 午夜久久资源| 精品国产91乱码一区二区三区四区| 精品久久久久久亚洲| a级日韩大片| 丁香婷婷久久久综合精品国产| 日韩成人免费av| 国产美女久久精品香蕉69| 成人做爰视频www网站小优视频| 韩国福利视频一区| caoporn视频在线| 欧美激情第99页| 污视频在线免费观看网站| 久久伊人色综合| 日本蜜桃在线观看| 日韩在线视频二区| 日本三级视频在线播放| 日韩有码在线电影| 免费a级毛片在线播放| 日韩视频精品在线| av电影高清在线观看| 久久97精品久久久久久久不卡| av免费在线观| 久久久久久久av| 2020国产在线| 日韩免费观看视频| 日本美女久久| 国产日韩欧美自拍| 国语精品视频| 国产精品对白刺激久久久| 老汉色老汉首页av亚洲| 久久本道综合色狠狠五月| 国产一区二区三区网| 亚洲开发第一视频在线播放| 中文字幕一区二区三区欧美日韩| 欧美另类videosbestsex日本| 国内精品久久久久久久影视麻豆 | 国产69精品久久久久777| 免费观看污网站| 97精品久久久久中文字幕| 国产精品一二三区在线观看| 国产精品入口麻豆原神| 黄色一级大片在线免费观看| 亚洲一级二级三级在线免费观看| 国产成人亚洲欧洲在线| 91电影在线观看| 精品国产无码AV| 日韩国产精品视频| 91社区在线高清| 欧美美最猛性xxxxxx| 日韩电影毛片| 国产一区视频在线| 超碰一区二区三区| 五码日韩精品一区二区三区视频| 残酷重口调教一区二区| youjizz.com亚洲| 99视频精品| 一个色综合久久| 91在线视频观看| 色婷婷粉嫩av| 亚洲国产精品精华液网站| www.久久视频| 欧美videos大乳护士334| 国产高清视频免费最新在线| 久热精品视频在线观看一区| 三级在线观看视频| 成人激情综合网| 亚洲婷婷丁香| 国产激情在线看| 视频一区欧美日韩| japan高清日本乱xxxxx| 欧美高清在线一区| 国产一级特黄aaa大片| 欧美日韩免费观看一区三区| 亚洲 美腿 欧美 偷拍| 久久精品久久久久| 久久野战av| 国产欧美日韩视频一区二区三区| 欧美电影三区| 凹凸国产熟女精品视频| 国产盗摄一区二区三区| 久久午夜精品视频| 日韩欧美国产骚| 蜜桃视频在线观看www| www国产精品com| 久久爱91午夜羞羞| 国产精品美女久久久久av福利| 91久久国产| 国产精品入口免费软件| 91美女片黄在线观看| 国产一级av毛片| 91精选在线观看| 9色在线观看| 国产成人精品午夜| 欧美日韩一区二区三区不卡视频| 欧美少妇在线观看| 久久9热精品视频| 美国精品一区二区| 欧洲精品一区二区| 青青视频在线观| 欧美最猛性xxxx| 偷窥自拍亚洲色图精选| 无码专区aaaaaa免费视频| 成人综合婷婷国产精品久久免费| 国产精品成人免费观看| 欧美精品一二三四| 国产高清一区在线观看| 国产成人午夜视频网址| 精品高清久久| 美女黄色片视频| 国产日产欧美精品一区二区三区| 国产精品va无码一区二区三区| 日韩电影中文字幕在线| 草草视频在线| 久久久福利视频| 手机毛片在线观看| 最新久久zyz资源站| 国产成人精品亚洲| 夜夜嗨av色综合久久久综合网 | 国产精品美女主播| 国产一区二区三区日韩精品 | 亚洲最新av在线网站| 视频精品导航| 亚洲制服欧美久久| 精品中文字幕一区二区| 一区二区三区影视| 日韩欧美激情一区| 波多野在线观看| 国产一区二区自拍| 久久精品中文| 亚洲一二三精品| 欧美日韩精品久久久| 麻豆电影在线播放| 91麻豆蜜桃| 日韩网站在线| 秋霞网一区二区三区| 91精品欧美一区二区三区综合在| 最新国产在线拍揄自揄视频| 国产精品国产精品| 国产精品乱看| 欧美三级视频网站| 在线播放视频一区| 手机福利在线视频| 女人让男人操自己视频在线观看| 亚洲影院在线看| 国内精品福利| 美女久久久久久久久久| 欧美私模裸体表演在线观看| 蜜桃视频网站在线观看| 99爱精品视频| 亚洲在线电影| 欧美88888| 日韩情涩欧美日韩视频| 精精国产xxxx视频在线播放| 日本一区视频在线播放| 国产在线不卡一区| 亚欧视频在线观看| 在线不卡国产精品| 91蝌蚪精品视频| 欧美 日韩 国产 激情| 最新久久zyz资源站| 无码国精品一区二区免费蜜桃| 国产精品91久久| 韩国亚洲精品| youjizz亚洲女人| 亚洲国产天堂久久综合| 黄色精品视频| 日韩伦理在线免费观看| 国产精品永久久久久久久久久| 欧美成人合集magnet| 亚洲制服欧美另类| 无码人妻少妇色欲av一区二区| 一本久久a久久免费精品不卡| 亚洲综合影视| 亚洲国产综合自拍|