新项目三之常用功能性代码《不断补充》

每次做一个新项目都会有一些代码重复,比如联网的框架封装、检查网络、检查存储、获取时间格式、上传下载、图片显示、数据库使用、清理应用缓存,还有一些双击返回键退出、禁止Edittext编辑、显示轮播图等等,想这些项目间可以共用的代码,为了避免每次都写一遍,浪费开发时间,我们可以先在blog中保存下来,用的时候直接Ctrl+C和Ctrl+V,(你懂的,程序员必备绝技(^o^)/~)。


4、防止用户暴力点击

 private long clickTime = 0;
 ...
  @OnClick({ R.id.header_right_tv})
  public void onClick(View view) {
   switch (view.getId()) {
     case R.id.header_right_tv:
          if (System.currentTimeMillis() - clickTime < 1000)return;
          clickTime = System.currentTimeMillis();
          //doing.....
     break;     
   }
 }

3、常用检验工具类(数字相关的、身份证、Email、中文)

    /**
     * 判断是否为合法字符(a-zA-Z0-9-_)
     * 
     * @param text
     * @return
     */
    public static boolean isRightfulString(String text) {
        return match(text, "^[A-Za-z0-9_-]+$");
    }

    /**
     * 判断英文字符(a-zA-Z)
     * 
     * @param text
     * @return
     */
    public static boolean isEnglish(String text) {
        return match(text, "^[A-Za-z]+$");
    }

    /**
     * 判断中文字符(包括汉字和符号)
     * 
     * @param text
     * @return
     */
    public static boolean isChineseChar(String text) {
        return match(text, "^[\u0391-\uFFE5]+$");
    }

    /**
     * 匹配汉字
     * 
     * @param text
     * @return
     */
    public static boolean isChinese(String text) {
        return match(text, "^[\u4e00-\u9fa5]+$");
    }

    /**
     * 匹配URL地址
     * 
     * @param str
     * @return
     */
    public static boolean isUrl(String str) {
        return match(str, "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]");
    }

    /**
     * 匹配Email地址
     * 
     * @param str
     * @return
     */
    public static boolean isEmail(String str) {
        return match(str,
                "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$");
    }

    /**
     * 联系电话(手机/电话皆可)验证
     * 
     * @param text
     * @return
     */
    public static boolean isTel(String text) {
        if (isMobile(text) || isPhone(text))
            return true;
        return false;
    }

    /**
     * 电话号码验证
     * 
     * @param text
     * @return
     */
    public static boolean isPhone(String text) {
        return match(text, "^(\\d{3,4}-?)?\\d{7,9}$");
    }

    /**
     * 手机号码验证
     * 
     * @param text
     * @return
     */
    public static boolean isMobile(String text) {
        if (text.length() != 11)
            return false;
        return match(text,
                "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$");
    }

    /**
     * 身份证号码验证
     * 
     * @param text
     * @return
     */
    public static boolean isIdCardNo(String text) {
        return match(text, "^(\\d{6})()?(\\d{4})(\\d{2})(\\d{2})(\\d{3})(\\w)$");
    }

    /**
     * 邮政编码验证
     * 
     * @param text
     * @return
     */
    public static boolean isZipCode(String text) {
        return match(text, "^[0-9]{6}$");
    }

       /**
     * 正则表达式匹配
     * @param text   待匹配的文本
     * @param reg  正则表达式
     * @return
     */
    private static boolean match(String text, String reg) {
        if (TextUtils.isEmpty(text) || TextUtils.isEmpty(reg)) return false;
        return Pattern.compile(reg).matcher(text).matches();
    }

2、线程循环调用自己

Handler handler = new Handler();
Runnable task = new Runnable() {
   @Override
   public void run() {
      mAngle+=10;
      view4.setArcSweepAngle(mAngle);
      int rate = mAngle*100/360 ;
      view4.setCenterText("进度"+rate+"%");
      handler.postDelayed(this, 1000);
      if (mAngle==360){mAngle=0;}
   }
};
handler.postDelayed(task, 1000);

1、双击返回键退出应用


    /**
     * 连续点击两次退出应用,时间间隔不超过5s
     */
    private long exitTime = 0;
    @Override
    public void onBackPressed() {
        if(System.currentTimeMillis() - exitTime > 2000) {
            Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
            exitTime = System.currentTimeMillis();
        } else {
            finish();
            System.exit(0);
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    }

猜你喜欢

转载自blog.csdn.net/m0_37168878/article/details/78927886
今日推荐