【Android】一行程式碼設定Shape Selector樣式

LuLiangDev發表於2019-02-27

DevShapeUtils

專案初衷: 公司專案樣式檔案n+1個,多人開發檔案命名各種各樣,每次都要搜尋半天,我也在網上看了很多類似樣式設定庫,大多數都是自定義View,我只想程式碼直接設定樣式,比較方便一點,就在閒暇時間寫了這個專案,程式碼直接設定樣式,沒有太多的屬性需要設定,使用簡單、為了更方便、快捷、省時的專案開發。

github專案地址

1、功能介紹


  • Shape樣式: 圓形、圓角、邊框、虛線邊框、顏色漸變
  • Selector樣式: 觸控背景變化、觸控字型顏色變化

2、如何使用


2.1 Android Studio匯入方法,新增Gradle依賴

在專案的 build.gradle 新增:

dependencies {
        ...
        implementation `cn.luliangdev:DevShapeUtils:1.0.1`
        }
複製程式碼

2.2 專案中使用

PS:專案中minSdkVersion設定為16,不然編譯通不過。(Android4.1,現在的手機版本基本都在4.4以上)
android {
    defaultConfig {
        ...
        minSdkVersion 16
        ...
    }
}
複製程式碼
2.2.1 在專案Application中初始化
public class DevApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        DevShapeUtils.init(this);
    }
}
複製程式碼
2.2.2 程式碼中使用
  • 樣式設定:
    ① DevShapeUtils.xxx.into(view)
    –直接設定到相應的view
    ② DevShapeUtils.xxx.build()–返回Drawable物件
  • 顏色設定: 所有的顏色設定均可使用 R.color.xxx 或者 #FFFFFF
  • 單位設定: 專案中所有的數值單位為dp
2.2.2.1 Shape樣式

效果展示:

DevShapeUtils.jpg

程式碼示例:

//橢圓
DevShapeUtils.shape(DevShape.OVAL).solid(R.color.colorAccent).into(view);
//矩形
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).into(view);
//圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(10).into(view);
//方向圓角(top-left方向圓角)
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).tlRadius(10).into(view);
//半圓角
DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(999).into(view);
//實線圓角邊框(line 引數1:邊框寬度 引數2:邊框顏色)
DevShapeUtils.shape(DevShape.RECTANGLE).line(1, R.color.colorAccent).radius(10).into(view);
//虛線圓角邊框(dashLine 引數1:邊框寬度 引數2:邊框顏色 引數3:虛線寬度 引數4:虛線間隙寬度)
DevShapeUtils.shape(DevShape.RECTANGLE).dashLine(1, R.color.colorPrimary, 5, 5).radius(10).into(view);
//漸變(預設線性上下方向漸變)
DevShapeUtils.shape(DevShape.RECTANGLE).gradient(R.color.colorAccent, R.color.colorPrimary).into(view);
//線性漸變(gradientLinear 引數1:漸變方向 引數2:漸變顏色,顏色數量必須兩個及以上)
DevShapeUtils.shape(DevShape.RECTANGLE).gradientLinear(DevShape.TOP_BOTTOM, R.color.colorAccent, R.color.colorPrimary).into(view);
//掃描漸變(gradientSweep 引數1:漸變顏色,顏色數量必須兩個及以上)
DevShapeUtils.shape(DevShape.OVAL).gradientSweep(R.color.colorAccent, R.color.colorPrimary).into(view);
//輻射漸變(gradientRadial 引數1:輻射範圍 引數2:漸變顏色,顏色數量必須兩個及以上)
DevShapeUtils.shape(DevShape.OVAL).gradientRadial(30, R.color.colorAccent, R.color.colorPrimary).into(view);
複製程式碼
2.2.2.2 Selector樣式

效果展示:

device-2018-02-27-143029 00_00_00-00_00_10 [240p].gif

程式碼示例:

//觸控背景顏色變化(selectorBackground 引數1:觸控顏色 引數2 正常顏色)
DevShapeUtils.selectorBackground(R.color.colorAccent,R.color.colorPrimary).into(view);
//觸控背景顏色和字型顏色變化(selectorColor 引數1:觸控顏色 引數2 正常顏色)
DevShapeUtils
        .selectorBackground(R.color.colorAccent,R.color.colorPrimary)
        .selectorColor("#ffffff", "#000000")
        .into(view);
//觸控圓角背景和字型顏色變化
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(view);
複製程式碼

3、意見反饋

如果遇到問題或者好的建議,請反饋到:issue、927195249@qq.com 或者LiangLuDev@gmail.com

相關文章