文档章节

Android开发中常用的工具类整理

谁带我去看看世界
 谁带我去看看世界
发布于 2015/05/14 10:35
字数 1812
阅读 157
收藏 2

 





来源 http://wujingchao.net/2015/03/16/android_common_utility_class.html


日志


package net.wujingchao.android.utility


import android.util.Log;


public final class L {


    private final static int LEVEL = 5;


    private final static String DEFAULT_TAG = "L";


    private L() {
        throw new UnsupportedOperationException("L cannot instantiated!");
    }


    public static void v(String tag,String msg) {
        if(LEVEL >= 5)Log.v(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
    }


    public static void d(String tag,String msg) {
        if(LEVEL >= 4)Log.d(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
    }


    public static void i(String tag,String msg) {
        if(LEVEL >= 3)Log.i(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
    }


    public static void w(String tag,String msg) {
        if(LEVEL >= 2)Log.w(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
    }


    public static void e(String tag,String msg) {
        if(LEVEL >= 1)Log.e(tag == null ? DEFAULT_TAG:tag,msg == null?"":msg);
    }
}
Toast


package net.wujingchao.android.utility        


import android.content.Context;
import android.widget.Toast;


public class T {


    private final static boolean isShow = true;


    private T(){
        throw new UnsupportedOperationException("T cannot be instantiated");
    }


    public static void showShort(Context context,CharSequence text) {
        if(isShow)Toast.makeText(context,text,Toast.LENGTH_SHORT).show();
    }


    public static void showLong(Context context,CharSequence text) {
        if(isShow)Toast.makeText(context,text,Toast.LENGTH_LONG).show();
    }
}
网络


package net.wujingchao.android.utility


import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;


import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;


public class NetworkUtil {
    
    private NetworkUtil() {
        throw new UnsupportedOperationException("NetworkUtil cannot be instantiated");
    }


    /**
     * 判断网络是否连接
     *
     */
    public static boolean isConnected(Context context)  {
        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (null != connectivity) {
            NetworkInfo info = connectivity.getActiveNetworkInfo();
            if (null != info && info.isConnected()){
                if (info.getState() == NetworkInfo.State.CONNECTED) {
                    return true;
                }
            }
        }
        return false;
    }


    /**
     * 判断是否是wifi连接
     */
    public static boolean isWifi(Context context){
        ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity == null) return false;
        return connectivity.getActiveNetworkInfo().getType() == ConnectivityManager.TYPE_WIFI;


    }


    /**
     * 打开网络设置界面
     */
    public static void openSetting(Activity activity) {
        Intent intent = new Intent("/");
        ComponentName componentName = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");
        intent.setComponent(componentName);
        intent.setAction("android.intent.action.VIEW");
        activity.startActivityForResult(intent, 0);
    }


    /**
     * 使用SSL不信任的证书
     */
    public static  void useUntrustedCertificate() {
        // Create a trust manager that does not validate certificate chains
        TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }
                    public void checkClientTrusted(
                            java.security.cert.X509Certificate[] certs, String authType) {
                    }
                    public void checkServerTrusted(
                            java.security.cert.X509Certificate[] certs, String authType) {
                    }
                }
        };
        // Install the all-trusting trust manager
        try {
            SSLContext sc = SSLContext.getInstance("SSL");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        } catch (Exception e) {
           e.printStackTrace();
        }
    }
}
像素单位转换


package net.wujingchao.android.utility        


import android.content.Context;
import android.util.TypedValue;


        public class DensityUtil {


    private DensityUtil() {
        throw new UnsupportedOperationException("DensityUtil cannot be instantiated");
    }


    public int dip2px(Context context,int dipValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int)(dipValue*scale + 0.5f);
    }


    public int px2dip(Context context,float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int)(pxValue/scale + 0.5f);
    }


    public static float px2sp(Context context, float pxValue){
        return (pxValue / context.getResources().getDisplayMetrics().scaledDensity);
    }


    public static int sp2px(Context context, int spValue){
        return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP,
                spValue, context.getResources().getDisplayMetrics());
    }
}
屏幕


package net.wujingchao.android.utility        


import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;


public class ScreenUtil {


    private ScreenUtil()
    {
        throw new UnsupportedOperationException("ScreenUtil cannot be instantiated");
    }


    public static int getScreenWidth(Context context)
    {
        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics outMetrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(outMetrics);
        return outMetrics.widthPixels;
    }


    public static int getScreenHeight(Context context) {
        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        DisplayMetrics outMetrics = new DisplayMetrics();
        wm.getDefaultDisplay().getMetrics(outMetrics);
        return outMetrics.heightPixels;
    }


    public static int getStatusHeight(Context context) {
        int statusHeight = -1;
        try {
            Class<?> clazz = Class.forName("com.android.internal.R$dimen");
            Object object = clazz.newInstance();
            int height = Integer.parseInt(clazz.getField("status_bar_height")
                    .get(object).toString());
            statusHeight = context.getResources().getDimensionPixelSize(height);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return statusHeight;
    }


    /**
     * 获取当前屏幕截图,包含状态栏
     */
    public static Bitmap snapShotWithStatusBar(Activity activity){
        View view = activity.getWindow().getDecorView();
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();
        Bitmap bmp = view.getDrawingCache();
        int width = getScreenWidth(activity);
        int height = getScreenHeight(activity);
        Bitmap bp = null;
        bp = Bitmap.createBitmap(bmp, 0, 0, width, height);
        view.destroyDrawingCache();
        return bp;
    }


    /**
     * 获取当前屏幕截图,不包含状态栏
     *
     */
    public static Bitmap snapShotWithoutStatusBar(Activity activity){
        View view = activity.getWindow().getDecorView();
        view.setDrawingCacheEnabled(true);
        view.buildDrawingCache();
        Bitmap bmp = view.getDrawingCache();
        Rect frame = new Rect();
        activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
        int statusBarHeight = frame.top;
        int width = getScreenWidth(activity);
        int height = getScreenHeight(activity);
        Bitmap bp = null;
        bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height
                - statusBarHeight);
        view.destroyDrawingCache();
        return bp;
    }
}
App相关


package net.wujingchao.android.utility        


import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;


public class AppUtil {


    private AppUtil() {
        throw new UnsupportedOperationException("AppUtil cannot instantiated");
    }


    /**
     * 获取app版本名
     */
    public static String getAppVersionName(Context context){
        PackageManager pm = context.getPackageManager();
        PackageInfo pi;
        try {
            pi = pm.getPackageInfo(context.getPackageName(),0);
            return pi.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return "";
    }


    /**
     * 获取应用程序版本名称信息
     */
    public static String getVersionName(Context context)
    {
        try{
            PackageManager packageManager = context.getPackageManager();
            PackageInfo packageInfo = packageManager.getPackageInfo(
                    context.getPackageName(), 0);
            return packageInfo.versionName;
        }catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }


    /**
     * 获取app版本号
     */
    public static int getAppVersionCode(Context context){
        PackageManager pm = context.getPackageManager();
        PackageInfo pi;
        try {
            pi = pm.getPackageInfo(context.getPackageName(),0);
            return pi.versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return 0;
    }
}
键盘


package net.wujingchao.android.utility


import android.content.Context;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;


public class KeyBoardUtil{


    private KeyBoardUtil(){
        throw new UnsupportedOperationException("KeyBoardUtil cannot be instantiated");
    }


    /**
     * 打卡软键盘
     */
    public static void openKeybord(EditText mEditText, Context mContext){
        InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,InputMethodManager.HIDE_IMPLICIT_ONLY);
    }
    /**
     * 关闭软键盘
     */
    public static void closeKeybord(EditText mEditText, Context mContext) {
        InputMethodManager imm = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
    }
}
文件上传下载


package net.wujingchao.android.utility


import android.content.Context;
import android.os.Environment;


import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File; 
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream; 
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.UUID;


import com.mixiaofan.App;


public class DownloadUtil {


         private static final int TIME_OUT = 30*1000; //超时时间


         private static final String CHARSET = "utf-8"; //设置编码


         private DownloadUtil() {
            throw new UnsupportedOperationException("DownloadUtil cannot be instantiated");
         }


    /**
     * @param  file  上传文件
     * @param  RequestURL 上传文件URL
     * @return  服务器返回的信息,如果出错则返回为null
     */
         public static String uploadFile(File file,String RequestURL) {
                 String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成 String PREFIX = "--" , LINE_END = "\r\n";
         String PREFIX = "--" , LINE_END = "\r\n";
         String CONTENT_TYPE = "multipart/form-data"; //内容类型
                 try {
                         URL url = new URL(RequestURL);
                         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
             conn.setReadTimeout(TIME_OUT);
             conn.setConnectTimeout(TIME_OUT);
             conn.setDoInput(true); //允许输入流
                         conn.setDoOutput(true); //允许输出流
                         conn.setUseCaches(false); //不允许使用缓存 
                         conn.setRequestMethod("POST"); //请求方式 
                         conn.setRequestProperty("Charset", CHARSET);
             conn.setRequestProperty("Cookie", "PHPSESSID=" + App.getSessionId());
                         //设置编码 
                         conn.setRequestProperty("connection", "keep-alive"); 
                         conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
                         if(file!=null) { 
                     /** * 当文件不为空,把文件包装并且上传 */
                     OutputStream outputSteam=conn.getOutputStream();
                     DataOutputStream dos = new DataOutputStream(outputSteam);
                     StringBuffer sb = new StringBuffer();
                     sb.append(PREFIX);
                     sb.append(BOUNDARY); sb.append(LINE_END);
                     /**
                     * 这里重点注意:
                     * name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件
                     * filename是文件的名字,包含后缀名的 比如:abc.png
                     */
                     sb.append("Content-Disposition: form-data; name=\"img\"; filename=\""+file.getName()+"\""+LINE_END);
                     sb.append("Content-Type: application/octet-stream; charset="+CHARSET+LINE_END);
                     sb.append(LINE_END);
                     dos.write(sb.toString().getBytes());
                     InputStream is = new FileInputStream(file);
                     byte[] bytes = new byte[1024];
                     int len;
                     while((len=is.read(bytes))!=-1)
                     {
                        dos.write(bytes, 0, len);
                     }
                     is.close();
                     dos.write(LINE_END.getBytes());
                     byte[] end_data = (PREFIX+BOUNDARY+PREFIX+LINE_END).getBytes();
                     dos.write(end_data);
                     dos.flush();
                     /**
                     * 获取响应码 200=成功
                     * 当响应成功,获取响应的流
                     */
                     ByteArrayOutputStream bos = new ByteArrayOutputStream();
                     InputStream resultStream = conn.getInputStream();
                     len = -1;
                     byte [] buffer = new byte[1024*8];
                     while((len = resultStream.read(buffer)) != -1) {
                         bos.write(buffer,0,len);
                     }
                     resultStream.close();
                     bos.flush();
                     bos.close();
                     String info = new String(bos.toByteArray());
                     int res = conn.getResponseCode();
                     if(res==200){
                        return info;
                     }else {
                         return null;
                     }
                            }
               } catch (MalformedURLException e) {
                    e.printStackTrace();
               } catch (ProtocolException e) {
                    e.printStackTrace();
               } catch (FileNotFoundException e) {
                    e.printStackTrace();
               } catch (IOException e) {
                     e.printStackTrace();
               }
         return null;
         }


     public static byte[] download(String urlStr) {
            HttpURLConnection conn = null;
            InputStream is = null;
            byte[] result = null;
            ByteArrayOutputStream bos = null;
            try {
                URL url = new URL(urlStr);
                conn = (HttpURLConnection) url.openConnection();
                conn.setRequestMethod("GET");
                conn.setConnectTimeout(TIME_OUT);
                conn.setReadTimeout(TIME_OUT);
                conn.setDoInput(true);
                conn.setUseCaches(false);//不使用缓存
                if(conn.getResponseCode() == 200) {
                    is = conn.getInputStream();
                    byte [] buffer = new byte[1024*8];
                    int len;
                    bos = new ByteArrayOutputStream();
                    while((len = is.read(buffer)) != -1) {
                        bos.write(buffer,0,len);
                    }
                    bos.flush();
                    result = bos.toByteArray();
                }
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if(bos != null){
                        bos.close();
                    }
                    if (is != null) {
                        is.close();
                    }
                    if (conn != null)conn.disconnect();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }


    /**
     * 获取缓存文件
     */
     public static File getDiskCacheFile(Context context,String filename,boolean isExternal) {
        if(isExternal && (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))) {
            return new File(context.getExternalCacheDir(),filename);
        }else {
            return new File(context.getCacheDir(),filename);
        }
    }


    /**
     * 获取缓存文件目录
     */
     public static File getDiskCacheDirectory(Context context) {
        if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            return context.getExternalCacheDir();
        }else {
            return context.getCacheDir();
        }
    }
}
加密


package net.wujingchao.android.utility


import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


public class CipherUtil { 


    private CipherUtil() {


    }


    //字节数组转化为16进制字符串
    public static String byteArrayToHex(byte[] byteArray) {
        char[] hexDigits = {'0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F' };
        char[] resultCharArray =new char[byteArray.length * 2];
        int index = 0;
        for (byte b : byteArray) {
            resultCharArray[index++] = hexDigits[b>>> 4 & 0xf];
            resultCharArray[index++] = hexDigits[b & 0xf];
        }
        return new String(resultCharArray);
    }


    //字节数组md5算法
    public static byte[] md5 (byte [] bytes) {
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("MD5");
            messageDigest.update(bytes);
            return messageDigest.digest();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
}
时间


package net.wujingchao.android.utility
import java.text.SimpleDateFormat;
import java.util.Date;




public class DateUtil {


    //转换中文对应的时段
    public static String convertNowHour2CN(Date date) {
        SimpleDateFormat sdf = new SimpleDateFormat("HH");
        String hourString = sdf.format(date);
        int hour = Integer.parseInt(hourString);
        if(hour < 6) {
            return "凌晨";
        }else if(hour >= 6 && hour < 12) {
            return "早上";
        }else if(hour == 12) {
            return "中午";
        }else if(hour > 12 && hour <=18) {
            return "下午";
        }else if(hour >=19) {
            return "晚上";
        }
        return "";
    }


    //剩余秒数转换
    public static String convertSecond2Day(int time) {
        int day = time/86400;
        int hour = (time - 86400*day)/3600;
        int min = (time - 86400*day - 3600*hour)/60;
        int sec = (time - 86400*day - 3600*hour - 60*min);
        StringBuilder sb = new StringBuilder();
        sb.append(day);
        sb.append("天");
        sb.append(hour);
        sb.append("时");
        sb.append(min);
        sb.append("分");
        sb.append(sec);
        sb.append("秒");
        return sb.toString();
    }


}

© 著作权归作者所有

谁带我去看看世界
粉丝 11
博文 11
码字总数 12762
作品 0
广州
私信 提问
Android开发中常用的工具类整理

昨天看到一个好的整理帖子,是关于Android开发中常用的工具类整理,整理得很好,其中包括日志、Toast、网络、像素单位转换、屏幕、App相关、键盘、文件上传下载、加密、时间等工具类,特意分...

谁带我去看看世界
2015/05/14
333
0
AndroidUtilCode 1.22.9 发布,安卓工具类库

AndroidUtilCode 1.22.9 已发布,AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发...

王练
2018/12/30
484
0
AndroidUtilCode 1.20.1 发布,安卓工具类库

AndroidUtilCode 1.20.1 已发布,AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发...

王练
2018/09/09
765
0
AndroidUtilCode 1.25.0 发布,安卓工具类库

AndroidUtilCode 1.25.0 发布了,AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 API 可以大大提高开发效...

xplanet
07/17
1K
1
AndroidUtilCode 1.22.7 发布,安卓工具类库

AndroidUtilCode 1.22.7 已发布,AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发...

王练
2018/12/25
642
2

没有更多内容

加载失败,请刷新页面

加载更多

nginx+tomcat配置https

1、nginx配置https和【proxy_set_header X-Forwarded-Proto $scheme;】 2、java代码: String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServe......

perofu
8分钟前
2
0
必看的Linux系统新手进阶老手心得

不知道从什么时候起,linux这个话题变得越来越普及,成为大家经常讨论的话题。无论在网络上还是实际生活中,竟然很多人都在纠结学习linux的问题。网络上给的答案千千万万,而却还有很多人踌躇...

Linux就该这么学
11分钟前
2
0
Spring Boot 配置元数据指南

1. 概览 在编写 Spring Boot 应用程序时,将配置属性映射到 Java bean 上是非常有用的。但是,记录这些属性的最好方法是什么呢? 在本教程中,我们将探讨 Spring Boot Configuration Proces...

liululee
14分钟前
2
0
foreach查找子类

$list = $menu_model -> menu_list();$parent_list = [];foreach ($list as $v){ if ($v['pid'] == 0) { $parent = $v; foreach ($list as $v1) ......

小小小壮
26分钟前
2
0
基于 HTML5 Canvas 实现的 TP-LINK 电信拓扑设备面板

前言 今天我们以真实的 TP-LINK 设备面板为模型,完成设备面板的搭建,和指示灯的闪烁和图元流动。 先来目睹下最终的实现效果:http://www.hightopo.com/demo/blog_tplink_20170511/index.h...

htdaydayup
32分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部