Android 日常筆記

  1. android:ems=“10” 設置TextView或EditView的寬度爲10個字符,如果超過則不顯示。
  2. ImageView Scaletype 屬性,決定圖片在View上顯示的樣子,如,顯示整體還是部分或是縮放

    • center:按照圖片原來的size居中顯示,如果圖片的長寬大於View,則截取圖片的居中部分

    • center_crop:按比例擴大圖片的size居中顯示,使圖片的長寬大於或等於View的長寬

    • center_inside:將圖片的完整內容居中顯示,按比例縮小或是原來的size小於或等於View長寬

  3. Android 創建文件夾及注意事項
    File dir = new File(path);
    if (!dir.exists()) {
        dir.mkdirs();
    }

注意:創建文件夾時寫入文件,會存在沒有發現文件夾的錯誤,那是因爲沒有添加權限,需要添加權限 :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. 一個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。

  2. 聲明靜態方法注意事項
    • 它們僅能調用其他的靜態方法;
    • 它們只能訪問static類型的數據;
    • 它們不能以任何方式引用this或super
    • static靜態代碼塊在類加載時執行一次
  3. Android 動畫屬性,Android 動畫屬性分爲三類:
    • View 動畫:
      • 縮放ScaleAnimation
      • 透明度動畫AlphaAnimation
      • 移位動畫TranslateAnimation
      • 旋轉RotateAnimation
      • 包名:android.view.animation 基類Animation 核心子類,以及AnimationSet.
    • property 動畫:
      • 包名:android.animation 基類Animator 子類ValueAnimator和AnimatorSet
      • ValueAnimator的子類有ObjectAnimator和 TimeAnimator,一般我們用屬性動畫ObjectAnimator.
  4. Android中有時會使用比我們在manifest中設置的android:minSdkVersion版本更高的方法,此時編譯器會發生警告解決的方法是在方法上方添加@SuppressLink(“NewApi”) 或者 @TargetApi().

    • @SuppressLint(“NewApi”) 屏蔽一切新api中的才能使用的方法報的android lint錯誤。

    • @TargetApi() 只屏蔽某一新api中才能使用的方法報的android lint錯誤。

  5. ListView中item不可點擊問題,無論怎麼點擊就是沒有反應啊,怎麼點都沒有反應,咋回事捏,以下是我的無敵解決方案

    • 點擊item沒有反應,無法獲取焦點,多半的原因是自定義的item中存在Button ImageButton CheckBox等子控件,這些子控件會將焦點獲取到,因此常常變化的是子控件。這時應該使用descendantFocusability 來解決

      • beforeDescendants:viewgroup會優先其子類控件而獲取到焦點
      • afterDescendants:viewgroup只有當其子類控件不需要獲取焦點時才獲取焦點
      • blocksDescendants:viewgroup會覆蓋子類控件而直接獲得焦點
  6. 對圖片處理需要使用到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 設置透明、半透明效果

  1. 系統透明效果 android:background=“@android:color/transparent”
  2. ARGB控制 android:background=“#e000000” 半透明
  3. alpha控制 view.getBackground.setAlpha(100) 0~255表示透明度的值
  4. 窗體透明度,黑暗度設置技巧
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方法

  1. 在dos命令下輸入【cd .android】
  2. 進入 .android 目錄輸入[keytool -list -v -keystore debug.keystore]
  3. 輸入密鑰庫口令,默認的測試口令(密碼) 爲 android,輸入後即可查看

Anroid studio 導入project時設置導入選項講解

  • Gradle project :此處通常顯示的路徑並不是你的 Eclipse 的工作空間的目錄,而是 Eclipse 的工作空間的目錄中的 gradle 路徑。你需要手動刪除後面的 gradle ,否則項目導入,你是看不到你的代碼的,只能看到 gradle 目錄下的內容。(刪除默認路徑後面的 /gradle )

    1. Create directories for empty content roots automatically :不是很明白它的作用,一般默認即可。
    2. Use default gradle wrapper(recommended) 和 Use local gradle disribution :這兩個是讓你設置使用的 Gradle ,默認會勾選。
    3. Use default gradle wrapper(recommended) ,我們需要手動勾選 Use local gradle disribution 。
    4. 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)

關於WebSocket的應用,詳細博客

http://blog.csdn.net/yl02520/article/details/7296223

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章