自定义控件--快速索引(三)

来源:互联网 发布:天津基础教育网络平台 编辑:程序博客网 时间:2024/04/26 14:07

  前面两篇的博文已经基本上吧自定义view介绍完了,但是这只是相对于我们项目来用的,用在具体的项目上这么写是合适的!

但如果是给别人用呢?或者想改改颜色文字大小啥的,总不能每次都去改代码吧?所以我们要向安卓原生控件一样给自定义view定义一些属性以及方法给别人拿去用!


首先定义属性,我们先在values文件夹下创建一个attrs.xml文件定义一个标签<declare-styleable name="">declare-styleable ,name对应的值一般是自定义view的名称,表明这个属性属于哪个控件

declare-styleable标签下的子标签<attr name=""  format=""> name 表示属性名,format表示属性值的类型一般有以下十种

  • reference:引用资源

  • string:字符串

  • Color:颜色

  • boolean:布尔值

  • dimension:尺寸值

  • float:浮点型

  • integer:整型

  • fraction:百分数

  • enum:枚举类型

  • flag:位或运算

比如我想改文字的颜色,attrs里面这样定义属性

<?xml version="1.0" encoding="utf-8"?><resources>    <declare-styleable name="FastIndexingView">         <attr name="fastindex_textColor" format="color"/>    </declare-styleable></resources>

在布局中使用这个属性前,需要现更改名称空间,之前我用eclipse开发是需要指定包名路径的,现在Android直接res-auto就ok

布局文件根标签定义名称空间

xmlns:indexattrs="http://schemas.android.com/apk/res-auto"
xmlns固定写法

indexattrs 自己明明,随便写,你知道这个代表指向你的属性,但实际开发中明明还是要规范的


前面几步搞定后 就要在在布局中使用属性了

<com.xu.fastindexing.view.FastIndexingView    indexattrs:fastindex_textColor="#236734"    android:id="@+id/fastindext"    android:layout_alignParentRight="true"    android:background="#ff0000"    android:layout_width="50dp"    android:layout_height="match_parent"/>

indexattrs就表示我们自定义的属性 后面的名称就是属性名 值就是format指定的颜色值


最后,在代码中进行使用 使用时要注意找到属性是根标签的name_属性名获取value值

最后把value值set给画笔,就可以定义我们指定的颜色去画文字了

public FastIndexingView(Context context, AttributeSet attrs, int defStyleAttr) {    super(context, attrs, defStyleAttr);    TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.FastIndexingView);    if (typedArray != null) {        mColor = typedArray.getColor(R.styleable.FastIndexingView_fastindex_textColor, Color.GRAY);        typedArray.recycle();    }    mPaint = new Paint();    mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);//抗锯齿    mPaint.setColor(mColor);    mPaint.setTextSize(20);    mPaint.setTypeface(Typeface.DEFAULT_BOLD);//字体加粗.    mPaint.setTextAlign(Paint.Align.CENTER);//居中对齐

我在布局文件中指定的文字颜色是绿色,看看我们应用跑起来后自定义view的文字颜色是不是绿色?


确实已经变成了绿色,当然你也可以设置其他属性值,比如文字的大小啊等等


然后项目上传到github上,怎么上传github前面说过,不多说了  地址 :https://github.com/Itxupengfei/FastIndexing


现在是不是想把你的代码像别人一样,在studio中依据一句  compile 一下别人就可以依赖使用了?我这里教你怎么做,但是切记我上传的是一个apk,不是一个依赖库,所以即使你依赖也是无法使用的,并且studio也无法识别,先告知一下,但是上传步骤方式都是一样的


第一步  点击上传github中的release



第二步 进入界面后,如果是首次创建,就点击中间哪个创建按钮,不是第一次创建就会进入下面的界面,直接点击右上角


第三步,输入一些信息后,点击push




第四步,等待第三步完成后,会跳转页面,表示上传完毕,此时登陆这个网站 https://jitpack.io/


然后按照下面的提示进行以来就ok了



算了,我还是弄成库给大家体验一下吧,快速搞一下,AndroidStudio new一个ModuleLib,把刚才的view类以及attrs.xml文件拷贝到这个module下,然后上传到github上,然后重复上述步骤

然后在自己的工程中依赖下就ok了

祝贺你,又离大牛进了一步..一起加油吧,啊哈哈哈!

太晚了,睡了,bye!

1 0