Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÉîÈëÀí½â Android ÖÐµÄ Matrix
 
À´Ô´£º¼«¿ÍÍ·Ìõ ·¢²¼ÓÚ£º 2016-8-8
  1634  次浏览      32
 

ÔÚ Android ¿ª·¢ÖУ¬¾ØÕóÊÇÒ»¸ö¹¦ÄÜÇ¿´ó²¢ÇÒÓ¦Óù㷺µÄÉñÆ÷£¬ÀýÈ磺ÓÃËüÀ´ÖÆ×÷¶¯»­Ð§¹û¡¢¸Ä±äͼƬ´óС¡¢¸øÍ¼Æ¬¼Ó¸÷ÀàÂ˾µµÈ¡£¶ÔÓÚ¾ØÕó£¬Android ¹Ù·½ SDK ΪÎÒÃÇÌṩÁËÒ»¸öÇ¿´óµÄÀà Matrix £¨»¹ÓÐ ColorMatrix £©ÊÇÒ»Ö±À§ÈÅ×ÅÎÒµÄÎÊÌ⣬ËäÈ»´óÖÂÄܹ»µ÷ÓÃÏàÓ¦µÄ API £¬µ«È´Ò»Ö± get ²»µ½ÆäÄÚÔڵĹ£¡£µ«ÊdzöÀ´»ì×ÜÊDZðÏë×ÅÃÉ»ì¹ý¹ØµÄ£¬ËùÒÔ×î½üÖØÐÂ²ÙÆðÒ»Äê±ÏÒµµÄÏßÐÔ´úÊý£¬ÔÙ±¾×ÅСÊÂÎÊÀÏÆÅ£¬´óÊÂÎÊGoogleµÄÐÄ̬£¬ÖÕÓڰѶàÄê²»½âµÄÎÊÌâ¸øÆÆÁË¡£³öÓںüÇÐÔ²»ÈçÀñÊÍ·µÄÔ­Òò£¬±ãÓÐÁ˱¾ÎÄ¡£

¶ÁÍê±¾ÎÄ£¬ÏàÐÅÄãÄܹ»¸ãÃ÷°×ÒÔÏÂÈý¸öÎÊÌ⣺

1.Ϊʲô Matrix ÊǸö 3 X 3 µÄ¾ØÕó

2.Matrix Õâ¸ö 3 X 3 µÄ¾ØÕóÿ¸öÔªËØµÄ×÷ÓÃ

3.Matrix µÄ setXXX¡¢preXXX¡¢postXXX API ·½·¨µÄ¹¤×÷Ô­Àí

Matrix µÄ½á¹¹

Matrix ÊÇ Android SDK ÌṩµÄÒ»¸ö¾ØÕóÀ࣬Ëü´ú±íÒ»¸ö 3 X 3 µÄ¾ØÕ󣨲»¶®¾ØÕóΪºÎÎïµÄͯЬ¾ÍÒª×ÔÐÐ Google ÁË£©¡£

Matrix ÌṩÁËÈÃÎÒÃÇ»ñµÃ Matrix ÖµµÄ API ¡ª¡ª getValues

ÀûÓÃ´Ë API ´«ÈëÒ»¸ö³¤¶ÈΪ 9 µÄ float Êý×飬¼´¿É»ñµÃ¾ØÕóÖÐÿ¸öÔªËØµÄÖµ¡£ÄÇôÕâ 9 ¸ö¸¡µãÊýµÄ×÷ÓúÍÒâÒåÊÇÊ²Ã´ÄØ£¬´Ó Android ¹Ù·½ÎĵµÉÏ¿´£¬ËüΪÕâ¸öÊý×éÖеÄÿһ¸öÔªËØ¶¼¶¨ÒåÁËÒ»¸öϱ곣Á¿

Õâ¸ö 9 ¸ö³£Á¿È¡Öµ·Ö±ðÊÇ 0 - 8

Èç¹ûÎÒÃǽ«Õâ¸ö float ÅųÉÖ±¹ÛµÄ¾ØÕó¸ñʽ£¬ÄÇËü½«ÊÇÏÂÃæÕâÑù×ÓµÄ

ʵ¼ÊÉÏÎÒÃÇÆ½³£ÀûÓà Matrix À´½øÐÐ Translate£¨Æ½ÒÆ£©¡¢Scale£¨Ëõ·Å£©¡¢Rotate£¨Ðýת£©µÄ²Ù×÷£¬¾ÍÊÇÔÚ²Ù×÷×ÅÕâ¸ö¾ØÕóÖÐÔªËØµÄÊýÖµÀ´´ïµ½ÎÒÃÇÏëÒªµÄЧ¹û¡£µ«ÊÇÏÖÔÚÎÊÌâÀ´ÁË£¬ÉÏÃæÌáµ½µÄÆ½ÒÆ¡¢Ëõ·Å¡¢Ðýת²Ù×÷ÖУ¬ÐýתºÍËõ·Å¿ÉÒÔÓó˷¨±íʾ£¬¶øÆ½ÒƾÍÖ»ÄÜÓüӷ¨±íʾ£¬¶øÇÒ Matrix ÊÇÒ»¸ö 3 X 3 µÄ¾ØÕó£¬Êµ¼ÊÉϱíʾÕâЩ²Ù×÷ 2 X 2 µÄ¾ØÕó×ãÒÓ£¡

ÈçÉÏ£¬¿ÉÒÔÒÀ´Î¿´µ½Æ½ÒÆ¡¢Ëõ·Å¡¢ÐýתµÄ¾ØÕ󣬯äÖÐ

1.£¨x¡¯£¬y¡¯£©±íʾִÐвÙ×÷ºóµÄµãµÄ×ø±ê£¬£¨x£¬y£©±íʾִÐвÙ×÷ǰµÄµãµÄ×ø±ê

2.tx¡¢ty ·Ö±ð±íʾxÖá¡¢yÖáÉÏÆ½ÒƵľàÀ룬Sx¡¢Sy ·Ö±ð±íʾxÖá¡¢yÖáÉϵÄËõ·Å±ÈÀý

3.¦È Ôò±íʾÐýת½Ç¶È

ÖÁÓÚÉÏÃæ¾ØÕóµÄÍÆµ¼¹ý³Ì£¬ÍøÂçÉϺܶ࣬ÕâÀï¾Í²»È¥×¸ÊöÁË¡£ÒÔǰµ½ÁËÕâÀÎҾͻáºÜÄÉÃÆ£¬ÎªÊ²Ã´ 2 X 2 ¾ØÕóÄܸɵÄÊÂÇ飬ƫƫҪÓà 3 X 3 ¾ØÕóÈ¥×ö£¬Ö±µ½Óöµ½Ç°ÃæÌáµ½µÄÁ½ÆªÎÄÕ²ÅÓÐËùÁìÎò¡£

ÆäʵÔÚ¼ÆËã»úͼÐÎÓ¦ÓÃÉæ¼°µ½¼¸ºÎ±ä»»£¬Ö÷Òª°üÀ¨Æ½ÒÆ¡¢Ðýת¡¢Ëõ·Å¡£ÒÔ¾ØÕó±í´ïʽÀ´¼ÆËãÕâЩ±ä»»Ê±£¬Æ½ÒÆÊǾØÕóÏà¼Ó£¬ÐýתºÍËõ·ÅÔòÊǾØÕóÏà³Ë¡£ÄÇЩÊýѧ´óÉñÃÇΪÁË·½±ã¼ÆË㣬ËùÒÔÒýÈëÁËÒ»ÑùÉñÆ÷½Ð×öÆë´Î×ø±ê£¨²»¶®µÄͯЬ£¬ÀÏ¹æ¾Ø×ÔÐÐËÑË÷£©£¬½«Æ½ÒƵļӷ¨ºÏ²¢Óó˷¨±íʾ¡£ËùÒÔ£¬2 X 2 µÄ¾ØÕó¾­¹ýÒ»·¬±ä»»ºó£¬³ÉÁËÏÂÃæÕâÑùµÄ¡£

ÖÁ´Ë£¬ÎÒÃÇ¿ÉÒÔµÃ֪Ϊʲô Matrix ÊÇÒ»¸ö 3 X 3 µÄ¾ØÕ󣬯äʵ 2 X 2 µÄ¾ØÕóÊÇ×ãÒÔ±íʾµÄ£¬²»¹ýÊÇΪÁË·½±ã¼ÆËã¶øºÏ²¢Ð´³ÉÁË 3 X 3 µÄ¸ñʽ¡£

Matrix ÔªËØµÄ×÷ÓÃ

Ò»¸ö Matrix ¹²ÓÐ 9 ¸öÔªËØ£¬ÄÇôËüÿ¸öÔªËØµÄÖµ·¢Éú¸Ä±ä»áÆðµ½Ê²Ã´×÷ÓÃÄØ£¿°´ÕÕÇ°ÃæËùʾµÄÆë´Î×ø±êת»»µÃµ½ 3 X 3 µÄ¾ØÕóºÍ Android ÎĵµÌṩµÄ¹Ù·½½á¹¹Ïà¶ÔÓ¦£¬ÎÒÃDz»ÄÑ¿´³öÏÂÃæµÄ¶ÔÓ¦¹ØÏµ£¨Æäʵ´Ó Matrix ÖÐÿ¸öλÖõij£Á¿ÃüÃûÒ²¿ÉÒÔ¿´³öÀ´£©£º

´ÓÕâÎÒÃÇ¿ÉÒÔ¿´³öÕâ¸ö Matrix ½á¹¹ÖеÄÿ¸ö²ÎÊý·¢»Ó×ÅÈçÏÂ×÷Óãº

1.MTRANS_X¡¢MTRANS_Y ͬʱ¿ØÖÆ×Å Translate

2.MSCALE_X¡¢MSCALE_Y ͬʱ¿ØÖÆ×Å Scale

3.MSCALE_X¡¢MSKEW_X¡¢MSCALE_Y¡¢MSKEW_Y ͬʱ¿ØÖÆ×Å Rotate

4.´ÓÃû³ÆÉÏ¿´£¬ÎÒÃÇ¿ÉÒÔ˳´ø¿´³ö MSKEW_X¡¢MSKEW_Y ͬʱ¿ØÖÆ×Å Skew

Èç¹ûÒª½øÐдúÂëÑéÖ¤µÄ»°£¬Ò²·Ç³£¼òµ¥£¬ÀýÈçÖ±½ÓÖ»¶Ô Matrix ×ö Translate µÄ API µ÷ÓòÙ×÷£¬ÔÙ½« Matrix µÄÐÅÏ¢´òÓ¡µ½¿ØÖÆÌ¨£¬Äã»á·¢ÏÖÕû¸ö Matrix ȷʵֻÓÐ MTRANS_X¡¢MTRANS_Y Á½¸öλÖõÄÊý×ÖÔÚ·¢Éú±ä»¯¡£ÆäËû Scale¡¢Rotate¡¢Skew ²Ù×÷Ò²ÊÇÒ»Ñù£¬¸ÐÐËȤµÄͯЬ¿ÉÒÔ×ÔÐдúÂëÑéÖ¤Ò»·¬¡£

ÖÁ´Ë£¬ÎÒÃÇ¿ÉÒÔ´óÖÂŪÇ徨Õóÿ¸öÔªËØµÄ×÷Óá£ÖÁÓÚ MPERSP_0¡¢MPERSP_1¡¢MPERSP_2 ÕâÈý¸ö²ÎÊý£¬Ä¿Ç°ÔÝʱ²»µÃ¶øÖª£¬ÍøÉÏÓÐÎÄÕÂ˵ÕâÈý¸ö²ÎÊý¿ØÖÆ×Å͸Êӱ任£¬µ«ÊÇÎĵµºÍ API É϶¼Ã»ÔõôÌá¼°£¬ËùÒÔ»¹ÊÇÓдýÑéÖ¤Ñо¿µÄ£¬ÓÐÃ÷°×µÄͯЬ²»·ÁÁôÑԴͽÌһϣ¬²»Ê¤¸Ð¼¤¡£

Àí½â Matrix API µ÷ÓÃ

°´ÕÕµÚһС½ÚÀïÃæÍ¨¹ýÆë´Î×ø±êת»»¶øÀ´µÄ¾ØÕ󷽳̿ÉÒÔÖªµÀ£¬¼ÙÉèÒ»¸ùÏßÖ´ÐÐÁËÆ½ÒƲÙ×÷£¬Ï൱ÓÚÏßÉÏÿ¸öµãµÄ×ø±ê±»Ï·½µÄ¾ØÕó×ó³Ë¡££¨Ëõ·ÅºÍÐýת²Ù×÷Ò²ÊÇͬÀí£©

Èç¹ûÒª½øÐÐͬʱËõ·Å¡¢Æ½ÒÆÖ®ÀàµÄ·ûºÏ±ä»¯²Ù×÷£¬Ò²Î޷ǾÍÊÇѡȡÏàÓ¦µÄ¾ØÕó×ö×ó³Ë²Ù×÷¡£ÎªÁ˼ÓÉî¾ØÕó±ä»»¶ÔÓ¦ Matrix API µ÷ÓõÄÀí½â£¬Ö±½Óͨ¹ýÏÂÃæµÄÒ»¸ö×Ô¶¨ÒåµÄ¶¯»­Ð§¹ûºÍ´úÂëÀ´½²½âºÃÁË¡£

public class SimpleCustomAnimation extends Animation {

private int mWidth, mHeight;

@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
this.mWidth = width;
this.mHeight = height;
}

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
Matrix matrix = t.getMatrix();
matrix.preScale(interpolatedTime, interpolatedTime);//Ëõ·Å
matrix.preRotate(interpolatedTime * 360);//Ðýת
//ÏÂÃæµÄTranslate×éºÏÊÇΪÁ˽«Ëõ·ÅºÍÐýתµÄ»ùµãÒÆ¶¯µ½Õû¸öViewµÄÖÐÐÄ£¬²»È»ÏµÍ³Ä¬ÈÏÊÇÒÔViewµÄ×óÉϽÇ×÷Ϊ»ùµã
matrix.preTranslate(-mWidth / 2, -mHeight / 2);
matrix.postTranslate(mWidth / 2, mHeight / 2);
}
}

ÊìϤ¶¯»­Õâ¿éµÄͯЬ¿Ï¶¨ÖªµÀ£¬Animation ¾ÍÊÇͨ¹ý²»¶Ï¸Ä±ä applyTransformation º¯Êý´«ÈëµÄ Matrix À´ÊµÏÖ¸÷ÖÖ¸÷ÑùµÄ¶¯»­Ð§¹ûµÄ£¬Í¨¹ýÉÏÃæ applyTransformation ÁÈÁȵļ¸ÐÐ Matrix µÄ¸´ºÏ±ä»»²Ù×÷¿ÉÒԵõ½ÈçÏÂЧ¹û

ʵ¼ÊÉÏÕ⼸ÐдúÂëÓþØÕóÀ´±íʾ¾ÍÏ൱ÓÚÈçÏÂËùʾ£º

¹ØÓÚ´úÂëµÄ×÷ÓÃÉϱßÒѾ­¸ø³öÁË×¢ÊÍ£¬ÕâÀï¾Í²»¶àдÁË¡£Ö÷Òª»¹ÊÇҪŪÃ÷°× Matrix ¸´ºÏ±ä»»ÖÐ pre ¡¢ post µÈ²Ù×÷ÓëÆä¶ÔÓ¦µÄ¾ØÕó·¢ÉúµÄ×ó³Ë¡¢Óҳ˱仯¡£

×ܽá

µ½´Ë£¬ÕûƪÎÄÕÂÒѾ­Íê½á£¬ÏàÐÅÒѾ­Äܹ»ÈÃÄãÃ÷°×¿ªÍ·Ìáµ½µÄÈý¸öÎÊÌâ¡£ÆäʵÎÒÃÇÒ²¿ÉÒÔ·¢ÏÖ£¬Google ·â×°ÁË Matrix ÒѾ­ÊǺÜÍêÃÀÁË£¬¼¸ºõÆÁ±ÎÁËËùÓеÄÊýѧϸ½Ú£¬Ê¹µÃÎÒÕâÖÖÊýѧˮƽһ°ãµÄ¿ª·¢ÕßÒ²Äܹ»È¥µ÷ÓÃÏàÓ¦µÄ API ʵÏÖһЩ¼òµ¥µÄЧ¹û¡£ËäÈ»±»·â×°µÃºÜÍêÃÀ£¬µ«ÕÆÎÕÏàÓ¦µÄһЩԭÀí£¬ÒÀ¾É¿ÉÒÔ°ïÄã¸üºÃµÄÀí½âһЩ¼¼ÊõʵÏÖ£¬´Ë´Î¼ÓÉîÁË¶Ô Matrix һЩ²Ù×÷µÄÀí½â£¬°ïÎÒ×Ô¼º½â¾öÁËÒÔǰ²»ÉÙµÄÀ§»ó£¬²»ÖªµÀÓÐûÓаïÄã get µ½Ò»Ð©Ê²Ã´ÄØ£¿

   
1634 ´Îä¯ÀÀ       32
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ


Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ


ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ