ÔÚ
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 µ½Ò»Ð©Ê²Ã´ÄØ£¿
|