Android UI開發(fā) View自繪控件 分享
很多時候想要設(shè)計漂亮的Android UI,使用Android自帶的控件無法滿足我們的需要就要考慮自繪控件,在Android界面顯示類View,可以通過繼承擴展重寫相關(guān)方法來實現(xiàn)我們的圖形繪制。
首先我們需要了解下View類的底層實現(xiàn),在SDK中我們可以看到View直接繼承于Java的基類Object,實現(xiàn)了圖形繪制和按鍵事件 Drawable.Callback KeyEvent.Callback的相關(guān)方法,我們自繪時主要實現(xiàn)其內(nèi)部的onDraw方法,相關(guān)的界面計算可以重寫onMeasure方法,對于相關(guān)的按鍵可以重載onKeyDown、onKeyUp以及onTouchEvent等,下面android開發(fā)網(wǎng)就以一個實例來表示。
public class cwjView extendsView
{
public cwjView(Context context)
{
this(context,null);
}
public cwjView(Context context,AttributeSet attrs)
{
this(context,attrs,0);
}
public cwjView(Context context,AttributeSet attrs,int defStyle)
{
super(context,attrs,defStyle);
//這里是本類的構(gòu)造,相關(guān)初始化可以在這里添加代碼
}
@Override
protectd void onDraw(Canvas canvas)
{
super(canvas);
//繪圖的關(guān)鍵,可以看到已經(jīng)包含了一個canvas句柄,可以直接通過我們前面講到的Canvas類進(jìn)行相關(guān)的操作,完整的例子,大家可以參考Android SDK中例子Snake貪食蛇游戲的實現(xiàn)。
}
}
有關(guān)View類的更新,我們直接通過調(diào)用invalidate(int l,int r,int r,int b)來更新一個Rect矩形區(qū)域,或更新全部,同時在線程中我們使用需要調(diào)用postInvalidate來更新界面。
相關(guān)文章
Android中關(guān)于Binder常見面試問題小結(jié)
這篇文章主要介紹了Android中關(guān)于Binder幾個面試問題,binder是一種進(jìn)程間通訊的機制,進(jìn)程間通訊需要了解用戶空間和內(nèi)核空間,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-06-06Android中EditText實現(xiàn)不可編輯解決辦法
這篇文章主要介紹了Android中EditText實現(xiàn)不可編輯解決辦法,需要的朋友可以參考下2014-12-12Android實現(xiàn)帶節(jié)點的進(jìn)度條
這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)帶節(jié)點的進(jìn)度條,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03Android框架Volley使用之Post請求實現(xiàn)方法
這篇文章主要介紹了Android框架Volley使用之Post請求實現(xiàn)方法,,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05Google 開發(fā)Android MVP架構(gòu)Demo深入解析
這篇文章主要為大家介紹了Google 開發(fā)Android MVP架構(gòu)Demo深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Android App中使用Pull解析XML格式數(shù)據(jù)的使用示例
這篇文章主要介紹了Android App中使用Pull解析XML格式數(shù)據(jù)的使用示例,Pull是Android中自帶的XML解析器,Java里也是一樣用:D需要的朋友可以參考下2016-04-04