前面两篇的博文已经基本上吧自定义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:位或运算
<?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!