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 代表橫屏)