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);

MPAndroidChart自定义坐标轴显示位置

MPAndroidChart是一个非常强大的控件库,并且可定制性非常的强。但是在使用时,有一个需求是,
Y坐标轴上的所有数值必须要在图标内部,那么就需要对Y坐标轴的渲染方式进行定制了。

首先创建一个类YAxisRendererFix继承自YAxisRenderer,内部会重写一个方法
drawYLabels,这就是对Y轴文字渲染的关键方法了,你看Canvas都给你了。

介绍一下这四个参数:

  • Canvas c: 画笔,通过canvas来绘制你的文字,在这里就可以定制文字绘制的位置了。
  • float fixedPosition: X轴位置
  • float[] positions: Y轴位置,由于是Y轴的文字,所以所有需要绘制的文字位置作为一个数组。
  • float offset: setYOffset里面的那个偏移值,如果没设置就是0。

Android Drawable动画的实现

有一个需求,需要做一个简单的动画,UI讲动画每一帧的图片都交给了我,那么该如何去做呢?

这里使用了animation-list来实现此功能,实现方式也很简单,在drawable下创建对应的xml文件即可。

创建动画Drawable

相关参数介绍:

  • oneshot: 动画是否只执行一次 true 只执行一次 false 循环播放动画
  • android:duration: 动画每一张播放的长度,单位ms

Android AES加解密

项目需要对特定数据进行加密,看了一下网上的很多实现,在不同版本的安卓上需要做一些特殊处理。那么我想试着编写一个通用性比较强,不需要对版本进行适配的AES加解密库。
这个库还可以将AES的密文进行Base64编码之后进行传输,算是功能上的补充。

AES 加密

生成加解密Key

使用SecretKeySpec来将给定数组生成对应的key,由于这里是AES加密,所以algorithm为"AES"

1
SecretKeySpec keySpec = new SecretKeySpec(key, algorithm);
Your browser is out-of-date!

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

×