²Ù×÷µÄÊÇ·ñ˳³©¡¢¿¨¶Ù£¬¾ö¶¨×ÅÕûÌåµÄÁ÷³©³Ì¶È¡£
ÊÂʵÉÏandroid¸úiphoneµÄ²î±ð£¬¸öÈ˾õµÃºÜ´ó³Ì¶ÈÉϾö¶¨ÓÚÁ÷³©³Ì¶È£¬ÎÞÂÛÊǶ¯»£¬»¹ÊÇÁÐ±í»¬¶¯µÈÏà¹Ø²Ù×÷£¬Á÷³©Óë·ñ£¬¶ÔÓÚÓû§¶øÑÔ£¬ËäÈ»ËûÃÇ˵²»³öÀ´ÄÄÀï²»¶Ô£¬µ«ÊÇ¿¨Óë²»¿¨µÄ·´À¡È´ÊǺÜÖ±½ÓµÄ¡£
GoogleÒ²Éè·¨Ïë¸Ä±äÕâ¾ÖÃæ¡£ÔÚ4.0Ö®ºóµÄÓ¦Óã¨×îµÍ°æ±¾4.0£©Ä¬ÈÏ¿ªÆôÓ²¼þ¼ÓËÙ£¬²¢ÇÒ4.1мÓÁËÒ»¸öProject
Butter(»ÆÓͼƻ®)£¬Éè·¨½«äÖȾ֡ËÙÌáÉýµ½60fps¡£
ËäÈ»ÄÜ¿´µ½androidµÄ½ø²½£¬µ«ÔÚʵ¼ÊÖУ¬²¢Ã»ÓÐÌØ±ðµÄ±ä»¯£¬ÔÒòºÜ¼òµ¥¡£Ò»·½ÃæandroidÔÚ3.0Ö®ºó²Å¿ªÊ¼Ö§³ÖGPUäÖȾ¡£ÁíÍâÒ»·½Ã棬ҲÊÇÏë×ö´ËϵÁеÄÖØÒªÔÒò£¬Ó¦ÓõÄ˳³©²»Äܽö¿¿ÏµÍ³È¥Å¬Á¦£¬¿ª·¢ÕßÔÚ´úÂëÖиøÓèÁ¦Á¿²ÅÊÇ×îÖØÒªµÄ¡£
×ø¿´ÊÐÃæÉÏÓ¦Óã¬Å׿ªÐèÇ󣬽öÔÚ²Ù×÷Á÷³Ì³Ì¶ÈÉÏ£¬¹úÍâÓ¦ÓÃÖÁÉÙ˦¿ª¹úÄÚÓ¦ÓÃNÌõ½Ö£¬´Ó×î»ù±¾µÄÓ²¼þ¼ÓËÙ¿ªÆô£¬µ½ÕûÌå¿Ø¼þÓÅ»¯·½°¸£¬Õâ¾ÍÊÇΪʲôºÜ¶à4.1ÒÔÉϵÄÊÖ»ú£¬ÔÚʹÓÃÓ¦ÓÃÉÏÒÀÈ»ÕÒ²»µ½ÄÇÖÖÊôÓÚ˳³©µÄ¸ÐÊÜ¡£
ÏÈÉêÃ÷£¬²ËÄñһö£¬ºÜ¶à¶«Î÷¶¼Ö»Êdzõ²½²ÂÏ룬ÄÜÁ¦ÓÐÏÞ£¬¶Ìʱ¼äÄÚÎÞ·¨ÉîÈëÈ·ÈÏÔÀí£¬²¢ÇÒÓÐЩ¶«Î÷ÊÇ·´±àÆäËûÓ¦Óÿ´À´µÄ£¬¿ÉÄÜ´ïµ½ÁËЧ¹û£¬µ«Ò»Ð©¹Ø¼üµÄÀàËÆÊÊÅäÖ®ÀàµÄ´úÂëû¿´µ½¡£ËùÒÔÓдíÔÚËùÄÑÃâµÄÂϣÍûÌåÁ¡£
AndroidÓ¦ÓÃÐÔÄÜÓÅ»¯Ö®ÓÅ»¯ÁбíÍ·Ïñ¹ý¶È»æÖÆ
ÏÂͼΪ×Ô¼ºµÄÓ¦Ó÷䳲µÄÖ÷Ìâʱ¼äÖáÁÐ±í£º

ÒòΪÔÚ¿ªÆôÁËÓ²¼þ¼ÓËٺ󣬻¹ÊÇûÓдﵽ60Ö¡ÊýµÄÒªÇ󣬴æÔÚ¿¨¶ÙµÄ¸Ð¾õ¡£ËùÒÔÎÒÃÇÒ»²½²½À´¸ÄÉÆËû°É
Õâ´ÎÎÒÃÇÏȽâ¾öÒ»¸öºÜÆÕ±éµÄÎÊÌ⣬ÄǾÍÊǹý¶È»æÖÆ¡£
¶øÇÒ¹ý¶È»æÖÆ£¬ÆäʵºÜºÃÀí½â£¬¾Ù¸öÀý×Ó£¬Ò»¸ö°×É«±³¾°µÄ´°¿Ú£¬ÉÏÃæÓÐÒ»¸öºÚÉ«±³¾°µÄ²¼¾Ö£¬×îºóÉÏÃæÏÔʾµÄÊÇÒ»¸ö°´Å¥¡£ÊÂʵÉÏ×îºóÏÔʾµÄʱºò£¬°´Å¥ÏÂÃæµÄ°×É«±³¾°ºÍºÚÉ«±³¾°ÊÇ¿´²»µ½µÄ£¬µ«ÔÚ»æÖƵÄʱºòÈ·¶¼»ÉÏÈ¥ÁË¡£
µ±È»¹ý¶È»æÖÆÊÇÎÞ·¨ÍêÈ«±ÜÃâµÄ£¬ÊʶȵÄÊÇ¿ÉÒÔ½ÓÊܵ쬵«¹ý¶àÁËÖ®ºó¾Í»áÔì³ÉÐÔÄÜÓ°Ïì¡£ÒýÓôóÅ£µÄ·ÖÎö¾ÍÊÇ£º
±¸µÄÄÚ´æ´ø¿íÊÇÓÐÏ޵쬵±¹ý¶È»æÖƵ¼ÖÂÓ¦ÓÃÐèÒª¸ü¶àµÄ´ø¿í(³¬¹ýÁË¿ÉÓôø¿í)µÄʱºòÐÔÄܾͻήµÍ¡£´ø¿íµÄÏÞÖÆÃ¿¸öÉ豸¶¼¿ÉÄÜÊDz»Ò»ÑùµÄ¡£Ò»¸öºÃµÄ²Î¿¼Ä¿±ê¾ÍÊÇ¿ØÖƹý¶È»æÖÆÎª2X£»Õâ˵Ã÷Äú¿ÉÒÔ»æÖÆÒ»´ÎÆÁÄ»£¬È»ºóÔÚÉÏÃæ»æÖÆ×î¶à2´ÎÄÚÈÝ£¬Ò»¹²»æÖÆÃ¿¸öÏñËØ3´Î¡£
androidÌṩÁ˶ÔÓ¦µÄ¹¤¾ß½øÐмì²â£¬ÔÚ4.2µÄ¿ª·¢ÕßÑ¡ÏîÖУ¬ÌṩÁËÒ»¸ö½Ð×ö¡°ÏÔʾGPU¹ý¶È»æÖÆ¡±µÄÑ¡Ïî¡£µ±È»£¬ËùÒª·ÖÎöµÄÒ³Ãæ±ØÐëÒª¿ªÆôÓ²¼þ¼ÓËÙ¡£

ͨ¹ýÑÕÉ«À´Çø±ð±êʾ¹ý¶È»æÖƵÄÇé¿ö£ºÀ¶É«1x¹ý¶È»æÖÆ¡¢ÂÌÉ«2x¹ý¶È»æÖÆ¡¢µºìÉ«3x¹ý¶È»æÖƺͺìÉ«³¬¹ý4x¹ý¶È»æÖÆ¡£
ÎÒÃÇÏÈÓÃÕâ¸öÀ´¿´Ï£º

Í·Ïñ¸úÏÔʾµÄÖ÷ÌåͼƬ¶¼ÊǵºìÉ«£¬²¢ÇÒÇøÓòÕ¼µÄºÜ´ó£¬ËùÒÔÎÒÃÇÏÈÒÀ´Î°ÑÕâÁ½¸öͼƬ¹ý¶È»æÖƵÄÎÊÌâ½â¾öÁË¡£
ÖªµÀÁËÒªÓÅ»¯µÄµØ·½£¬ÎÒÃǾÍÒª·ÖÎö¾ßÌåÎÊÌâÁË£¬ÆäʵÓÅ»¯¹ý¶È»æÖƵÄͨÓÃ˼·±È½Ï¼òµ¥£¬¾ÍÊÇÒªÖªµÀ¾ßÌåÿһ²ã¶¼»æÖÆÁËʲô£¬É¾È¥Íêȫû±ØÒªµÄ²ã¼¶¡£µ±È»ÕâÊÇ×î»ù±¾µÄ˼·£¬ÒªÊµÏÖÕâ¸ö˼·ÎÒÃǾÍÐèÒªÓõ½ÁíÍâÒ»¸ö¹¤¾ßTracer
for OpenGL¡£
Õâ¸ö¹¤¾ßÄܹ»¼Ç¼ÿһ´Î»æ»µÄ¶¯×÷£¬²¢ÇÒÄÜÕ¹ÏÖ³öÀ´£¬ÕâÑùÎÒÃǾÍÄÜ¿´µ½¾ßÌåµÄ»æ»Çé¿öÁË¡£
ʹÓÃÒªÇó£º
¹¤¾ßÐèÒªÁ¬½Óµ½Ò»¸öÔËÐÐAndroid 4.1(API¼¶±ð16)»ò¸ü¸ßÉ豸ÉϵÄÔËÐУ¬ËùÒԼǵÿªÆô4.1¼°ÒÔÉÏÄ£ÄâÆ÷»òÕæ»úÀ´½øÐзÖÎöµ÷ÊÔ
ʹÓ÷½·¨£º
´ò¿ªADTµÄTracer for OpenGL Es±êÇ©£¨Ä¬ÈϺÃÏñÊÇûÌí¼ÓµÄ£¬ÐèÒªÊÖ¶¯Ìí¼ÓÏ£©£¬ÓÐÒ»¸öÏòÉϵļýÍ·¡£µã»÷ºó»áµ¯³öÑ¡Ïî¶Ô»°¿ò£¬ÈçÏ¡£

Device£ºÑ¡ÔñÐèÒªµ÷ÊÔµÄÉ豸¡£
Application Package£ºÌîÈë°üÃû£¬Ò²¾ÍÊÇAndroidMainfest.xmlÀïÃæÐ»µÄÄǸö£¬±ÈÈçcom.example.XXXX
Activity to launch:ÌîÈëÐèÒª²âÊÔµÄÒ³ÃæÂ·¾¶¡£Ò²¾ÍÊdzýÁ˰üÃûÍâµÄÉíϲ¿·Ö¡£±ÈÈçtest.xxxActivity
Data Collection Options£ºÓÐÈý¸öÑ¡ÏµÚÒ»¸öÑ¡ÏîÊÇ¿ìËÙ¶¨Î»¶ÔÓ¦Ö¡£¬¾ßÌåµÄЧ¹û¾ÍÊÇÄÜ¿´µ½Ã¿Ò»Ö¡×îÖÕÉú³ÉµÄÑù×Ó£¬µÚ¶þ¸öÑ¡ÏîÊǹؼü£¬²é¿´Ã¿Ö¡µÄÿ¸ö»æÖÆÃüÁЧ¹û¡£
Destination File£º´æ·ÅÊý¾ÝµÄ·¾¶£¬½¨ÒéÕÒ¸öÊ£Óà¿Õ¼ä´óµÄµØ·½¡£
¶¼Ñ¡ÔñÍêºó£¬µã»÷Traceºó¾Í¿ªÊ¼·ÖÎö¡£É豸»áÖ±½Ó½øÈëËùÌîдµÄ·ÖÎö½çÃæ£¬Èç¹ûûÓнøÈ룬»òÕß½øÈëºó¹¤¾ßµÄ״̬ûÓÐÈκθı䣬¾Í˵Ã÷ʧ°ÜÁË£¬ÐèÒªÖØÐÂÉèÖò¢ÖØÀ´¡£µ±É豸ÉÏÏÔʾÍêÕûÄãÐèÒª·ÖÎöµÄ½çÃæ²¿·Öʱ£¬ÉÔ¹ýÒ»»á£¬¾Í¿ÉÒÔµã»÷stopÀ´²é¿´½á¹ûÁË¡£
[¸öÈ˾Ñé:µÚÈý·½¹¤¾ß¾ÍûÓÐÒ»¸ö²»ÆæÝâµÄ£¬´Ë¹¤¾ßÒ²²»ÀýÍâ¡£ÒÀÕÕ֮ǰ¾Ñ飬½¨Òéµã»÷֮ǰ£¬¶ÔÓ¦µÄÉ豸¼ÇµÃ°ÑËøÆÁ½çÃæ½â¿ª£¬·ñÕßʧ°ÜµÄ¿ÉÄÜÐԺܴó]
ÔÚ½á¹ûÖпÉÒÔ¿´µ½Ã¿¸ö·¢Ë͸øgpuµÄGLÃüÁѡÔñÿһ֡£¬ÄÜÔÚFrame
SummaryÖп´µ½Ã¿Ò»Ö¡µÄ×îÖÕЧ¹û¡£²¢ÇÒÄÜÔÚDetail½çÃæÖп´µ½Ã¿Ò»¸ö»æ»ÃüÁîÖ´ÐкóµÄ½çÃæ×´Ì¬¡£
ÒÔÏÂΪͷÏñÇøÓòµÄ»æÖÆÇé¿ö£º

ÄÜ¿´³ö£¬ÆäʵÊÇÏȽ«Í·ÏñµÄͼƬ»Á˳öÀ´£¬È»ºóÔÙ½«Ò»¸ö4¸öÔ²½ÇµÄͼƬ»ÔÚ֮ǰͼƬµÄÉÏÃæ¡£ÐγÉÔ²½ÇÍ·ÏñµÄЧ¹û¡£
ÒÔÉϽ²µÄÖ»ÊÇÒ»¸öÕûÌåµÄ˼·£¬Í¨¹ý¶ÔÓ¦µÄ¹¤¾ß£¬²éÕÒ³öÿһ²½µÄ»æ»²½Ö裬À´¹æ±Ü¶àÓàµÄ»æÖÆÃüÁ´Ó¶ø´ïµ½¼õÉÙ¹ý¶È»æÖƵÄÄ¿µÄ¡£
½ÓÏÂÀ´¿ªÊ¼½â¾öÕâ¸öÍ·ÏñµÄÎÊÌ⣬°´³£Àí½«ÒªÊµÏÖÕâ¸öЧ¹û£¬¾Í±ØÐëҪͼƬ¸²¸Ç£¬ËùÒÔÓÃͨÓõÄ˼·ÊÇÎÞ·¨½â¾öÕâ¸ö¹ý¶È»æÖƵÄÎÊÌâ¡£µ±³õÕâ¸öÖÆ×÷Ô²½ÇÍ·ÏñµÄ·½·¨ÊÇ´ÓpathÄÇÀïѧÀ´µÄ£¬ÄÇÎÒÃǾͿ´¿´£¬pathÊDz»ÊÇÒ²ÎÞ·¨½â¾ö´ËÎÊÌâ¡£

ºÃ°É£¬À¶É«£¬Ö¤Ã÷pathÄܽâ¾öÕâ¸ö¹ý¶È»æÖÆ¡£
¿´Ï·´±à³öÀ´µÄ´úÂ룬Ӧ¸ÃÄܲ¸ö´ó¸Å³öÀ´¡£
Ê×ÏÈÏÈ¿´¿´²¼¾Ö£¬ÊDz»ÊÇÆÕͨµÄImageView.

pathÊ×Ò³ÀïµÄ²¼¾Ö¶«Î÷ÕæÐĶ࣬ÖÕÓÚÔÚãã´óº£ÖÐÕÒµ½ÁËÎÒÃǵÄÄ¿±ê¡£
¹ûÕæ£¬ÖØÐ´ÁË£¬²»ÊÇÆÕͨµÄ¿Ø¼þ£¬CacheableProfilePhoto¡£GoogleÁËһϣ¬¿´À´²»ÊÇ¿ªÔ´µÄ¿Õ¼ä£¬ÄǾÍÖ±½Ó´Ó´úÂëÀï²Â°É¡£

´Ë¿Ø¼þ¼Ì³ÐÓÚOverlayImageView£¬ÄÇÎÒÃÇÏÈ¿´¿´OverlayImageViewÊÇɶ

¶÷¶÷£¬¿´À´¾ÍÊÇËûÁË£¬×÷Ϊһ¸ö¼Ì³ÐÓÚImageViewµÄ¼Ò»ï£¬¹û¶ÏÖ±½Ó¿´OnDraw·½·¨¡£[³£ÈËÊÇÎÞ·¨ÈÌÊÜpathÕâÂúµØ¶¼ÊÇʳÎïÃû³ÆÎª±äÁ¿µÄ·´±à´úÂë.¿Óµù°¡]

·¢ÏÖ»æÖƵÄÕûÌåÁ÷³ÌÊÇ¢ÙÏÈ»ñȡһ¸öDrawingCanvasÀàÐ͵ıäÁ¿£¬Èç¹û´Ë±äÁ¿Îª¿Õ£¬Ôò³õʼ»¯Ëü¡£¢ÚÈ»ºóËÆºõÓÐÒ»¸ö·½·¨£¬½«´Ë±äÁ¿×÷Ϊ²ÎÊý´«ÈëÁ˽øÈ¥¡£¢ÛÖ®ºó´Ë±äÁ¿¿ÉÒÔ·µ»ØÒ»¸öbitmap£¬¢Ü×îºó½«Õâ¸öbitmap»ÔÚcanvasÉÏ¡£
Á÷³Ìͦ¼òµ¥£¬¼òÖ±µÄ¹Ø¼ü¾ÍÔÚÓÚ£¬»ÉÏÈ¥µÄbitmapµ½µ×ÊǸöɶ¶«Î÷¡£
ҪŪ¶®Õâ¸ö¶«Î÷£¬ÎÒÃǾͱØÐëŪ¶®DrawingCanvasÊÇʲô¡£

¿´À´ÊÇÒ»¸öCanvas£¬²¢ÇÒÓµÓÐÒ»¸öÀàÐÍΪBitmapµÄ±äÁ¿£¬ÓÐÒ»¸ö·½·¨À´·µ»ØÕâ¸öbitmap±äÁ¿¡£
ÔÚDrawingCanvasµÄ´úÂëÀï£¬ËÆºõ¿´²»µ½»æÖƵĴ¦Àí£¬ËµÃ÷ÁíÓÐÆäËûµØ·½£¬Ö®Ç°ÔÚOverlayImageView¿´µ½¸ö·½·¨½«´ËÀàÐ͵ıäÁ¿×÷Ϊ²ÎÊý£¬ÄÇÎÒÃǾͿ´¿´ÄǸö·½·¨×öÁËʲôÊÂÇé¡£
ÔÚOverlayImageViewÖÐÓиö½Ð×öprotected void
wheatbiscuit(DrawingCanvas paramDrawingCanvas)µÄ·½·¨

´úÂëÆ¬¶ÎÒ»

´úÂëÆ¬¶Î¶þ
ÕâÏÂÓеãÇåÎúÁË£¬´Ë·½·¨ÖжԴ«ÈëµÄDrawingCanvas±äÁ¿»æÖÆÁËÁ½´Î¡£ÄÇÏÖÔÚÎÒÃÇ·½±ãÀ´¿´ÏÂÕâÁ½´Î·½±ã¶¼»ÁËʲô¡£
ÕâÊǵÚÒ»´Î£¬ÄǺÜÃ÷ÏÔ£¬Ó¦¸ÃÊÇÊôÓÚÕâ¸öImageViewµÄͼƬ×ÊÔ´
Drawable localDrawable1 = getDrawable(); |
ÕâÊǵڶþ´Î£¬redwineÊÇÔÚsetOverlayResource·½·¨Öб»¸³ÖµµÄ£¬´Ë·½·¨´«ÈëµÄÊÇi =
localTypedArray.getResourceId(0, -1);×îºó¶¨Îªµ½µÄÊÇapp:overlay="@drawable/moment_avatar"
£¬ÄǾÍÃ÷°×ÁË£¬µÚ¶þ´Î»æÖÆÉÏÈ¥µÄ£¬Æäʵ¾ÍÊǸ²¸ÇÔÚÉÏÃæµÄ»ÓÐ4¸öÔ²½ÇµÄͼƬ¡£
Bitmap localBitmap2 = ((BitmapDrawable)this.redwine).getBitmap(); |
ÖÕÓÚÕæÏà´ó°×ÁË£¬×ܽáÏ£¬Æäʵpath¾ÍÊǽ«Ô±¾Ã¿´Î¶¼Òª»æÖÆÁ½´ÎµÄͼƬ£¬ÊÂÏȾͻæÖƺò¢ÇÒ»º´æÆðÀ´£¬ÕâÑù¾Í²»»á¹ý¶È»æÖÆÁË¡£
À´£¬ÎÒÃÇ¿´¿´Ð§¹û£º

¿´°É£¬Í·Ïñ±äÀ¶Á˰ɣ¿£¡³É¹¦¡£
µ±È»£¬»¹Óкܶà´úÂëϸ½ÚÕâÀï¾Í²»Ïêϸչ¿ªËµÁË£¬±Ï¾¹Í¬ÑùµÄ˼Ï룬¿ÉÒÔÓв»Í¬µÄ´úÂëʵÏÖÂß¼¡£
×îÖ÷Òª»¹ÊÇÏë´«´ïÒ»¸ö˼·¡£
»òÐíÕâ˼·£¬´ó¼Ò¶¼¶®£¬¾ÍÎÒ¸ÕÖªµÀ°É¡£o(¨s¡õ¨t)o
Õâ´Î¹ØÓÚÍ·ÏñµÄÓÅ»¯¾ÍÏÈдµ½Õâ°É£¬·Ï»°¶àÁ˵㣬Çë¼ûÁ¡£
²»¹ýÆæ¹ÖµÄÊÇ£¬ÕýÎÄͼƬµÄ¹ý¶È»æÖÆ£¬´Ó·ÖÎöÀ´¿´ËƺõÕý³£ÁËÒ®=¡£=£¬Íü¼Ç֮ǰ¸ÄÁËÄÄÁË...¼Ù¶¯×÷»Îµ½×Ô¼ºÁË¡£Ã÷ÌìÈÏÕæ·´úÂëÏ¡£ |