『壹』 android中的Matrix,以及set,pre和post的區別
Matrix包含一個3 X 3的矩陣,好空專門用於圖像變換匹配。
Matrix提供了四種操前襪橋作:
translate(平移)
rotate(旋轉)
scale(縮放)
skew(傾斜)
也就是說這4種操作都是對這個3 X 3的矩陣設值來達到變換的效果。
Matrix沒有結構體,它必須被初始化,通過reset或set方法。
OK,Matrix介紹完了,我們來看看set、pre、post的區別。
pre是在隊列最前面插入,post是在隊列最後面追加,而set先清空隊列在添加(這也是上文提到的「Matrix沒有結構體,它必須被初始化,通過reset或set方法」的原因)。
下面通過一些例子具體說明:
matrix.preScale(2f,1f);
matrix.preTranslate(5f, 0f);
matrix.postScale(0.2f, 1f);
matrix.postTranslate(0.5f, 0f);
執行順序:慧猛translate(5, 0) -> scale(2f, 1f) -> scale(0.2f, 1f) -> translate(0.5f, 0f)
matrix.postTranslate(2f, 0f);
matrix.preScale(0.2f, 1f);
matrix.setScale(1f, 1f);
matrix.postScale(5f, 1f);
matrix.preTranslate(0.5f, 0f);
執行順序:translate(0.5f, 0f) -> scale(1f, 1f) -> scale(5f, 1)
『貳』 安卓手機系統裡面的preinstall文件夾可以刪除嗎這個是系統文件夾。佔了很大的空間。
System Lock Preinstall的簡稱,翻譯成中文就是預安裝系統的激活保護措施,它是微軟與OEM廠商之間的一種協議。
果斷完全刪除。。。這是4.0底包的東西。是預裝軟體、
恢復出廠有這個文件夾,但是沒有內容了。這個是預裝程序。沒多大意思。
『叄』 Android中的Matrix,以及set,pre和post的區別
Matrix主要用於對平面進行平移(Translate),縮放(Scale),旋轉(Rotate)以及斜切(Skew)操作。
為簡化矩陣變換,Android封裝了一系列方法來進行矩陣變換;其中包括:
set系列方法:梁檔鏈setTranslate,setScale,setRotate,setSkew;設置,會覆蓋之前的參數。
pre系列方法:preTranslate,preScale,preRotate,preSkew;矩陣先乘,如M' = M * T(dx, dy)。
post系列方法:postTranslate,postScale,postRotate,postSkew;矩陣後乘,如M' = T(dx, dy) * M。
通過將變換矩陣與原始矩陣相乘橡孫來達到變換的目的,例如:
平移(x'=x+tx;y'=y+ty):
縮放(x'=sx*x;y'=sy*y):
旋轉(x'=cosβ*x-sinβ*y;y'=sinβ*x+cosβ*y):
選擇需要用到如下的三角函數的公式:
①sin(α+β)=sinαcosβ+cosαsinβ
②cos(α+β)=cosαcosβ-sinαsinβ
公式①可以由單位圓方法或托蠢老勒密定理推導出來。
『肆』 Android常見的預編譯(prebuilt)
android常用的預編譯方法(prebuilt)
1.framework引入靜態jar包
2.編譯共享jar包
3.編譯so庫
方法1 : 單獨編譯
方法2 : 輪詢編譯
4.預編譯apk
預置apk至系統,如果apk含有so庫的話,也需要提前編譯到系統中,解壓apk文件,將so提取出來放置某一文件夾中,通過LOCAL_PREBUILT_JNI_LIBS將so編譯至system/app/package/lib/arm目錄
『伍』 我編寫完一個android程序,在編譯時出現ava.lang.NullPointerException錯誤,是怎麼回事
NullPointerException是空指針異常。
例如下面的代碼:
String str = "這是一個測試用的字元串!";
System.out.println(str.length());
這段代碼沒有問題,但是如果改成下面的代碼:
String str ;
System.out.println(str.length());
就會產生NullPointerException異常了