Android创建外部lib库及自定义View的图文教程

2019-08-05 09:49| 发布者: |

前言

随着插件化/组件化的快速发展,现在大部分的项目开发中都会提取公共的代码制作成 library module,根据具体的业务需求进行拆分。小菜也学习一下如何拆分 lib 包,实际操作很简单,整理一下操作步骤。


在当前 project 下,file - new module,选择 android library,进行下一步;

设置具体的 library/module/package 等名称,注意:module 名称与 library 相匹配默认为小写,需要的话手动调整,进行下一步;

此时在当前 project 中就已经创建好 library;


___s: :myview 中的 : 代表的与 app 同级目录下的 module。


在当前 app 的 build.gradle 中 dependencies{} 中添加 implementation project 即可正常接入。


小菜在新建的 library 中添加一个自定义按钮,可以添加配置图标和文字以及背景样式。因为只是为了测试 library module,所以功能很简单,实现方式也很简单,只是几个基本控件的组合。小菜只是简单的整理一下。




 xml version="1.0" encoding="utf-8" 
 resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" 
 declare-styleable name="my_view" tools:ignore="missingdefaultresource" 
 !-- 中间文字颜色 -- 
 attr name="tv_color" format="color" / 
 !-- 中间文字显隐性 -- 
 attr name="tv_show" format="boolean" / 
 !-- 中间文字内容 -- 
 attr name="tv_str" format="string" / 
 !-- 中间文字大小 -- 
 attr name="tv_size" format="float" / 
 !-- 右侧文字颜色 -- 
 attr name="right_tv_color" format="color" / 
 !-- 右侧文字显隐性 -- 
 attr name="right_tv_show" format="boolean" / 
 !-- 右侧文字内容 -- 
 attr name="right_tv_str" format="string" / 
 !-- 右侧文字大小 -- 
 attr name="right_tv_size" format="float" / 
 !-- 整体背景颜色 -- 
 attr name="bg_color" format="color" / 
 !-- 整体边框颜色 -- 
 attr name="strok_color" format="color" / 
 !-- 整体边框圆角 -- 
 attr name="bg_radius" format="float" / 
 !-- 中间图片显隐性 -- 
 attr name="iv_show" format="boolean" / 
 !-- 中间图片资源 -- 
 attr name="iv_src" format="reference" / 
 /declare-styleable 
 /resources 

public class myview extends relativelayout {
private context mcontext;
private relativelayout mrlay;
private imageview miv;
private textview mtv, mrighttv;
gradientdrawable drawable = new gradientdrawable;
int mtvcolor, mrighttvcolor, mrlaybgcolor, mstrokecolor, mivsrc;
boolean istvshow, isrighttvshow, isivshow;
float mtvsize, mrighttvsize, mradiussize;
string mtvstr, mrighttvstr;
public myview {
super;
mcontext = context;
initview;
public myview {
super;
mcontext = context;
initview;
obtainattributes;
private void initview {
layoutinflater.from.inflate;
mrlay = findviewbyid;
miv = findviewbyid;
mtv = findviewbyid;
mrighttv = findviewbyid;
private void obtainattributes {
typedarray ta = context.obtainstyledattributes;
mtvcolor = ta.getcolor;
mtv.settextcolor;
mrighttvcolor = ta.getcolor;
mrighttv.settextcolor;
mrlaybgcolor = ta.getcolor;
mrlay.setbackgroundcolor;
mstrokecolor = ta.getcolor;
isivshow = ta.getboolean;
miv.setvisibility;
isrighttvshow = ta.getboolean;
mrighttv.setvisibility;
istvshow = ta.getboolean;
mtv.setvisibility;
mtvsize = ta.getfloat;
mtv.settextsize;
mrighttvsize = ta.getfloat;
mrighttv.settextsize;
mradiussize = ta.getfloat;
drawable =  getresources.getdrawable;
drawable.setcornerradius;
drawable.setstroke;
drawable.setcolor;
mrlay.setbackground;
mtvstr = ta.getstring;
mtv.settext;
mrighttvstr = ta.getstring;
mrighttv.settext;
mivsrc = ta.getresourceid;
miv.setimageresource;
ta.recycle;
public void setmyviewtv {
mtv.settext;
public void setmyviewtvcolor {
mtv.settextcolor;
public void setmyviewtvsize {
mtv.settextsize;
public void ismyviewtvshow {
mtv.setvisibility;
public void setmyviewiv {
miv.setimagedrawable;
public void ismyviewivshow {
miv.setvisibility;
public void ismyviewrighttvshow {
mrighttv.setvisibility;
public void setmyviewrighttvtext {
mrighttv.settext;
public void setmyviewrighttvsize {
mrighttv.settextsize;
public void setmyviewrighttvcolor {
mrighttv.settextcolor;
public void setmyviewbgcolor {
drawable.setcolor;
mrlay.setbackground;
public void setmyviewbgradius {
drawable.setcornerradius;
mrlay.setbackground;
public void setmyviewbgstrokecolor {
drawable.setstroke;
mrlay.setbackground;
public void setmyviewbgdrawable {
mrlay.setbackground;
}

___s: attrs.xml 中如果需要用到资源文件,可以使用 format="reference",代表某一个资源i________>总结


<
>
关于我们
AB模版网成立于2014年,我们是一家专注用户体验设计开发与互联网品牌建设的设计公司,创立至今为2000多位客户提供了创新与专业的设计方案。设计服务范围包括:交互原型设计、产品视觉设计、网站设计与开发建设、移动及软件产品界面设计、图标设计、品牌及平面设计等。

联系我们

13588889999服务时间:9:00-18:00)

admin@adminbuy.cn

官方微信官方微信

部门热线

前   台:13588889999
业务部:13588889999
客服部:13588889999
技术部:13566667777
人事部:13566667777

咨询电话13588889999 返回顶部
返回顶部