欢迎使用CSDN-markdown编辑器

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();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值