zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android 开发中的一些小技巧详解手机开发

Android手机开发 详解 技巧 一些
2023-06-13 09:20:07 时间
 public int convertDipOrPx(int dip) { 

 float scale = MarketApplication.getMarketApplicationContext() 

 .getResources().getDisplayMetrics().density; 

 return (int) (dip * scale + 0.5f * (dip = 0 ? 1 : -1)); 

 }
获取当前窗体,并添加自定义view:
getWindowManager() 

 .addView( 

 overlay, 

 new WindowManager.LayoutParams( 

 LayoutParams.WRAP_CONTENT, 

 LayoutParams.WRAP_CONTENT, 

 WindowManager.LayoutParams.TYPE_APPLICATION, 

 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE 

 | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE, 

 PixelFormat.TRANSLUCENT)); 

自定义fastScrollBar图片样式:
 try { 

 Field f = AbsListView.class.getDeclaredField("mFastScroller"); 

 f.setAccessible(true); 

 Object o = f.get(listView); 

 f = f.getType().getDeclaredField("mThumbDrawable"); 

 f.setAccessible(true); 

 Drawable drawable = (Drawable) f.get(o); 

 drawable = getResources().getDrawable(R.drawable.ic_launcher); 

 f.set(o, drawable); 

 Toast.makeText(this, f.getType().getName(), 1000).show(); 

 } catch (Exception e) { 

 throw new RuntimeException(e); 

 }
=网络================================== 判断网络是否可用:
/** 

 * 网络是否可用 

 * @param context 

 * @return 

 public static boolean isNetworkAvailable(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; 

 return false; 

 }

方法二:

 /* 

 * 判断网络连接是否已开 2012-08-20true 已打开 false 未打开 

 public static boolean isConn(Context context) { 

 boolean bisConnFlag = false; 

 ConnectivityManager conManager = (ConnectivityManager) context 

 .getSystemService(Context.CONNECTIVITY_SERVICE); 

 NetworkInfo network = conManager.getActiveNetworkInfo(); 

 if (network != null) { 

 bisConnFlag = conManager.getActiveNetworkInfo().isAvailable(); 

 return bisConnFlag; 

 }
判断是不是Wifi连接:
 public static boolean isWifiActive(Context icontext) { 

 Context context = icontext.getApplicationContext(); 

 ConnectivityManager connectivity = (ConnectivityManager) context 

 .getSystemService(Context.CONNECTIVITY_SERVICE); 

 NetworkInfo[] info; 

 if (connectivity != null) { 

 info = connectivity.getAllNetworkInfo(); 

 if (info != null) { 

 for (int i = 0; i info.length; i++) { 

 if (info[i].getTypeName().equals("WIFI") 

 info[i].isConnected()) { 

 return true; 

 return false; 

 }
判断当前网络类型
/** 

 * 网络方式检查 

 private static int netCheck(Context context) { 

 ConnectivityManager conMan = (ConnectivityManager) context 

 .getSystemService(Context.CONNECTIVITY_SERVICE); 

 State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE) 

 .getState(); 

 State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI) 

 .getState(); 

 if (wifi.equals(State.CONNECTED)) { 

 return DO_WIFI; 

 } else if (mobile.equals(State.CONNECTED)) { 

 return DO_3G; 

 } else { 

 return NO_CONNECTION; 

 }
获取下载文件的真实名字
 public String getReallyFileName(String url) { 

 StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder() 

 .detectDiskReads().detectDiskWrites().detectNetwork() // 这里可以替换为detectAll() 

 // 就包括了磁盘读写和网络I/O 

 .penaltyLog() // 打印logcat,当然也可以定位到dropbox,通过文件保存相应的log 

 .build()); 

 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() 

 .detectLeakedSqlLiteObjects() // 探测SQLite数据库操作 

 .penaltyLog() // 打印logcat 

 .penaltyDeath().build()); 

 String filename = ""; 

 URL myURL; 

 HttpURLConnection conn = null; 

 if (url == null || url.length() 1) { 

 return null; 

 try { 

 myURL = new URL(url); 

 conn = (HttpURLConnection) myURL.openConnection(); 

 conn.connect(); 

 conn.getResponseCode(); 

 URL absUrl = conn.getURL();// 获得真实Url 

 // 打印输出服务器Header信息 

 // Map String, List String map = conn.getHeaderFields(); 

 // for (String str : map.keySet()) { 

 // if (str != null) { 

 // Log.e("H3c", str + map.get(str)); 

 // } 

 // } 

 filename = conn.getHeaderField("Content-Disposition");// 通过Content-Disposition获取文件名,这点跟服务器有关,需要灵活变通 

 if (filename == null || filename.length() 1) { 

 filename = URLDecoder.decode(absUrl.getFile(), "UTF-8"); 

 } catch (MalformedURLException e) { 

 e.printStackTrace(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 } finally { 

 if (conn != null) { 

 conn.disconnect(); 

 conn = null; 

 return filename; 

 }
=图片========================== bitmap转Byte数组(微信分享就需要用到)
public byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) { 

 ByteArrayOutputStream output = new ByteArrayOutputStream(); 

 bmp.compress(CompressFormat.PNG, 100, output); 

 if (needRecycle) { 

 bmp.recycle(); 

 byte[] result = output.toByteArray(); 

 try { 

 output.close(); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 return result; 

 }

Resources转Bitmap

public Bitmap loadBitmap(Resources res, int id) { 

 BitmapFactory.Options opt = new BitmapFactory.Options(); 

 opt.inPreferredConfig = Bitmap.Config.RGB_565; 

 opt.inPurgeable = true; 

 opt.inInputShareable = true; 

 InputStream is = res.openRawResource(id);// 获取资源图片 

 return BitmapFactory.decodeStream(is, null, opt); 

 }

保存图片到SD卡

public void saveBitmapToFile(String url, String filePath) { 

 File iconFile = new File(filePath); 

 if (!iconFile.getParentFile().exists()) { 

 iconFile.getParentFile().mkdirs(); 

 if (iconFile.exists() iconFile.length() 0) { 

 return; 

 FileOutputStream fos = null; 

 InputStream is = null; 

 try { 

 fos = new FileOutputStream(filePath); 

 is = new URL(url).openStream(); 

 int data = is.read(); 

 while (data != -1) { 

 fos.write(data); 

 data = is.read(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 } finally { 

 try { 

 if (is != null) { 

 is.close(); 

 if (fos != null) { 

 fos.close(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 }
=系统============================== 根据包名打开一个应用程序
 public boolean openApp(String packageName) { 

 PackageInfo pi = null; 

 try { 

 pi = mPM.getPackageInfo(packageName, 0); 

 } catch (NameNotFoundException e) { 

 e.printStackTrace(); 

 return false; 

 if (pi == null) { 

 return false; 

 Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); 

 resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); 

 resolveIntent.setPackage(pi.packageName); 

 List ResolveInfo apps = mPM.queryIntentActivities(resolveIntent, 0); 

 ResolveInfo ri = null; 

 try { 

 ri = apps.iterator().next(); 

 } catch (Exception e) { 

 return true; 

 if (ri != null) { 

 String tmpPackageName = ri.activityInfo.packageName; 

 String className = ri.activityInfo.name; 

 Intent intent = new Intent(Intent.ACTION_MAIN); 

 intent.addCategory(Intent.CATEGORY_LAUNCHER); 

 ComponentName cn = new ComponentName(tmpPackageName, className); 

 intent.setComponent(cn); 

 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

 MarketApplication.getMarketApplicationContext().startActivity( 

 intent); 

 } else { 

 return false; 

 return true; 

 }
判断是否APK是否安装过
public boolean checkApkExist(Context context, String packageName) { 

 if (packageName == null || "".equals(packageName)) 

 return false; 

 try { 

 ApplicationInfo info = context.getPackageManager() 

 .getApplicationInfo(packageName, 

 PackageManager.GET_UNINSTALLED_PACKAGES); 

 return true; 

 } catch (NameNotFoundException e) { 

 return false; 

 } catch (NullPointerException e) { 

 return false; 

 }
安装APK
 public void installApk(Context context, String strFileAllName) { 

 File file = new File(strFileAllName); 

 Intent intent = new Intent(); 

 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

 intent.setAction(Intent.ACTION_VIEW); 

 String type = "application/vnd.android.package-archive"; 

 intent.setDataAndType(Uri.fromFile(file), type); 

 context.startActivity(intent); 

 }
卸载APK
 public void UninstallApk(Context context, String strPackageName) { 

 Uri packageURI = Uri.parse("package:" + strPackageName); 

 Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI); 

 context.startActivity(uninstallIntent); 

 }
判断SD卡是否可用
 public boolean CheckSD() { 

 if (android.os.Environment.getExternalStorageState().equals( 

 android.os.Environment.MEDIA_MOUNTED)) { 

 return true; 

 } else { 

 return false; 

 }
创建快捷方式:
 public void createShortCut(Context contxt) { 

 // if (isInstallShortcut()) {// 如果已经创建了一次就不会再创建了 

 // return; 

 // } 

 Intent sIntent = new Intent(Intent.ACTION_MAIN); 

 sIntent.addCategory(Intent.CATEGORY_LAUNCHER);// 加入action,和category之后,程序卸载的时候才会主动将该快捷方式也卸载 

 sIntent.setClass(contxt, Login.class); 

 Intent installer = new Intent(); 

 installer.putExtra("duplicate", false); 

 installer.putExtra("android.intent.extra.shortcut.INTENT", sIntent); 

 installer.putExtra("android.intent.extra.shortcut.NAME", "名字"); 

 installer.putExtra("android.intent.extra.shortcut.ICON_RESOURCE", 

 Intent.ShortcutIconResource 

 .fromContext(contxt, R.drawable.icon)); 

 installer.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 

 contxt.sendBroadcast(installer); 

 }
判断快捷方式是否创建:
private boolean isInstallShortcut() { 

 boolean isInstallShortcut = false; 

 final ContentResolver cr = MarketApplication 

 .getMarketApplicationContext().getContentResolver(); 

 String AUTHORITY = "com.android.launcher.settings"; 

 Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY 

 + "/favorites?notify=true"); 

 Cursor c = cr.query(CONTENT_URI, 

 new String[] { "title", "iconResource" }, "title=?", 

 new String[] { "名字" }, null); 

 if (c != null c.getCount() 0) { 

 isInstallShortcut = true; 

 if (c != null) { 

 c.close(); 

 if (isInstallShortcut) { 

 return isInstallShortcut; 

 AUTHORITY = "com.android.launcher2.settings"; 

 CONTENT_URI = Uri.parse("content://" + AUTHORITY 

 + "/favorites?notify=true"); 

 c = cr.query(CONTENT_URI, new String[] { "title", "iconResource" }, 

 "title=?", new String[] { "名字" }, null); 

 if (c != null c.getCount() 0) { 

 isInstallShortcut = true; 

 if (c != null) { 

 c.close(); 

 AUTHORITY = "com.baidu.launcher"; 

 CONTENT_URI = Uri.parse("content://" + AUTHORITY 

 + "/favorites?notify=true"); 

 c = cr.query(CONTENT_URI, new String[] { "title", "iconResource" }, 

 "title=?", new String[] { "名字" }, null); 

 if (c != null c.getCount() 0) { 

 isInstallShortcut = true; 

 if (c != null) { 

 c.close(); 

 return isInstallShortcut; 

 }
过滤特殊字符:
 private String StringFilter(String str) throws PatternSyntaxException { 

 // 只允许字母和数字 

 // String regEx = "[^a-zA-Z0-9]"; 

 // 清除掉所有特殊字符 

 String regEx = "[`~!@#$%^ *()+=|{}:;,//[//]. /?~!@#¥%…… *()——+|{}【】‘;:”“’。,、?]"; 

 Pattern p = Pattern.compile(regEx); 

 Matcher m = p.matcher(str); 

 return m.replaceAll("").trim(); 

 }
执行shell语句:
 public int execRootCmdSilent(String cmd) { 

 int result = -1; 

 DataOutputStream dos = null; 

 try { 

 Process p = Runtime.getRuntime().exec("su"); 

 dos = new DataOutputStream(p.getOutputStream()); 

 dos.writeBytes(cmd + "/n"); 

 dos.flush(); 

 dos.writeBytes("exit/n"); 

 dos.flush(); 

 p.waitFor(); 

 result = p.exitValue(); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 } finally { 

 if (dos != null) { 

 try { 

 dos.close(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 return result; 

 }
获得文件MD5值:
 public String getFileMD5(File file) { 

 if (!file.isFile()) { 

 return null; 

 MessageDigest digest = null; 

 FileInputStream in = null; 

 byte buffer[] = new byte[1024]; 

 int len; 

 try { 

 digest = MessageDigest.getInstance("MD5"); 

 in = new FileInputStream(file); 

 while ((len = in.read(buffer, 0, 1024)) != -1) { 

 digest.update(buffer, 0, len); 

 } catch (Exception e) { 

 e.printStackTrace(); 

 return null; 

 } finally { 

 if (in != null) { 

 try { 

 in.close(); 

 } catch (IOException e) { 

 e.printStackTrace(); 

 BigInteger bigInt = new BigInteger(1, digest.digest()); 

 return bigInt.toString(16); 

 }

转自:http://blog.csdn.net/h3c4lenovo/article/details/16879435

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/3273.html

服务器部署程序员系统优化网站设置运维