整理安卓小知識

2022-05-02 23:15:14 字數 1329 閱讀 8305

一、一般把ui 布局檔案放在layout資料夾下,如果要支援橫屏,就會取同名的layout放在layout-land資料夾下。

-res/layout-land 橫屏  -res/layout-port 豎屏  -res/layout 預設

還有layout-finger, layout-land-finger, finger使用在對手指觸控支援很好的螢幕(finger-friendly touchscree)。

二、硬體加速使用gpu進行view上的繪製操作

你可以在以下級別上分別控制硬加速:

activity級

如果你的應用在全域性啟用硬加速時行為不正確,你可以對個別activities單獨啟用硬加速.欲在actvity級別啟用或禁止硬加速,你可以對元素使用android:hardwareaccelerated屬性.下面的   例子在整個應用中啟用了硬加速但對乙個activity禁止了硬加速:

window級

如果你需要更高顆粒度的控制,你可以使用以下**為乙個window啟用硬加速:

getwindow().setflags(

windowmanager.layoutparams.flag_hardware_accelerated,

windowmanager.layoutparams.flag_hardware_accelerated);

view級

你可以在執行時使用以下**禁止個別的view的硬加速:

myview.setlayertype(view.layer_type_software,null);

注:當前你不能在view級別啟用硬加速.view層有除禁止硬加速之外的其它功能.

判定乙個view是否能被硬加速

有時乙個應用了解是否啟用了硬體速是很有用的,對那些自定義view之類的東西尤其重要.在你的應用做了一些不被最新的管線所支援的自定義繪製時這更加重要.

有兩種方法可以檢查應用是否被硬加速:

view.ishardwareaccelerated():如果view附加到乙個硬加速的window上就返回true.

canvas.ishardwareaccelerated():如果canvas被硬加速了就返回true.

如果你必須在你的繪製**中做這個,應使用canvas.ishardwareaccelerated()而不是view.ishardwareaccelerated().當乙個view附加到乙個硬加速的window上,它仍可以使用非硬體速的       canvas進行繪製操作.比如當為了快取記憶體而把乙個view畫到乙個bitmap中.

三、android:largeheap設定launcher執行時最小堆記憶體,

避免記憶體out of memory錯誤的出現。

安卓小知識

在這邊文章裡面總結下安卓開發經常遇到的一些小知識,有的是借鑑其他人的部落格,有的是自己工作中遇到的,還有可能是面試問道的 1 在乙個安卓專案中如何統一使用版本庫 部落格借鑑 我第乙個做的專案裡面就需要將版本統一化,這樣比較方便各個模組的統一使用,也便於修改 externalnativebuild 放...

安卓知識體系

應用開發 系統核心機制 基本知識點 初級 四大元件 如何布局 自定義view 動畫等深入知識點 中級 aidl binder 多程序事件分發 view系列 訊息佇列 動畫細節 效能優化 設計模式等 設計模式和架構 基本知識點的細節 高階 activity啟動模式和標記位 asynctask的版本演變...

Android多執行緒篇(下) 安卓基礎知識整理

在上篇我總結了關於多執行緒使用的一些基本知識,看完應該可以對非同步訊息處理有一定的了解並且可以簡單地使用了。不過android還提供了另外一些好用的工具 asynctask。儘管對非同步訊息處理不怎麼熟悉,也可以十分簡單地通過使用asynctask來從子執行緒切換到主線程。當然了asynctask背...