類似QQ空間,微信朋友圈,微博主頁等,展示圖片的九宮格控件

類似QQ空間,微信朋友圈,微博主頁等,展示圖片的九宮格控件,自動根據圖片的數量確定圖片大小和控件大小,使用Adapter模式設置圖片,對外提供接口回調,使用接口加載圖片,支持任意的圖片加載框架,如 Glide,ImageLoader,Fresco,xUtils3,Picasso 等,支持點擊圖片全屏預覽大圖。


該內容轉載至 NineGridView

NineGridView

類似QQ空間,微信朋友圈,微博主頁等,展示圖片的九宮格控件,自動根據圖片的數量確定圖片大小和控件大小,使用Adapter模式設置圖片,對外提供接口回調,支持任意的圖片加載框架,如 Glide,ImageLoader,Fresco,xUtils3,Picasso 等,支持點擊圖片全屏預覽大圖。

該項目是根據:https://github.com/laobie/NineGridImageView 修改而成,進行了優化擴展,使代碼更加簡單,喜歡原作的可以去使用。同時歡迎大家下載體驗本項目,如果使用過程中遇到什麼問題,歡迎反饋。

聯繫方式

  • 郵箱地址: [email protected]
  • QQ羣: 489873144 (建議使用QQ羣,郵箱使用較少,可能看的不及時)
  • 本羣剛建立,旨在爲使用我的github項目的人提供方便,如果遇到問題歡迎在羣裏提問。個人能力也有限,希望一起學習一起進步。

演示

image image image image imageimage

1.用法

使用前,對於Android Studio的用戶,可以選擇添加:

	compile 'com.lzy.widget:ninegridview:0.2.0'

或者使用

    compile project(':ninegridview')

2.項目功能

  • 使用Adapter模式設置圖片
  • 當圖片數量只有一張時,自動根據圖片大小調整控件大小
  • 默認增加了圖片點擊全屏預覽效果,並附帶預覽動畫
  • 使用接口加載圖片,支持任意的圖片加載框架,如 Glide,ImageLoader,Fresco,xUtils3,Picasso 等
  • 整合了PhotoView圖片預覽
  • 使用接口抽出圖片的加載方式,可以方便的將Glide替換成自己喜歡的ImageLoader等
  • 支持fill個grid兩種顯示模式
  • 當獲取的圖片數量超過最大顯示的圖片數量時,最後一張圖片上會顯示剩餘數量(類似於QQ的動態效果)
  • 使用代碼簡單,只需要幾行代碼
  • 其他功能增加中......

3.參數含義

自定義屬性名字 參數含義
ngv_singleImageSize 只顯示一張圖片時的最大圖片大小
ngv_singleImageRatio 只顯示一張圖片時圖片寬高比
ngv_gridSpacing 網格顯示圖片時,圖片之間的間距,默認3dp
ngv_maxSize 最多顯示圖片的數量,默認最大9張
ngv_mode 支持fill和grid兩種顯示模式,其中grid模式在顯示4張圖片時採用2*2的佈局

4.代碼演示

1.在Application中初始化NineGridView的圖片加載器

    NineGridView.setImageLoader(new PicassoImageLoader());

    /** Picasso 加載 */
    private class PicassoImageLoader implements NineGridView.ImageLoader {

        @Override
        public void onDisplayImage(Context context, ImageView imageView, String url) {
            Picasso.with(context).load(url)//
                    .placeholder(R.drawable.ic_default_image)//
                    .error(R.drawable.ic_default_image)//
                    .into(imageView);
        }

        @Override
        public Bitmap getCacheImage(String url) {
            return null;
        }
    }

2.在自己的Adapter中初始化NineGridView的適配器

  • ImageInfo是庫中提供的數據Bean,需要兩個url,分別表示小圖和大圖的url,沒有大圖或者小圖,則都賦給相同的Url即可。
  • ClickNineGridViewAdapter是庫中提供的默認實現了點擊預覽的Adapter,如果不想使用預覽效果,可以自己繼承 NineGridViewAdapter 實現其中 onDisplayImage 方法即可。
	ArrayList<ImageInfo> imageInfo = new ArrayList<>();
    List<EvaluationPic> imageDetails = item.getAttachments();
    if (imageDetails != null) {
        for (EvaluationPic imageDetail : imageDetails) {
            ImageInfo info = new ImageInfo();
            info.setThumbnailUrl(imageDetail.smallImageUrl);
            info.setBigImageUrl(imageDetail.imageUrl);
            imageInfo.add(info);
        }
    }
    holder.nineGrid.setAdapter(new ClickNineGridViewAdapter(context, imageInfo));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章