亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android創建外部lib庫及自定義View的圖文教程

2019-10-21 21:35:52
字體:
來源:轉載
供稿:網友

前言

隨著插件化/組件化的快速發展,現在大部分的項目開發中都會提取公共的代碼制作成 Library module,根據具體的業務需求進行拆分。小菜也學習一下如何拆分 lib 包,實際操作很簡單,整理一下操作步驟。

拆分創建 Library

在當前 Project 下,File -> New Module,選擇 Android Library,進行下一步;

Android,lib庫,自定義,View

設置具體的 Library/Module/Package 等名稱,注意:Module 名稱與 Library 相匹配默認為小寫,需要的話手動調整,進行下一步;

Android,lib庫,自定義,View

此時在當前 Project 中就已經創建好 Library;

Android,lib庫,自定義,View

在當前 Project 的 settings.gradle 中就會自動生成創建的 Module;

Tips: :myview 中的 : 代表的與 app 同級目錄下的 Module。

Android,lib庫,自定義,View

在當前 app 的 build.gradle 中 dependencies{} 中添加 implementation project(':myview') 即可正常接入。

Android,lib庫,自定義,View

自定義 View

小菜在新建的 Library 中添加一個自定義按鈕,可以添加配置圖標和文字以及背景樣式。因為只是為了測試 Library Module,所以功能很簡單,實現方式也很簡單,只是幾個基本控件的組合。小菜只是簡單的整理一下。

1、新建一個 MyView 繼承自 RelativeLayout,實現基本的構造方法;

2、在構造方法中實現對布局的添加,控件的綁定以及一些基本的 setXX 方法;

3、至此 MyView 就可以應用,但所有但屬性都需要通過 setXX 方法來設置;這當然是不合理的,于是小菜新建一個 attrs 文件,在資源文件中設置基本的樣式,并在 MyView 的 obtainAttributes 方法中逐一綁定即可;

<?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>

4、至此,MyView 自定義按鈕以及完成,在 app 中也是正常調用即可。

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(Context context) {super(context);mContext = context;initView();}public MyView(Context context, AttributeSet attrs) {super(context, attrs);mContext = context;initView();obtainAttributes(context,attrs);}private void initView() {LayoutInflater.from(mContext).inflate(R.layout.my_view_btn, this,true);mRlay = findViewById(R.id.my_view_rly);mIv = findViewById(R.id.my_view_iv);mTv = findViewById(R.id.my_view_tv);mRightTv = findViewById(R.id.my_view_rtv);}private void obtainAttributes(Context context, AttributeSet attrs) {TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.my_view);mTvColor = ta.getColor(R.styleable.my_view_tv_color, Color.BLACK);mTv.setTextColor(mTvColor);mRightTvColor = ta.getColor(R.styleable.my_view_right_tv_color, Color.BLACK);mRightTv.setTextColor(mRightTvColor);mRlayBgColor = ta.getColor(R.styleable.my_view_bg_color, Color.WHITE);mRlay.setBackgroundColor(mRlayBgColor);mStrokeColor = ta.getColor(R.styleable.my_view_strok_color, Color.BLACK);isIvShow = ta.getBoolean(R.styleable.my_view_iv_show, true);mIv.setVisibility(isIvShow?View.VISIBLE:View.GONE);isRightTvShow = ta.getBoolean(R.styleable.my_view_right_tv_show, true);mRightTv.setVisibility(isRightTvShow?View.VISIBLE:View.GONE);isTvShow = ta.getBoolean(R.styleable.my_view_tv_show, true);mTv.setVisibility(isTvShow?View.VISIBLE:View.GONE);mTvSize = ta.getFloat(R.styleable.my_view_tv_size, 16.0f);mTv.setTextSize(mTvSize);mRightTvSize = ta.getFloat(R.styleable.my_view_right_tv_size, 14.0f);mRightTv.setTextSize(mRightTvSize);mRadiusSize = ta.getFloat(R.styleable.my_view_bg_color, 80.0f);drawable = (GradientDrawable) getResources().getDrawable(R.drawable.user_login_corner_qq);drawable.setCornerRadius(mRadiusSize);drawable.setStroke(1, mStrokeColor);drawable.setColor(mRlayBgColor);mRlay.setBackground(drawable);mTvStr = ta.getString(R.styleable.my_view_tv_str);mTv.setText(mTvStr);mRightTvStr = ta.getString(R.styleable.my_view_right_tv_str);mRightTv.setText(mRightTvStr);mIvSrc = ta.getResourceId(R.styleable.my_view_iv_src, R.mipmap.user_login_icon_qq);mIv.setImageResource(mIvSrc);ta.recycle();}public void setMyViewTv(String textStr) {mTv.setText(textStr);}public void setMyViewTvColor(int color) {mTv.setTextColor(color);}public void setMyViewTvSize(float size) {mTv.setTextSize(size);}public void isMyViewTvShow(boolean state) {mTv.setVisibility(state ? View.VISIBLE : View.GONE);}public void setMyViewIv(Drawable drawable) {mIv.setImageDrawable(drawable);}public void isMyViewIvShow(boolean state) {mIv.setVisibility(state ? View.VISIBLE : View.GONE);}public void isMyViewRightTvShow(boolean state) {mRightTv.setVisibility(state ? View.VISIBLE : View.GONE);}public void setMyViewRightTvText(String textStr) {mRightTv.setText(textStr);}public void setMyViewRightTvSize(float size) {mRightTv.setTextSize(size);}public void setMyViewRightTvColor(int color) {mRightTv.setTextColor(color);}public void setMyViewBgColor(int color) {drawable.setColor(color);mRlay.setBackground(drawable);}public void setMyViewBgRadius(float radius) {drawable.setCornerRadius(radius);mRlay.setBackground(drawable);}public void setMyViewBgStrokeColor(int color) {drawable.setStroke(1, color);mRlay.setBackground(drawable);}public void setMyViewBgDrawable(Drawable drawable) {mRlay.setBackground(drawable);}}

Android,lib庫,自定義,View

Tips: attrs.xml 中如果需要用到資源文件,可以使用 format="reference",代表某一個資源ID。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品美女主播在线观看纯欲| 国内外成人免费激情在线视频网站| 26uuu久久噜噜噜噜| 在线观看成人黄色| 欧美福利小视频| 国产精品444| 91香蕉亚洲精品| 国产精品亚洲网站| 中文字幕不卡在线视频极品| 91av中文字幕| 欧美日本亚洲视频| 亚洲成人激情图| 国产福利视频一区| 91国自产精品中文字幕亚洲| 91成人性视频| 亚洲男人天堂网站| 91亚洲国产成人精品性色| 中文欧美日本在线资源| 中文字幕国产精品| 国产精品91在线观看| 欧美日韩国产精品| 国内外成人免费激情在线视频网站| 国产成人亚洲综合91| 欧美性xxxx在线播放| 91精品久久久久久久久久久久久| 欧美猛交ⅹxxx乱大交视频| 自拍偷拍免费精品| 国产精品日日做人人爱| 欧美区在线播放| 国产精品aaaa| 亚洲欧美www| 欧美一性一乱一交一视频| 91久久国产婷婷一区二区| 亚洲欧洲国产伦综合| 欲色天天网综合久久| 红桃av永久久久| 日韩免费观看av| 欧美日韩另类视频| 亚洲三级免费看| 国产一区二区免费| 一级做a爰片久久毛片美女图片| 久久久91精品国产| 美女撒尿一区二区三区| 欧美激情xxxx性bbbb| 成人国产亚洲精品a区天堂华泰| 国内精品久久久久久| 国产精品成人一区二区| 自拍偷拍免费精品| 国产午夜精品视频免费不卡69堂| 亚洲国产日韩欧美在线99| 亚洲国产精品久久久久秋霞蜜臀| 在线观看欧美成人| 色婷婷成人综合| 日韩电影中文字幕在线| 国产精品国产亚洲伊人久久| www日韩欧美| 国产精品极品在线| 亚洲欧美日韩一区二区在线| 成人av番号网| 国产精品视频999| 97视频人免费观看| 久久免费视频在线观看| 91精品久久久久久久久中文字幕| 热久久美女精品天天吊色| 成人黄色av播放免费| 国产精品www| 亚洲电影免费观看高清完整版在线| 97色伦亚洲国产| 51久久精品夜色国产麻豆| 国产精品日韩在线播放| 久久久久在线观看| 国产精品v片在线观看不卡| 成人免费视频在线观看超级碰| 日韩av综合中文字幕| 精品久久久久久久久国产字幕| 亚洲精品美女在线观看| 色偷偷av一区二区三区| 欧美激情伊人电影| 在线精品播放av| 亚洲乱码国产乱码精品精天堂| 亚洲淫片在线视频| 97在线观看视频| 久久久亚洲影院你懂的| 精品一区二区三区四区| 欧美大全免费观看电视剧大泉洋| 日韩福利在线播放| 久久久久久这里只有精品| 日韩av免费在线观看| 国产成人极品视频| 久久亚洲精品国产亚洲老地址| 亚洲精品在线看| 成人黄色免费看| 久久综合久中文字幕青草| 亚洲男人的天堂在线播放| 欧美视频在线观看 亚洲欧| 日韩视频亚洲视频| 亚洲欧美日韩视频一区| 精品久久久香蕉免费精品视频| 亚洲第一在线视频| 国产狼人综合免费视频| 久久久久久久久久亚洲| 91精品视频免费观看| 亚洲精品视频播放| 亚洲成人网av| 国产成人97精品免费看片| 国产精品一区二区3区| 成人h猎奇视频网站| 欧美日韩裸体免费视频| 欧美性20hd另类| 色小说视频一区| 69精品小视频| 国产精品欧美久久久| www.亚洲天堂| 亚洲精品自在久久| 国外成人在线直播| 亚洲国产成人久久| 亚洲高清久久久久久| 91久久精品日日躁夜夜躁国产| 欧美色道久久88综合亚洲精品| 91精品久久久久久| 日韩精品免费在线视频观看| 久久久久久尹人网香蕉| 欧美成人激情图片网| 91九色蝌蚪国产| 国产精品久久久久久久久久尿| 欧美综合国产精品久久丁香| 日韩中文字幕在线看| 永久免费精品影视网站| 宅男66日本亚洲欧美视频| 庆余年2免费日韩剧观看大牛| 992tv成人免费影院| 日韩一区av在线| 欧美精品在线第一页| 57pao国产成人免费| 欧美性猛交xxxx免费看| 国产九九精品视频| 欧美剧在线观看| 色综合久久88| 欧美性猛交xxxx乱大交蜜桃| 国产99久久久欧美黑人| 欧美一级淫片播放口| 亚洲xxxx18| 亚洲欧美日韩成人| 国产成人精品久久二区二区| 久久天天躁狠狠躁夜夜躁| 亚洲va久久久噜噜噜久久天堂| 久久久久久亚洲精品中文字幕| 一二美女精品欧洲| 国产精品大陆在线观看| 成人免费在线视频网站| 亚洲老头老太hd| 成人免费视频在线观看超级碰| 久久影院模特热| 最新国产精品拍自在线播放| 亚洲а∨天堂久久精品喷水| 久久久999精品免费| 欧洲午夜精品久久久| 中文欧美日本在线资源| 亚洲人成在线观看网站高清| 亚洲色图第三页| 91精品久久久久久久久久另类| 8x海外华人永久免费日韩内陆视频| 亚洲女人天堂视频| 久久国产精品久久久久久久久久|