前言
在開(kāi)發(fā)的過(guò)程中,我們經(jīng)常會(huì)遇到給view設(shè)置背景锄列,什么圓形背景啊图云,圓角背景啊,點(diǎn)擊變色背景啊之類的邻邮,這功能實(shí)現(xiàn)起來(lái)不難竣况,但是一堆的xml文件啊都大同小異,令人頭疼筒严。下面給大家介紹一個(gè)selector緩存框架丹泉。
本文參考以下鏈接
selector官網(wǎng);
今天內(nèi)容涉及以下:
- Selector導(dǎo)入與配置
- Selector初始化
- Selector使用注意事項(xiàng)
- Selector框架的使用
- 效果圖
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)
- 項(xiàng)目中minSdkVersion設(shè)置為16鸭蛙,不然編譯通不過(guò)摹恨。(Android4.1,現(xiàn)在的手機(jī)版本基本都在4.4以上)
- 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);
五. 效果圖
ok,今天就講到這里了寒锚,謝謝誒劫映!