<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Surface&Canvas Canvas為在畫布的意思。Android上層的作圖幾乎都通過Canvas實例來完成,其實Canvas更多是一種接口的包裝。drawPaints ,drawPoints,drawRect,drawBitmap ... [![image](https://box.kancloud.cn/2016-05-05_572b1a2cba92c.gif "image") ](http://hi.csdn.net/attachment/201006/14/0_1276524262qcXC.gif) ### 1 Canvas與Surface之間本質關系 對于本節,我們不去研究Skia圖形引擎本身,我們需要了解的我們的所做的圖形到底放置到了那個地方,并且這個Canvas如何與Surface連接在一起的。 Canvas(Java)在C++Native層有一個Native Canvas的C++對象所對應。 lockCanvas()@java ?????Surface_lockCanvas@android_view_Surface.cpp ???? SurfaceControl->new Surface(control) @Surface.cpp ???? Surface: lock操作: [](http://hi.csdn.net/attachment/201006/14/0_1276524263FdtA.gif)[![image](https://box.kancloud.cn/2016-05-05_572b1a2ccb054.gif "image")](http://hi.csdn.net/attachment/201006/14/0_1276524264rrrr.gif) GraphicBuffer :lock getBufferMapper().lock GraphicBufferMapper ::lock mAllocMod->lockgralloc_module_t::lock 通過SurfaceLock可取得Surface(mLockedBuffe)所對應的圖形緩沖區地址。 (1) 建立與SkCanvas連接的位圖設備,而該位圖使用上面取得的圖形緩沖區地址做自己的位圖內存。 (2) 設置SkCanvas的作圖目標設備為該位圖。 通過該過程就建立起了SurfaceControl與Canvas之間的聯系。 [](http://hi.csdn.net/attachment/201006/14/0_1276524266rhNg.gif)[![image](https://box.kancloud.cn/2016-05-05_572b1a2cdc00c.gif "image")](http://hi.csdn.net/attachment/201006/14/0_1276524267jPRF.gif) ### 2? View:OnDraw的本源 不是使用OpenGL繪制時,Android在View屬性發生變化,新建View時,或者Z-order發生變化時,需要對系統屏幕上的View重新繪制,此時我們的View會執行OnDraw(canvas),這個根源在哪里呢? ~~~ ViewRoot.Java performTraversals(..) … draw() canvas = surface.lockCanvas(dirty); … mView.draw(canvas); draw(cavas)@view.java background.draw(canvas); onDraw(cavas) dispatchDraw(cavas) onDrawScrolbars(cavas) surface.unlockCanvasAndPost(canvas); ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看