Android 工具类收集


String相关

手机号加密显示

public static String passPhone(String phone) {
  if(null!=phone&&phone.length() ==11){       
     return phone.substring(0, 3) + "****" + phone.substring(7);    
  }else{
    return phone;
  }
}

屏幕相关

    /**
     * 获取屏幕的宽度
     * */
    public static int getScreenWidth(Context context) {
        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        return  wm.getDefaultDisplay().getWidth();

    }

    /**
     * 屏幕的高度
     * */
    public static int getScreenHeight(Context context) {
        WindowManager wm = (WindowManager) context
                .getSystemService(Context.WINDOW_SERVICE);
        return  wm.getDefaultDisplay().getHeight();

    }


    /**
     * 将px值转换为dip或dp值,保证尺寸大小不变
     *
     * @param pxValue
     *            ( scale DisplayMetrics类中属性density)
     * @return
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 将dip或dp值转换为px值,保证尺寸大小不变
     *
     * @param dipValue
     *
     *            (DisplayMetrics类中属性density)
     * @return
     */
    public static int dip2px(Context context, float dipValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }

    /**
     * 将px值转换为sp值,保证文字大小不变
     *
     * @param pxValue
     *            (DisplayMetrics类中属性scaledDensity)
     * @return
     */
    public static int px2sp(Context context, float pxValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (pxValue / fontScale + 0.5f);
    }

    /**
     * 将sp值转换为px值,保证文字大小不变
     *
     * @param spValue
     *            (DisplayMetrics类中属性scaledDensity)
     * @return
     */
    public static int sp2px(Context context, float spValue) {
        final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
        return (int) (spValue * fontScale + 0.5f);
    }



    /**
     * 获取屏幕中控件顶部位置的高度--即控件顶部的Y点
     *
     * @return
     */
    public static int getScreenViewTopHeight(View view) {
        return view.getTop();
    }

    /**
     * 获取屏幕中控件底部位置的高度--即控件底部的Y点
     *
     * @return
     */
    public static int getScreenViewBottomHeight(View view) {
        return view.getBottom();
    }

    /**
     * 获取屏幕中控件左侧的位置--即控件左侧的X点
     *
     * @return
     */
    public static int getScreenViewLeftHeight(View view) {
        return view.getLeft();
    }

    /**
     * 获取屏幕中控件右侧的位置--即控件右侧的X点
     *
     * @return
     */
    public static int getScreenViewRightHeight(View view) {
        return view.getRight();
    }

网络相关

    /**
     * 判断网络是否可用的方法
     * @param context
     * @return
     */
    public static boolean isOpenNetwork(Context context) {
        ConnectivityManager connectivity = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivity != null) {
            NetworkInfo[] info = connectivity.getAllNetworkInfo();
            if (info != null)
                for (int i = 0; i < info.length; i++)
                    if (info[i].getState() == NetworkInfo.State.CONNECTED) {
                        return true;
                    }
        }
        return false;
    }

    /**
     * 判断WIFI网络是否可用的方法
     * @param context
     * @return
     */
    public static boolean isOpenWifi(Context context) {
        ConnectivityManager connManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo mWifi = connManager
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        return mWifi.isConnected();
    }

控件相关

    /**
     * 设置控件Text
     * @param v
     * @param text
     */
    public static void setText(View v, String text) {
        if(v==null)
            return ;
        if (TextUtils.isEmpty(text))
            text = "";
        if (v instanceof TextView) {// TextView
            ((TextView) v).setText(text);
            return;
        }
        if (v instanceof Button) {// Button
            ((Button) v).setText(text);
            return;
        }
        if (v instanceof CheckBox) {// CheckBox
            ((CheckBox) v).setText(text);
            return;
        }
        if (v instanceof RadioButton) {// RadioButton
            ((RadioButton) v).setText(text);
            return;
        }
        if (v instanceof EditText) {// EditText
            ((EditText) v).setText(text);
            return;
        }
    }

    /**
     * 获取控件上的Text
     * @param v
     * @return
     */
    public static String getText(View v) {
        if(null==v)  return "";
        if (v instanceof TextView) {// TextView
            return  ((TextView) v).getText().toString();
        }
        if (v instanceof Button) {// Button
            return  ((Button) v).getText().toString();
        }
        if (v instanceof CheckBox) {// CheckBox
            return  ((CheckBox) v).getText().toString();
        }
        if (v instanceof RadioButton) {// RadioButton
            return  ((RadioButton) v).getText().toString();
        }
        if (v instanceof EditText) {// EditText
            return  ((EditText) v).getText().toString();
        }
        return "";
    }
    /**
     * 下划线
     * @param v
     */
    public static void setUnderline(View v) {
        if (v instanceof TextView) {// TextView
            ((TextView) v).getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
            ((TextView) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof Button) {// Button
            ((Button) v).getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
            ((Button) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof CheckBox) {// CheckBox
            ((CheckBox) v).getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
            ((CheckBox) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof RadioButton) {// RadioButton
            ((RadioButton) v).getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
            ((RadioButton) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof EditText) {// EditText
            ((EditText) v).getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
            ((EditText) v).getPaint().setAntiAlias(true);
            return;
        }

    }

    /**
     * 删除线
     * @param v
     */
    public static void setDeleteline(View v) {
        if (v instanceof TextView) {// TextView
            ((TextView) v).getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
            ((TextView) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof Button) {// Button
            ((Button) v).getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
            ((Button) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof CheckBox) {// CheckBox
            ((CheckBox) v).getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
            ((CheckBox) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof RadioButton) {// RadioButton
            ((RadioButton) v).getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
            ((RadioButton) v).getPaint().setAntiAlias(true);
            return;
        }
        if (v instanceof EditText) {// EditText
            ((EditText) v).getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
            ((EditText) v).getPaint().setAntiAlias(true);
            return;
        }
    }

Edittext保留小数位

/**
     * @param editText
     * @param retain   需要保留的小数位
     */
    public static void setInputDecimals(EditText editText, final int retain) {
        editText.addTextChangedListener(new TextWatcher() {
            public String a = "";
            public boolean isCopy = false;

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                if (1 == count) {
                    if (0 == start) {
                        a = s.toString();
                        if (".".equals(a)) {
                            s = "0.";
                            a = "0";
                            isCopy = true;
                            editText.setText(s);
                            editText.setSelection(s.length());
                        }
                    } else if (1 == start) {
                        char c = s.charAt(1);
                        if ("0".equals(a) && '.' != (c)) {
                            s = a + "." + c;
                            isCopy = true;
                            editText.setText(s);
                            editText.setSelection(s.length());
                        }
                    }
                    if (s.toString().contains(".")) {
                        if (s.length() - s.toString().indexOf(".") > retain + 1) {
                            s = s.toString().subSequence(0, s.toString().indexOf(".") + retain + 1);
                            isCopy = true;
                            editText.setText(s);
                            editText.setSelection(s.length());
                        }
                    }
                } else if (count > 1) {
                    if (isCopy) {
                        isCopy = false;
                    } else {
                        editText.setText("");
                    }
                }
            }

            @Override
            public void afterTextChanged(Editable s) {
            }
        });
    }

显示输入字数

/**
     * 
     * @param edt
     * @param inputCount
     * @param maxNum
     */
    public static void inputCountFilter(EditText edt,TextView inputCount,int maxNum) {
        if (null == inputCount||edt==null)
            return;
        inputCount.setText(MessageFormat.format("{0}/{1}",0,maxNum));
        edt.setFilters(new InputFilter[]{new InputFilter.LengthFilter(maxNum)});
        edt.addTextChangedListener(new TextWatcher() {
            private CharSequence wordNum;//记录输入的字数
            private int selectionStart;
            private int selectionEnd;

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                wordNum = s;//实时记录输入的字数
            }

            @Override
            public void afterTextChanged(Editable s) {
                //TextView显示剩余字数
                inputCount.setText(MessageFormat.format("{0}/{1}",s.length(),maxNum));
                selectionStart = edt.getSelectionStart();
                selectionEnd = edt.getSelectionEnd();
                if (wordNum.length() > maxNum) {
                    //删除多余输入的字(不会显示出来)
                    s.delete(selectionStart - 1, selectionEnd);
                    int tempSelection = selectionEnd;
                    edt.setText(s);
                    edt.setSelection(tempSelection);//设置光标在最后
                }
            }
        });
    }

TextView 不同大小字体

/**
     * 设置一个textview显示大小不同的字体
     *
     * @param textView
     * @param text
     * @param textSize dip
     * @param start
     * @param end
     */
    public static void setAbsoluteSizeSpan(TextView textView, String text, int textSize, int start, int end) {
        Spannable sp = new SpannableString(text);
        sp.setSpan(new AbsoluteSizeSpan(textSize, true), start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
        textView.setText(sp);
    }

Textview .fromHtml() 过时处理

@SuppressWarnings("deprecation")
    public static CharSequence fromHtml(String content) {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
            return Html.fromHtml(content,Html.FROM_HTML_MODE_LEGACY);
        } else {
            return Html.fromHtml(content);
        }
    }

Edittext 字母输入小写显示大写转换

注:仅显示,调用getText()获取的还是输入时的状态

/**
     * 小写转大写的方法
     *
     * @return
     */
    public static ReplacementTransformationMethod UpperCaseTransform() {
        return new ReplacementTransformationMethod() {

            @Override
            protected char[] getOriginal() {
                char[] aa = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'};
                return aa;
            }

            @Override
            protected char[] getReplacement() {
                char[] cc = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
                return cc;
            }
        };
    }

跳转抖音个人详情或视频详情

1、user id获取>进入个人界面点击分享,复制分享短链(如:https://v.douyin.com/J1q7Nfd/),将短链放到浏览器中访问得到长链(如:https://www.iesdouyin.com/share/user/37379769094355?...),其中“37379769094355”就是id
2、detail id获取>点击分享,复制分享短链(如:https://v.douyin.com/J1q7Nxsd/),将短链放到浏览器中访问得到长链(如:https://www.iesdouyin.com/share/video/683024568564478735/?...),其中“683024568564478735”就是id

public static void openDouyin(Context mContext,boolean isUser,String id) {
        String user = MessageFormat.format("snssdk1128://user/profile/{0}",id);
        String detail = MessageFormat.format("snssdk1128://aweme/detail/{0}",id);
        try {
            Uri uri = Uri.parse(isUser?user:detail);
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
            mContext.startActivity(intent);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

不定时记录...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容