編輯:關於Android編程
提高UI性能的方法其實有很多在實際的開發中都已經用到了,在此做一下總結。
1.減少主線程的阻塞時間
若一個操作的耗時較長(超過5秒),我們應該將其放入後台線程中執行,只在需要修改UI界面時通知主線程進行修改。Android已經提供了AsyncTask以實現從主線程生成新的異步任務的方法。
2.提高Adapter&AdapterView的效率
(1)重用已生成過的Item View
(2)添加ViewHolder , 避免重復查找需要修改的控件
public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, null); holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } return convertView; } static class ViewHolder { TextView text; ImageView icon; }3.優化布局文件,防止層級嵌套太深,最好不要多於5層
(1)使用觀察布局的工具: Hierarchy Viewer
(2)使用布局優化工具:Layoutopt
4.優化Activity背景圖
首先我們須知道,在Android的Activity中,不止有你使用SetContentView時使用的View,還包含了一些其他的View。
其根View是一個DecorView,你設置的View就被包含在其中,id為content,如下圖所示:
在默認情況下,DecorView就包含了一個默認的背景圖,我們將以此作為出發點。若我們需要在Activity中設置一個全屏的背景圖,不應該添加ImageView或在Layout中再設置背景圖,而應該調用setBackgroundDrawable()去修改DecZ喎?/kf/ware/vc/" target="_blank" class="keylink">vclZpZXe1xLGzvrDNvKGj1Nqyu9Do0qrKudPDsbO+sM28yrGjrM7Sw8fTpr2rsbO+sM28x+W/1Txicj4KKDEptPrC67e9yr2jujwvcD4KPHA+Z2V0V2luZG93KCkuc2V0QmFja2dyb3VuZERyYXdhYmxlKCk8L3A+CjxwPigyKXhtbNDOyr08L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">//創建文件res/values/theme.xml
在 或者 標簽中添加android:theme="@style/Theme.CustomBackground"5.使用ViewStub
ViewStub是一個看不見的,輕量級的View。它沒有尺寸,也不會繪制以及以某種形式參與到布局中來。只有當調用了Inflate之後其中的View才會被實例化,這意味著用ViewStub保留View層次的結構的代價是很低的。
使用方式見以下鏈接:
http://blog.csdn.net/hitlion2008/article/details/6737537
1.引子在了解OkHttp的復用連接池之前,我們首先要了解幾個概念。TCP三次握手通常我們進行HTTP連接網絡的時候我們會進行TCP的三次握手,然後傳輸數據,然後再釋放連
備注:Scale應該比Translate先添加到Set裡面 Interpolator 時間插值類,定義動畫變換的速度。能夠實現alpha/scale/trans
先看效果: 京東商城底部菜單欄 新浪微博底部菜單欄本次學習效果圖:第一,主布局文件(啟動頁main.xml,位於res/layout目錄下)代碼&
前一篇博客分析了Native端向Javascript端通信的全流程,這次來研究下Javascript端向Native端通信的全流程,與前篇恰好構成一個基本完整的通信機制。