1.獲取應用下的所以Activity
public static ArrayList<String> getActivities(Context ctx) {
ArrayList<String> result = new ArrayList<String>();
Intent intent = new Intent(Intent.ACTION_MAIN, null);
intent.setPackage(ctx.getPackageName());
for (ResolveInfo info : ctx.getPackageManager().queryIntentActivities(intent, 0)) {
result.add(info.activityInfo.name);
}
return result;
}
2.檢測字符串中是否包含漢字
public static boolean checkChinese(String sequence) {
final String format = "[\\u4E00-\\u9FA5\\uF900-\\uFA2D]";
boolean result = false;
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(sequence);
result = matcher.find();
return result;
}
3、檢測字符串中只能包含:中文、數字、下劃線(_)、橫線(-)
public static boolean checkNickname(String sequence) {
final String format = "[^\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w-_]";
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(sequence);
return !matcher.find();
}
4.檢測有沒有應用程序來接受你處理髮出的Intent
public static boolean isIntentAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(action);
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
5.判斷手機號碼是否有效
/**
* 判斷手機號碼是否有效
* @param phoneNumber
* @return
*/
public static boolean isMobileNumber(String phoneNumber) {
final Pattern p = Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");
final Pattern p2 = Pattern.compile("^0(10|2[0-5789]|\\d{3})\\d{7,8}$");
final Matcher m = p.matcher(phoneNumber);
final Matcher m2 = p2.matcher(phoneNumber);
return m.find() || m2.find();
}
6.獲取當前版本跟服務器版本的差
/**
* 獲取當前版本跟服務器獲取的版本的差
*
* @param serviceVersion
* @return
*/
private void compareVersion(int serviceVersion) {
int currentVersion = 0;
try {
currentVersion = ((LoginActivity.this).getPackageManager().getPackageInfo(LoginActivity.this.getPackageName(), 0)).versionCode;
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (serviceVersion > currentVersion) {
showVersionDialog();
}
}
7.返回當前正在運行的服務
//返回所有正在運行的服務
List<ActivityManager.RunningServiceInfo> serviceInfos = activityManager.getRunningServices(100);
for (int i = 0; i < serviceInfos.size(); i++) {
ActivityManager.RunningServiceInfo runningServiceInfo = serviceInfos.get(i);
if ("com.nenglong.babyface.service.UpdateService".equals(runningServiceInfo.service.getClassName())) {
isDowning = true;
return;
}
}
8.根據圖片尺寸加載圖片
/**
* 【Bunny】根據容器尺寸加載圖片
*
* @param path 圖片路徑
* @param width 容器寬度
* @param height 容器高度
* @param coverable 圖片尺寸是否可以完全覆蓋容器
* @return 不小於容器尺寸的最大縮放比圖片
*/
public static Bitmap loadSuitableBitmap(String path, int width, int height, boolean coverable) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(path, options);
int widthRatio = options.outWidth / width;
int heightRatio = options.outHeight / height;
options.inSampleSize = coverable ? Math.min(widthRatio, heightRatio) : Math.max(widthRatio, heightRatio);
options.inJustDecodeBounds = false;
options.inPurgeable = true;
options.inInputShareable = true;
return BitmapFactory.decodeFile(path, options);
}
9.根據圖片尺寸延時到佈局時設置圖片對象
/**
* 【Bunny】根據圖片組件尺寸延時到佈局時設置圖片對象
*
* @param path 圖片路徑
* @param imageView 圖片組件
* @param coverable 圖片尺寸是否可以完全覆蓋容器
*/
public static void setSuitableBitmapOnGlobalLayout(final String path, final ImageView imageView, final boolean coverable) {
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
imageView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
imageView.setImageBitmap(loadSuitableBitmap(path, imageView.getWidth(), imageView.getHeight(), coverable));
}
});
imageView.requestLayout();
}
});
}
10.顯示設置網絡對話框
/**
* 顯示網絡設置對話框
* @param context
*/
public static void showSetNetworkDialog(final Context context) {
Dialog dialog = new AlertDialog.Builder(context)
.setIcon(android.R.drawable.presence_busy)
.setTitle("網絡不可")
.setMessage("是否現在設置網絡?")
.setPositiveButton("設置網絡",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
context.startActivity(new Intent(
Settings.ACTION_WIRELESS_SETTINGS));
}
})
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int whichButton) {
dialog.cancel();
}
}).create();
dialog.show();
}
11.查看網絡是否可用
/**
* 網絡是否可用
*
* @param context
* @return
*/
public static boolean isNetworkAvailableAndshowSetNetworkDialog(Context context) {
ConnectivityManager mgr = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo[] info = mgr.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
showSetNetworkDialog(context);
return false;
}
12.是否存在SD卡
/**
* 是否存在SD卡
* @return
*/
public static boolean isExistSDCard() {
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))
return true;
else
return false;
}
13.Drawable轉化成Bitmap
/**
* 把Drawable轉化成Bitmap
* @param drawable
* @return Bitmap圖片
*/
public static Bitmap drawableToBitmap(Drawable drawable) {
// 取 drawable 的長寬
int w = drawable.getIntrinsicWidth();
int h = drawable.getIntrinsicHeight();
// 取 drawable 的顏色格式
Bitmap.Config config = drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
: Bitmap.Config.RGB_565;
// 建立對應 bitmap
Bitmap bitmap = Bitmap.createBitmap(w, h, config);
// 建立對應 bitmap 的畫布
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, w, h);
// 把 drawable 內容畫到畫布中
drawable.draw(canvas);
return bitmap;
}
14.打電話彈出框
/**
* 打電話彈出對話框
*
* @param activity
* 對應的Activity
* @param phoneNum
* 對應的電話號碼
* @param userName
* 對應的撥打用戶的名字
*/
public static void CallPhoneDialog(final Activity activity, final String phoneNum,
String userName) {
AlertDialog.Builder builder = new Builder(activity);
builder.setMessage(activity.getString(R.string.call_person) + userName + "\n"
+ activity.getString(R.string.call_num) + phoneNum);
builder.setIcon(R.drawable.menu_fold_ori).setTitle(activity.getString(R.string.prompt));
builder.setPositiveButton(activity.getString(R.string.confirm),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + phoneNum));
activity.startActivity(intent);
}
});
builder.setNegativeButton(activity.getString(R.string.cancle),
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.create().show();
}
15.文字根據狀態改變顏色
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="#53c1bd" android:state_selected="true"/>
<item android:color="#53c1bd" android:state_focused="true"/>
<item android:color="#53c1bd" android:state_pressed="true"/>
<item android:color="#777777"/>
</selector>
16.根據狀態改變背景色,直接給背景色會報錯
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"><shape> <gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />
</shape></item>
<item android:state_focused="true"><shape>
<gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />
</shape></item>
<item android:state_pressed="true"><shape>
<gradient android:angle="0" android:centerColor="#00a59f" android:endColor="#00a59f" android:startColor="#00a59f" />
</shape></item>
<item><shape>
<gradient android:angle="0" android:centerColor="#00ff00" android:endColor="00ff00" android:startColor="00ff00" />
</shape></item>
</selector>
注:部分代碼轉載自 農民伯伯:http://www.cnblogs.com/over140/archive/2012/09/26/2611999.html
http://www.cnblogs.com/over140/archive/2013/03/05/2706068.html