基本UI組件的封裝庫(三)——basicUI

查看在線pdf文檔:
http://note.youdao.com/s/EM20Cggm

以下是我的基本UI組件該系列的文章逻淌,歡迎大家轉(zhuǎn)載和分享:
基本UI組件的封裝庫(一)——basicUI
基本UI組件的封裝庫(二)——basicUI
基本UI組件的封裝庫(三)——basicUI
基本UI組件的封裝庫(四)——basicUI

Gradle依賴

  • Step 1. Add the JitPack repository to your build file
    Add it in your root build.gradle at the end of repositories:
    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
  • Step 2. Add the dependency
    dependencies {
          implementation 'com.github.Peakmain:BasicUI:1.1.0-androidx'
    }

使用

loading效果


loading的效果.gif
視察動畫的loading,布局中直接使用
    <com.peakmain.ui.loading.InspectLoadingView
        android:id="@+id/inspect_loading_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

activity中需要調(diào)用show方法來顯示

  mInspectLoadingView.show();

隱藏只需要調(diào)用hide方法

mInspectLoadingView.hide();
仿釘釘?shù)膌oading
    <com.peakmain.ui.loading.RotatingLoadingView
        android:id="@+id/rotating_loading_view"
        android:onClick="click"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

默認(rèn)設(shè)置的是全屏展示么伯,如果想以loading的方式顯示,可以調(diào)用show方法

        RotatingLoadingView rotatingLoadingView = new RotatingLoadingView(this);
        rotatingLoadingView.show();

隱藏還是hide方法

mLoadingView.hide();
仿58同城加載loading
<com.peakmain.ui.loading.ShapeLoadingView
       android:id="@+id/shape_loading_view"
       android:onClick="click"
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>

默認(rèn)也是全屏恍风,如果想以loading顯示蹦狂,可以使用show方法

    ShapeLoadingView shapeLoadingView = new ShapeLoadingView(this);
    shapeLoadingView.show();
自定義支付密碼鍵盤
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:id="@+id/view_root"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:orientation="vertical">

  <com.peakmain.ui.widget.password.PasswordEditText
      android:id="@+id/password_edit_text"
      android:layout_width="match_parent"
      android:layout_marginTop="@dimen/space_20"
      android:layout_marginLeft="@dimen/space_50"
      android:layout_marginRight="@dimen/space_50"
      android:layout_height="30dp" />

  <com.peakmain.ui.widget.password.CustomerKeyboard
      android:id="@+id/custom_key_board"
      android:layout_width="match_parent"
      android:layout_alignParentBottom="true"
      android:layout_height="wrap_content" />
</RelativeLayout>
  • PasswordEditText的相關(guān)方法:
    setPasswordCompleteListener表示設(shè)置完成
    addPasswordNumber表示添加號碼
    deletePassWord表示刪除號碼
  • CustomerKeyboard
    CustomerKeyboardClickListener設(shè)置監(jiān)聽事件
   mCustomerKeyboard.setOnCustomerKeyboardClickListener(new CustomerKeyboard.CustomerKeyboardClickListener() {
            @Override
            public void click(String number) {
                mEditText.addPasswordNumber(number);
            }

            @Override
            public void delete() {
                 mEditText.deletePassWord();
            }
        });
        mEditText.setPasswordCompleteListener(ToastUtils::showShort);
自定義支付密碼鍵盤.gif
九宮格解鎖
    <com.peakmain.ui.widget.lock.LockScreenView
        android:id="@+id/lock_pattern"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

LockScreenView中有個(gè)setOnLockSuccessListener方法其中有兩個(gè)方法,getLockResult表示返回你想判斷的結(jié)果的字符串,onLockSuccess表示密碼正確后的回掉


九宮格解鎖.gif

圖片預(yù)覽控件封裝

PicturePreview.create(context = mContext!!)
        .origin(images)//加載本地圖片
        .originUrl(imagesUrl)//加載網(wǎng)絡(luò)圖片
        .showBottomView(true)//是否顯示底部已選擇頁面 false不顯示
        .showTitleLeftBack(true)//是否顯示title的返回按鈕
        .showTitleRightIcon(true)//是否顯示右邊已選擇圖標(biāo)
        .forResult(null)//設(shè)置選擇之后的回調(diào)
image.png

懸浮按鈕的實(shí)現(xiàn)

一行代碼就可以了,如果想修改圖標(biāo)大小和位置朋贬,可以在構(gòu)造函數(shù)中設(shè)置

val suspensionView = SuspensionView(this)
addContentView(suspensionView, FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT))
suspensionView.setSuspensionViewClick {
            ToastUtils.showLong("測試懸浮按鈕的點(diǎn)擊事件")
 }

源碼構(gòu)造函數(shù)

class SuspensionView @JvmOverloads constructor(context: Context, resId: Int = R.drawable.ui_ic_suspension_setting,
                                               imageViewSize: Float = 56f,//圖標(biāo)大小
                                               bottomMargin: Float = 60f,
                                               rightMargin: Float = 20f,
                                               attributeSet: AttributeSet? = null, defAttrStyle: Int = 0) 
1.gif

文本高亮組件封裝

//第一種加載方式
mTvContent1.text = TextUtils.clipTextColor(mTvContent1.text.toString(), ContextCompat.getColor(this, R.color.colorAccent), mTvContent1.text.indexOf("加"), mTvContent1.length())
//第二種加載方式
TextUtils.Builder(mTvContent2)
        //第一個(gè)高亮的文本區(qū)域
        .setClipText(ContextCompat.getColor(this, R.color.colorAccent), mTvContent2.text.indexOf("加"), 7)
        .setOnClickableSpan(object : OnClickableSpan {
            override fun onClickableSpan(view: View) {
                ToastUtils.showShort("點(diǎn)擊了“加載”")
            }

        })
        .setStyleSpan(Typeface.BOLD_ITALIC)
        .showUnderLine(true)
        //第二個(gè)高亮文本區(qū)域
        .setClipText(ContextCompat.getColor(this, R.color.colorAccent), mTvContent2.text.indexOf("點(diǎn)"), mTvContent2.length())
        .setAbsoluteTextSize(28)
        .setBackgroundColor(ContextCompat.getColor(this,R.color.color_CDCECE))
         .setOnClickableSpan(object : OnClickableSpan {
            override fun onClickableSpan(view: View) {
                ToastUtils.showShort("點(diǎn)擊了“點(diǎn)擊”")
            }
        })
        .create()
動畫.gif
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市窜骄,隨后出現(xiàn)的幾起案子锦募,更是在濱河造成了極大的恐慌,老刑警劉巖邻遏,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件糠亩,死亡現(xiàn)場離奇詭異虐骑,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)赎线,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門廷没,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人垂寥,你說我怎么就攤上這事。” “怎么了俊柔?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵睛蛛,是天一觀的道長。 經(jīng)常有香客問我文判,道長过椎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任戏仓,我火速辦了婚禮疚宇,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘赏殃。我一直安慰自己灰嫉,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布嗓奢。 她就那樣靜靜地躺著讼撒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪股耽。 梳的紋絲不亂的頭發(fā)上根盒,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機(jī)與錄音物蝙,去河邊找鬼炎滞。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诬乞,可吹牛的內(nèi)容都是我干的册赛。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼震嫉,長吁一口氣:“原來是場噩夢啊……” “哼森瘪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起票堵,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扼睬,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后悴势,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體窗宇,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡措伐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了军俊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片侥加。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖粪躬,靈堂內(nèi)的尸體忽然破棺而出担败,到底是詐尸還是另有隱情,我是刑警寧澤短蜕,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布氢架,位于F島的核電站,受9級特大地震影響朋魔,放射性物質(zhì)發(fā)生泄漏岖研。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一警检、第九天 我趴在偏房一處隱蔽的房頂上張望孙援。 院中可真熱鬧,春花似錦扇雕、人聲如沸拓售。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽础淤。三九已至,卻和暖如春哨苛,著一層夾襖步出監(jiān)牢的瞬間鸽凶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工建峭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玻侥,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓亿蒸,卻偏偏與公主長得像凑兰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子边锁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容