Android 工具代碼

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章