欢迎使用CSDN-markdown编辑器

来源:互联网 发布:淘宝达人怎么发布好货 编辑:程序博客网 时间:2024/05/18 02:52

1.键盘的状态 我们知道。Android中我们不能直接获取键盘的是否弹出状态。所以只能通过其他方法去获取。
最蠢的也是最直接的方法也就是通过获取我们View的底部在屏幕的高度。

view.getViewTreeObserver().addOnGlobalLayoutListener(new  ViewTreeObserver.OnGlobalLayoutListener() {            @Override            public void onGlobalLayout() {                Rect outRect = new Rect();                View decorView = ((Activity) getContext()).getWindow().getDecorView();                decorView.getWindowVisibleDisplayFrame(outRect);                int height = decorView.getRootView().getHeight();                int diff = height - outRect.bottom;                if (diff > 300) {                    //jian pan tan chu                    closeDeleteItem();                } else {                    //jian pan xiao shi                }            }        });

2.时间转换工具类

/*    * @param int timeFrom 是时间,单位是毫秒    * 如果间隔时间是大于timeFrom返回的是false;    * 如果间隔时间是小于timeFrom返回的是true;    * */    public static boolean isFastClick(int timeFrom) {        long time = System.currentTimeMillis();        if (time - lastClickTime < timeFrom) {            lastClickTime = time;            return true;        }        lastClickTime = time;        return false;    }    /**     * 将毫秒转化为 0:00的格式字符串     *     * @param time 毫秒的数字大小     * @return     */    public static String getTimeFromInt(long time) {        if (time <= 0) {            return "0:00";        }        int secondnd = ((int) time / 1000) / 60;        int million = ((int) time / 1000) % 60;        String mSecondnd = secondnd >= 10 ? String.valueOf(secondnd) : "0" + String.valueOf(secondnd);        String mMillion = million >= 10 ? String.valueOf(million) : "0" + String.valueOf(million);        return mSecondnd + ":" + mMillion;    }    /**     * @param time     * 判断时间是否今天,今年的显示格式     * @return     */    public static String formatDateTime(long time) {        SimpleDateFormat format;        Date date = new Date(time);        Calendar current = Calendar.getInstance();        Calendar today = Calendar.getInstance();    //今天        today.set(Calendar.YEAR, current.get(Calendar.YEAR));        today.set(Calendar.MONTH, current.get(Calendar.MONTH));        today.set(Calendar.DAY_OF_MONTH, current.get(Calendar.DAY_OF_MONTH));        //  Calendar.HOUR——12小时制的小时数 Calendar.HOUR_OF_DAY——24小时制的小时数        today.set(Calendar.HOUR_OF_DAY, 0);        today.set(Calendar.MINUTE, 0);        today.set(Calendar.SECOND, 0);        LogUtils.d("date", current.get(Calendar.YEAR) + "  " + today.get(Calendar.YEAR));        current.setTime(date);        if (current.after(today))            format = new SimpleDateFormat("HH:mm");        else if (current.get(Calendar.YEAR) == today.get(Calendar.YEAR))            format = new SimpleDateFormat("MM月dd日");        else            format = new SimpleDateFormat("yyyy-MM-dd");        return format.format(time);    }    /**     * 将时间戳转为代表"距现在多久之前"的字符串     *     * @param timeStr 时间戳     * @return     */    public static String getStandardDate(String timeStr) {        StringBuffer sb = new StringBuffer();        long t = Long.parseLong(timeStr);        long time;        if (timeStr.length() == 10) {            time = System.currentTimeMillis() - (t * 1000);        } else {            time = System.currentTimeMillis() - (t);        }        long mill = time / 1000;//秒前        //返回不小于当前整数的整数        long minute = (time / 60 / 1000);// 分钟前        long hour = time / 60 / 60 / 1000;// 小时        long day = time / 24 / 60 / 60 / 1000;// 天前        if (day > 0) {            if (day / 365 > 0)                sb.append((day / 365) + "年前");            else if (day / 30 > 0)                sb.append((day / 30) + "个月前");            else                sb.append(day + "天前");            return sb.toString();        }        if (hour > 0) {            if (hour / 24 > 0)                sb.append((hour / 24) + "天前");            else                sb.append(hour + "小时前");            return sb.toString();        }        if (minute > 0) {            if (minute / 60 > 0)                sb.append((minute / 60) + "小时前");            else                sb.append(minute + "分钟前");            return sb.toString();        }        if (mill > 3) {            if (mill / 60 > 0)                sb.append((mill / 60) + "分钟前");            else                sb.append(mill + "秒前");        }        return "刚刚";    }    /**     * 将时间戳根据日期转化为 日期 昨天 几时几分     *     * @param time     * @return     */    public static String parseDate(String time) {        long createTime;        String ret = "";        try {            if (time.length() == 10) {                createTime = Long.parseLong(time + "000");            } else {                createTime = Long.parseLong(time);            }            Date date = new Date(createTime);            if (TimeUtils.isYesterday(date)) {                ret = "昨天";            } else if (TimeUtils.isNowYear(date)) {                ret = TimeUtils.getHourByTimeStamp(createTime) + ":" + TimeUtils.getMinuteByTimeStamp(createTime);            } else {                ret = TimeUtils.getMonthByTimeStamp(createTime) + "月" + TimeUtils.getDayByTimeStamp(createTime) + "日";            }            return ret;        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    /**     * 根据年 月 获取对应的月份 天数     */    public static int getDaysByYearMonth(int year, int month) {        int maxDate = 0;        if (month == 2) {            Calendar a = Calendar.getInstance();            a.set(Calendar.YEAR, year);            a.set(Calendar.MONTH, month - 1);            a.set(Calendar.DATE, 1);            a.roll(Calendar.DATE, -1);            maxDate = a.get(Calendar.DATE);        } else if (month == 4 || month == 6 || month == 9 || month == 11) {            maxDate = 30;        } else if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {            maxDate = 31;        }        return maxDate;    }    /**     * 将时间戳转为特定格式的時間     *     * @param milliseconds 时间戳     * @param format       时间戳     * @return     */    public static String getDateType(String milliseconds, String format) {        SimpleDateFormat sdf = new SimpleDateFormat(format);        long time = 0;        String date = "";        try {            time = Long.parseLong(milliseconds);        } catch (Exception e) {            return date;        }        if ("0".equals(milliseconds)) {            return "至今";        } else if (milliseconds.length() == 10) {            date = sdf.format(new Date(time * 1000));        } else {            date = sdf.format(new Date(time));        }        if (format.length() > 6) {// format yyyy/MM/dd            if ('0' == date.charAt(5)) {                date = date.substring(0, 5) + date.substring(6);            }        } else {// format MM/dd            if ('0' == date.charAt(3)) {                date = date.substring(0, 3) + date.substring(4);            }        }        return date;    }    /**     * 将时间戳转为特定格式的時間     *     * @param milliseconds 时间戳     * @param format       时间戳     * @return     */    public static String getDateType(long milliseconds, String format) {        SimpleDateFormat sdf = new SimpleDateFormat(format);        String date;        if (0 == milliseconds) {            return "至今";        } else if ((milliseconds + "").length() == 10) {            date = sdf.format(new Date(milliseconds * 1000));        } else {            date = sdf.format(new Date(milliseconds));        }        if ('0' == date.charAt(5)) {            date = date.substring(0, 5) + date.substring(6);        }        return date;    }    /**     * 日期格式字符串转换成时间戳     *     * @param date   字符串日期     * @param format 如:yyyy-MM-dd HH:mm:ss     * @return     */    public static long date2TimeStamp(String date, String format) {        try {            if (date.length() > 6 && '月' == date.charAt(6)) {                date = date.substring(0, 5) + "0" + date.substring(5);            }            SimpleDateFormat sdf = new SimpleDateFormat(format);            return sdf.parse(date).getTime();        } catch (Exception e) {            e.printStackTrace();            return 0;        }    }

3.验证邮箱、qq、微信 正则表达式

/**     * 验证正确邮箱     *     * @param email     * @return     */    public static boolean isEmail(String email) {//邮箱判断正则表达式        Pattern pattern = Pattern                .compile("\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*");        Matcher mc = pattern.matcher(email);        return mc.matches();    }    /**     * 验证QQ号码是否正确     * @param qq     * @return     */    public static boolean isQQ(String qq)    {        String  regex ="[1-9][0-9]{4,14}";        Pattern p = Pattern.compile(regex);        Matcher m = p.matcher(qq);        return m.matches();    }    /**     * 验证微信号码是否正确     * @param weChat     * @return     */    public static boolean isWeChat(String weChat){        String regex = "[a-zA-Z][a-zA-Z0-9_-]{5,19}";        Pattern pattern = Pattern.compile(regex);        Matcher mc = pattern.matcher(weChat);        return mc.matches();    }
0 0