我的开发常用工具类方法

总结一下开发中经常用到的工具方法。

/**
     * 屏蔽EditText的复制粘贴功能
     * @param editText
     * @param isCopyAndPasteAble
     */
    public static void copyAndPasteAble(EditText editText,boolean isCopyAndPasteAble){
        /**
         * 屏蔽复制粘贴功能
         */
        editText.setLongClickable(isCopyAndPasteAble);
        editText.setTextIsSelectable(isCopyAndPasteAble);
        editText.setCustomSelectionActionModeCallback(new ActionMode.Callback() {
            @Override
            public boolean onCreateActionMode(ActionMode mode, Menu menu) {
                return false;
            }

            @Override
            public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
                return false;
            }

            @Override
            public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
                return false;
            }

            @Override
            public void onDestroyActionMode(ActionMode mode) {

            }
        });
        editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);
    }
 /**
     * 设置EditText的提示信息字体大小
     * @param editText
     * @param hintTextSize
     */
    public static void setEditTextHintTextSize(EditText editText,int hintTextSize){
        SpannableString ss = new SpannableString(editText.getHint());//定义hint的值
        AbsoluteSizeSpan ass = new AbsoluteSizeSpan(hintTextSize,true);//设置字体大小 true表示单位是sp
        ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        editText.setHint(new SpannedString(ss));
    }
 /**
     * 格式化数字,列如:将-123432423423.134 格式化为 -123,432,423,423.134
     *
     * @param value
     * @return
     */
    public static DecimalFormat formatter = new DecimalFormat("####.##");
    public static String formatNumStyle(String value) {
        // d=123345.12945;
        if (!isNumber(value))
            return value;
        Double d = Double.valueOf(value);
        BigDecimal bg = new BigDecimal(d);
        // Logger.d("Utils   formatMoney   bg="+ bg);
        double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        // Logger.d("Utils   formatMoney   f1="+ bg);
        formatter.applyPattern(",###");
        String str = formatter.format(f1);

        if (".".equals(str))
            str = "0";
        return str;

    }

    /**
     * 判断数据字符是否是数字(能转成数字的)
     * @param strNumber 数字字符
     * @return 是数字字符返回true,不是返回false
     */
    public static boolean isNumber(String strNumber){
        boolean bolResult = false;
        BigDecimal temp;
        try {
            temp = new BigDecimal(strNumber);
            bolResult = true;
        } catch (NumberFormatException e) {
            e.getStackTrace();
        }
        return bolResult;
    }

    public static boolean isNumber2(String str) {
        String number = "0123456789-.";
        int len = str.length();
        for (int i = 0; i < len; i++) {
            char c = str.charAt(i);
            if (number.indexOf(String.valueOf(c)) == -1) {
                return false;
            }
        }
        return true;
    }
 /**
     * EditTextView 获取小数点后几位
     *
     * @param editText 控件
     * @param s        内容
     * @param i        位数
     */
    public static void limitDecimals(EditText editText, CharSequence s, int i) {
        //处理输入为小数点的后三位
        if (s.toString().contains(".")) {
            if (s.length() - 1 - s.toString().indexOf(".") > i) {
                s = s.toString().subSequence(0, s.toString().indexOf(".") + i + 1);
                editText.setText(s);
                editText.setSelection(s.length());//光标位置
            }
        }
        if (s.toString().trim().substring(0).equals(".")) {
            s = "0" + s;
            editText.setText(s);
            editText.setSelection(i);
        }

        if (s.toString().startsWith("0") && s.toString().trim().length() > 1) {
            if (!s.toString().substring(1, 2).equals(".")) {//beginIndex - 开始处的索引(包括)。endIndex - 结束处的索引(不包括)。
                editText.setText(s.subSequence(0, 1));
                editText.setSelection(1);
                return;
            }
        }
    }

    /**
     * 显示字符串的后n位,前面用“*”号代替
     * @param str  要代替的字符串
     * @param n   显示的位数
     * @return
     */

    public static String replaceSubString(String str,int n){
        String sub="";
        try {
            sub = str.substring(str.length()-n,str.length());
            StringBuffer sb=new StringBuffer();
            for(int i=0;i<str.length()-n;i++){
                sb=sb.append("*");
            }
            sub = sb.toString()+sub;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return sub;
    }

    /**
     * 生成0.0001的位数
     * @param count
     * @return
     */
    public static StringBuffer creatNum(int count) {
        StringBuffer sb = new StringBuffer();
        sb.append("0.");
        for(int i=1;i<count;i++){
            sb.append("0");
        }
        sb.append("1");
        return sb;
    }
 /**
     * 正则表达式
     * 去掉float后无用的0
     * 还原科学计数法的数值
     */
    public String clearZero(float number){
        String s = String.valueOf(number);
        if(s.indexOf(".") > 0){
            //正则表达
            s = s.replaceAll("0+?$", "");//去掉后面无用的零
            s = s.replaceAll("[.]$", "");//如小数点后面全是零则去掉小数点
        }
        /**
         *还原科学计数法
         */
        if (s.indexOf("E")!=-1){
            String sarr[] = s.split("E");
            double res1 = Double.valueOf(sarr[0]);
            int ci = Integer.valueOf(sarr[1]);
            double cinum = 10;
            if (ci>0){
                for(int i=0;i<ci;i++){
                    cinum = cinum*10;
                }
                double res = res1*cinum;

                String result = String.valueOf(res);

                return result;
            }else {
                ci = Math.abs(ci);
                StringBuffer sb = new StringBuffer();
                sb.append("0.");
                for(int i=1;i<ci;i++){
                    sb.append("0");
                }
                //去除1.0后面的.0
                String d = String.valueOf(res1);
                if(d.indexOf(".") > 0){
                    //正则表达
                    d = d.replaceAll("0+?$", "");//去掉后面无用的零
                    d = d.replaceAll("[.]$", "");//如小数点后面全是零则去掉小数点
                }
                sb.append(d);
                return sb.toString();
            }
        }
        return s;
    }
 /**
     * 使用BigDecimal类进行操作,防止精度丢失
     * 注意:new BigDecimal(...)填写构造函数的时候,一定要使用String,而不要使用float或者double,否则同样会引起精度丢失。
     * @param num1
     * @param num2
     * @return
     */
    public float BigDecimalSub(float num1,float num2){
        BigDecimal x1 = new BigDecimal(Float.toString(num1));
        BigDecimal x2 = new BigDecimal(Float.toString(num2));
        return x1.subtract(x2).floatValue();
    }
    /**
     * 使用BigDecimal类进行操作,防止精度丢失
     * 注意:new BigDecimal(...)填写构造函数的时候,一定要使用String,而不要使用float或者double,否则同样会引起精度丢失。
     * @param num1
     * @param num2
     * @return
     */
    public float BigDecimalAdd(float num1,float num2){
        BigDecimal x1 = new BigDecimal(Float.toString(num1));
        BigDecimal x2 = new BigDecimal(Float.toString(num2));
        return x1.add(x2).floatValue();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值