Android自定義控件之圖片添加器

ZzImageBox

A powerful image container for adding and removing images.

傳送門:https://github.com/zhouzhuo810/ZzImageBox

功能簡介:

1.支持添加凿傅、刪除、默認(rèn)圖片的配置;

2.支持最大行數(shù)限制喇喉;

3.支持每行數(shù)量修改剪芍;

4.支持添加幽告、刪除腌且、圖片點(diǎn)擊回調(diào)接口殖属。

5.支持Box的添加(.addImage(String imagePath))和刪除(.removeImage(int position))软啼;

6.支持加載本地和網(wǎng)絡(luò)圖片(使用方法.addImage(String url))桑谍;

7.支持自定義圖片加載框架(使用.setOnlineImageLoader(ZzImageBox.OnlineImageLoader listener),
如果有網(wǎng)絡(luò)圖片必須使用此方法);

8.支持左右margin設(shè)置。

Gradle

    compile 'me.zhouzhuo.zzimagebox:zz-image-box:1.0.6'

內(nèi)部依賴項(xiàng)說明:

    compile 'com.android.support:recyclerview-v7:27.0.1'

也就是說添加ZzImageBox同時(shí)會(huì)添加RecyclerView包祸挪。

Maven

<dependency>
  <groupId>me.zhouzhuo.zzimagebox</groupId>
  <artifactId>zz-image-box</artifactId>
  <version>1.0.4</version>
  <type>pom</type>
</dependency>

What does it look like?

zz_image_box_demo.gif

How to use it ?

注意:

  • 為了保證圖片是正方形锣披,需要保證ZzImageBox水平方向是填滿屏幕的,也就是說父容器不能有padding和margin贿条。
  • ZzImageBox的marginLeft屬性使用zib_left_margin代替雹仿;
  • ZzImageBox的marginRight屬性使用zib_right_margin代替;
  • 如果不需要顯示添加圖片整以,可以設(shè)置zib_img_add為透明顏色胧辽;
  • 加載網(wǎng)絡(luò)圖片必須添加.setOnlineImageLoader();方法,
    onLoadImage(ImageView iv, String url)中自行使用Glide等框架加載公黑;

xml:

    <me.zhouzhuo.zzimagebox.ZzImageBox
        android:id="@+id/zz_image_box"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:zib_left_margin="20dp"
        app:zib_right_margin="20dp"
        app:zib_img_padding="5dp"
        app:zib_img_size_one_line="4"
        app:zib_max_line="3"
        app:zib_img_deletable="true"
        app:zib_img_add="@drawable/iv_add"
        app:zib_img_default="@drawable/iv_default"
        app:zib_img_delete="@drawable/iv_delete"
        />

java:

        final ZzImageBox imageBox = (ZzImageBox) findViewById(R.id.zz_image_box);
        //如果需要加載網(wǎng)絡(luò)圖片邑商,添加此監(jiān)聽摄咆。
        imageBox.setOnlineImageLoader(new ZzImageBox.OnlineImageLoader() {
            @Override
            public void onLoadImage(ImageView iv, String url) {
                Log.d("ZzImageBox", "url=" + url);
                Glide.with(MainActivity.this).load(url).into(iv);
            }
        });
        imageBox.setOnImageClickListener(new ZzImageBox.OnImageClickListener() {
            @Override
            public void onImageClick(int position, String filePath) {
                Log.d("ZzImageBox", "image clicked:" + position + "," + filePath);
            }

            @Override
            public void onDeleteClick(int position, String filePath) {
                imageBox.removeImage(position);
                Log.d("ZzImageBox", "delete clicked:" + position + "," + filePath);
                Log.d("ZzImageBox", "all images\n"+imageBox.getAllImages().toString());
            }

            @Override
            public void onAddClick() {
                imageBox.addImage(null);
                Log.d("ZzImageBox", "add clicked");
                Log.d("ZzImageBox", "all images\n"+imageBox.getAllImages().toString());
            }
        });

屬性說明:

    <declare-styleable name="ZzImageBox">
        <attr name="zib_max_line" format="integer" />
        <attr name="zib_img_size_one_line" format="integer" />
        <attr name="zib_img_padding" format="dimension|reference" />
        <attr name="zib_img_default" format="color|reference" />
        <attr name="zib_img_delete" format="color|reference" />
        <attr name="zib_img_add" format="color|reference" />
        <attr name="zib_img_deletable" format="boolean" />
        <attr name="zib_left_margin" format="dimension|reference" />
        <attr name="zib_right_margin" format="dimension|reference" />
    </declare-styleable>
屬性名 屬性類型 屬性功能
zib_max_line integer 最大行數(shù)
zib_img_size_one_line integer 每行數(shù)量
zib_img_padding dimension 圖片之間的間距
zib_img_default drawable/color 默認(rèn)圖片資源id
zib_img_delete drawable/color 刪除圖片資源id
zib_img_add drawable/color 添加圖片資源id
zib_img_deletable boolean 是否顯示刪除圖片
zib_left_margin dimension 控件距離屏幕左邊距離
zib_right_margin dimension 控件距離屏幕右邊距離

更新日志

v1.0.6

  • 支持動(dòng)態(tài)設(shè)置左間距,使用setLeftMarginInPixel()方法人断;
  • 支持動(dòng)態(tài)設(shè)置右邊距吭从,使用setRightMarginInPixel()方法;
  • 支持動(dòng)態(tài)設(shè)置圖片間距恶迈,使用setImagePadding()方法涩金;
  • 支持動(dòng)態(tài)設(shè)置單行圖片數(shù)量,使用setImageSizeOneLine()方法蝉绷;
  • 更新RecyclerView版本到com.android.support:recyclerview-v7:27.0.1鸭廷。

v1.0.5

  • 支持加載網(wǎng)絡(luò)圖片;

v1.0.4

  • 點(diǎn)擊圖片返回圖片對(duì)象熔吗,用于適應(yīng)轉(zhuǎn)場(chǎng)動(dòng)畫辆床。

v1.0.3

  • 新增zib_left_margin和zib_right_margin設(shè)置左右外間距屬性。

v1.0.2

  • 首次提交桅狠。

License

Copyright ? zhouzhuo810

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末讼载,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子中跌,更是在濱河造成了極大的恐慌咨堤,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漩符,死亡現(xiàn)場(chǎng)離奇詭異一喘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)嗜暴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門凸克,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闷沥,你說我怎么就攤上這事萎战。” “怎么了舆逃?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵蚂维,是天一觀的道長。 經(jīng)常有香客問我路狮,道長虫啥,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任奄妨,我火速辦了婚禮涂籽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘展蒂。我一直安慰自己又活,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布锰悼。 她就那樣靜靜地躺著柳骄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箕般。 梳的紋絲不亂的頭發(fā)上耐薯,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音丝里,去河邊找鬼曲初。 笑死,一個(gè)胖子當(dāng)著我的面吹牛杯聚,可吹牛的內(nèi)容都是我干的臼婆。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幌绍,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼颁褂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起傀广,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤颁独,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后伪冰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體誓酒,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年贮聂,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了靠柑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡寂汇,死狀恐怖病往,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情骄瓣,我是刑警寧澤停巷,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站榕栏,受9級(jí)特大地震影響畔勤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜扒磁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一庆揪、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧妨托,春花似錦缸榛、人聲如沸吝羞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钧排。三九已至,卻和暖如春均澳,著一層夾襖步出監(jiān)牢的瞬間恨溜,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工找前, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糟袁,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓躺盛,卻偏偏與公主長得像项戴,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子槽惫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • afinalAfinal是一個(gè)android的ioc肯尺,orm框架 https://github.com/yangf...
    passiontim閱讀 15,429評(píng)論 2 45
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,133評(píng)論 25 707
  • 第一锄蹂、文字是用來聽的 也許你會(huì)覺得奇怪氓仲,文字可以用來寫,用來讀得糜,用來看敬扛,怎么會(huì)是用來聽呢?試想朝抖,一篇全部平鋪直敘的...
    攀巖的蝸牛111閱讀 2,597評(píng)論 0 4
  • 每個(gè)人的童年都有很多小伙伴啥箭,但是能陪著你一起長大,陪著對(duì)方出嫁的卻只有一個(gè)治宣。 我的發(fā)小——“哆唻咪”急侥,這個(gè)外號(hào)是我...
    小牙Amy閱讀 634評(píng)論 0 1
  • 回鄉(xiāng)數(shù)日,整個(gè)疲憊的身體得到放松侮邀,從未忘記過如此熟悉的夜坏怪,躺在床上聽著鐘表的滴答聲以及整點(diǎn)當(dāng)當(dāng)?shù)膱?bào)時(shí)。這聲響在平時(shí)...
    任亞閱讀 468評(píng)論 0 1