亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android GridView仿微信朋友圈顯示圖片

2020-04-11 10:54:15
字體:
來源:轉載
供稿:網友

最近項目要求上傳多圖并且多圖顯示,而且要規則的顯示,就像微信朋友圈的圖片顯示一樣。
利用GridView再適合不過了,GridView可以動態加載圖片的數量,而且還比較規律,下面說一下自己的思路:

  • 1.獲取網絡圖片
  • 2.初始化gridview,自定義適配器
  • 3.根據圖片數量設置gridview的列數
  • 4.更新適配器

下面貼上部分源碼并給大家解析一下
一、首先是GridView的item

<com.view.SquareLayout xmlns:android="http://schemas.android.com/apk/res/android"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:orientation="vertical" >  <ImageView   android:id="@+id/item_grida_image"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:scaleType="fitXY"   android:layout_margin="@dimen/tinyest_space">  </ImageView> </com.view.SquareLayout> 

這里的SquareLayout布局是自定義的下面會給大家詳細講解。
子項中是一個正方形布局里面嵌套著圖片

二、接下來自定義適配器
因為項目需求不同,自己定義的適配器和平時用的不太一樣,這里就不貼源碼了。大體上也是將圖片下載到本地,用Imageloader加載,不過我這里有上傳失敗的和新建的,所以不太一樣。

三、最后在用到的Activity中設置

noScrollgridview = (GridView) findViewById(R.id.noScrollgridview);   noScrollgridview.setNumColumns(3); //默認設置在3列圖片   //上傳成功傳值給adapter   picAdapter = new PictureAdapter(this, 1, appItem_file);   noScrollgridview.setAdapter(picAdapter); //根據圖片數量設置圖片的列   int size = appItemFile.getFiles().split(",").length;   if (size==1){    noScrollgridview.setNumColumns(1);   }   else if (size==2){    noScrollgridview.setNumColumns(2);   }   else if (size>2){    noScrollgridview.setNumColumns(3);   }   picAdapter.notifyDataSetChanged(); 

默認設置GridView的列數為3,根據圖片的數量動態設置列數。

最后貼上SquareLayout的源碼解析一下

/**  * 方形布局  */ public class SquareLayout extends RelativeLayout {  public SquareLayout(Context context, AttributeSet attrs, int defStyle) {   super(context, attrs, defStyle);  }   public SquareLayout(Context context, AttributeSet attrs) {   super(context, attrs);  }   public SquareLayout(Context context) {   super(context);  }   @SuppressWarnings("unused")  @Override  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {   // For simple implementation, or internal size is always 0.   // We depend on the container to specify the layout size of   // our view. We can't really know what it is since we will be   // adding and removing different arbitrary views and do not   // want the layout to change as this happens.   setMeasuredDimension(getDefaultSize(0, widthMeasureSpec),     getDefaultSize(0, heightMeasureSpec));    // Children are just made to fill our space.   int childWidthSize = getMeasuredWidth();   int childHeightSize = getMeasuredHeight();   // 高度和寬度一樣   heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec(     childWidthSize, MeasureSpec.EXACTLY);   super.onMeasure(widthMeasureSpec, heightMeasureSpec);  } } 

這里主要重寫了onMeasure()方法,設置了高寬,需要注意的是在用SquareLayout的時候要設置它的高寬都是match_parent。這樣就可以填滿GridView的每一項了。
接下來貼圖給大家看:

ImgeView的scaleType的屬性如果設置FitXY就會充滿方形布局,如果center就會居中顯示
詳細說一下吧:
1)center:保持原圖的大小,顯示在ImageView的中心。當原圖的size大于ImageView的size,超過部分裁剪處理。
2)centerCrop:以填滿整個ImageView為目的,將原圖的中心對準ImageView的中心,等比例放大原圖,直到填滿ImageView為止(指的是ImageView的寬和高都要填滿),原圖超過ImageView的部分作裁剪處理。
3)centerInside:以原圖完全顯示為目的,將圖片的內容完整居中顯示,通過按比例縮小原圖的size寬(高)等于或小于ImageView的寬(高)。如果原圖的size本身就小于ImageView的size,則原圖的size不作任何處理,居中顯示在ImageView。
4)matrix:不改變原圖的大小,從ImageView的左上角開始繪制原圖,原圖超過ImageView的部分作裁剪處理
5)fitCenter:把原圖按比例擴大或縮小到ImageView的ImageView的高度,居中顯示
6)fitEnd:把原圖按比例擴大(縮小)到ImageView的高度,顯示在ImageView的下部分位置
7)fitStart:把原圖按比例擴大(縮小)到ImageView的高度,顯示在ImageView的上部分位置
8)fitXY:把原圖按照指定的大小在View中顯示,拉伸顯示圖片,不保持原比例,填滿ImageView.

本文已被整理到了《Android微信開發教程匯總》,歡迎大家學習閱讀。

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区三区久久久| 国产欧美一区二区| 日韩精品免费在线视频观看| 欧美成人免费视频| 日韩美女视频中文字幕| 中文字幕日韩在线视频| 亚洲bt欧美bt日本bt| 亚洲色图50p| 午夜精品99久久免费| 国产日韩欧美夫妻视频在线观看| 亚洲老板91色精品久久| 青青久久aⅴ北条麻妃| 成人xvideos免费视频| 欧美精品久久久久a| 国产精品96久久久久久又黄又硬| 午夜精品一区二区三区在线视| 欧美综合在线第二页| 中文字幕日韩精品有码视频| 国产激情综合五月久久| 欧美人与性动交| 久久久久久久电影一区| 日韩少妇与小伙激情| 国产成人鲁鲁免费视频a| 欧美激情一区二区三区高清视频| 欧美中文字幕在线播放| 亚洲女人天堂成人av在线| 久久久精品网站| 国产精品久久77777| 色婷婷综合久久久久| 欧美俄罗斯性视频| 色婷婷综合成人| 国产v综合ⅴ日韩v欧美大片| 国产91精品最新在线播放| 亚洲欧美国产制服动漫| 久久精品精品电影网| 午夜精品久久久久久99热| 久久久久久高潮国产精品视| 亚洲在线视频福利| 在线日韩中文字幕| 97超碰国产精品女人人人爽| 日韩欧美精品网站| 欧美精品一本久久男人的天堂| 亚洲欧洲一区二区三区在线观看| 在线观看日韩视频| 91亚洲精品在线观看| 久久手机免费视频| 日韩av在线直播| 日韩av在线看| 7777精品久久久久久| 成人黄色av免费在线观看| 欧美在线视频观看免费网站| 欧美日韩免费看| 欧美大片在线看免费观看| 亚洲精品第一国产综合精品| 日韩精品视频在线观看网址| 亚洲精品理论电影| 欧美丰满片xxx777| 91在线观看免费高清完整版在线观看| 超碰日本道色综合久久综合| 欧美亚洲在线播放| 亚洲美女久久久| 精品久久久久久久久久国产| 日本一区二区不卡| 日韩视频在线免费| 久久精品成人欧美大片| 97视频在线播放| 亚洲欧美日韩一区二区三区在线| 国产精品美女999| 精品久久久视频| 91九色国产社区在线观看| 国产精品欧美久久久| 亚洲精品丝袜日韩| 精品伊人久久97| 欧美色另类天堂2015| 正在播放亚洲1区| 98精品国产高清在线xxxx天堂| 国产成人精品最新| 精品视频久久久久久| 国产欧美日韩亚洲精品| 亚洲人成毛片在线播放| 亚洲视频在线观看视频| 青青久久av北条麻妃黑人| 欧美资源在线观看| 成人激情综合网| 在线日韩中文字幕| 久久久极品av| 欧美理论片在线观看| 亚洲精品黄网在线观看| 精品国产一区av| 精品高清一区二区三区| 一区二区在线免费视频| 精品中文字幕在线2019| 久久久久久久久久久人体| 欧美色视频日本高清在线观看| 亚洲色图激情小说| 日本一区二区三区四区视频| 日韩a**中文字幕| 91欧美精品午夜性色福利在线| 中文字幕精品在线视频| 亚洲欧洲偷拍精品| 日韩av一区二区在线观看| 亚洲一区二区三区在线免费观看| 亚洲成色www8888| 欧美一区二区大胆人体摄影专业网站| 亚洲天堂网在线观看| 国产精品久久在线观看| 亚洲欧美国产日韩天堂区| 久久精品小视频| 欧美刺激性大交免费视频| 欧美成人午夜免费视在线看片| 91久久嫩草影院一区二区| 黑人巨大精品欧美一区免费视频| 精品国产91久久久久久| 亚洲欧洲美洲在线综合| 欧美片一区二区三区| 国产精品视频一| 亚洲跨种族黑人xxx| 国产成人精品av在线| 久久久精品中文字幕| 日韩av中文字幕在线免费观看| 成人444kkkk在线观看| 国产精品男女猛烈高潮激情| 亚洲激情 国产| 中文字幕欧美日韩在线| 久久精品免费播放| 国产精品女视频| 亚洲精品美女在线观看| 亚洲美女黄色片| 精品久久久久久中文字幕大豆网| 北条麻妃在线一区二区| 亚洲bt欧美bt日本bt| 国产精品电影一区| 久久久亚洲影院你懂的| 久久综合色影院| 亚洲欧美国产制服动漫| 欧美亚洲第一页| 成人av番号网| 国产精品入口夜色视频大尺度| 亚洲欧美日韩精品久久奇米色影视| 国产精品一区二区久久精品| 国产精品视频导航| 亚洲精品久久久久久久久久久| 日韩a**站在线观看| 一本一道久久a久久精品逆3p| 日韩在线观看视频免费| 国产日韩精品入口| 欧美日韩免费观看中文| 亚洲精品一区在线观看香蕉| 亚洲欧美日韩成人| 成人亚洲激情网| 精品久久久视频| 麻豆乱码国产一区二区三区| 97国产精品免费视频| 日韩在线精品视频| 亚洲直播在线一区| 亚洲在线观看视频| 欧美视频在线看| 91九色在线视频| 国产精品十八以下禁看| 亚洲a一级视频| 午夜欧美不卡精品aaaaa| 欧美黑人巨大精品一区二区| 欧美高清在线视频观看不卡| 日本道色综合久久影院|