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