最近要把Android 原生的View渲染到OpenGL GLSurfaceView中磁餐,起初想到的是截圖的方法缺脉,也就是把View截取成bitmap后,再把Bitmap渲染到OpenGL中;但是明顯這種方法是不可行的晚碾,面對一些高速動態(tài)更新的View糯耍,只有不停的對view 進行截圖才能渲染出原生View的效果扔字。
通過大量的Google終于在國外的網(wǎng)站找到了一個做過類似的先例(鏈接:http://www.felixjones.co.uk/neo%20website/Android_View/)囊嘉。不過經(jīng)過測試該方法只能渲染直接父類為View的view,也就是只能渲染一層View(如progressbar革为,沒不能添加child的view)扭粱,當(dāng)該原生Android View包含很多子view時(也就是根View為FramLayout、或者linearLayout之類)震檩,無法實時的監(jiān)聽到View動態(tài)改變琢蛤,OpenGL中只能不停的渲染該view,才能渲染出原生View的效果抛虏。但是這樣一來不同的渲染會耗費大量的資源虐块,降低應(yīng)用程序的效率。理想中的話嘉蕾,是監(jiān)聽到了該View的內(nèi)容或者其子view 的內(nèi)容發(fā)生了變化(如:View中的字幕發(fā)生滾動)才進行渲染贺奠。
??????? 經(jīng)過接近兩周的努力我終于完美地實現(xiàn)了該效果,既然是站在別人的基礎(chǔ)上得來的成果错忱,那么該方法就應(yīng)當(dāng)被共享儡率,所以產(chǎn)生了此文,不過只支持api 15以上的
GitHub - Android1404/RenderViewToOpenGL
如果覺得對你有用記得start
效果如下: