Android指纹识别功能的接入

在指纹识别手机没有大规模普及之前,许多app提供了使用手势密码进行快速登录或解锁的功能。但是在指纹识别大规模普及的今天,安卓的许多app还是仅支持收拾密码登陆功能,一方面是出于安全性的考量,另一方面是出于对适配兼容的担忧。一但用户进行了Root的操作,那么指纹识别的结果将变得不可信。

最近在寻找市面上常用的密码本软件的时候,发现大部分指纹密码软件支持通过生物识别解锁app。也许是指纹识别的兼容支持变好了?查阅资料发现,安卓对指纹识别的功能进行过封装,使用FingerprintManagerCompat可以轻松对指纹识别进行对接操作。身边8台不同品牌和版本的测试机,都可以正常的使用指纹验证功能。

但是由于Android统一封装指纹功能是在Android6.0后才加入的,这里也只对6.0以上的版本进行指纹识别功能适配。

那么来看一下指纹识别该如何去实现和接入吧。这里为了方便接入,讲指纹识别的全部功能,封装到了一个Dialog中,当打开次dialog时,就可以进行指纹识别了。

解决EditText中InputFilter与联想词输入法冲突

这一天,产品提出了一个神奇的需求:用户姓名设置框限制,允许最多8个汉字或16个英文字母或数字。
简单来说就是长度限制最大为16个字符,一个汉字认为是两个字符。虽然其实跟用户解释一个汉字等于两个字符这件事情是很奇怪的,但是毕竟是需求,我们来实现一下吧。

首先简单说一下要求:

  • 只允许输入数字汉字或英文字母
  • 输入限制为最大16字符
  • 汉字计为2字符,数字和英文计为1字符
  • 当输入超过16字符时(如拼音输入法一次性输入多个文字),输入内容截取到最大部分

多EditText页面如何清除输入焦点

开发中,如果需要清空EditText的输入焦点,一般情况下都需要使用EditText.clearFocus()
但在当一个页面中有多个EditText输入框时,clearFocus有时却无效,清空焦点之后,焦点会重新回到第一个EditText。
那么是不是说明clearFocus在多EditText情况下无效呢?

Android嵌套滑动的处理

开发中,遇到了一个非常复杂的页面。

最外层是一个ViewPager,内层一个ScrollView,上方是主内容部分的Layout,下方是一个可以悬停的Tabbar,以及一个ViewPager,下方ViewPager中还有ScrollView和RecyclerView,并且继承了上拉加载控件SmartRefreshLayout。

由于嵌套了太多的滚动,此时在滑动时出现了非常多不跟手的问题。甚至有时出现内层可滑动,但是外层还没有滑到底,滑动非常不连贯。为了解决这个问题,这次使用了v4包中的NestedScrollView,它可以很好的帮助我们解决滑动问题。

TextView渲染HTML使用自定义标签

如果需要在一个TextView中,显示多种字体,颜色,大小,粗细等,一种方法是使用SpannableString,另外一种方法就是,使用Html.fromHtml()

但是默认tag比较的少,这里我只列出自己使用的几个,剩下的可以到文档中去查找
android.text.Html

用到过的tag:

  • <font color="#FFFFFF"> </font> 设置颜色
  • <b> </b> 加粗
  • <br/> 换行

Android实现截屏的两种方式

一个需要截屏的需求,并且如果可以做到的话,需要截取用户的状态栏图象。

方法1 使用View的DrawCache来获取当前显示的内容

优点:方法简单。
缺点:无法截取到状态栏的内容,包括时间,电量,wifi,4G状态等。

注意这里要使用Bitmap.createBitmap否则Bitmap可能会被回收造成崩溃。

1
2
3
4
View rootView = activity.getWindow().getDecorView().getRootView();
rootView.setDrawingCacheEnabled(true);
Bitmap drawingCache = Bitmap.createBitmap(rootView.getDrawingCache());
rootView.setDrawingCacheEnabled(false);
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×