Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android全屏繪制

Android全屏繪制

編輯:Android開發實例

 

這個是為實現全屏手寫輸入准備的。

Android平台自身提供了一個底層的顯示接口-FLINGER服務,通過這個接口,我們可以實現創建一個新的顯示區域來繪制想要的顯示內容,並和原有的屏幕輸出混合輸出到屏幕上。

要在普通應用裡使用這個接口,
1、必須指定在AndroidManifest.xml裡指定android.permission.ACCESS_SURFACE_FLINGER權限,添加:
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />

2、用系統KEY來簽名包,在Android.mk裡寫上:
LOCAL_CERTIFICATE := platform

然後就可在應用裡使用FLINGER服務了,實例片段如下:
 

  1. mSurfaceSession = new SurfaceSession(); //連接到FLINGER服務  
  2. try {  
  3.            //創建一個Surface,並在上面繪制  
  4.     mSurface = new Surface(mSurfaceSession,   
  5.             Process.myPid(),   
  6.             Display.DEFAULT_DISPLAY,   
  7.             240, 320,   
  8.             PixelFormat.TRANSPARENT,  
  9.             0);  
  10.        //通過剛創建的Surface裡獲取一個Canvas,通過這個接口來繪制  
  11.     Canvas canvas = mSurface.lockCanvas(null);  
  12.       
  13.     canvas.drawColor(0x0);  
  14.     Paint p = new Paint();  
  15.       
  16.     p.setColor(Color.RED);  
  17.     canvas.drawLine(0, 0, 240, 320, p);  
  18.     canvas.drawLine(240, 0, 0, 320, p);  
  19.     //提交更新,讓新的內容輸出到屏幕  
  20.     mSurface.unlockCanvasAndPost(canvas);  
  21.       
  22.     mSurface.openTransaction();  
  23.       
  24.     //mSurface.setPosition(0, 0);  
  25.     //mSurface.setSize(240, 320);  
  26.        //讓這個Surface顯示到最上層  
  27.     mSurface.setLayer(99999);  
  28.     mSurface.show();  
  29.     mSurface.closeTransaction();  
  30. }   
  31. catch (OutOfResourcesException e)  
  32. {  
  33.     Log.e(TAG, e.toString());  



通過SurfaceSession, 我們可以創建多個Surface, Surface之間的混合是由FLINGER服務直接完成的, 使用者不需要關心, 直接在繪制即可。

如果內核支持多層, 通過打開/dev/fbX來直接寫屏,應該可以實現相同的效果, 不過貌似用官方接口正規一些。

沒圖沒真相,上示例的圖

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved