本来是安安心心周末休假的时间,却被强征来加班。魔都今天雾霾严重,窗外都看不到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. oracle添加数据时主键自动增长

    CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  SNAME VARCHAR2(20), ); 此时给学生表添加数 ...

  2. oracle:变长数组varray,嵌套表,集合

    创建变长数组类型 ) );  这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE ...

  3. CakePHP之控制器

    控制器 控制器是MVC中的“C”. 如果你的网站使用Cake框架制作,一般根据url地址和通过路由,就会找到正确的控制器,然后控制器的动作就会被调用. 一个控制器需要解释请求数据.确保使用正确的模型. ...

  4. CSS Clip剪切元素实例

    一.实例1: .fixed { position: fixed; width: 382px; height: 100px; background: red; border: 1px solid blu ...

  5. SQL SERVER 查看死锁的存储过程

    end

  6. 如何设置MySQL Workbench EER Diagram 尺寸?

    ER Diagram -> Model -> Diagram Properties and Size...

  7. struts2中方法拦截器(Interceptor)的中的excludeMethods与includeMethods的理解

    http://www.cnblogs.com/langtianya/archive/2013/04/10/3012205.html

  8. oracle中获取特定时间的前一天

    select to_char(to_date('@rq','YYYY-MM-DD')-1,'YYYY-MM-DD') FROM DUAL 把@rq换成你要的时间就行了

  9. Oracle分区表学习

    (1) 表空间及分区表的概念表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应 ...

  10. Sqoop import加载HBase案例详解

    简单写一下如何将订单表sqoop到hbase表中的步骤. 下表: 1.通过hbase shell 打开hbase. 2.创建一个hbase表 create 'so','o' 3.将so表的数据导入到h ...