Android 開發有用程式碼積累

KingsLanding發表於2015-03-16

  Android開發需求變化快,開發週期要求儘量短,接下來一系列文章從實際使用出發總結一些常用的程式碼片段,便於查詢,也為後來人提供一份參考。

1.獲取Manifest的基本資訊(升級頁面和軟體關於頁面一般會使用到)


Context mContext = XXXApplication.getInstance().getApplicationContext(); //獲取Application的Context ,當然也可以獲取當前的Activity的Context, Application一般是單例 packageName = mContext.getPackageName(); //獲取包名,也就是manifest中的package選項的值 PackageInfo info = mContext.getPackageManager().getPackageInfo( mContext.getPackageName(), 0); //

String versionName = info.versionName;
int versionCode = info.versionCode;

2.獲取手機螢幕引數(對於螢幕適配很重要,畢竟Android手機的螢幕種類太多了)


Resources resources = XXXApplication.getInstance().getResources(); float scale = resources.getDisplayMetrics().density;//螢幕密度因子,用於在px與dp之間轉化 float scaledDensity = resources.getDisplayMetrics().scaledDensity; float disPlayWidth = resources.getDisplayMetrics().widthPixels; float disPlayHeight = resources.getDisplayMetrics().heightPixels;

  public static int dip2px(float dp) {
    return (int) (dp * scale + 0.5f);
  }

  public static int px2dip(float px) {
  return (int) (px / scale + 0.5f);
  }

  後面專門用篇文章來介紹一下我對不同螢幕適配的心得,今天就先介紹上面的程式碼。

 

3. 隱藏軟鍵盤

 
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);


//在含有EditText的頁面,有可能一進入該Activity軟鍵盤就彈出來,可以通過以下方法來禁止

 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

  

4. 安裝APK(比如說下載了升級軟體的時候,需要安裝替換舊版)


File apkfile = new File(apkFilePath); if (!apkfile.exists()) { return; } Intent i = new Intent(Intent.ACTION_VIEW); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); i.setDataAndType(Uri.parse("file://" + apkfile.toString()), "application/vnd.android.package-archive"); mContext.startActivity(i);

 

5. 設定TextView的文字大小

  TextView通過getTextSize()返回的值是px,setTextSize()卻是sp,所以一般不能直接用getTextSize()獲取的值來設定。可以指定setTextSize()的單位:

  TypedValue.COMPLEX_UNIT_PX : PX

  TypedValue.COMPLEX_UNIT_SP : SP

  TypedValue.COMPLEX_UNIT_DIP : DIP

  可以這樣使用:

 mTextView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.text_size)); //使用getDimension 是為了螢幕適配,這裡先點到為止

  

6. 手機震動功能

import android.app.Activity;  
import android.app.Service;  
import android.os.Vibrator;  
  
public class Myvibrator {   
    public static void Vibrate(final Activity activity, long milliseconds) {  
        Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);  
        vib.vibrate(milliseconds);  
    }  
     public static void Vibrate(final Activity activity, long[] pattern,boolean isRepeat) {  
         Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);  
         vib.vibrate(pattern, isRepeat ? 1 : -1);  
     }  
 }  

  在manifest檔案中需要增加許可權:<uses-permission android:name="android.permission.VIBRATE" />  。通過上面操作,我們可以使用Myvibrator所定義的函式了。兩個Vibrate函式的引數簡單介紹如下:

  final Activity activity :呼叫該方法的Activity例項
  long milliseconds :震動的時長,單位是毫秒

  long[] pattern :自定義震動模式 。陣列中數字的含義依次是[靜止時長,震動時長,靜止時長,震動時長。。。]時長的單位是毫秒

  boolean isRepeat : 是否反覆震動,如果是true,反覆震動,如果是false,只震動一次

7. 軟鍵盤彈出不把整個佈局頂起來

  在manifest檔案對應的activity中設定:android:windowSoftInputMode="adjustPan" 屬性

8. 設定Activity為橫屏或者豎屏

  在manifest檔案對應的activity中設定:android:screenOrientation="portrait" (豎屏,landscape 代表橫屏) 

 

相關文章