編輯:Android開發實例
一、設置OpenGL ES視圖
設置OpenGL視圖並不難,Android上也較簡單。我們一般只需要2個步驟。
GLSurfaceView
我們要為GLSurfaceView提供一個專門用於渲染的接口
public void setRenderer(GLSurfaceView.Renderer renderer)
GLSurfaceView.Renderer
GLSurfaceView.Renderer是一個通用渲染接口。我們必須實現下面的三個抽象方法:
// 畫面創建
public void onSurfaceCreated(GL10 gl, EGLConfig config)
// 畫面繪制
public void onDrawFrame(GL10 gl)
// 畫面改變
public void onSurfaceChanged(GL10 gl, int width, int height)
onSurfaceCreated
在這裡我們主要進行一些初始化工作,比如對透視進行修正、設置清屏所用顏色等。
onDrawFrame
繪制當前畫面
onSurfaceChanged
當設備水平或者垂直變化時調用此方法,設置新的顯示比例
案例代碼:
- public class OpenGLDemo extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- GLSurfaceView view = new GLSurfaceView(this);
- view.setRenderer(new OpenGLRenderer());
- setContentView(view);
- }
- }
實現renderer需要更多的設置
- public void onSurfaceCreated(GL10 gl, EGLConfig config) {
- // 黑色背景
- gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
- // 啟用陰影平滑(不是必須的)
- gl.glShadeModel(GL10.GL_SMOOTH);
- // 設置深度緩存
- gl.glClearDepthf(1.0f);
- // 啟用深度測試
- gl.glEnable(GL10.GL_DEPTH_TEST);
- // 所作深度測試的類型
- gl.glDepthFunc(GL10.GL_LEQUAL);
- // 對透視進行修正
- gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
- }
- public void onDrawFrame(GL10 gl) {
- // 清除屏幕和深度緩存
- gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
- }
- public void onSurfaceChanged(GL10 gl, int width, int height) {
- // 設置畫面的大小
- gl.glViewport(0, 0, width, height);
- // 設置投影矩陣
- gl.glMatrixMode(GL10.GL_PROJECTION);
- // 重置投影矩陣
- gl.glLoadIdentity();
- // 設置畫面比例
- GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,100.0f);
- // 選擇模型觀察矩陣
- gl.glMatrixMode(GL10.GL_MODELVIEW);
- // 重置模型觀察矩陣
- gl.glLoadIdentity();
- }
- }
只要加入這段代碼到OpenGLDemo class裡就可實現全屏
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
設置完視圖後,即可編譯運行,可以看到一個“漂亮”的黑屏 = =!
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
1.黑白效果 代碼如下:/** * 將彩色圖轉換為黑白圖 * &n
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
記得在2013年12月的時候,有系列文章是介紹怎麼開發一個智能手表的App,讓用戶可以在足球比賽中記錄停表時間。隨著Android Wear的問世,在可穿戴設備中