自定義控制項
自定義控制項基本步驟
繼承view 重寫
三個構造
public class myview extends view
publicmyview(context context, attributeset attrs)
publicmyview(context context)
這三個構造是自動匹配呼叫
重寫ondraw
ondraw
方法給我們提過
canvas
(畫布)
我們自己要生成畫筆(
paint
)以及給畫筆設定顏色和字型大小
@override
protected
void
ondraw(canvas canvas)
在布局xml裡面我們只需要
全類名使用即可
<
com.cym.custom.myview
// 全類名
使用即可
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
如果想要給自定義控制項新增自定義屬性
<
linearlayout
xmlns:android=""
xmlns:myview=""
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android
<
com.cym.custom.myview
android:layout_width="fill_parent"
android:layout_height="wrap_content"
myview:color="@color/white"
myview:fontsize="@dimen/fontsize"
/>
我們就要為自定義屬性寫xml
attrs.xml:
xmlversion="1.0"encoding="utf-8"?>
<
resources
>
<
declare-styleable
name="myview">
標識名<
attr
name="color"format="color"/>
制定名字及屬性格式
<
attr
name="fontsize"format="dimension"/>
制定名字及屬性格式
declare-styleable
>
resources
>
選擇屬性項
colors.xml
xmlversion="1.0"encoding="utf-8"?>
<
resources
>
<
color
name="white">#ffffffff
制定相應屬性內容
resources
>
domenson.xml
xmlversion="1.0"encoding="utf-8"?>
<
resources
>
<
dimen
name="fontsize">100dp
制定相應屬性內容
resources
>
獲得自定義屬性內容
public
myview(context context, attributeset attrs)
自定義音量條
public
class
myview
extends
view
public
myview(context context, attributeset attrs)
public
myview(context context)
@override
protected
void
ondraw(canvas canvas)
for(
inti =reverseindex;i!=
musicmax
;i++)
} // 定義乙個初始化方法
private
void
init()
// 對要繪製的控制項進行測量
呼叫兩次
@override
protected
void
onmeasure(
intwidthmeasurespec,
intheightmeasurespec)
//當布局被載入完成的時候,會呼叫乙個方法
@override
protected
void
onfinishinflate()
// 觸控事件
@override
public
boolean
ontouchevent(motioneventevent)
return
true;
} }
課後問題
為什麼要自定義控制項?
因為系統提供的控制項無法滿足我們的需求,所以要使用自定義控制項.
自定義控制項的步驟
重寫三個構造,重寫ondraw(繪製)方法,如果要自定義屬性的話,要寫配置屬性xml,屬性選擇項xml,使用時在布局檔案裡面宣告引用,才可以使用自定義屬性。
如果業務稍微複雜還重寫到
onfinishinflate(布局載入後呼叫該方法)
onmeasure(對繪製控制項進行測量)
以及頻繁修改檢視則會用到
invalidate
()控制項重繪
從零開始學android
相對布局管理器指的是參考某一其他控制項進行擺放,可以通過控制,將元件擺放在乙個指定參考元件的上 下 左 右等位置,這些可以直接通過各個元件提供的屬性完成。下面介紹一下各個方法的基本使用 no.屬性名稱 對應的規則常量 描述1 android layout below relativelayout.b...
20 從零開始學習C語言 補碼
所有整數在計算機中都是以補碼來儲存的,首位0,表示正數,首位1,表示負數 什麼是補碼?1 正整數的補碼是基本身的二進位制數 2 負整數的補碼是 先求該負整數相對應的正整數的二進位制 然後全部取反,末尾加1,不夠位數時,左邊全部補1。不哆位數的解釋 如要儲存int型的整數,一般是4個位元組大小,那32...
從零開始學Android(一)
如果是國內環境,需要配置相關的國內映象和倉庫。有條件的話還是選擇vpn的方式進行更新,國內的倉庫和映象有些檔案缺失,導致相關的依賴檔案缺乏,從而導致工程編譯無法通過。gradle倉庫一般使用阿里雲的的倉庫進行代替,但是阿里雲的倉庫缺失一些檔案,所以一些工程可能無法進行編譯。具體的配置方法如下 首先,...