強(qiáng)大的Selector框架

前言

在開(kāi)發(fā)的過(guò)程中,我們經(jīng)常會(huì)遇到給view設(shè)置背景锄列,什么圓形背景啊图云,圓角背景啊,點(diǎn)擊變色背景啊之類的邻邮,這功能實(shí)現(xiàn)起來(lái)不難竣况,但是一堆的xml文件啊都大同小異,令人頭疼筒严。下面給大家介紹一個(gè)selector緩存框架丹泉。

本文參考以下鏈接
selector官網(wǎng);

今天內(nèi)容涉及以下:

  1. Selector導(dǎo)入與配置
  2. Selector初始化
  3. Selector使用注意事項(xiàng)
  4. Selector框架的使用
  5. 效果圖
1. Selector導(dǎo)入與配置
1.1 project的build.gradle中添加配置

在project的build.gradle文件中的allprojects---->repositories 添加如下依賴:

 //引入selector框架
        maven { url "https://jitpack.io"}

則build.gradle文件代碼變?yōu)椋?/p>

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()

        //引入selector框架
        maven { url "https://jitpack.io"}
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}
1.2 app model的build.gradle中添加配置

在app的model中添加庫(kù)依賴:

//引入selector框架
compile 'com.github.LiangLuDev:DevShapeUtils:1.0.1'
二. Selector初始化

在項(xiàng)目自定義的Application中初始化,如下:

public class AppContext extends Application{

    @Override
    public void onCreate() {
        super.onCreate();

        //selector框架初始化
        DevShapeUtils.init(this);
    }

}
三. Selector使用注意事項(xiàng)
  1. 項(xiàng)目中minSdkVersion設(shè)置為16鸭蛙,不然編譯通不過(guò)摹恨。(Android4.1,現(xiàn)在的手機(jī)版本基本都在4.4以上)
  2. app module的build.gradle中 compileSdkVersion 和 targetSdkVersion 版本一致娶视,并且要在26版本及以上睬塌。
四. Selector框架的使用

樣式設(shè)置:
① DevShapeUtils.xxx.into(view)--直接設(shè)置到相應(yīng)的view
② DevShapeUtils.xxx.build()--返回Drawable對(duì)象
顏色設(shè)置: 所有的顏色設(shè)置均可使用?R.color.xxx?或者?#FFFFFF
單位設(shè)置: 項(xiàng)目中所有的數(shù)值單位為dp

4.1 橢圓
DevShapeUtils.shape(DevShape.OVAL).solid(R.color.colorAccent).into(mBtn1);
4.2 圓形

設(shè)置圓形的時(shí)候,需要設(shè)置按鈕為固定大小歇万,且寬高一致揩晴,xml中代碼如下:

  <Button
        android:id="@+id/button2"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="圓形"
        app:layout_constraintEnd_toStartOf="@+id/button3"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/button1"
        app:layout_constraintTop_toTopOf="@+id/button1" />

設(shè)置圓形代碼如下:

DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(999).into(mBtn2);
4.3 矩形
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).into(mBtn3);
4.4 圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(10).into(mBtn4);
4.5 左上圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).tlRadius(10).into(mBtn5);
4.6 右上圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).trRadius(10).into(mBtn6);
4.7 左下圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).blRadius(10).into(mBtn7);
4.8 右下圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).brRadius(10).into(mBtn8);
4.9 上圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).tlRadius(10).trRadius(10).into(mBtn9);
4.10 下圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).blRadius(10).brRadius(10).into(mBtn10);
4.11 斜圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).tlRadius(10).brRadius(10).into(mBtn11);
4.12 斜圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).trRadius(10).blRadius(10).into(mBtn12);
4.13 半圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(999).into(mBtn13);
4.14 實(shí)線圓角邊框
//實(shí)線圓角邊框(line 參數(shù)1:邊框?qū)挾?參數(shù)2:邊框顏色)
DevShapeUtils.shape(DevShape.RECTANGLE).line(1, R.color.colorAccent).radius(10).into(mBtn14);
4.15 虛線圓角邊框
//虛線圓角邊框(dashLine 參數(shù)1:邊框?qū)挾?參數(shù)2:邊框顏色 參數(shù)3:虛線寬度 參數(shù)4:虛線間隙寬度)
DevShapeUtils.shape(DevShape.RECTANGLE).dashLine(1, R.color.colorPrimary, 5, 5).radius(10).into(mBtn15);
4.16 漸變
//漸變(默認(rèn)線性上下方向漸變)
DevShapeUtils.shape(DevShape.RECTANGLE).gradient(R.color.colorAccent, R.color.colorPrimary).into(mBtn16);
4.17 線性漸變
//線性漸變(gradientLinear 參數(shù)1:漸變方向 參數(shù)2:漸變顏色,顏色數(shù)量必須兩個(gè)及以上)
DevShapeUtils.shape(DevShape.RECTANGLE).gradientLinear(DevShape.TOP_BOTTOM, R.color.colorAccent, R.color.colorPrimary).into(mBtn17);
4.18 掃描漸變
//掃描漸變(gradientSweep 參數(shù)1:漸變顏色贪磺,顏色數(shù)量必須兩個(gè)及以上)
DevShapeUtils.shape(DevShape.OVAL).gradientSweep(R.color.colorAccent, R.color.colorPrimary).into(mBtn18);
4.19 輻射漸變
//輻射漸變(gradientRadial 參數(shù)1:輻射范圍 參數(shù)2:漸變顏色硫兰,顏色數(shù)量必須兩個(gè)及以上)
DevShapeUtils.shape(DevShape.OVAL).gradientRadial(30, R.color.colorAccent, R.color.colorPrimary).into(mBtn19);
4.20 觸摸背景顏色變化
//觸摸背景顏色變化(selectorBackground 參數(shù)1:觸摸顏色 參數(shù)2 正常顏色)
DevShapeUtils.selectorBackground(R.color.colorAccent,R.color.colorPrimary).into(mBtn20);
4.21 觸摸背景顏色和字體顏色變化
//觸摸背景顏色和字體顏色變化(selectorColor 參數(shù)1:觸摸顏色 參數(shù)2 正常顏色)
        DevShapeUtils.selectorBackground(R.color.colorAccent,R.color.colorPrimary)
                .selectorColor("#ffffff", "#000000")
                .into(mBtn21);
4.22 觸摸圓角背景和字體顏色變化
//觸摸圓角背景和字體顏色變化
Drawable pressedDrawable = DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(10).build();
Drawable normalDrawable = DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorPrimary).radius(10).build();
DevShapeUtils .selectorBackground(pressedDrawable,normalDrawable)
                .selectorColor("#ffffff", "#000000")
                .into(mBtn22);
五. 效果圖
3.gif

ok,今天就講到這里了寒锚,謝謝誒劫映!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市刹前,隨后出現(xiàn)的幾起案子泳赋,更是在濱河造成了極大的恐慌,老刑警劉巖喇喉,帶你破解...
    沈念sama閱讀 211,265評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件祖今,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)千诬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門耍目,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人徐绑,你說(shuō)我怎么就攤上這事邪驮。” “怎么了傲茄?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,852評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵毅访,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我盘榨,道長(zhǎng)喻粹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,408評(píng)論 1 283
  • 正文 為了忘掉前任较曼,我火速辦了婚禮磷斧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捷犹。我一直安慰自己弛饭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布萍歉。 她就那樣靜靜地躺著侣颂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枪孩。 梳的紋絲不亂的頭發(fā)上憔晒,一...
    開(kāi)封第一講書(shū)人閱讀 49,772評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音蔑舞,去河邊找鬼拒担。 笑死,一個(gè)胖子當(dāng)著我的面吹牛攻询,可吹牛的內(nèi)容都是我干的从撼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,921評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼钧栖,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼低零!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起拯杠,我...
    開(kāi)封第一講書(shū)人閱讀 37,688評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤掏婶,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后潭陪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體雄妥,經(jīng)...
    沈念sama閱讀 44,130評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡最蕾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茎芭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揖膜。...
    茶點(diǎn)故事閱讀 38,617評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡誓沸,死狀恐怖梅桩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拜隧,我是刑警寧澤宿百,帶...
    沈念sama閱讀 34,276評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站洪添,受9級(jí)特大地震影響垦页,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜干奢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評(píng)論 3 312
  • 文/蒙蒙 一痊焊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧忿峻,春花似錦薄啥、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,740評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至绰寞,卻和暖如春到逊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滤钱。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,967評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工觉壶, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人件缸。 一個(gè)月前我還...
    沈念sama閱讀 46,315評(píng)論 2 360
  • 正文 我出身青樓铜靶,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親停团。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旷坦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評(píng)論 2 348

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

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,754評(píng)論 25 707
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)佑稠,斷路器秒梅,智...
    卡卡羅2017閱讀 134,629評(píng)論 18 139
  • 這一周 10分(滿分一百) 8號(hào)掉了手機(jī);例假周身體欠佳;精神恍惚,打碎玻璃杯舌胶,騎車摔撞;完美主義包袱太重捆蜀,又回到...
    Starry醬閱讀 146評(píng)論 1 1
  • 似是有小半年的時(shí)間沒(méi)有坐過(guò)火車了。但卻依然沒(méi)忘記在火車站的感覺(jué)。 我討厭車站辆它,更討厭火車誊薄,對(duì),是火車不是動(dòng)車也不是...
    Mr_Six閱讀 242評(píng)論 0 0
  • 精進(jìn) 借口和理由都是自己給自己找的锰茉,把壓力轉(zhuǎn)換成生產(chǎn)力是智者之選 感受 快樂(lè)分享錯(cuò)了人呢蔫,就成了顯擺。難過(guò)分享錯(cuò)了人...
    若蘭ZHOU閱讀 152評(píng)論 0 1