Android控件架構(gòu)和自定義控件
Android界面的架構(gòu)圖如下:
每個Activity都包含一個Window對象宅荤。DecorView作為窗口的頂層視圖。
View的測量和繪制
MeasureSpec類用來測量view浸策。
三種測量模式:
-
EXACTLY
精確模式冯键,我們將控件的layout_width或者layout_height指定為具體數(shù)值時,使用這種模式庸汗。 -
AT_MOST
最大值模式惫确,控件的layout_width或者layout_height指定為wrap_content時,控件大小一般隨著內(nèi)容或者子控件變化而變化夫晌。此時控件尺寸只要不超過父控件允許的最大值即可雕薪。 -
UNSPECIFIED
不指定大小的測量模式,view想要多大就多大晓淀,通常情況下在自定義view時才會用到。
View類默認onMeasure()方法只支持EXACTLY 模式盏档。
Android事件攔截機制
ViewGroup類的方法:dispatchTouchEvent()凶掰、onInterceptTouchEvent()、onTouchEvent()
View類的方法:dispatchTouchEvent()、onTouchEvent()
ListView的使用技巧
- setEmptyView
調(diào)用這個方法懦窘,可以在無數(shù)據(jù)時顯示View前翎,有數(shù)據(jù)時不會顯示這個View - 重寫overScrollBy方法,實現(xiàn)阻尼效果
@Override
protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY,
int scrollRangeX, int scrollRangeY,
int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) {
return super.overScrollBy(deltaX, deltaY, scrollX, scrollY,
scrollRangeX, scrollRangeY, maxOverScrollX, 500, isTouchEvent);
}
Android Scroll分析
實現(xiàn)滑動的七種方法
- layout
在自定義View中監(jiān)聽onTouchEvent方法計算位置偏移量畅涂,然后調(diào)用layout方法 - offsetLeftAndRight港华、offsetTopAndBottom
在自定義View中監(jiān)聽onTouchEvent方法計算位置偏移量,然后調(diào)用offsetLeftAndRight午衰、offsetTopAndBottom方法 - LayoutParams
動態(tài)改變LayoutParams - scrollTo立宜、scrollBy
View中調(diào)用這兩個方法,移動的是View的內(nèi)容臊岸;ViewGroup調(diào)用這兩個方法橙数,移動的是它的字View - Scroller
Scroller用來實現(xiàn)平滑移動。步驟為:構(gòu)造Scroller實例帅戒;重寫View的computerScroll方法灯帮;調(diào)用Scroller的startScroll方法。
@Override
public void computeScroll() {
super.computeScroll();
if(mScroller.computeScrollOffset()){
((View)getParent()).scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
invalidate();
}
}
- 屬性動畫
- ViewDragHelper
ViewDragHelper用來解決滑動逻住,使用步驟為:構(gòu)造ViewDragHelper實例钟哥;重寫View的onInterceptTouchEvent、onTouchEvent方法瞎访,將事件交由ViewDragHelper處理瞪醋;重寫View的computerScroll方法;處理ViewDragHelper的回調(diào)接口
Android動畫機制與使用技巧
- 屬性動畫
當屬性動畫所作用的屬性沒有g(shù)et装诡、set方法時银受,可以通過定義一個包裝類來間接實現(xiàn)get、set方法鸦采;或者通過ValueAnimator來實現(xiàn)宾巍。 - SVG矢量動畫
與Bitmap相比,SVG具有放大不失真渔伯、無需為不同的分辨率提供多套圖標等優(yōu)點顶霞。
Activity安全機制
可以從下面幾個方面加強APP的安全:
- 代碼安全機制------混淆
- APP接入權(quán)限控制------AndroidMainifest.xml文件權(quán)限聲明、權(quán)限檢查機制
- APP簽名機制------數(shù)字證書
- Linux內(nèi)核安全機制------UID锣吼、訪問權(quán)限控制
- Android虛擬機沙箱機制------沙箱隔離