<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    通過 getHolder()方法可以得到這個 SurfaceHolder對象

    發布時間:2013-9-17 16:07    發布者:reggae
    關鍵詞: android
    原理(來自Android的SDk文檔):
    訪問SurfaceView的底層圖形是通過SurfaceHolder接口來實現的,通過 getHolder()方法可以得到這個 SurfaceHolder對象。你應該實現surfaceCreated(SurfaceHolder)和 surfaceDestroyed(SurfaceHolder)方法來知道在這個Surface在窗口的顯示和隱藏過程中是什么時候創建和銷毀的。
    SurfaceView可以在多線程中被訪問。
    注 意:一個SurfaceView只在SurfaceHolder.Callback.surfaceCreated() 和 SurfaceHolder.Callback.surfaceDestroyed()調用之間是可用的,其他時間是得不到它的Canvas對象的 (null)。
    我的訪問過程:
    創建一個SurfaceView的子類,實現SurfaceHolder.Callback接口。
    得到這個SurfaceView的SurfaceHolder對象holder。
    holder.addCallback(callback),也就是實現SurfaceHolder.Callback接口的類對象。
    在SurfaceHolder.Callback.surfaceCreated()調用過后holder.lockCanvas()對象就可以得到SurfaceView對象對應的Canvas對象canvas了。
    用canvas對象畫圖。
    畫圖結束后調用holder.unlockCanvasAndPost()就把圖畫在窗口中了。
    SurfaceView可以多線程訪問,在多線程中畫圖。
    1. import android.content.Context;
    2. import android.graphics.Canvas;
    3. import android.graphics.Color;
    4. import android.graphics.Paint;
    5. import android.util.Log;
    6. import android.view.SurfaceHolder;
    7. import android.view.SurfaceView;
    8. public class MySurfaceView extends SurfaceView implements
    9. SurfaceHolder.Callback {
    10. private Context mContext;
    11. private SurfaceHolder mHolder;
    12. public TouchScreenAdjusterSurfaceView(Context context,) {
    13. super(context);
    14. mContext = context;
    15. mHolder = TouchScreenAdjusterSurfaceView.this.getHolder();
    16. mHolder.addCallback(TouchScreenAdjusterSurfaceView.this);
    17. this.setFocusableInTouchMode(true); // to make sure that we can get
    18. // touch events and key events,and
    19. // "setFocusable()" to make sure we
    20. // can get key events
    21. }
    22. @Override
    23. public void surfaceChanged(SurfaceHolder holder, int format, int width,
    24. int height) {
    25. // TODO Auto-generated method stub
    26. }
    27. @Override
    28. public void surfaceCreated(SurfaceHolder holder) {
    29. //now you can get the Canvas and draw something here
    30. }
    31. @Override
    32. public void surfaceDestroyed(SurfaceHolder holder) {
    33. // TODO Auto-generated method stub
    34. }
    35. public void drawMyShape(PointPostion ps) {
    36. mCanvas = mHolder.lockCanvas();
    37. // draw anything you like
    38. mHolder.unlockCanvasAndPost(mCanvas);
    39. }
    40. }
    復制代碼
    希望本文對廣大安卓開發者有所幫助,感謝閱讀本文。更多安卓技術問題歡迎加群探討:314230976,驗證碼:eec,不寫驗證不予通過喲~

    本文地址:http://www.portaltwn.com/thread-121118-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷