欢迎使用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
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 【异常】Dangling meta character '*' near index 0
- JS处理事件小技巧
- Java面向对象设计模式(十三)——策略模式(strategy)
- iOS 修改Bundle ID
- word基本操作
- 欢迎使用CSDN-markdown编辑器
- linux下串口接收范例
- jdk1.8 hashmap多线程put不会造成死循环
- 为Linux技术学习推荐看的书籍—《Linux就该这么学》
- maven环境变量的配置
- LVM逻辑卷管理
- 模拟器端口号
- 最近学习python的一点收获
- Java多线程系列--“基础篇”05之 线程等待与唤醒