效果圖:
自定義的方法看上兩篇前,
我們需要的屬性,但是系統又沒有提供的,或者系統沒能夠滿足我們的就可以自己去新增,新增的方法看上兩篇前的,
組不同的**來進行交換實現的,就是正常時的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):轉換畫素:
//獲取手機的畫素4:改變按鈕的點選狀態,當我們點選乙個按鈕時,若該按鈕是點選狀態則不響應,若該按鈕沒有被點選時fun dptopx(dp:int):int = dp*(context.resources.displaymetrics.density).toint()
(2):更新與文字 ,我們需要在多個地方更新,所以將其抽出
private fun updateui()else
}
則將該按鈕設定為被點選狀態,並且更新與文字,對於乙個按鈕而言只需要這樣,點選事件可以在點下去時
實現,也可以在手離開螢幕那一刻時實現,這是在點下去時實現的,並且這個事件已經被消費了,所以返回true
override fun ontouchevent(event: motionevent?): boolean }}只要狀態改變,那麼就更新資料,因此可以重寫misselected的set方法,//事件已經被消費了就返回true
return true
}
//記錄按鈕被點選的狀態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...