文章出處

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");

轉:http://my.eoe.cn/535140/archive/5889.html


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()