问题描述: APP启动时, 广告页的图片是从服务器上获取, 这个图片一般需要全屏显示, 这个怎么适配呢?

解决方法1: 如果使用android:scaleType="fitXY"属性, 图片肯定会拉伸. 这个时候我们会想到用.9图

解决方法2: 用两张图片叠加, 一张纯色背景图, 另一张我们的广告图, 背景图和广告的背景保持一致就可以了. 纯色的背景图怎么拉伸都无所谓了.

比较: 方法2显然不如方法1, 这里我们看看方法1.

尝试: 直接把.9图放到服务器上, 结果: 和普通图片没什么区别.

原理: 跑去网上看了一下才知道, 原来我们放在本地的.9图之所以能正常加载, 并不是ImageView直接加载的, 而是在编译的时候通过了转换, 最终才能被ImageView使用. 所以我们把.9图通过手动转换, 然后把转换后的图片放到服务器, 这样就可以直接使用了.

第一步: 制作.9图 我是用AS制作的, 如下图, 选择图片右键选择.

注意:

如果是.jpg是没有这个选项的, png图才有. 其它格式的图片没试过.

制作.9图不规范会报错, 一般只需要画上和左就可以了.

制作.9图.png

第二步: 转换

使用SDK里面的build-tools工具

在build-tools\26.02(版本号) 目录下打开cmd. 例如我目录: C:\Users\dell\AppData\Local\Android\sdk\build-tools\26.0.2.

然后输入命令.\aapt s -i .9图文件位置 -o 转换后文件位置.

例如: 源文件a.9.png 和 转换后的文件b.png都在\sdk\build-tools\26.0.2目录下. 那我直接在cmd里面输入: .\aapt s -i .\a.9.png -o .\b.png 就会生成b.png图片, 如下图:

转换.png

第三步: 本来以为这样就OK了, 结果图片还是被拉伸了, 一开始我怀疑是不是转换过程错了, 后来到网上去查了资料才知道, 还不能直接使用. 需要使用代码如下:

byte[] chunk = bitmap.getNinePatchChunk();

if(NinePatch.isNinePatchChunk(chunk)){

NinePatchDrawable npd = new NinePatchDrawable(getResources(), bitmap, chunk, new Rect(), null);

imageView.setImageDrawable(npd);

}else{

imageView.setImageBitmap(bitmap);

}

注意: if里面是加载.9图转换后的图片, else是普通图片, 如果不加判断直接用NinePatchDrawable加载图片的话, 普通图片会报错.

最后添加两张效果图. 为了让效果明显一点, 故意把imageView高缩短. 主要看中间的图标.

效果.9图.png

效果普通图.png

安卓 加载服务器图片不显示图片,android 从服务器加载.9图相关推荐

  1. 织梦网站上传服务器不显示图片,织梦网站图片不显示图片

    织梦网站图片不显示图片 内容精选 换一换 在"文章列表"插件中,检查"设置 > 列表数目"的"显示文章条数"和"显示分页&q ...

  2. 华为云服务器怎样让网站显示不出来,云服务器网页不显示图片

    云服务器网页不显示图片 内容精选 换一换 企业主机安全(Host Security Service,HSS)是提升服务器整体安全性的服务,通过主机管理.风险防御.入侵检测.安全运营.网页防篡改功能,可 ...

  3. 如何访问本地服务器图片不显示,如何访问云服务器的图片不显示图片

    如何访问云服务器的图片不显示图片 内容精选 换一换 鲲鹏CentOS 7和中标麒麟NKASV 7云服务器安装图形化界面后,远程连接云服务器鼠标不可用.X86云服务器使用了cirrus虚拟显卡,鲲鹏云服 ...

  4. php访问服务器上图片不显示不出来,php显示云服务器上图片不显示图片

    php显示云服务器上图片不显示图片 内容精选 换一换 初次使用AppCube,您可以通过阅读本入门,初步了解AppCube.建议您跟随文档,创建实例应用,在实操的过程中逐步学习AppCube.AppC ...

  5. html背景图片只显示一张图片,img只显示图片一部分 或 css设置背景图片只显示图片指定区域(示例代码)...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  6. html如何把图片在背景图一半,img只显示图片一部分 或 css设置背景图片只显示图片指定区域...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  7. 使用Python调用opencv学习(-)打开图片,显示图片

    使用Python调用opencv学习(-)打开图片,显示图片 第一步是读取图片是用cv2.imread 第一个参数是图片的路径可以是绝对路径也可以是相对路径.第二个参数代表读取图片的格式 cv2.IM ...

  8. css 设置背景图一半_img只显示图片一部分 或 css设置背景图片只显示图片指定区域...

    17:14 2016/3/22 img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片 ...

  9. php验证是否图片,php验证码图片不显示图片怎么办

    php验证码图片不显示图片的解决办法:首先检查php是否安装gd扩展:然后在php目录下找到php.ini文件:最后将文件编码方式改为utf-8无DOM格式,并在header前清除缓存即可. PHP图 ...

最新文章

  1. matlab inviter,水中石
  2. 快速沃尔什变换(FWT)及K进制异或卷积快速子集变换(FST)讲解
  3. 8 关于数据仓库维度数据处理的方法探究系列——父子维
  4. Linux命令学习记录(六)
  5. [推荐]数据库索引碎片的自动重建或重组
  6. 视频中的目标检测与跟踪综述
  7. Mysql 添加字段 修改字段 删除字段
  8. LiveVideoStack线上交流分享 ( 六 ) —— VP9 Scalable Video Coding
  9. 聊聊高并发(二十三)解析java.util.concurrent各个组件(五) 深入理解AQS(三)
  10. ab flash player 8_FLASH 质子治疗的技术挑战
  11. 那些被.NET大厂拒绝的大佬们,究竟弱在哪里?
  12. C++ STL string的构造函数
  13. python中多对多替换_Python对指定文件内容进行全局替换
  14. SignalR与自托管Windows服务
  15. 华为hs8145v5如何改桥接_华为 光猫 HS8546V5 改 桥接模式 简易教程
  16. 130道Python练习题,涵盖基础内容的方方面面
  17. 使用php实现自动获取一个获取文章标题生成主题关键词功能源码
  18. python怎么解题_农夫过河问题 Python实现解题
  19. Restoration forWeakly Blurred and Strongly Noisy Images 阅读理解
  20. NetBeans 常用快捷键

热门文章

  1. 数字IC后端设计实现流程之initial design
  2. VIM:使用js高亮对json文件着色
  3. 最小化安装的redhat/centos安装gnome桌面
  4. 单片机和微型计算机异同,微机与单片机有什么主要的区别?
  5. [转]HSPICE软件的应用及常见问题解决
  6. html5的一天,HTML5微电影制作 - 小猫一天的生活
  7. idea中如何添加自定义的todo
  8. 一层循环时间复杂度_数据结构与算法系列——时间、空间复杂度
  9. 为什么网卡名称从eth0变成了enp*s*
  10. MySql数据导入导出及解决ERROR2006(MySQL server has gone away)错误