本来是安安心心周末休假的时间,却被强征来加班。魔都今天雾霾严重,窗外都看不到360无死角都能看到的东方明珠。吃完午饭后睡一觉起来,觉得该给自己做点事情了。那就把项目里面的一些可圈可点的技术都罗列出来,顺便温习一下当初做的时候踩到的一些坑。

好了吐槽完毕,接下来就是代码和技术点了。

① 输入框里面限制输入的仅为数字以及限制仅只可以输入一位小数的数字。

import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
/**
* 输入框监听器 * @version $Id: TextWatcherUtil.java, v 1.0.0 2015-09-24 上午11:42:23 Exp $
*/
public class TextWacherUtil {
public static void setPoint(final EditText editText) {
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
if (s.toString().contains(".")) {
if (s.length() - 1 - s.toString().indexOf(".") > 1) {
s = s.toString().subSequence(0, s.toString().indexOf(".")-1);//如果想要变成小数点后面两位就把这个1变成2
editText.setText(s);
editText.setSelection(s.length());
}
}
if (s.toString().trim().substring(0).equals(".")) {
s = "0" + s;
editText.setText(s);
editText.setSelection(1);
}
if (s.toString().startsWith("0")
&& s.toString().trim().length() > 1) {
if (!s.toString().substring(1, 2).equals(".")) {
editText.setText(s.subSequence(0, 1));
editText.setSelection(1);
return;
}
}
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
}

我把这个抽出来做了一个方法,在使用的时候只要这么用就好了。

mResidenceTime = (EditText)findViewById(R.id.et_loan_apply_residence_time);
TextWacherUtil.setPoint(mResidenceTime);
//此外在布局文件里面加上这两个类型限制
android:digits="1234567890." android:hint="@string/please" android:inputType="number"

② 在一个activity里面用到了好多个控件,在填完上面所有的东东后提交表单,提示你前面还有一项没有填,那么还是要自己像上面滑去找到那个控件么?不!我们有定位控件的位置,并吧自动跳转到该控件的位置。并把焦点控制在该控件上

    // 定位控件
private void scrollTo(View v) {
int[] viewPostion = { 0, 0 };
v.getLocationInWindow(viewPostion);
mScrollView.smoothScrollBy(viewPostion[0], viewPostion[1] - 300);
}

使用方法:

scrollTo(【控件名】);
【控件名】.requestFocus();

③ 对象排序:在项目中具体用到的是在下载图像后将图像按照上传的顺序进行排序显示

/**
* 对象排序
*/
@SuppressWarnings("unchecked")
public List<ArchUri> sortListStudent(List list) {
Collections.sort(list, new Comparator<ArchUri>() {
/*
* int compare(Student o1, Student o2) 返回一个基本类型的整型, 返回负数表示:o1 小于o2,
* 返回0 表示:o1和o2相等, 返回正数表示:o1大于o2。
*/
public int compare(ArchUri o1, ArchUri o2) {
// 按照类型进行升序排列
if (Integer.parseInt(o1.getType()) > Integer.parseInt(o2
.getType())) {
return 1;
}
if (Integer.parseInt(o1.getType()) == Integer.parseInt(o2
.getType())) {
if (o1.getSeq() > o2.getSeq()) {
return 1;
}
return -1;
}
return -1;
}
});
return list;
}

④ 短信验证倒计时

class TimeCount extends CountDownTimer {
public TimeCount(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
} @Override
public void onTick(long millisUntilFinished) {
btnUserInfor.setClickable(false);
btnUserInfor.setText(millisUntilFinished / 1000 + "秒后重新发送");
} // 倒计时结束后触发
@Override
public void onFinish() {
btnUserInfor.setText("获取验证码");
btnUserInfor.setClickable(true);
}

使用方法:

TimeCount time = new TimeCount(60000, 1000);
// 开始计时
time.start();

⑤ 生成二维码

import com.google.zxing.WriterException;
import android.graphics.Bitmap;
/**
* 二维码生成类 * @version $Id: QRGen.java, v 1.0.0 2015年7月31日 下午3:10:45 Exp $
*/
public class QRGen {
//链接地址
public static String Uri;
//二维码图片
public static Bitmap qrCodeBitmap;
//根据字符串生成二维码图片并显示在界面上,第二个参数为图片的大小
public static Bitmap creatQRGen(String str, int l){
QRGen.Uri = str;
if(!Uri.equals("")){
try {
qrCodeBitmap = EncodingHandler.createQRCode(Uri, l);
} catch (WriterException e) {
e.printStackTrace();
}
return qrCodeBitmap;
}else {
return null;
}
}
}

使用方法:

【控件名】.setImageBitmap(QRGen.creatQRGen(mQGenUrl, 320));//320是二维码显示大小。

这只是一些用到的小方法,当然,项目里面还有其他的许多大块的功能,还是值得学习和分享的,后续会陆续发出来。今天就写这么多了。

Android 金融项目整理的更多相关文章

  1. 【转】GitHub平台最火Android开源项目整理——2013-08-25 17

    http://game.dapps.net/news/developer/9199.html GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮 ...

  2. 最火的Android开源项目整理

    一.代码库   1.from  代码家 整理比较好的源码连接   ******************************************************************* ...

  3. GitHub上最火的Android开源项目整理

    这篇文章介绍GitHub上另外34个非常受欢迎的Android开源项目,在这些项目中,你又在用或用过哪些呢? 41. android-swipelistview SwipeListView是一个And ...

  4. Android开源项目整理:个性化空间View篇(看遍论坛千万篇,不看此篇也枉然)

    个性化View控件虽然你在多处可以找到 但是这个整理的不可以不看欧: 主要介绍不错的个性化View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridVi ...

  5. 【Android 应用开发】GitHub 优秀的 Android 开源项目

    原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...

  6. Android 开源项目及其学习

    Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...

  7. 2015-2016最火的Android开源项目--github开源项目集锦(不看你就out了)

    标签: Android开发开源项目最火Android项目github 2015-2016最火的Android开源项目 本文整理与集结了近期github上使用最广泛最火热与最流行的开源项目,想要充电与提 ...

  8. fir.im Weekly - 1000 个 Android 开源项目集合

    冬天到了,适宜囤点代码暖暖身.本期 fir.im Weekly 收集了最近一些不错的 GitHub 源码.开发工具和技术实践教程类文章分享给大家. codeKK - 集合近 1000 Android ...

  9. 59.Android开源项目及库 (转)

    转载 : https://github.com/Tim9Liu9/TimLiu-Android?hmsr=toutiao.io&utm_medium=toutiao.io&utm_so ...

随机推荐

  1. Android(java)学习笔记202:Handler消息机制的原理和实现

     联合学习 Android 异步消息处理机制 让你深入理解 Looper.Handler.Message三者关系   1. 首先我们通过一个实例案例来引出一个异常: (1)布局文件activity_m ...

  2. Android Studio快速生成get set等函数

    方式一:Code-->Generate 方式二:通过快捷键Alt+Insert

  3. python-字典(第二篇(四):字典)

    [Python之旅]第二篇(四):字典 摘要: 说明:     显然Python中字典的学习过程与列表是一样的,主要是围绕下面的函数来进行重点学习: 1 2 3 4 5 6 7 8 9 10 11 & ...

  4. asp.net 的状态管理

    状态管理 (state management) 在Web应用程序中,一向是很重要的课题,良好的状态管理可以帮助开发人员发展出具有状态持续能力的应用程序(像是工作流程型应用程序或是电子商务应用程序),但 ...

  5. mysql复习笔记

    阅读目录 1.什么是SQL语句2.使用sql语句创建数据库和表3.创建数据表4.数据完整性约束5.四中基本字符类型说明6.SQL基本语句7.类型转换函数8.日期函数9.数学函数10.字符串函数11.联 ...

  6. jQuery失去焦点的时候注册验证

    //注册验证$('form :input').blur(function () { if ($("#txtName").val() == "") { $(&qu ...

  7. SQL:42601

    以前遇到SQL中触发器的问题, 添加一个字段后,发现以前的程序的SQL报错 看了下表定义,有这样的一行代码 CREATE TRIGGER chintai_keiyaku_audit AFTER INS ...

  8. C#语法糖之第一篇:自动属性&隐式类型

    今天给大家分享一下C#语法糖的简单的两个知识点吧. 自动属性:在 C# 4.0 和更高版本中,当属性的访问器中不需要其他逻辑时,自动实现的属性可使属性声明更加简洁. 客户端代码还可通过这些属性创建对象 ...

  9. WCF,WebAPI,WCFREST和WebService的区别

    Web ServiceIt is based on SOAP and return data in XML form.It support only HTTP protocol.It is not o ...

  10. EntityFrameowk6.1 使用enum和低版本的不同

    原有项目中使用EF5.0 实体类 public partial class Log : BaseEntity { public Nullable<int> LogLevelId { get ...