ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

Android SurfaceView Ïê½â
2014-11-24 12:46:54 À´Ô´: ×÷Õß: ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1´Î
Tags£ºAndroid SurfaceView Ïê½â

×î½üÓнӴ¥µ½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À´¿ØÖÆ¡£


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
·ÖÏíµ½: 
ÉÏһƪ£ºUnity3DÔÚAndroidÉϲ¥·ÅÊÓÆµ¼°rem.. ÏÂһƪ£ºAndroidÖÐʹÓÃassetsϵÄ×ÊÔ´¡ª¡ª..

ÆÀÂÛ

ÕÊ¡¡¡¡ºÅ: ÃÜÂë: (ÐÂÓû§×¢²á)
Ñé Ö¤ Âë:
±í¡¡¡¡Çé:
ÄÚ¡¡¡¡ÈÝ:

¡¤Linuxϵͳ¼ò½é (2025-12-25 21:55:25)
¡¤Linux°²×°MySQL¹ý³Ì (2025-12-25 21:55:22)
¡¤Linuxϵͳ°²×°½Ì³Ì£¨ (2025-12-25 21:55:20)
¡¤HTTP Åc HTTPS µÄ²î„ (2025-12-25 21:19:45)
¡¤ÍøÕ¾°²È«±ØÐ޿ΣºÍ¼ (2025-12-25 21:19:42)