Android Utils

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq952290156/article/details/53694476

此文章作为utils积累使用

1、除法运算并保留任意位小数

    /**
     * 提供(相对)精确的除法运算。当发生除不尽的情况时,由scale参数指
     * 定精度,以后的数字四舍五入。
     * @param v1 被除数
     * @param v2 除数
     * @param scale 表示表示需要精确到小数点以后几位。
     * @return 两个参数的商
     */
    public static double div( double v1, double v2, int scale) {
        if (scale < 0) {
            throw new IllegalArgumentException(
                    "The scale must be a positive integer or zero");
        }
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.divide(b2, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

2、MD5加密

    /**
     * MD5加密
     * <br>http://stackoverflow.com/questions/1057041/difference-between-java-and-php5-md5-hash
     * <br>http://code.google.com/p/roboguice/issues/detail?id=89
     *
     * @param string 源字符串
     * @return 加密后的字符串
     */
    public static String md5(String string) {
        byte[] hash = null;
        try {
            hash = MessageDigest.getInstance("MD5").digest(
                    string.getBytes("UTF-8"));
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        StringBuilder hex = new StringBuilder(hash.length * 2);
        for (byte b : hash) {
            if ((b & 0xFF) < 0x10)
                hex.append("0");
            hex.append(Integer.toHexString(b & 0xFF));
        }
        return hex.toString();
    }

3、表情字符串(如:[0]) 替换成表情 显示

    /**
     *  表情字符串([0]) 替换成表情 显示
     *  from OSC InputHelper.java
     * @param res
     * @param s
     * @return
     */
    public static Spannable displayEmoji(Resources res, CharSequence s) {
        return displayEmoji(res, new SpannableString(s));
    }
    public static Spannable displayEmoji(Resources res, Spannable spannable){
        String str = spannable.toString();

        if (!str.contains(":") && !str.contains("[")) {
            return spannable;
        }

        Pattern pattern = Pattern.compile("(\\[[^\\[\\]:\\s\\n]+\\])|(:[^:\\[\\]\\s\\n]+:)");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()){
            String emojiStr = matcher.group();
            if (TextUtils.isEmpty(emojiStr)) continue;
            int resId = getEmojiResId(emojiStr);
            if (resId <= 0) continue;
            Drawable drawable = res.getDrawable(resId);
            if (drawable == null) continue;
            drawable.setBounds(0, 0, (int) UIUtils.dp2px(20), (int) UIUtils.dp2px(20));
            ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BOTTOM);
            spannable.setSpan(span, matcher.start(), matcher.end(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
        }

        return spannable;
    }

4、使系统更改字体大小无效

    /**
     * 使其系统更改字体大小无效
     */
    private void initTextSize() {
        Resources res = getResources();
        Configuration config = new Configuration();
        config.setToDefaults();
        res.updateConfiguration(config, res.getDisplayMetrics());
    }

将文字复制到剪切板

// 从API11开始android推荐使用android.content.ClipboardManager
// 为了兼容低版本我们这里使用旧版的android.text.ClipboardManager,虽然提示deprecated,但不影响使用。
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
// 将文本内容放到系统剪贴板里。
cm.setText(modelname + " " + regdate + " " + miles);

猜你喜欢

转载自blog.csdn.net/qq952290156/article/details/53694476