NineImageForCircleFriends朋友圈九宫格
生活随笔
收集整理的這篇文章主要介紹了
NineImageForCircleFriends朋友圈九宫格
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
###需求
- 當只有一張的時候,顯示一張圖片(寬度是整個手機寬度(去掉左右margin和padding值))
- 當有兩張和四張圖片的時候,圖片的寬度是整個寬度的1/2,當然要剔除margin和padding值
- 當圖片是3,5,6,7,8,9張的時候,顯示的是類似于微信九宮格的圖片
###主要的測量方法
@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);int width = MeasureSpec.getSize(widthMeasureSpec);int height = 0;int totalWidth = width - getPaddingLeft() - getPaddingRight();if (mImageInfo != null && mImageInfo.size() > 0) {if (mImageInfo.size() == 1) {gridWidth = singleImageSize > totalWidth ? totalWidth : singleImageSize;gridHeight = (int) (gridWidth / singleImageRatio);//矯正圖片顯示區域大小,不允許超過最大顯示范圍if (gridHeight > singleImageSize) {float ratio = singleImageSize * 1.0f / gridHeight;gridWidth = (int) (gridWidth * ratio);gridHeight = singleImageSize;}} else if (mImageInfo.size() == 2 || mImageInfo.size() == 4) {//如果當為2張或者4張圖片的時候 就按照總寬度的 1/2gridWidth = gridHeight = (totalWidth - gridSpacing * (columnCount - 1)) / columnCount;//這里無論是幾張圖片,寬高都按總寬度的 1/3 // gridWidth = gridHeight = (totalWidth - gridSpacing ) / 2;} else {gridWidth = gridHeight = (totalWidth - gridSpacing * 2) / 3;}width = gridWidth * columnCount + gridSpacing * (columnCount - 1) + getPaddingLeft() + getPaddingRight();height = gridHeight * rowCount + gridSpacing * (rowCount - 1) + getPaddingTop() + getPaddingBottom();}setMeasuredDimension(width, height);} 復制代碼###效果圖
###項目地址 https://github.com/wuyinlei/NineImageForCircleFriends
###參考
https://github.com/jeasonlzy/NineGridView
總結
以上是生活随笔為你收集整理的NineImageForCircleFriends朋友圈九宫格的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML常见小问题2
- 下一篇: iTerm配色