自定義View初步理解(一)

1.自定義View簡(jiǎn)介:
可以認(rèn)為繼承自View,系統(tǒng)沒(méi)有的效果,extends View exdents ViewGroup
extends View:

2.onMeasure()
//獲取寬高模式
final int widthModes = MeasureSpec.getMode(widthMeasureSpec);
final int heightModes = MeasureSpec.getMode(heightMeasureSpec);
//獲取寬高的值
final int widthSize = MeasureSpec.getSize(widthMeasureSpec);
final int heightSize = MeasureSpec.getSize(heightMeasureSpec);

MeasureSpec.AT_MOST//在布局中指定了wrap_content
MeasureSpec.EXACTLY//在不居中指定確切的值 100dp match_content fill_content
MeasureSpec.UNSPECIFIED//盡可能的大,很少用到
ScrollView + ListView 顯示不全就是這個(gè)原因 測(cè)試量布局進(jìn)入MeasureSpec.UNSPECIFIED
修改方法:重寫(xiě).onMeasure() 進(jìn)入 MeasureSpec.AT_MOST 然后右移兩位


image.png

3.onDraw


image.png

4.onTouchEvent
責(zé)任鏈模式


image.png

這個(gè)方法響應(yīng)了觸摸屏幕發(fā)生的事件,當(dāng)我們需要和用戶交互的時(shí)候需要
MotionEvent.ACTION_DOWN://按下
MotionEvent.ACTION_MOVE://移動(dòng)
MotionEvent.ACTION_UP://松開(kāi)

5.自定義屬性
自定義屬性就是用于配置
5.1在res下的values 下面attrs.xml 自定義自己屬性


image.png

5.2在布局中使用
聲明命名空間,然后再自定義中使用


image.png

image.png

5.3在自定義中獲取屬性


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容