文档章节

強大的Selector框架

o
 osc_4nmshwhm
发布于 2018/08/07 13:41
字数 999
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

代码地址如下:<br>http://www.demodashi.com/demo/12648.html

####前言 在开发的过程中,我们经常会遇到给view设置背景,什么圆形背景啊,圆角背景啊,点击变色背景啊之类的,这功能实现起来不难,但是一堆的xml文件啊都大同小异,令人头疼。下面给大家介绍一个selector缓存框架

今天内容涉及以下:

  1. Selector导入与配置
  2. Selector初始化
  3. Selector使用注意事项
  4. Selector框架的使用
  5. 项目环节构图及效果图

#####一. 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使用注意事项

  1. 项目中minSdkVersion设置为16,不然编译通不过。(Android4.1,现在的手机版本基本都在4.4以上)
  2. 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);

由于方法太多,这里用法就不一一展示了,这里介绍下此框架能实现哪些功能:

  1. 椭圆背景
  2. 圆形背景
  3. 矩形背景
  4. 圆角
  5. 左上圆角
  6. 右上圆角
  7. 左下圆角
  8. 右下圆角
  9. 上圆角
  10. 下圆角
  11. 斜圆角
  12. 半圆角
  13. 实线边框
  14. 虚线边框
  15. 线性渐变
  16. 扫描渐变
  17. 辐射渐变
  18. 触摸背景颜色变化
  19. 触摸背景颜色和字体颜色变化
  20. 触摸圆角背景和字体颜色变化

在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框架

代码地址如下:<br>http://www.demodashi.com/demo/12648.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
強大的Selector框架

前言 在开发的过程中,我们经常会遇到给view设置背景,什么圆形背景啊,圆角背景啊,点击变色背景啊之类的,这功能实现起来不难,但是一堆的xml文件啊都大同小异,令人头疼。下面给大家介绍一...

奔跑的佩恩
2018/03/19
0
0
StulleMule v7.0 发布

StulleMule是基於MorphXT的Mod,由著名Modder——Stulle開發並維護,其基於MorphXT的Mod共同的特徵是強大的資源釋出能力。 雖然並不支援掛載DLP,但StulleMule本身已有反吸血Argos,而且內置...

红薯
2011/01/10
488
0
小範圍定律

昨天美國網路界有一篇名文,題目是:「我如何『騙』我自己變成一個超強的人」(How I Tricked Myself into Being Awesome),這句話本來應該超自大的,但作者又稱之為「騙」自己,令人好奇。 ...

扁豆焖面先生
2012/08/04
22
0
NumPy:索引 + 切片

NumPy:索引 + 切片 文章目錄 NumPy:索引 + 切片 簡介 參考 正文 一維數組 多維數組 其他索引 order 排列方式 結語 簡介 前一篇:NumPy:起步 + 創建數組。我們已經能夠建立多維數組了,接下...

超悠閒
06/25
0
0
[深圳]兩年苦B Java 程式員求解脫,求安撫,求指導

去年在北京實習一年,2012年七月畢業的,從12年八月開始在深圳一家世界500強做了五個月了,技術絕對講不一定很強,但是相對和我同“級別”的實在是太強了,和我一起的同事都以為我有個三五年...

MrDing
2013/01/22
3.8K
43

没有更多内容

加载失败,请刷新页面

加载更多

dict.items()和dict.iteritems()有什么区别?

问题: Are there any applicable differences between dict.items() and dict.iteritems() ? dict.items()和dict.iteritems()之间是否有适用的区别? From the Python docs: 从Python文档中......

法国红酒甜
今天
20
0
R中“ =”和“ <-”赋值运算符有什么区别?

问题: What are the differences between the assignment operators = and <- in R? R中赋值运算符=和<-之间有什么区别? I know that operators are slightly different, as this example ......

fyin1314
今天
20
0
之间的区别 和

问题: I'm learning Spring 3 and I don't seem to grasp the functionality behind <context:annotation-config> and <context:component-scan> . 我正在学习Spring 3,并且似乎不太了解<......

javail
今天
15
0
业内首款,百度工业视觉智能平台全新亮相

本文作者:y****n 业内首款全国产化工业视觉智能平台——百度工业视觉智能平台亮相中国机器视觉展(Vision China),该平台所具有的核心AI能力完全自主可控,在质检、巡检等场景中具有高效、...

百度开发者中心
昨天
7
0
我们如何制作xkcd样式图? - How can we make xkcd style graphs?

问题: Apparently, folk have figured out how to make xkcd style graphs in Mathematica and in LaTeX . 显然,民间已经想出了如何在Mathematica和LaTeX中制作xkcd风格的图形。 Can we d......

富含淀粉
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部