本来是安安心心周末休假的时间,却被强征来加班。魔都今天雾霾严重,窗外都看不到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博客分享

    现在开始写博客,分享android开发中的心得.

  2. 10.8 noip模拟试题

      1.花 (flower.cpp/c/pas) [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的 ...

  3. oracle中drop、delete和truncate的区别

    oracle中drop.delete和truncate的区别 oracle中可以使用drop.delete和truncate三个命令来删除数据库中的表,网上有许多文章和教程专门讲解了它们之间的异同,我 ...

  4. Difference Between XML and XAML.

    XML, or Extensible Markup Language, is a subset  of the more complex SGML (Standard Generalized Mark ...

  5. Dictionary的遍历和修改

    /// <summary>        /// 初始化一个Dic        /// </summary>        public static void mainTe ...

  6. Error Creating Deployment 有关Tomcat配置问题

    配置Tomcat的时候出现提示框The selected server is enabled,but is not configured properly.Deployment to it will ...

  7. Queue学习

    Queue在Python中可以算作是一种容器,但是他和list,set,dict不一样. 1. Queue不是Python内置类型.它在Queue模块中定义. 2. 它不是iterator容器,他不能 ...

  8. Linux嘚瑟一时的Shared Object

    场景概述 近来接触node程序以及负责实现node扩展来对象本地SDK的调用,旨在借node及其第三方库来快速实现RESTful API以及给浏览器端使用.当然这中间研究工作耗了不少时间. 在实现目标 ...

  9. 仿照淘宝首页做的一个高度伪对齐demo

    功能就是当右边高度没有左边高的情况下做的一些处理,由于本人技术有限,不兼容所有浏览器, <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tra ...

  10. 初探grunt.js

    package.js { "name": "ttd_v3", "version": "0.1.0", "aut ...