1、為什么要用SurfaceView
項目中經(jīng)常會出現(xiàn)多個自定義View,并且可能會多次且頻繁的調(diào)用canvas進行繪制。當優(yōu)化還是無法解決界面繪制時卡頓掉幀現(xiàn)象時,我們可以考慮用SurfaceView來解決。它繼承自View類,但是內(nèi)部實現(xiàn)了雙buffer并且是在一個單獨的線程中進行進行繪制最后再post canvas到UI上。關(guān)于他的內(nèi)部細節(jié)可以參考Android SurfaceView雙緩存機制以及Android SurfaceView 源碼分析及使用
2、如何解決 SurfaceView 閃屏 以及 滑動時產(chǎn)生的黑線問題
2.1 閃屏問題
setBackgroundColor(Color.argb(0x00, 0, 0, 0));
mSurfaceHolder.setFormat(PixelFormat.TRANSPARENT);
//如果無法解決
xml 中 自定義view 設(shè)置 android:background="#fff"
2.2 滑動時上下兩邊產(chǎn)生的黑線問題
android:layout_marginBottom="-xxdp"
android:layout_marginTop="-xxdp"