PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
AndroidDev
Re: [問題] view.View & view.Surface 關係
作者:
cha122977
(CHA)
2016-01-08 21:13:07
※ 引述《Laleh (Laleh)》之銘言:
: 大家好:
: 最近在查 View 和 Surface 之間差異
: 因為要畫圖,部過網路上資源看得霧煞煞
: 不太懂他們之間的關係跟使用時機
: 有沒有前輩能指教一下~
: 3Q
記然是和View比又提到畫圖,我就當你問的是SurfaceView了
(因為在Android裡還有一個真的叫Surface的class)
SurfaceView基本上就是直接給你一張白紙,你自己拿Canvas在上面畫東西。
另外Android會把他當成獨立圖層來處理(這是最主要的差異)
還有一點是SurfaceView的繪製工作可以跑在non-UI thread.
可以由呼叫SurfaceHolder.lockCanvas()/unlockAndPost()的時機來決定何時繪圖
設計上,View是讓你客製UI原件時繼承用的
雖然也可以畫東西,但那是透過override onDraw(Canvas canvas)來實現
主要是讓你畫這個View的"外觀"用的
而且用onDraw()來畫的話,畫圖也必定是在UI thread上做
畫圖的"時機"也沒辦法自己決定,是完全交給framework決定
大致上,根據你想顯示的內容就可以判斷你要用哪個來畫:
想做一個特殊的按鈕 => 用View
想在畫面上顯示一些三角形或幾何圖形之類的 => 用SurfaceView
至於SurfaceView的獨立圖層有什麼好處呢?
這還牽扯到framebufer composition的問題,這邊就不多說了…
作者:
kobe8112
(小B)
2016-01-10 01:49:00
還有一個主要的區別,你如果不需要高速即時重繪圖案,就用普通的前者即可,否則的話,後者的實際重繪時機是你可以自己掌握的,可以達到流暢的動畫效果,並且不會使主線程阻塞
作者: tac0wu (在BBS中流浪)
2016-01-13 20:10:00
如果是在沒有OGL的case下 硬體加速的一般view不見得比較慢
https://goo.gl/w8BmWD
官方網站的這篇值得反覆閱讀
繼續閱讀
[問題] 關於藍芽連線失敗
joyshe78904
[問題] view.View & view.Surface 關係
Laleh
[問題] 有沒有辦法把jar檔加密傳到Maven
freedom74569
[問題] google play IAP金流的選擇
b99702044
[問題] APP移植到PC上
wu110011
[問題] 有人在Hami apps上架嗎
Newsancai
[問題] 建構子裡面new?
makelovehero
[問題] 請問這廣告版面是哪一家廣告商的
howdye
[問題] Launch Update的方式?
sweet00914
[問題] videoview 的 onTouchEvent
Stormpanda
Links
booklink
Contact Us: admin [ a t ] ucptt.com