×î½üÓнӴ¥µ½SurfaceView£¬¸÷ÖÖ²»ÊìϤ£¬ÔÚ¿´Íê¸÷·´óÉñµÄBolg°ïÖúÏ£¬³É³¤²»ÉÙ¡£×ö¸öС½á£¬Óë´ó¼Ò¹²Í¬½ø²½
Ò»¡¢ÏÈ˵һÏ£ºViewÀàºÍSurfaceViewÀà
(1.)ViewÀࣺ
µ±ÐèÒª»æÖƸ´ÔÓµÄͼÏñ»òÕß¶Ô³ÌÐòµÄÖ´ÐÐЧÂÊÒªÇó±È½Ï¸ßµÄʱºò£¬View²¢²»ÄÜÂú×ãÐèÇó¡£ViewÊÇWidget¿ò¼ÜϵÄÒ»¸öÖ±½ÓÍÏÀµÄ¿Ø¼þ²úÎï¡£ÀýÈ磺µ±ÐèҪ˫»º³åÀ´ÏÔʾ£¬Ö±½Ó·ÃÎÊ»²¼canvas£¬ÕâЩ ¶¼µ¼ÖÂÁËÎÒÃÇÐèÒª±ÈView¸ü¼ÓÇ¿´óµÄSurfaceView¡£
View£ºÏÔʾÊÓͼ£¬ÄÚÖû²¼£¬ÌṩͼÐλæÖƺ¯Êý£¬´¥ÆÁʱ¼ä¡¢°´¼üʼþº¯ÊýµÈ£¬±ØÐëÔÚUIÖ÷Ïß³ÌÄÚ¸üÐÂ»Ãæ£¬ËٶȽÏÂý¡£
(2.)SurfaceViewÀࣺ(API)
SurfaceView ÊÇViewµÄ¼Ì³ÐÀ࣬Õâ¸öÊÓͼÀïÄÚǶÁËÒ»¸öרÃÅÓÃÓÚ»æÖƵÄSurface¡£¿ÉÒÔ¿ØÖÆÕâ¸öSurfaceµÄ¸ñʽºÍ³ß´ç¡£SurfaceView¿ØÖÆÕâ¸öSurfaceµÄ»æÖÆÎ»Öá£
SurfaceView£º»ùÓÚviewÊÓͼ½øÐÐÍØÕ¹µÄÊÓͼÀ࣬¸üÊʺÏ2DÓÎÏ·µÄ¿ª·¢£»ÊÇviewµÄ×ÓÀ࣬ÀàÉÏʹÓÃË«»º³å»úÖÆ£¬ÔÚеÄÏß³ÌÖиúÐÂ»ÃæËùÒÔнçÃæËٶȱÈview¿ì¡£
SurfaceÊÇ×ÝÉîÅÅÐòµÄ£¬Õâ˵Ã÷Ëü×ÜÔÚ×Ô¼ºËùÔڵĴ°¿ÚµÄºóÃæ¡£SurfaceView ÌṩÁËÒ»¸ö¿É¼ûÇøÓò£¬Ö»ÓÐÔÚÕâ¸ö¿É¼ûÇøÓòÄÚµÄsurface²¿·ÖÄÚÈݲſɼû£¬¿É¼ûÇøÓòÍⲿ²¿·Ö²»¿É ¼û¡£surfaceµÄÅŰæÏÔʾÊܵ½ÊÓͼ²ã¼¶¹ØÏµµÄÓ°Ï죬ËüµÄÐֵܽڵã»áÔÚ¶¥¶ËÏÔʾ¡£ÕâÒâζÕßsurfaceµÄÄÚÈݻᱻËüµÄÐÖµÜÊÓͼÕÚµ²£¬ÕâÒ»ÌØÐÔ¿ÉÒÔÓÃÀ´·ÅÖÃÕÚ¸ÇÎoverlays£©(ÀýÈ磺Îı¾ºÍ°´Å¥µÈ¿Ø¼þ)¡£µ«ÊÇ£¬µ±surfaceÉÏÃæÓÐ͸Ã÷¿Ø¼þʱ£¬ËüµÄÿ´Î±ä»¯¶¼»áÒýÆð¿ò¼ÜÖØÐ¼ÆËãËüºÍ¶¥²ã¿Ø¼þµÄ͸Ã÷Ч¹û£¬Õâ»áÓ°ÏìÐÔÄÜ¡£¿ÉÒÔͨ¹ýSurfaceHolder½Ó¿Ú·ÃÎÊÕâ¸ösurface,getHolder()·½·¨¿ÉÒԵõ½Õâ¸ö½Ó¿Ú¡£
Surfaceview±äµÄ¿É¼ûʱ£¬surface±»´´½¨£¬surfaceViewÒþ²ØÇ°£¬surface±»»ÙÃð¡£ÕâÑù¿ÉÒÔ½ÚÊ¡×ÊÔ´¡£surface´´½¨£ºsurfaceCreated(SurfaceHolder)ºÍsurfaceDestroyed(SurfaceHolder).
SurfaceViewµÄºËÐÄÌṩÁËÁ½¸öỊ̈߳ºUIÏ̺߳ÍäÖȾÏ̡߳£Ó¦¸Ã×¢ÒâµÄÊÇ£º
a.ËùÓеÄSurfaceViewºÍSurfaceHolder.CallbackµÄ·½·¨¶¼Ó¦¸ÃÔÚUIÏß³ÌÀïµ÷Óã¬Ò»°ãÀ´Ëµ¾ÍÊÇÓ¦ÓóÌÐòµÄÖ÷Ï̡߳£äÖȾÏß³ÌËùÒª·ÃÎʵĸ÷ÖÖ±äÁ¿Ó¦¸Ã×öͬ²½´¦Àí¡£
b.ÓÉÓÚsurface¿ÉÄܱ»Ïú»Ù£¬ËüÖ»ÔÚSurfaceHolder.Callback.surfaceCreated()ºÍSurfaceHoledr.Callback.surfaceDestroyed()Ö®¼äÓÐЧ£¬ËùÒÔҪȷ±£äÖȾÏ̷߳ÃÎʵÄÊǺϷ¨ÓÐЧµØsurface.
¶þ¡¢SurfaceViewÀà ºÍViewÀàµÄÇø±ð
SurfaceView ºÍViewµÄ×î±¾ÖʵÄÇø±ðÔÚÓÚ£¬surfaceViewÊÇÔÚÒ»¸öÔÚÐÂÆðµÄµ¥¶ÀÏß³ÌÖпÉÒÔÖØÐ»æÖÆ»Ãæ£¬¶øView±ØÐëÔÚUIµÄÖ÷Ïß³ÌÖиüÐÂ»Ãæ¡£ÄÇôÔÚUIµÄÖ÷Ïß³ÌÖиüÐÂ»Ãæ£¬¿ÉÄÜ»áÒý·¢ÎÊÌ⣬±ÈÈçÄã¸üÐÂ»ÃæµÄʱ¼ä¹ý³¤£¬ÄÇôÄãµÄÖ÷UIÏ̻߳ᱻÄãÕýÔÚ»µÄº¯Êý×èÈû£¬ÄÇô½«ÎÞ·¨ÏìÓ¦°´¼ü£¬´¥ÃþµÈÏûÏ¢¡£µ±Ê¹ÓÃsurfaceViewÓÉÓÚÊÇÔÚеÄÏß³ÌÖиüÐÂ»ÃæËùÒÔ²»»á×èÈûÄãµÄUIÖ÷Ị̈߳¬µ«ÊÇÕâÒ²»áÓÐÁíÍâÒ»¸öÎÊÌ⣬¾ÍÊÇʼþͬ²½¡£±ÈÈçÄã´¥ÆÁÁËһϣ¬ÄãÐèÒªsurfaceViewÖÐthread´¦Àí£¬Ò»°ã¾ÍÐèÒªÓÐÒ»¸öevent queueµÄÉè¼ÆÀ´±£´ætouch event£¬ÕâÑù¾Í»áÓе㸴ÔÓÁË¡£
View£º±ØÐëÔÚUIµÄÖ÷Ïß³ÌÖиüÐÂ»Ãæ£¬ÓÃÓÚ±»¶¯¸üÐÂ»Ãæ¡£
surfaceView£ºUIÏ̺߳Í×ÓÏß³ÌÖж¼¿ÉÒÔ¡£ÔÚÒ»¸öÐÂÆô¶¯µÄÏß³ÌÖÐÖØÐ»æÖÆ»Ãæ£¬Ö÷¶¯¸üÐÂ»Ãæ¡£
ËùÒÔÔÚÓÎÏ·µÄÓ¦ÓÃÉÏ£¬¸ù¾ÝÓÎÏ·µÄÌØµã£¬Ò»°ã·ÖΪÁ½Àࣺ
a. ±»¶¯¸üÐÂ»ÃæµÄ¡£±ÈÈçÆåÀ࣬ÕâÖÖÓÃview¾ÍºÃ¡£ÒòΪ»ÃæµÄ¸úÐÂÒÀÀµÓÚonTouchÀ´¸üУ¬¿ÉÒÔÖ±½ÓʹÓÃinvalidate.ÒòΪÕâÖÖÇé¿öÏ£¬ÕâÒ»´ÎTouchºÍÏÂÒ»´ÎTouchÐèÒªµÄʱ¼ä±È½Ï³¤Ð©£¬²»»á²úÉú
Ó°Ïì¡£
b.Ö÷¶¯¸üУº±ÈÈçÒ»¸öÈËÔÚÒ»Ö±Åܶ¯¡£Õâ¾ÍÐèÒªÒ»¸öµ¥¶ÀµÄthread²»Í£µØÖØ»æÈ˵Äת̨£¬±ÜÃâ×èÈûmian UI Thread ¡£ËùÒÔÏÔÈ»view ²»Êʺϣ¬ÐèÒªsurfaceViewÀ´¿ØÖÆ¡£