下導航欄3 封裝例項講解

2022-06-24 12:51:09 字數 2063 閱讀 4642

效果圖:

自定義的方法看上兩篇前,

我們需要的屬性,但是系統又沒有提供的,或者系統沒能夠滿足我們的就可以自己去新增,新增的方法看上兩篇前的,

組不同的**來進行交換實現的,就是正常時的normalicon,和選中時的selectedicon,同樣文字(title)的顏色的變化也有兩種,

misselected是記錄按鈕是否被點選時的狀態,

<?xml version="1.0" encoding="utf-8"?>

2:解析屬性以得到自定義的屬性,在解析屬性之後就可以將屬性取出應用了,我們需要xml的配置,

也需要**的配置,所以在兩個構造方法中都需要初始化:方法看上兩篇

constructor(context: context):super(context)

constructor(context: context,attributeset: attributeset?):super(context,attributeset)

用到的方法有:

(1):轉換畫素:

//獲取手機的畫素

fun dptopx(dp:int):int = dp*(context.resources.displaymetrics.density).toint()

(2):更新與文字 ,我們需要在多個地方更新,所以將其抽出

private fun updateui()else

}

4:改變按鈕的點選狀態,當我們點選乙個按鈕時,若該按鈕是點選狀態則不響應,若該按鈕沒有被點選時

則將該按鈕設定為被點選狀態,並且更新與文字,對於乙個按鈕而言只需要這樣,點選事件可以在點下去時

實現,也可以在手離開螢幕那一刻時實現,這是在點下去時實現的,並且這個事件已經被消費了,所以返回true

override fun ontouchevent(event: motionevent?): boolean }}

//事件已經被消費了就返回true

return true

}

只要狀態改變,那麼就更新資料,因此可以重寫misselected的set方法,

//記錄按鈕被點選的狀態

var misselected:boolean = false

set(value)

乙個按鈕實現,接下來就實現多個按鈕,多個按鈕也可以通過自定義linearlayout來實現,乙個按鈕裡面初始化的是和文字,

多個按鈕的實現,就是將多個按鈕放在乙個容器裡面,初始化按鈕即可

(1)xml裡面的應用:

data class bottom_bar_model (

var normaliconid:int,

var selectediconid:int,

var title:string,

var misselected:boolean

)b:將通過模型的傳輸進來的資料給到每乙個按鈕

//更新每乙個檢視

private fun initbottom_bar()

在外部呼叫時就只需要將資料給模型就好了

myviewgroup.model = arrayof(

bottom_bar_model(

r.drawable.home,

r.drawable.home_selected,

"主頁",

true

),bottom_bar_model(

r.drawable.home,

r.drawable.home_selected,

"主頁",

false

),bottom_bar_model(

r.drawable.home,

r.drawable.home_selected,

"主頁",

false))

github連線:

物件導向3(封裝)

概念 隱藏物件的內部資訊,給外部提供一些訪問內部的介面。作用 提高 復用性,提高 安全性,提高 易用性。實現步驟 隱藏內部資訊,使用private關鍵字修飾屬性。private 是關鍵字,表示私有的只能修飾屬性和方法,修飾成員只能被類訪問。提供的訪問介面 方法 getter setter方法 返回值...

C 學習筆記(3) 封裝

封裝是c 物件導向三大特性之一 封裝的意義 1 封裝的意義 2 類在設計時,可以把屬性和行為放在不同的許可權下,加以控制。在c 中,共有三種許可權 公共許可權 public 類內可以訪問 類外可以訪問 保護許可權 protected 類內可以訪問 類外不可以訪問 私有許可權 private 類內可以...

javaScript 3 封裝自己的scroll

封裝自己的scrolltop scrollleft 第一步 判斷瀏覽器是否支援 第二步 var json 不用宣告變數,直接return function scroll 不支援的 檢測是不是怪異模式的瀏覽器 沒有宣告頭的 判斷是否宣告dtd 1.css1compat已經宣告 css標準模式 2.ba...