近来项目提出个新需求——截取超长屏,令人很是抓耳挠腮。想要实现此功能本人先进行了大致构思:比如需要截取的界面包括头部布局和尾部布局还有一个高度不确定的ListView

1.首先思路肯定是把每一块的小View布局分别截取下来缓存成Bitmap(头部、尾部、ListView每个item);

2.接着把截取的每个Bitmap按顺序拼接起来形成一个新的Bitmap,这样就是大致的一个截取思路;

但是思路仅仅是思路,实现起来还是有很多问题的,接下来给读者们出点小问题来考考大家:

1.截取的头部需要进行圆角处理(项目需要这样实现LZ也没办法)

2.截到图在查看的时候左右会有留白(边)(也是项目需要,读者不在意的可以忽略,但是提醒一下有留白真的是丑——个人感觉)

3.Android机型千奇百怪各个手机内存、CPU等也不尽相同,所以就会出现在截长图时候手机需要频繁使用内存来进行截图、拼图、还需要对截下图进行缓存等等,手机就需要频繁GC,在手机内存小、RAM小的情况下就会出现OOM

暂时先提这几个问题,之后有了新的问题再补充哈。不知道大家有没有更好的办法来解决这些问题,如果有请私信我大家一起探讨一下,我先分享下我的大致思路:

第一个问题我得办法就是在截取每个小图之后还没有进行拼接的时候就把头部Bitmap进行圆角化处理,之后再进行拼接;

第二个问题我是在每个图拼到一起时候,此时不是生成了一张Bitmap,然后在这个图的下面在套一张底图,而且这张图要是生成的图的宽高比的1.02(这只是个约数具体看需求要左右留白需要多少)

第三个问题相信所以程序员都遇到过,谁还没有OOM过,谁的代码还没有bug,没有崩溃过,如果你说你的就是没有,那么请伸出长满腿毛的大腿让我膜拜一下(画面好唯美不敢想象了),说实话所有项目都是要上线的,线上是绝对不允许奔溃的。虽说我们程序猿对代码、内存、布局等等进行了优化,但是对于各个手机不同,内存小的手机就是承受不住我们代码的摧残发生奔溃这是谁都不想看到了,既然发生了就要解决。咳咳~~~言归正传,

我的方法很粗暴,请大佬原谅,直接try...catch...把异常抛出,对于这个需求里面有IO、有OOM等等多个异常需要抛出,所以这个一个try...catch...还不行,我就是将异常即使try,catch了也继续向上throw,最多弹个提示不会让他奔溃

可以参考:https://blog.csdn.net/w405722907/article/details/76316561?locationNum=8&fps=1

再补充一点,截长图操作一定要放在子线程中进行,不要在主线程中操作这么耗时的操作,等截完图展示时候再回到主线程中调用。实际开发中问题真的是层出不穷,作为勤恳的码农只要不断思考总有解决的办法的,大家一起加油喽。

此篇仅为思路分享和个人笔记,没有附源码,尽请谅解!!!

android 横向长图,Android实现截超长图相关推荐

  1. Android横向滚动卡片,Android实现横向滑动卡片效果

    Android实现横向滑动卡片效果 发布时间:2020-09-04 22:51:17 来源:脚本之家 阅读:255 作者:itbobby 最近项目上需要实现这样效果的一个页面,本来想找个现成的两下搞定 ...

  2. android 横向多级列表,Android实现横向二级菜单

    本文实例为大家分享了Android二级横向菜单的实现过程.效果如上图: 这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下这个效果,首先说一下逻辑 ...

  3. android 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能

    Android使用Photoview实现图片左右滑动及缩放功能 发布时间:2020-10-12 14:51:12 来源:脚本之家 阅读:119 作者:kuaizilanqiu 我想,不管是做什么样的a ...

  4. android 横向跑马灯,Android 横向 跑马灯效果TextView

    你瞅啥? 自定义控件MarqueeView import android.content.Context; import android.graphics.Rect; import android.t ...

  5. android 横向滑动 回弹,android ScrollView水平滑动回弹

    在研究了View的一些属性之后做了个Scroll的水平滑动回弹. 效果图: 主要代码: import android.content.Context; import android.graphics. ...

  6. android 横向铺满,Android开发全程记录(八)——设置ImageView显示的图片铺满全屏(适应魅族等不常见屏幕比例)...

    为适应不同屏幕的手机,ImageView显示的图片可能不铺满屏幕,如果定高的话,两边可能会出现空白.魅族手机就会有这种情况,在其他手机里显示正常,在魅族手机里显示,图片左右两边会出现空白,为解决这一问 ...

  7. android 界面长按,Android 主界面长按创建快捷方式

    Android中创建快捷方式主要有两种方式.一是在代码中直接加入生成桌面快捷方式的代码:二是通过小部件加入; 这篇文章主要讲另外一种方法! 1.通过在AndroidManifest文件里为Activi ...

  8. android 横向拖动选取,Android HorizontalRefresh 一个可以左右拖动刷新的控件

    欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录. 欢迎关注我们的微信公众号:杨守乐 转载来源:杨守乐 本文由:[吧主的博客]分享 每日英语 life is craz ...

  9. android php 长链接,Android,webview_安卓的webView的loadUrl打不开,太长的url超链接,求解,Android,webview - phpStudy...

    安卓的webView的loadUrl打不开,太长的url超链接,求解 这个链接在PC端,是没问题的啊. 但是webView的loadUrl就说找不到网页.请求怎么解决? http://filec.ca ...

  10. android 横向竖排文字,[Android]实现文字竖排

    最终效果:文字竖排,英文字母是横着的,中文字是竖的,如下图 竖排中英混合.PNG 分析:英文是一个完整的单词旋转了90度,中文一字一行 思路: 要放textview的地方用LinearLayout占位 ...

最新文章

  1. 导出swagger2生成的文档
  2. linux watchdog demo hacking
  3. android人脸识别源代码,Android自带的人脸识别
  4. Linux源码编译(一):从头文件说起
  5. wxWidgets:wxColour类用法
  6. java web 页面提速
  7. Android OOM的解决方式
  8. Linux虚拟文件系统(VFS)
  9. mySQL日期函数并运行_mysql日期相关的函数
  10. archlinux安装gnome-shell主题
  11. [CF55D]Beautiful Number 题解
  12. std::thread的使用
  13. EasyUI:form表单提交前验证
  14. clion解决中文乱码的问题
  15. 计算机网络 IP地址分为那两部分
  16. LAMP兄弟连 视频教程集
  17. windows 无法对计算机进行启动到,windows无法启动无法启动怎么办,windows无法启动的9种解决方法...
  18. ECSHOP漏洞集:http://sebug.net/appdir/ECSHOP
  19. Office2021专业增强版激活报错0xc004f074以及尝试办法
  20. 手机号归属地运营商查询-JAVA

热门文章

  1. Windows11企业版22000.1精简版(附下载链接)
  2. 中图杯获奖作品计算机组,地理奥赛网-首页
  3. python谐音梗_谐 音 梗 生 成 器
  4. 西门子触摸屏HTML控件,西门子HMI触摸屏操作手册.pdf
  5. 使用minidwep-gtk
  6. codeblock图形界面编程(十)文件操作
  7. 统计学名词解释 —— 3. 「简单随机样本」、「联合分布」与「联合密度」
  8. 计算机管理及维护培训考试题,计算机考试题库和答案_浅析高校公共计算机机房管理与维护...
  9. multisim14安装后怎么汉化(超详解)
  10. ipadmini1从9.3.5降级8.4.1最有效的方法