Android 工具代码
16lz
2021-01-23
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 blocke.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() {@Overridepublic 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() {@Overridepublic 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() {@Overridepublic 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
更多相关文章
- [Android] 调用相机、打开相册、裁剪图片
- Android 图片加载总结帖
- 背景图片颜色渐变
- Android TextView显示html图片
- Android EditText加入图片混编显示
- android 查看图片、保存图片
- android 图片圆角处理
- android 显示 网络图片
- Android 检测网络是否可用