Android 常用方法代码集合

jopen 10年前

 private static Contextcontext;    privatestatic Displaydisplay;    private static String TAG = "MyTools";      public MyTools(Context context) {    MyTools.context = context;    }      public static int getScreenHeight() // 获取屏幕高度    {    if (context ==null) {    Log.e("hck",TAG +"  getScreenHeight: " +"context 不能为空");    return 0;    }    display = ((Activity)context).getWindowManager().getDefaultDisplay();    return display.getHeight();    }      public static int getScreenWidth() // 获取屏幕宽度    {    if (context ==null) {    Log.e("hck",TAG +"  getScreenHeight: " +"context 不能为空");    return 0;    }    display = ((Activity)context).getWindowManager().getDefaultDisplay();    return display.getWidth();    }      public static String getSDK() {    return android.os.Build.VERSION.SDK;// SDK号      }      public static String getModel() // 手机型号    {    return android.os.Build.MODEL;    }      public static String getRelease() // android系统版本号    {    return android.os.Build.VERSION.RELEASE;    }      public static String getImei(Context context) // 获取手机身份证imei    {    TelephonyManager telephonyManager = (TelephonyManager) context    .getSystemService(Context.TELEPHONY_SERVICE);    return telephonyManager.getDeviceId();    }      public static String getVerName(Context context) { // 获取版本名字    try {    String pkName = context.getPackageName();    String versionName = context.getPackageManager().getPackageInfo(    pkName, 0).versionName;      return versionName;    } catch (Exception e) {    }    returnnull;    }      public static int getVerCode(Context context) {// 获取版本号    String pkName = context.getPackageName();    try {    int versionCode = context.getPackageManager().getPackageInfo(    pkName, 0).versionCode;    return versionCode;    } catch (NameNotFoundException e) {    e.printStackTrace();    }    return 0;    }      public static boolean isNetworkAvailable(Context context) {// 判断网络连接是否可用    // 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)    ConnectivityManager connectivity = (ConnectivityManager) context    .getSystemService(Context.CONNECTIVITY_SERVICE);    if (connectivity ==null)    returnfalse;    // 获取网络连接管理的对象    NetworkInfo info = connectivity.getActiveNetworkInfo();    if (info ==null || !info.isConnected())    returnfalse;    // 判断当前网络是否已经连接    return (info.getState() == NetworkInfo.State.CONNECTED);    }      public static String trim(String str, int limit) {// 字符串超出给定文字则截取    String mStr = str.trim();    return mStr.length() > limit ? mStr.substring(0, limit) : mStr;    }      public static String getTel(Context context) { // 获取手机号码,很多手机获取不到    TelephonyManager telManager = (TelephonyManager) context    .getSystemService(Context.TELEPHONY_SERVICE);    return telManager.getLine1Number();    }      public static String getMac(Context context) { // 获取时机mac地址    final WifiManager wifi = (WifiManager) context    .getSystemService(Context.WIFI_SERVICE);    if (wifi !=null) {    WifiInfo info = wifi.getConnectionInfo();    if (info.getMacAddress() !=null) {    return info.getMacAddress().toLowerCase(Locale.ENGLISH)    .replace(":","");    }    return"";    }    return"";    }      /**    * 將 像素 转换成 dp    *     * @param pxValue    *            像素    * @returndp    */    public static int px2dip(int pxValue) {    final float scale = context.getResources().getDisplayMetrics().density;    return (int) (pxValue / scale + 0.5f);    }      /**    * 將 畫素 轉換成 sp    *     * @param pixel    * @returnsp    */    publicstaticint px2sp(int px) {    float scaledDensity =context.getResources().getDisplayMetrics().scaledDensity;    return (int) (px / scaledDensity);    }      /**    * 將 dip 轉換成畫素 px    *     * @param dipValue    *            dip 像素的值    * @return 畫素px    */    public static int dip2px(float dipValue) {    final float scale = context.getResources().getDisplayMetrics().density;    return (int) (dipValue * scale + 0.5f);    }      public static int[][] getViewsPosition(List<View> views) {    int[][] location =newint[views.size()][2];    for (int index = 0; index < views.size(); index++) {    views.get(index).getLocationOnScreen(location[index]);    }    return location;    }      /**    * 传入一个view,返回一个int数组来存放 view在手机屏幕上左上角的绝对坐标    *     * @param views    *            传入的view    * @return 返回int型数组,location[0]表示x,location[1]表示y    */    public static int[] getViewPosition(View view) {    int[] location =newint[2];    view.getLocationOnScreen(location);    return location;    }      /**    * onTouch界面时指尖在views中的哪个view当中    *     * @param event    *            ontouch事件    * @param views    *            view list    * @return view    */    public static View getOnTouchedView(MotionEvent event, List<View> views) {    int[][] location = getViewsPosition(views);    for (int index = 0; index < views.size(); index++) {    if (event.getRawX() > location[index][0]    && event.getRawX() < location[index][0]    + views.get(index).getWidth()    && event.getRawY() > location[index][1]    && event.getRawY() < location[index][1]    + views.get(index).getHeight()) {    return views.get(index);    }    }    returnnull;    }      /**    * 将传进的图片存储在手机上,并返回存储路径    *     * @param photo    *            Bitmap 类型,传进的图片    * @return String 返回存储路径    */    public static String savePic(Bitmap photo, String name, String path) {    ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 创建一个    // outputstream    // 来读取文件流    photo.compress(Bitmap.CompressFormat.PNG, 100, baos);// 把 bitmap 的图片转换成    // jpge    // 的格式放入输出流中    byte[] byteArray = baos.toByteArray();    String saveDir = Environment.getExternalStorageDirectory()    .getAbsolutePath();    File dir = new File(saveDir +"/" + path);// 定义一个路径    if (!dir.exists()) {// 如果路径不存在,创建路径    dir.mkdir();    }    File file = new File(saveDir, name +".png");// 定义一个文件    if (file.exists())    file.delete(); // 删除原来有此名字文件,删除    try {    file.createNewFile();    FileOutputStream fos;    fos = new FileOutputStream(file);// 通过 FileOutputStream 关联文件    BufferedOutputStream bos = new BufferedOutputStream(fos); // 通过 bos    // 往文件里写东西    bos.write(byteArray);    bos.close();    } catch (FileNotFoundException e) {    e.printStackTrace();    } catch (IOException e) {    e.printStackTrace();    }    return file.getPath();    }      /**    * 回收 bitmap 减小系统占用的资源消耗    */    public static void destoryBimap(Bitmap photo) {    if (photo !=null && !photo.isRecycled()) {    photo.recycle();    photo = null;    }    }      /**    * 將輸入字串做 md5 編碼    *     * @param s    *            : 欲編碼的字串    * @return 編碼後的字串, 如失敗, 返回 ""    */    public static String md5(String s) {    try {    // Create MD5 Hash    MessageDigest digest = java.security.MessageDigest    .getInstance("MD5");    digest.update(s.getBytes("UTF-8"));    byte messageDigest[] = digest.digest();      // Create Hex String    StringBuffer hexString = new StringBuffer();    for (byte b : messageDigest) {    if ((b & 0xFF) < 0x10)    hexString.append("0");    hexString.append(Integer.toHexString(b & 0xFF));    }    return hexString.toString();    } catch (NoSuchAlgorithmException e) {    return"";    } catch (UnsupportedEncodingException e) {    return"";    }    }      publicstaticboolean isNumber(char c) {// 是否是数字    boolean isNumer =false;    if (c >= '0' && c <= '9') {    isNumer = true;    }    return isNumer;    }      public static boolean isEmail(String strEmail) {// 是否是正确的邮箱地址    String checkemail ="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";      Pattern pattern = Pattern.compile(checkemail);      Matcher matcher = pattern.matcher(strEmail);      return matcher.matches();    }      public static boolean isNull(String string) // 字符串是否为空    {    if (null == string ||"".equals(string)) {    returnfalse;    }    returntrue;    }      public static boolean isLenghtOk(String string,int max,int min)// 字符串长度检测    {    if (null != string) {    if (string.length() > max || string.length() < min) {    returnfalse;    }    }    returntrue;    }      public static boolean isLenghtOk(String string,int max)// 字符串长度是否    {    if (null != string) {    if (string.length() > max) {    returnfalse;    }    }    returntrue;    }      //用一种外部格式的字体,字体文件放在assets下面的fonts下面,名字叫whsn.ttf    获取字体样式:Typeface tencentTypeface=Typeface.createFromAsset(this.getAssets(), "fonts/whsn.ttf")    使用    textView.setTypeface(tencentTypeface);                  /**    *activity管理类,保证应用退出后,销毁所有创建的activity    **/      /**     * 应用程序Activity管理类:用于Activity管理和应用程序退出     * @author liux (http://my.oschina.net/liux)     * @version 1.0     * @created 2012-3-21     */    public class AppManager {    private static Stack<Activity> activityStack;    private static AppManager instance;    private AppManager(){}    /**    * 单一实例    */    public static AppManager getAppManager(){    if(instance==null){    instance=new AppManager();    }    returninstance;    }    /**    * 添加Activity到堆栈    */    public void addActivity(Activity activity){    if(activityStack==null){    activityStack=new Stack<Activity>();    }    activityStack.add(activity);    }    /**    * 获取当前Activity(堆栈中最后一个压入的)    */    public Activity currentActivity(){    Activity activity=activityStack.lastElement();    return activity;    }    /**    * 结束当前Activity(堆栈中最后一个压入的)    */    public void finishActivity(){    Activity activity=activityStack.lastElement();    finishActivity(activity);    }    /**    * 结束指定的Activity    */    public void finishActivity(Activity activity){    if(activity!=null){    activityStack.remove(activity);    activity.finish();    activity=null;    }    }    /**    * 结束指定类名的Activity    */    public void finishActivity(Class<?> cls){    for (Activity activity :activityStack) {    if(activity.getClass().equals(cls) ){    finishActivity(activity);    }    }    }    /**    * 结束所有Activity    */    public void finishAllActivity(){    for (int i = 0, size =activityStack.size(); i < size; i++){                if (null !=activityStack.get(i)){                activityStack.get(i).finish();                }        }    activityStack.clear();    }    /**    * 退出应用程序    */    public void AppExit(Context context) {    try {    finishAllActivity();    ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);    activityMgr.restartPackage(context.getPackageName());    System.exit(0);    } catch (Exception e) {}    }    }        //字符串相关工具类    private final static ThreadLocal<SimpleDateFormat> dateFormater = new ThreadLocal<SimpleDateFormat>() {    @Override    protected SimpleDateFormat initialValue() {    return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");    }    };      private final static ThreadLocal<SimpleDateFormat> dateFormater2 = new ThreadLocal<SimpleDateFormat>() {    @Override    protected SimpleDateFormat initialValue() {    return new SimpleDateFormat("yyyy-MM-dd");    }    };    /**    * 将字符串转位日期类型    * @param sdate    * @return    */    public static Date toDate(String sdate) {    try {    return dateFormater.get().parse(sdate);    } catch (ParseException e) {    return null;    }    }    /**    * 以友好的方式显示时间    * @param sdate    * @return    */    public static String friendly_time(String sdate) {    Date time = toDate(sdate);    if(time == null) {    return "Unknown";    }    String ftime = "";    Calendar cal = Calendar.getInstance();    //判断是否是同一天    String curDate = dateFormater2.get().format(cal.getTime());    String paramDate = dateFormater2.get().format(time);    if(curDate.equals(paramDate)){    int hour = (int)((cal.getTimeInMillis() - time.getTime())/3600000);    if(hour == 0)    ftime = Math.max((cal.getTimeInMillis() - time.getTime()) / 60000,1)+"分钟前";    else     ftime = hour+"小时前";    return ftime;    }    long lt = time.getTime()/86400000;    long ct = cal.getTimeInMillis()/86400000;    int days = (int)(ct - lt);    if(days == 0){    int hour = (int)((cal.getTimeInMillis() - time.getTime())/3600000);    if(hour == 0)    ftime = Math.max((cal.getTimeInMillis() - time.getTime()) / 60000,1)+"分钟前";    else     ftime = hour+"小时前";    }    else if(days == 1){    ftime = "昨天";    }    else if(days == 2){    ftime = "前天";    }    else if(days > 2 && days <= 10){     ftime = days+"天前";    }    else if(days > 10){    ftime = dateFormater2.get().format(time);    }    return ftime;    }    /**    * 判断给定字符串时间是否为今日    * @param sdate    * @return boolean    */    public static boolean isToday(String sdate){    boolean b = false;    Date time = toDate(sdate);    Date today = new Date();    if(time != null){    String nowDate = dateFormater2.get().format(today);    String timeDate = dateFormater2.get().format(time);    if(nowDate.equals(timeDate)){    b = true;    }    }    return b;    }    /**    * 判断给定字符串是否空白串。    * 空白串是指由空格、制表符、回车符、换行符组成的字符串    * 若输入字符串为null或空字符串,返回true    * @param input    * @return boolean    */    public static boolean isEmpty( String input )     {    if ( input == null || "".equals( input ) )    return true;    for ( int i = 0; i < input.length(); i++ )     {    char c = input.charAt( i );    if ( c != ' ' && c != '\t' && c != '\r' && c != '\n' )    {    return false;    }    }    return true;    }      /**    * 判断是不是一个合法的电子邮件地址    * @param email    * @return    */    public static boolean isEmail(String email){    if(email == null || email.trim().length()==0)     return false;        return emailer.matcher(email).matches();    }    /**    * 字符串转整数    * @param str    * @param defValue    * @return    */    public static int toInt(String str, int defValue) {    try{    return Integer.parseInt(str);    }catch(Exception e){}    return defValue;    }    /**    * 对象转整数    * @param obj    * @return 转换异常返回 0    */    public static int toInt(Object obj) {    if(obj==null) return 0;    return toInt(obj.toString(),0);    }    /**    * 对象转整数    * @param obj    * @return 转换异常返回 0    */    public static long toLong(String obj) {    try{    return Long.parseLong(obj);    }catch(Exception e){}    return 0;    }    /**    * 字符串转布尔值    * @param b    * @return 转换异常返回 false    */    public static boolean toBool(String b) {    try{    return Boolean.parseBoolean(b);    }catch(Exception e){}    return false;    }        /**    * 获取当前网络类型    * @return 0:没有网络   1:WIFI网络   2:WAP网络    3:NET网络    */    public int getNetworkType() {    int netType = 0;    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);    NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();    if (networkInfo == null) {    return netType;    }    int nType = networkInfo.getType();    if (nType == ConnectivityManager.TYPE_MOBILE) {    String extraInfo = networkInfo.getExtraInfo();    if(!StringUtils.isEmpty(extraInfo)){    if (extraInfo.toLowerCase().equals("cmnet")) {    netType = NETTYPE_CMNET;    } else {    netType = NETTYPE_CMWAP;    }    }    } else if (nType == ConnectivityManager.TYPE_WIFI) {    netType = NETTYPE_WIFI;    }    return netType;    }