Android Designing for Performance

21 May 2010

Android官方發布了一篇有關效能改進的文章,
這篇文章裏面講到了幾點有關於效能改進的!
下面列出幾點來說明

A somewhat more radical idea is to slice up multidimensional arrays into parallel single one-dimension arrays
意思是說建立一個多維陣列的效能會比建立多個平行式的一維陣列來的差!

When processing strings, don't hesitate to use specialty methods like String.indexOf(), String.lastIndexOf(), and their cousins. These are typically implemented in C/C++ code that easily runs 10-100x faster than doing the same thing in a Java loop.
意思是說不要猶豫使用indexOf()等等String.method之類!
因為他們都是用C/C++去implement的!他們會比用JAVA迴圈來的快!

If you don't need to access an object's fields, make your method static. It can be called faster, because it doesn't require a virtual method table indirection
意思叫你盡量用static method,這就不多作解釋!懂java的人應該要懂static和non-statc的差別!


最後一點是,避免使用getter/setter,
下列有段code,看出瑕疵的地方嗎?

for (int i = 0; i < this.getCount(); i++)
dumpItems(this.getItem(i));
答案就是別在for迴圈作this.getCount()這種操作!很浪費!!
請先宣告個變數,再放到FOR迴圈裡面




















read more »


Draw 9-patch

20 May 2010

Draw 9-patch是android sdk裡面內建的一支程式

可以讓圖變長、變寬也不會失真!!

這支程式在你的SDK目錄的tools底下!

檔名為:draw9patch.bat


打開軟體以後

可以直接把你.PNG類型的檔案直接拖曳至軟體中!

也可以點選File->Open 9-patch... 來開啟


打開圖片以後!


底下會有兩條scroll bar!


如圖:












Zoom:只是單純讓你放大,比較好操作,不會對最終檔案有甚麼差異!


Patch scale:只是讓你看圖片最終變長、變寬以後的樣子。在你儲存前都可以修改!




接著就要對圖片作操作了!


圖片的周圍會圍繞著1px寬度的空白!


是為了讓你點選要重複的區域!


通常你只要點左邊和上面就好!


只要點1px即可!


如圖:
























接著可以拉下面Patch scale這條看看效果如何!!!


如果滿意!就點選File->Save XXX搂!


儲存的檔名會是 你取的檔名.9.png




.9是他的規則!不用修改!


這樣你的圖片就不會失真了!!!







read more »


android 移除狀態列、移除標題

19 May 2010

一般android程式預設會有系統的狀態列和app的標題列。

如下圖。























如果想要移除狀態列就

輸入下段code



this.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WndowManager.LayoutParams.FLAG_FULLSCREEN
);


呈現結果如下圖
























如果要移除標題列就輸入下段CODE



requestWindowFeature(Window.FEATURE_NO_TITLE);  



結果如下圖


























如果想要同時消失狀態列和標題,那就兩段CODE都填入就OK啦!













read more »