Android截取不可见的View并生成Bitmap

最近收到一个分享图需求,需要将当前页面进行截取后,生成一个Bitmap保存到相册或分享到微信/朋友圈。

而分享时需要隐去页面上很多按钮和文字,如果直接使用DrawingCache在保存的时候用户会看到页面元素消失再显示,那么这样体验会很差,所以使用另一种方式来实现。

  • 截取可见View的方法
1
2
3
4
5
6
7
public static Bitmap createBitmapFromView(View view) {
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(true);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
return bitmap;
}

处理RecyclerView滚动与点击事件(如:跑马灯)

在使用 RecyclerView 进行滚动时,通过定时器实现自动滚动,但在滚动中无法正确触发 item 的点击事件。
因为RecyclerView 滚动与点击事件是独立的,默认情况下,滚动操作可能会影响点击事件的传递。

解决方案

1. 使用 Handler 替代 Timer

在 Android 中,使用 Handler 更适合处理定时任务。替换原有的 Timer 实现,改用 Handler 来处理滚动任务。

一次Android相册的开发日志记录 Day3

在开发阶段进入到Day2之后,工作开始变得繁忙了起来,加之生活上也有许多琐事要安排,导致相册开发进度陷入停滞。
但是与此同时,群晖的DSM7.0正式版发布了,跟随着新系统到来的,是Moments和DSPhoto两个相册软件废弃,随之而来的是整合了两者功能的SynologyPhoto,
于是我升级了并体验了一波,UI风格也与时俱进,同时整合了Moments和DSPhoto的优点,可以时间轴、文件夹、相册、多维度的管理照片,网络连接也稳定了非常多,这基本就是我想要实现的。但是还是有小遗憾的,文件夹视图模式下,仍然和DSPhoto一样,只有两列,在图片数量巨多的时候,查找就变成了一个很痛苦的事,这也是阻挠我使用这个作为相册系统的一个重要因素。

但是!等等!是不是只有这一点不满意?那么…我如果能修改一下APP,让他变成3列呢?

说干就干,试试看。

一次Android相册的开发日志记录 Day2

初步定好方案之后,我们先来实现一个基本的相册app。
一个基本的相册APP总共由3个页面构成:

  • 相册文件夹页面
  • 照片列表页
  • 照片详情页

在页面展示之前,首先我们要能拿到数据,这里我们使用MediaStore来获取用户的媒体信息。
MediaStore记录了用户的各种类型的文件位置,并保存到数据库中名称为external.db

一次Android相册的开发日志记录 Day1

我实在受够啦!!!!
这个市面上就没有简单好用的相册管理软件了么!!!
尝试了我能找到的市面上所有的相册管理软件,没有一个能完全做到我想的样子。
手机自带的相册软件+云同步确实可以在单个或同品牌手机内,完成我想要的需求,但是我手上的设备众多,每次更换设备不一定会使用原品牌,那么这就变得非常的麻烦了。

我的需求实际相对简单:
1.相对可用的UI,比如三星相册,小米相册
2.照片存储在服务器上,本地只缓存缩略图,只有用到的时候展示全图。
3.支持文件夹管理,这个非常关键。并且对应在服务器的文件目录结构要一致。
4.支持隐藏显示部分相册,保护隐私。
5.支持文件夹->远程文件夹的定向同步(单向或双向)

但是同时满足这些点的相册,或多或少都有些问题。

Android打印日志到文件

项目遇到一个问题需要排查,由于是偶现的问题,所以需要打印特定的日志并保存下来,但是并不需要将所有的Log都保存下来,
那么就需要一个小工具来解决这个问题了。

逻辑也很简单,当需要写入日志时,调用函数进行写入即可。简单封装下的代码如下,便于使用。

Your browser is out-of-date!

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

×