引导页图片一般采用本地图片打包在APK中,并且显示大小为整个屏幕,所以在显示引导页图片时有以下几点需要注意:

1. 最好使用多个尺寸的引导页来保证适配效果,比如在drawable-hdpi, drawable-xhdpi和drawable-xxhdpi里各放一套图。

2. 为了控制包的大小,图片大小要适当控制

3. 优先使用BitmapFactory.createBitmap来解析引导页获取bitmap,因为通过该方法我们可以控制bitmap的大小正好匹配引导页需要显示的大小,这样可以在保证显示效果的情况下,尽可能的少占用内存以降低OOM的概率。

示例如下

public static int calculateInSampleSize(BitmapFactory.Options options,

int reqWidth, int reqHeight) {

// 源图片的高度和宽度

final int height = options.outHeight;

final int width = options.outWidth;

int inSampleSize = 1;

if (height > reqHeight || width > reqWidth) {

// 计算出实际宽高和目标宽高的比率

final int heightRatio = Math.round((float) height / (float) reqHeight);

final int widthRatio = Math.round((float) width / (float) reqWidth);

// 选择宽和高中最小的比率作为inSampleSize的值,这样可以保证最终图片的宽和高

// 一定都会大于等于目标的宽和高。

inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;

}

return inSampleSize;

}

计算出合适的缩放比例后,接着进行图片的实际压缩操作:

public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,

int reqWidth, int reqHeight) {

// 第一次解析将inJustDecodeBounds设置为true,来获取图片大小

final BitmapFactory.Options options = new BitmapFactory.Options();

options.inJustDecodeBounds = true;

BitmapFactory.decodeResource(res, resId, options);

// 调用上面定义的方法计算inSampleSize值

options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);

// 使用获取到的inSampleSize值再次解析图片

options.inJustDecodeBounds = false;

return BitmapFactory.decodeResource(res, resId, options);

}

遇到的坑:

1. 直接使用setImageRes()来显示,viewpager在显示view的过程中会频繁创建销毁view,导致drawable的频繁创建引起oom

2. 使用UIL来显示加载,其一加载缓慢(UIL不建议被用来加载本地图片),其二内存回收不及时,当引导页销毁时,其bitmap已不再需要,但是不能手动recycle

改进: 自己解析本地图片,保存bitmap并缓存,当使用viewpager显示时,使用缓存的bitmap。当页面销毁时清除缓存的bitmap

android 启动页大小,android引导页大图相关推荐

  1. Android 只显示一次引导页

    Android 只显示一次引导页 以前一直被网络上的代码坑,这次做个记录,也算是帮一帮正在被坑的人 这个方法不需要创建新的Activity或者Fragment 其实这个功能的逻辑是:当你第一次点击ap ...

  2. android引导页大小,Android:启动引导页实现

    2 android:layout_width=match_parent 3 android:layout_height=match_parent > 4 5 6 android:id=@+id/ ...

  3. android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、风扇叶片效果等源码...

    2019独角兽企业重金招聘Python工程师标准>>> Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android ...

  4. android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码

    Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android Srt和Ass字幕解析器 Material Design ViewPage ...

  5. android仿网易云音乐引导页、仿书旗小说Flutter版、ViewPager切换、爆炸菜单、风扇叶片效果等源码...

    Android精选源码 复现网易云音乐引导页效果 高仿书旗小说 Flutter版,支持iOS.Android Android Srt和Ass字幕解析器 Material Design ViewPage ...

  6. android启动时加载引导图片并全屏显示

    前言:最近在做一个项目,项目要求app启动时加载引导图片,由于经验不足(技术一般般),在设计时踩了几个坑,不过好在最终也是做了出来,下面我把我的想法和步骤列一下,希望可以帮到各位新手android程序 ...

  7. html app启动页制作,APP引导页制作

    原因: 在APP中经常见到,第一次启动的时候,有三张或者更多图片来回切换,介绍此APP的使用方法或做广告!点确定,进入APP后,第二次启动APP就不会出现了!这个使用WeX5也很简单就实现了 解决方案 ...

  8. 如何在一个APP中加入欢迎页,以及引导页

    原文地址:http://blog.csdn.net/zhaozhiwen6140/article/details/50384535 喜欢的朋友去原文点个赞,我觉得这篇文章很不错~~ 我们知道,一般刚打 ...

  9. Android通知栏字体大小,Android通知栏介绍与适配总结(上篇)

    此文已由作者黎星授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 由于历史原因,Android在发布之初对通知栏Notification的设计相当简单,而如今面对各式各样的通知 ...

最新文章

  1. python之网络爬虫
  2. 加载BeanFactory
  3. sqlyog连接服务出现的2003和1130错误问题
  4. 豪掷十亿拿下CUBA运营权,阿里体育未来也许并不轻松
  5. Oracle 11g Release 1 (11.1) Data Pump 导入模式
  6. D04——C语言基础学PYTHON
  7. 团队开发——冲刺1.d
  8. Linux(Ubuntu 19.10)下 Qt5 连接 MySQL(QMYSQL driver not loaded)
  9. ZooKeeper的安装和API
  10. 图解TCPIP-传输层 UDP
  11. spring-beans下的BeanUtils.copyProperties
  12. Dependency, Association, Aggregation Composition的四种区别
  13. java集中常见的算法讲解
  14. java cron在线_在线cron生成器
  15. FPGA实现IIC协议(一)IIC总线协议
  16. word,Excel等office中鼠标不停闪动的解决方法
  17. linux怎么模糊查找文件,linux模糊查找一个文件的方法
  18. vs2017无法解析外部符号__imp__fprintf和__imp____iob_func
  19. 图片的修改时间就是拍摄时间(家庭相片管理工具之三)
  20. python中的除法,取整和求模

热门文章

  1. ehcache 冲突_ehcache版本冲突
  2. 免安装绿色软件共享 傻瓜gif制作 flash CS3 动画 影片制作
  3. 使用七牛云进行文件上传
  4. 集种子搜索器实用工具-P2P种子搜索器提供下载
  5. 黑帽python第二版(Black Hat Python 2nd Edition)读书笔记 之 第五章 WEB黑客(3)暴力破解目录与文件位置
  6. python如何打印_python如何打印
  7. 阿里云万网虚拟主机安装配置Https(SSL)教程
  8. 全国大学生英语竞赛培训:听力、词汇语法、完形填空、阅读理解、翻译、改错、IQ题、大小作文、语法等部分快速得分、备战策略和获奖技巧讲解!
  9. 远程PLC监控调试,PLC通用中转服务器,多客户端tcp中转服务器源代码,socket多线程并发通讯,对接多路plc串口WIFI模块实现远程调试程序
  10. ReadFile() WIN API