ãsurfaceViewåViewææ¬è´¨çåºå«å¨äºï¼
ããsurfaceViewæ¯å¨ä¸ä¸ªæ°èµ·çåç¬çº¿ç¨ä¸å¯ä»¥éæ°ç»å¶ç»é¢ï¼èViewå¿
é¡»å¨UIç主线ç¨ä¸æ´æ°ç»é¢ãé£ä¹å¨UIç主线ç¨ä¸æ´æ°ç»é¢
å¯è½ä¼å¼åé®é¢ï¼æ¯å¦ä½ æ´æ°ç»é¢çæ¶é´è¿é¿ï¼é£ä¹ä½ ç主UI线ç¨ä¼è¢«ä½ æ£å¨ç»çå½æ°é»å¡ãé£ä¹å°æ æ³ååºæé®ï¼è§¦å±çæ¶æ¯ãå½ä½¿ç¨surfaceView
ç±äºæ¯å¨æ°ç线ç¨ä¸æ´æ°ç»é¢æ以ä¸ä¼é»å¡ä½ çUI主线ç¨ãä½è¿ä¹å¸¦æ¥äºå¦å¤ä¸ä¸ªé®é¢ï¼å°±æ¯äºä»¶åæ¥ãæ¯å¦ä½ 触å±äºä¸ä¸ï¼ä½ éè¦surfaceViewä¸
threadå¤çï¼ä¸è¬å°±éè¦æä¸ä¸ªevent queueç设计æ¥ä¿åtouch eventï¼è¿ä¼ç¨ç¨å¤æä¸ç¹ï¼å 为æ¶åå°çº¿ç¨åæ¥ã
ããæ以åºäºä»¥ä¸ï¼æ ¹æ®æ¸¸æç¹ç¹ï¼ä¸è¬åæ两类ã
ãã1 被å¨æ´æ°ç»é¢çãæ¯å¦æ£ç±»ï¼è¿ç§ç¨view就好äºãå 为ç»é¢çæ´æ°æ¯ä¾èµäº onTouch æ¥æ´æ°ï¼å¯ä»¥ç´æ¥ä½¿ç¨ invalidateã
å 为è¿ç§æ
åµä¸ï¼è¿ä¸æ¬¡Touchåä¸ä¸æ¬¡çTouchéè¦çæ¶é´æ¯è¾é¿äºï¼ä¸ä¼äº§çå½±åã
ãã2 主å¨æ´æ°ãæ¯å¦ä¸ä¸ªäººå¨ä¸ç´è·å¨ãè¿å°±éè¦ä¸ä¸ªåç¬çthreadä¸åçéç»äººçç¶æï¼é¿å
é»å¡main UI
threadãæ以æ¾ç¶viewä¸åéï¼éè¦surfaceViewæ¥æ§å¶ã
SurfaceViewç®ä»
ããå¨ä¸è¬çæ
åµä¸ï¼
åºç¨ç¨åºçViewé½æ¯å¨ç¸åçGUI线ç¨ä¸ç»å¶çãè¿ä¸ªä¸»åºç¨ç¨åºçº¿ç¨åæ¶ä¹ç¨æ¥å¤çææçç¨æ·äº¤äº(ä¾å¦ï¼æé®åå»æè
ææ¬è¾å
¥)ã
ããå¨ç¬¬8ç« ä¸ï¼å·²ç»å¦ä¹ äºå¦ä½æ容æé»å¡çå¤ç移å¨å°åå°çº¿ç¨ä¸ãéæ¾çæ¯ï¼å¯¹äºä¸ä¸ªViewçonDrawæ¹æ³ï¼ä¸è½è¿æ ·åï¼å 为ä»åå°çº¿ç¨ä¿®æ¹ä¸ä¸ªGUIå
ç´ ä¼è¢«æ¾å¼å°ç¦æ¢çã
ããå½éè¦å¿«éå°æ´æ°ViewçUIï¼æè
å½æ¸²æ代ç é»å¡GUI线ç¨çæ¶é´è¿é¿çæ¶åï¼SurfaceViewå°±æ¯è§£å³ä¸è¿°é®é¢çæä½³éæ©ã
SurfaceViewå°è£
äºä¸ä¸ªSurface对象ï¼èä¸æ¯Canvasãè¿ä¸ç¹å¾éè¦ï¼å 为Surfaceå¯ä»¥ä½¿ç¨åå°çº¿ç¨ç»å¶ã对äºé£äºèµæºææç
æä½ï¼æè
é£äºè¦æ±å¿«éæ´æ°æè
é«é
帧ççå°æ¹ï¼ä¾å¦ï¼ä½¿ç¨3Då¾å½¢ï¼å建游æï¼æè
å®æ¶é¢è§æå头ï¼è¿ä¸ç¹ç¹å«æç¨ã
ããç¬ç«äºGUI线ç¨è¿è¡ç»å¾ç代价æ¯é¢å¤çå
åæ¶èï¼æ以ï¼è½ç¶å®æ¯å建å®å¶çViewçæææ¹å¼--ææ¶çè³æ¯å¿
é¡»çï¼ä½æ¯ä½¿ç¨Surface
Viewçæ¶åä»ç¶è¦ä¿æè°¨æ
ã
1.
ä½æ¶åºè¯¥ä½¿ç¨SurfaceViewï¼
ããSurfaceView使ç¨çæ¹å¼ä¸ä»»ä½Viewææ´¾ççç±»é½æ¯å®å
¨ç¸åçãå¯ä»¥åå
¶ä»Viewé£æ ·åºç¨å¨ç»ï¼å¹¶æå®ä»¬æ¾å°å¸å±ä¸ã
ããSurfaceViewå°è£
çSurfaceæ¯æ使ç¨æ¬ç« åé¢ææè¿°çæææ åCanvasæ¹æ³è¿è¡ç»å¾ï¼åæ¶ä¹æ¯æå®å
¨çOpenGL
ESåºã
ãã使ç¨OpenGLï¼ä½ å¯ä»¥åSurfaceä¸ç»å¶ä»»ä½æ¯æç2Dæè
3D对象ï¼ä¸å¨2Dç»å¸ä¸æ¨¡æç¸åçææç¸æ¯ï¼è¿ç§æ¹æ³å¯ä»¥ä¾é 硬件å é(å¯ç¨çæ¶å)æ¥æ大å°æé«æ§è½ã
对äºæ¾ç¤ºå¨æç3Då¾åæ¥è¯´ï¼ä¾å¦ï¼é£äºä½¿ç¨Google
Earthåè½çåºç¨ç¨åºï¼æè
é£äºæä¾
æ²æµ¸ä½éªç交äºå¼æ¸¸æï¼SurfaceViewç¹å«æç¨ãå®è¿æ¯å®æ¶æ¾ç¤ºæå头é¢è§çæä½³éæ©ã
2.
å建ä¸ä¸ªæ°çSurfaceViewæ§ä»¶
ããè¦å建ä¸ä¸ªæ°çSurfaceViewï¼éè¦å建ä¸ä¸ªæ°çæ©å±äºSurfaceViewçç±»ï¼å¹¶å®ç°SurfaceHolder.Callbackã
ããSurfaceHolderåè°å¯ä»¥å¨åºå±çSurface被å建åéæ¯çæ¶åéç¥Viewï¼å¹¶ä¼ éç»å®å¯¹SurfaceHolder对象çå¼ç¨ï¼å
¶ä¸å
å«äºå½åææçSurfaceã
ããä¸ä¸ªå
¸åçSurface
View设计模åå
æ¬ä¸ä¸ªç±Threadææ´¾ççç±»ï¼å®å¯ä»¥æ¥æ¶å¯¹å½åçSurfaceHolderçå¼ç¨ï¼å¹¶ç¬ç«å°æ´æ°å®ã