Android布局優化
1.include減少多余通用布局,實現具體點擊可以抽成通用的!
<include
android:layout_width="fill_parent"
android:layout_height="@dimen/comm_title_height"
layout="@layout/titlebar_download" />
</span>
3.<merge>標簽
4、減少不必要的infalte
(1) 對于inflate的布局可以直接緩存,用全部變量代替局部變量,避免下次需再次inflate
如上面ViewStub示例中的
if (networkErrorView != null) {
networkErrorView.setVisibility(View.VISIBLE);
return;
}
(2) ListView提供了item緩存,adapter getView的標準寫法,如下:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = inflater.inflate(R.layout.list_item, null);
holder = new ViewHolder();
……
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
}
private static class ViewHolder {
ImageView appIcon;
TextView appName;
TextView appInfo;
}
4、其他點
(1) 用SurfaceView或TextureView代替普通View
SurfaceView或TextureView可以通過將繪圖操作移動到另一個單獨線程上提高性能。
普通View的繪制過程都是在主線程(UI線程)中完成,如果某些繪圖操作影響性能就不好優化了,這時我們可以考慮使用SurfaceView和TextureView,他們的繪圖操作發生在UI線程之外的另一個線程上。
因為SurfaceView在常規視圖系統之外,所以無法像常規試圖一樣移動、縮放或旋轉一個SurfaceView。TextureView是Android4.0引入的,除了與SurfaceView一樣在單獨線程繪制外,還可以像常規視圖一樣被改變。
(2) 使用RenderJavascript
RenderScript是Adnroid3.0引進的用來在Android上寫高性能代碼的一種語言,語法給予C語言的C99標準,他的結構是獨立的,所以不需要為不同的CPU或者GPU定制代碼代碼。
(3) 使用OpenGL繪圖
Android支持使用OpenGL API的高性能繪圖,這是Android可用的最高級的繪圖機制,在游戲類對性能要求較高的應用中得到廣泛使用。
Android 4.3最大的改變,就是支持OpenGL ES 3.0。相比2.0,3.0有更多的緩沖區對象、增加了新的著色語言、增加多紋理支持等,將為Android游戲帶來更出色的視覺體驗。
(4) 盡量為所有分辨率創建資源
減少不必要的硬件縮放,這會降低UI的繪制速度,可借助Android asset studio
layoutopt是一個可以提供layout及其層級優化提示的命令行,在sdk16以后已經被lint取代,在Windows->Show View->Other->Android->Lint Warnings查看lint優化提示</span>