文章出處
文章列表
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、使用TransitionDrawable實現漸變效果(比使用AlphaAnimation效果要好,可避免出現閃爍問題)
private void setImageBitmap(ImageView imageView, Bitmap bitmap) { // Use TransitionDrawable to fade in. final TransitionDrawable td = new TransitionDrawable(new Drawable[] { new ColorDrawable(android.R.color.transparent), new BitmapDrawable(mContext.getResources(), bitmap) }); //noinspection deprecation imageView.setBackgroundDrawable(imageView.getDrawable()); imageView.setImageDrawable(td); td.startTransition(200); }
6、Android中dp、sp和px的相互轉換
(在此之前px和sp相互轉換一直都用density,后來才發現是錯的,有些手機上density和scaledDensity的值一樣所以沒發現有什么區別,但是在大分辨率的手機上兩個值不一樣,導致轉換出來的字體尺寸有問題)
/** * 將px值轉換為dip或dp值,保證尺寸大小不變 * * @param pxValue * @param scale(DisplayMetrics類中屬性density) * @return */ public static int px2dip(float pxValue, float scale) { return (int) (pxValue / scale + 0.5f); } /** * 將dip或dp值轉換為px值,保證尺寸大小不變 * * @param dipValue * @param scale(DisplayMetrics類中屬性density) * @return */ public static int dip2px(float dipValue, float scale) { return (int) (dipValue * scale + 0.5f); } /** * 將px值轉換為sp值,保證文字大小不變 * * @param pxValue * @param fontScale(DisplayMetrics類中屬性scaledDensity) * @return */ public static int px2sp(float pxValue, float fontScale) { return (int) (pxValue / fontScale + 0.5f); } /** * 將sp值轉換為px值,保證文字大小不變 * * @param spValue * @param fontScale(DisplayMetrics類中屬性scaledDensity) * @return */ public static int sp2px(float spValue, float fontScale) { return (int) (spValue * fontScale + 0.5f); } }
7、精確獲取屏幕尺寸(例如:3.5、4.0、5.0寸屏幕)
public static double getScreenPhysicalSize(Activity ctx) { DisplayMetrics dm = new DisplayMetrics(); ctx.getWindowManager().getDefaultDisplay().getMetrics(dm); double diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2) + Math.pow(dm.heightPixels, 2)); return diagonalPixels / (160 * dm.density); }
8、判斷是否是平板(官方用法)
public static boolean isTablet(Context context) { return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; }
9、啟動APK的默認Activity
public static void startApkActivity(final Context ctx, String packageName) { PackageManager pm = ctx.getPackageManager(); PackageInfo pi; try { pi = pm.getPackageInfo(packageName, 0); Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setPackage(pi.packageName); List<ResolveInfo> apps = pm.queryIntentActivities(intent, 0); ResolveInfo ri = apps.iterator().next(); if (ri != null) { String className = ri.activityInfo.name; intent.setComponent(new ComponentName(packageName, className)); ctx.startActivity(intent); } } catch (NameNotFoundException e) { Log.e("startActivity", e); } }
10、計算字寬
public static float GetTextWidth(String text, float Size) { TextPaint FontPaint = new TextPaint(); FontPaint.setTextSize(Size); return FontPaint.measureText(text); }
(注意如果設置了textStyle,還需要進一步設置TextPaint。)
11、半角、全角字符轉換
/** * 半角轉全角 * * @param input * String. * @return 全角字符串. */ public static String ToSBC(String input) { char c[] = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == ' ') { c[i] = 'u3000'; // 采用十六進制,相當于十進制的12288 } else if (c[i] < '177') { // 采用八進制,相當于十進制的127 c[i] = (char) (c[i] + 65248); } } return new String(c); } /** * 全角轉半角 * * @param input * String. * @return 半角字符串 */ public static String ToDBC(String input) { char c[] = input.toCharArray(); for (int i = 0; i < c.length; i++) { if (c[i] == 'u3000') { c[i] = ' '; } else if (c[i] > 'uFF00' && c[i] < 'uFF5F') { c[i] = (char) (c[i] - 65248); } } String returnString = new String(c); return returnString; }
12、查看應用最高可用內存
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024); Log.d("TAG", "Max memory is " + maxMemory + "KB");
文章列表
全站熱搜