Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 開發中的一些小技巧

Android 開發中的一些小技巧

編輯:關於Android編程

dip轉px [java]   public int convertDipOrPx(int dip) {       float scale = MarketApplication.getMarketApplicationContext()               .getResources().getDisplayMetrics().density;       return (int) (dip * scale + 0.5f * (dip >= 0 ? 1 : -1));   }   獲取當前窗體,並添加自定義view: [java]   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圖片樣式: [java]   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);   }   =網絡================================== 判斷網絡是否可用: [java]  /**       * 網絡是否可用       *        * @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;       }   方法二: [java]    * 判斷網絡連接是否已開 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連接: [java]  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;   }   獲取下載文件的真實名字 [java]   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數組(微信分享就需要用到) [java]  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 [java]   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卡 [java]   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();               }           }       }   =系統============================== 根據包名打開一個應用程序 [java]  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是否安裝過 [java]  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 [java]  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 [java]  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卡是否可用 [java]   public boolean CheckSD() {       if (android.os.Environment.getExternalStorageState().equals(               android.os.Environment.MEDIA_MOUNTED)) {           return true;       } else {           return false;       }   }   創建快捷方式: [java]   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);   }   判斷快捷方式是否創建: [java]   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;       }   過濾特殊字符: [java]   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語句: [java]   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值: [java]  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);   }  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved