強大的Selector框架
前言
在开发的过程中,我们经常会遇到给view设置背景,什么圆形背景啊,圆角背景啊,点击变色背景啊之类的,这功能实现起来不难,但是一堆的xml文件啊都大同小异,令人头疼。下面给大家介绍一个selector缓存框架
今天内容涉及以下:
- Selector导入与配置
- Selector初始化
- Selector使用注意事项
- Selector框架的使用
- 项目环节构图及效果图
一. Selector导入与配置
1.1 project的build.gradle中添加配置
在project的build.gradle文件中的allprojects---->repositories 添加如下依赖:
//引入selector框架
 maven { url "https://jitpack.io"}
则build.gradle文件代码变为:
// 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中添加库依赖:
//引入selector框架
compile 'com.github.LiangLuDev:DevShapeUtils:1.0.1'
二. Selector初始化
在项目自定义的Application中初始化,如下:
public class AppContext extends Application{
    @Override
    public void onCreate() {
        super.onCreate();
        //selector框架初始化
        DevShapeUtils.init(this);
    }
}
三. Selector使用注意事项
- 项目中minSdkVersion设置为16,不然编译通不过。(Android4.1,现在的手机版本基本都在4.4以上)
- app module的build.gradle中 compileSdkVersion 和 targetSdkVersion 版本一致,并且要在26版本及以上
四. Selector框架的使用
样式设置:
① DevShapeUtils.xxx.into(view)--直接设置到相应的view
② DevShapeUtils.xxx.build()--返回Drawable对象
颜色设置: 所有的颜色设置均可使用 R.color.xxx 或者 #FFFFFF
单位设置: 项目中所有的数值单位为dp
4.1 椭圆
DevShapeUtils.shape(DevShape.OVAL).solid(R.color.colorAccent).into(mBtn1);
4.2 圆形
设置圆形的时候,需要设置按钮为固定大小,且宽高一致,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" />
设置圆形代码如下:
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);
由于方法太多,这里用法就不一一展示了,这里介绍下此框架能实现哪些功能:
- 椭圆背景
- 圆形背景
- 矩形背景
- 圆角
- 左上圆角
- 右上圆角
- 左下圆角
- 右下圆角
- 上圆角
- 下圆角
- 斜圆角
- 半圆角
- 实线边框
- 虚线边框
- 线性渐变
- 扫描渐变
- 辐射渐变
- 触摸背景颜色变化
- 触摸背景颜色和字体颜色变化
- 触摸圆角背景和字体颜色变化
在MainActivity中部分使用代码如下:
public class MainActivity extends BaseActivity {
    private Button mBtn1;
    private Button mBtn2;
    private Button mBtn3;
    private Button mBtn4;
    private Button mBtn5;
    private Button mBtn6;
    private Button mBtn7;
    private Button mBtn8;
    private Button mBtn9;
    private Button mBtn10;
    private Button mBtn11;
    private Button mBtn12;
    @Override
    protected int getContentViewId() {
        return R.layout.activity_main;
    }
    @Override
    protected void initView() {
        mBtn1=findViewById(R.id.button1);
        mBtn2=findViewById(R.id.button2);
        mBtn3=findViewById(R.id.button3);
        mBtn4=findViewById(R.id.button4);
        mBtn5=findViewById(R.id.button5);
        mBtn6=findViewById(R.id.button6);
        mBtn7=findViewById(R.id.button7);
        mBtn8=findViewById(R.id.button8);
        mBtn9=findViewById(R.id.button9);
        mBtn10=findViewById(R.id.button10);
        mBtn11=findViewById(R.id.button11);
        mBtn12=findViewById(R.id.button12);
    }
    @Override
    protected void initData() {
        //椭圆
        DevShapeUtils.shape(DevShape.OVAL).solid(R.color.colorAccent).into(mBtn1);
        //圆形
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(999).into(mBtn2);
        //矩形
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).into(mBtn3);
        //圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).radius(10).into(mBtn4);
        //左上圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).tlRadius(10).into(mBtn5);
        //右上圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).trRadius(10).into(mBtn6);
        //左下圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).blRadius(10).into(mBtn7);
        //右下圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).brRadius(10).into(mBtn8);
        //上圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).tlRadius(10).trRadius(10).into(mBtn9);
        //下圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).blRadius(10).brRadius(10).into(mBtn10);
        //斜圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).tlRadius(10).brRadius(10).into(mBtn11);
        //斜圆角
        DevShapeUtils.shape(DevShape.RECTANGLE).solid(R.color.colorAccent).trRadius(10).blRadius(10).into(mBtn12);
}
    @Override
    protected void setListener() {
    }
    @Override
    public void onClick(View v) {
    }
}
五.项目结构图及效果图
项目结构图:

效果图:

強大的Selector框架
注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权
強大的Selector框架的更多相关文章
- 大数据计算框架Hadoop, Spark和MPI
		转自:https://www.cnblogs.com/reed/p/7730338.html 今天做题,其中一道是 请简要描述一下Hadoop, Spark, MPI三种计算框架的特点以及分别适用于什 ... 
- 10大H5前端框架(转)
		10大H5前端框架 作为一名做为在前端死缠烂打6年并且懒到不行的攻城士,这几年我还是阅过很多同门从知名到很知名的各种前端框架,本来想拿15-20个框架来分享一下,但在跟几个前辈讨教写文章的技巧时果断被 ... 
- Spark 介绍(基于内存计算的大数据并行计算框架)
		Spark 介绍(基于内存计算的大数据并行计算框架) Hadoop与Spark 行业广泛使用Hadoop来分析他们的数据集.原因是Hadoop框架基于一个简单的编程模型(MapReduce),它支持 ... 
- 不要用Serverzoo 提供的CloudLinux 的五大原因 Linode 強大VPS 資源為你解密
		不要用Serverzoo 提供的CloudLinux 的五大原因 Linode 強大VPS 資源為你解密 https://www.williamformosa.com/cloud-linux/ 
- 6 大主流 Web 框架优缺点对比:15篇前端热文回看
		摘自:http://blog.csdn.net/VhWfR2u02Q/article/details/78993079 注:以下文章,点击标题即可阅读 <6 大主流 Web 框架优缺点对比> ... 
- 各大开源rpc 框架 比较
		各大开源rpc 框架 比较 1. 前言 随着现在互联网行业的发展,越来越多的框架.中间件.容器等开源技术不断地涌现,更好地来服务于业务,解决实现业务的问题.然而面对众多的技术选择,我们要如何甄别出 ... 
- Spark(火花)快速、通用的大数据处理引擎框架
		一.什么是Spark(火花)? 是一种快速.通用处理大数据分析的框架引擎. 二.Spark的四大特性 1.快速:Spark内存上采用DAG(有向无环图)执行引擎非循环数据流和内存计算支持. 内存上比M ... 
- 2020年9大顶级Java框架
		诞生于1995年的Java,目前已在134,861个网站上广泛使用,包括ESPN.SnapDeal等.在其24年的成长史中,Java已经证明了自己是用于自定义软件开发的顶级通用编程语言. Java广泛 ... 
- 2018年要学习的10大Python Web框架
		通过为开发人员提供应用程序开发结构,框架使开发人员的生活更轻松.他们自动执行通用解决方案,缩短开发时间,并允许开发人员更多地关注应用程序逻辑而不是常规元素. 在本文中,我们分享了我们自己的前十大Pyt ... 
随机推荐
- cocos2d Programming Guide
			http://python.cocos2d.org/doc/programming_guide/index.html The cocos2d Programming Guide provides in ... 
- 报告撰写,linux使用gimp简单做gif动图
			我想把我的系统菜单完整记录下来,方便查看,如果单纯使用文字比较单调,使用屏幕截图,需要依次打开多个图像查看也不是很方便,就想到了使用动画的形式展示.由于本人的系统一直使用Linux系统,为了一张gif ... 
- Centos 环境变量
			1. 控制台中,不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦. 这个只针对特定的shell; $ PATH=" ... 
- linux的文件权限分析
			windows中,文件的类型是根据后缀名来确定的,但是linux则是根据标志来确定的,查看一个文件的权限的命令是 ls -l #查看文件的权限 文件的权限结构如图: ①第一部分:10个字符(第1位表示 ... 
- Mongodb的学习整理(下)
			聚合 aggregate 聚合(aggregate)主要用于计算数据,类似sql中的sum().avg() 语法 db.集合名称.aggregate([{管道:{表达式}}]) 管道 管道在Unix和 ... 
- poj 1981(单位圆覆盖最多点问题模板)
			Circle and Points Time Limit: 5000MS Memory Limit: 30000K Total Submissions: 7327 Accepted: 2651 ... 
- Android视频压缩并且上传
			一,做视频上传首先第一步要从相册里选取视频,这一步.我的上篇博客中已经讲过了. protected void onActivityResult(int requestCode, int resultC ... 
- delphi 开机自动运行代码
			unit Unit1;//download by http://www.codefans.netinterface uses Windows,Registry, Messages, SysUtils ... 
- java标识符与命名规则
			标识符就是给变量.类或方法起的名字.可以用字母.下划线或美元符号开头,区分大小写,没有最大长度限制.(关键字除外) 关键字 访问控制 private protected public ... 
- 【bzoj1566】【管道取珠】竟然是dp题(浅尝ACM-E)
			[pixiv] https://www.pixiv.net/member_illust.php?mode=medium&illust_id=61891436 向大(hei)佬(e)势力学(di ... 
