- android:ems=“10” 設置TextView或EditView的寬度爲10個字符,如果超過則不顯示。
ImageView Scaletype 屬性,決定圖片在View上顯示的樣子,如,顯示整體還是部分或是縮放
center:按照圖片原來的size居中顯示,如果圖片的長寬大於View,則截取圖片的居中部分
center_crop:按比例擴大圖片的size居中顯示,使圖片的長寬大於或等於View的長寬
center_inside:將圖片的完整內容居中顯示,按比例縮小或是原來的size小於或等於View長寬
- Android 創建文件夾及注意事項
File dir = new File(path);
if (!dir.exists()) {
dir.mkdirs();
}
注意:創建文件夾時寫入文件,會存在沒有發現文件夾的錯誤,那是因爲沒有添加權限,需要添加權限 :
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
一個Android 程序默認情況下也只有一個Process,但一個Process下卻可以有許多個Thread,在這麼多Thread當中,有一個Thread,我們稱之爲UI Thread。UI Thread在Android程序運行的時候就被創建,是一個Process當中的主線程Main Thread,主要是負責控制UI界面的顯示、更新和控件交互。在Android程序創建之初,一個Process呈現的是單線程模型,所有的任務都在一 個線程中運行。因此,我們認爲,UI Thread所執行的每一個函數,所花費的時間都應該是越短越好。而其他比較費時的工作(訪問網絡,下載數據,查詢數據庫等),都應該交由子線程去執行, 以免阻塞主線程。
UI Thread如何和其他Thread一起工作呢?常用方法是:
誕生一個主線程的Handler物件,當做Listener去讓子線程能將訊息Push到主線程的Message Quene裏,以便觸發主線程的handlerMessage()函數,讓主線程知道子線程的狀態,並在主線程更新UI。- 聲明靜態方法注意事項
- 它們僅能調用其他的靜態方法;
- 它們只能訪問static類型的數據;
- 它們不能以任何方式引用this或super
- static靜態代碼塊在類加載時執行一次
- Android 動畫屬性,Android 動畫屬性分爲三類:
- View 動畫:
- 縮放ScaleAnimation
- 透明度動畫AlphaAnimation
- 移位動畫TranslateAnimation
- 旋轉RotateAnimation
- 包名:android.view.animation 基類Animation 核心子類,以及AnimationSet.
- property 動畫:
- 包名:android.animation 基類Animator 子類ValueAnimator和AnimatorSet
- ValueAnimator的子類有ObjectAnimator和 TimeAnimator,一般我們用屬性動畫ObjectAnimator.
- View 動畫:
Android中有時會使用比我們在manifest中設置的android:minSdkVersion版本更高的方法,此時編譯器會發生警告解決的方法是在方法上方添加@SuppressLink(“NewApi”) 或者 @TargetApi().
@SuppressLint(“NewApi”) 屏蔽一切新api中的才能使用的方法報的android lint錯誤。
@TargetApi() 只屏蔽某一新api中才能使用的方法報的android lint錯誤。
ListView中item不可點擊問題,無論怎麼點擊就是沒有反應啊,怎麼點都沒有反應,咋回事捏,以下是我的無敵解決方案
點擊item沒有反應,無法獲取焦點,多半的原因是自定義的item中存在Button ImageButton CheckBox等子控件,這些子控件會將焦點獲取到,因此常常變化的是子控件。這時應該使用descendantFocusability 來解決
- beforeDescendants:viewgroup會優先其子類控件而獲取到焦點
- afterDescendants:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點
- blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點
- 對圖片處理需要使用到matrix類,它是一個3 * 3 的矩陣,對圖片處理主要有四種基本類型
Translate | 平移 |
---|---|
Scale | 縮放 |
Rotate | 旋轉 |
Skew | 錯切 |
Android 顏色渲染,SweepGradient掃描/梯度渲染
public SweepGradient (float cx,float cy,int[]colors,float[]positions)
- cx:渲染中心x座標
- cy:渲染中心y座標
- colors:圍繞中心渲染的顏色數組,至少有兩種顏色值
- positions: 相對位置的顏色數組,若爲null,顏色沿着漸變線均勻分佈
Android註解支持
可以修飾你的代碼,幫助你發現bug,Android studio 基於這些註解校驗你的代碼並且標註其中潛在的問題。
support library現在由更小的庫組成:v4-support appcompat gridlayout media router
Android 設置透明、半透明效果
- 系統透明效果
android:background=“@android:color/transparent”
- ARGB控制
android:background=“#e000000”
半透明 - alpha控制
view.getBackground.setAlpha(100)
0~255表示透明度的值 - 窗體透明度,黑暗度設置技巧
WindowManager.LayoutParams lp=getWindow().getAttributes();
lp.alpha=0.3f;
getWindow().setAttributes(lp);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Android paint效果研究,paint類大體可以分爲兩類,一類與圖形繪製有關,一類與文本繪製有關
Method | Detailed |
---|---|
setAntiAlias(boolean aa) | 是否使用抗鋸齒功能,設置後會平滑一些,將會消耗較小資源 |
setDither(boolean dither) | 是否使用圖像抖動功能,顏色更加平滑和飽滿,圖像更加清晰 |
setMaskFilter(MaskFilter maskfilter) | 實現濾鏡的效果 |
setARGB(int a,int r,int g,int b) | a代表透明度 r,g,b 代表顏色值 |
setAlpha(a) | 設置透明度 |
setColor(int color) | 設置繪製的顏色,包括透明度及RGB顏色 |
setPathEffect(PathEffect effect) | 設置繪製路徑的效果,如點畫線 |
setShader(Shader shader) | 設置shader可以繪畫出各種漸變效果 |
setStyle(fill stroke fill_OR_stroke) | 設置畫筆的樣式 |
setStrokeWidth(float width) | 設置筆刷的粗細度 |
Android 屏蔽Button按鍵
- setClickable 意思是讓按鍵按一次,比如弄個計時器,然後在手機上模擬,多長時間後讓按鍵自己按一下而不是手動去按。
- setEnabled 讓一個按鍵可以被用戶按,或者不可按,當設置爲false的時候,按鍵會變成灰色,按上去沒有反應,當設置成ture時,纔會正常使用。
Android Bitmap getByteCount 和 getRowBytes
- getByteCount 用於計算位圖所佔的內存字節數
- getRowByte 用於計算位圖每一行所佔用的內存字節數
Android studio 獲取SHA1方法
- 在dos命令下輸入【cd .android】
- 進入 .android 目錄輸入[keytool -list -v -keystore debug.keystore]
- 輸入密鑰庫口令,默認的測試口令(密碼) 爲 android,輸入後即可查看
Anroid studio 導入project時設置導入選項講解
Gradle project :此處通常顯示的路徑並不是你的 Eclipse 的工作空間的目錄,而是 Eclipse 的工作空間的目錄中的 gradle 路徑。你需要手動刪除後面的 gradle ,否則項目導入,你是看不到你的代碼的,只能看到 gradle 目錄下的內容。(刪除默認路徑後面的 /gradle )
- Create directories for empty content roots automatically :不是很明白它的作用,一般默認即可。
- Use default gradle wrapper(recommended) 和 Use local gradle disribution :這兩個是讓你設置使用的 Gradle ,默認會勾選。
- Use default gradle wrapper(recommended) ,我們需要手動勾選 Use local gradle disribution 。
- Gradle home :勾選 Use local gradle disribution 後此項編程可編輯狀態,默認的此處的地址爲Android Studio安裝目錄中的 Gradle 路徑地址。此處可能會有一些錯誤的警告,提示內容爲: Gradle location is incorrect 。而你的這個目錄下,確實是有 Gradle 的。產生這個問題的原因,很可能是因爲 Gradle home 選項中,路徑中的斜槓爲 / 而不是 (**) 。你需要點擊左右的文件選擇按鈕,重新選擇到Android Studio安裝目錄中的 **Gradle ,問題即可解決。
當字符串是浮點型數字轉化成 int 技巧
String str = String.format("%1$s","5.0")
int a = Integer.parseInt(str)