Android ImageView 不显示JPEG图片 及 Android Studio中如何引用图片资源

Android ImageView 不显示JPEG图片

今天在写一个小实例,ImageView在xml里面设置的是INVISIBLE,在代码里需要设置成setVisibility(View.VISIBLE),但图片没有显示出来,换成PNG或其它的JPEG格式的图片确可以正常的显示。

原因:显示的图片大小为5.39K,图片格式有损坏,所以不能正常显示。

解决:换一张图片,或重新生成JPEG图片。

如果还是不能正常显示,建议在设置完VISIBLE后,调用如下方法:

iv.setVisibility(View.VISIBLE);
view.requestLayout();

Call this when something has changed which has invalidated the layout of this view. This will schedule a layout pass of the view tree.

我们可以理解为重新布局了一下view。

用途:有时我们在改变一个view 的内容之后可能会造成显示出现错误,比如写ListView的时候重用convertview中的某个TextView 可能因为前后填入的text长度不同而造成显示出错,此时我们可以在改变内容之后调用requestLayout方法加以解决。

建议:png是一种无损格式,JPG是有损格式。JPG在处理颜色很多的图片时,根据压缩率的不同,有时会去掉一些肉眼识别差距较小的中间颜色。但是PNG对于无损这个基本要求,会严格保留所有的色彩数。 所以。图片尺寸大,或者色彩数量多特别是渐变色的多的时候,PNG的体积会明显大于JPG。

Android的界面能用png最好是用png,因为32位的png颜色过渡平滑且支持透明。jpg是像素化压缩过的图片,质量已经下降了,再拿来做9patch的按钮和平铺拉伸的控件必然惨不忍睹,要尽量避免。其实在res下icon用的都是png格式,就是说Google推荐使用的是png格式的图片。

对于颜色繁杂的,比如照片墙纸之类的图片(有些应用的启动画面喜欢搞这种),那用jpg是最好不过了,这种图片压缩前压缩后肉眼分辨几乎不计,如果保存成png体积将是jpg的几倍甚至几十倍,严重浪费体积。

解释:什么是9patch,Patch的中文意思是“片,块”的意思,那这里按中文的意思来说就是9片或9块。因此可想而知这个图片会被分为9片,如下图所示:

9patch只解释这么多,需要详细了解的可以继续深入研究。

Android Studio中如何引用图片资源

在Eclipse中根据图片的像素大小把.png或.jpg的图片放在drawable文件夹下,如drawable-hdpi,drawable-ldpi,drawable-mdpi,drawable-xhdpi,drawable-xxhdpi。同一张图片放在不同的drawable文件夹下,显示的时候会有所不同。但是在xml中引用的时候是一样的:android:[email protected]/pic 或者android:[email protected]/pic 。

但是到Android Studio中就不一样了,发现没有这么多的drawable目录了,而只有一个drawable文件夹。取而代之的是出现了很多mipmap文件夹,如mipmap-hdpi,mipmap-mdpi,mipmap-xhdpi,mipmap-xxhdpi。如图所示:

首先尝试把图片放在drawable中,然后在xml中使用android:[email protected]/pic或者android:[email protected]/pic。使用,发现没有问题,完全可以显示。但是为什么有这么多mipmap呢?

Google官方的解释是性能优化,占用内存小等等,总之mipmap这个形式比drawable好。So,推荐我们在Android Studio中使用mipmap。那好,我们把图片放在mipmap文件夹下,那怎么在xml中使用呢?

android:[email protected]/pic

非常类似图片放在drawable中的引用方式,也是使用@来引用。所以这也是非常简单的,不同像素的mipmap文件夹图片都是一样的使用。但是注意:在AS中,同一张图片放在drawable文件夹下和放在mipmap文件夹下显示效果是不一样的,在大小,缩放,像素上都可能有所差异。把Android Studio和Eclipse比较着学习,他们既相似又有一定的区别。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-22 12:04:31

Android ImageView 不显示JPEG图片 及 Android Studio中如何引用图片资源的相关文章

Android ImageView 不显示JPEG图片 及 Android Studio中怎样引用图片资源

Android ImageView 不显示JPEG图片 今天在写一个小实例,ImageView在xml里面设置的是INVISIBLE,在代码里须要设置成setVisibility(View.VISIBLE),但图片没有显示出来,换成PNG或其他的JPEG格式的图片确能够正常的显示. 原因:显示的图片大小为5.39K,图片格式有损坏,所以不能正常显示. 解决:换一张图片.或又一次生成JPEG图片. 假设还是不能正常显示,建议在设置完VISIBLE后,调用例如以下方法: iv.setVisibili

Android Studio中如何引用图片资源

随着不断接触Android Studio,越来越发现和Eclipse有着巨大的区别.无论是表面的目录结构,还是内在对各种资源的管理.本篇就来聊聊Android Studio中如何来显示图片, 以及与Eclipse中的区别. 在Eclipse中根据图片的像素大小把,png或.jpg的图片放在drawable文件夹下,如drawable-hdpi,drawable-ldpi,drawable-mdpi,drawable-xhdpi,drawable-xxhdpi.同一张图片放在不同的drawable

Android 获取并显示远程图片 Picasso框架的使用(一)

转载请注明出处:明桑Android 在Android开发中,常需要从远程获取图片并显示在客户端,当然我们可以使用原生HttpUrlConnection和AsyncTask等操作来完成,但并不推荐,因为这样不仅需要我们编写大量的代码,还需要处理缓存和下载管理等,最好自己封装成库或者采用第三方库: Picasso:A Powerful Image Downloading and Caching Library for Android 根据名字就知道它是跟什么相关了(Picasso:毕加索)它的基本操

Android 获取并显示远程图片 Picasso框架的使用(二)

转载请注明出处:明桑Android 在上篇文章中介绍了Picasso的基本用法,这篇文章作为以上的练习: 本文代码github地址:UsePicasso 实现效果:(动图请耐心加载) 需要的知识点 了解Picasso框架的使用:Android 获取并显示远程图片 Picasso框架的使用(一) 知道如何自定义GridView 我们需要编写两个布局文件:activity_gridview.xml activity_main.xml 以及ImageAdapter类.GridImageActivity

Android ImageView的scaleType(图片比例类型)属性与adjustViewBounds(调整视图边界)属性

Android ImageView的scaleType属性与adjustViewBounds属性 实用性很强的属性经典总结 一.首先:ImageView的scaleType的属性有好几种,分别是matrix(默认).center.centerCrop.centerInside.fitCenter.fitEnd.fitStart.fitXY (1),android:scaleType="center" 保持原图的大小,显示在ImageView的中心.当原图的size大于ImageView

Android 基础(设备显示密度/图片自适应

1. 设备的 显示密度 是由 设备的尺寸 和 设备的分辨率 两个因素决定的. 相同分辨率设备的尺寸越大显示密度越小, 相同尺寸的设备,分辨率越高显示密度越高. 2. 显示密度等级:  160 / 240 / 320 / ... 3. 不同显示密度下, dp 与px 的换算比不相同: 密度为160时, 1dp = 1px;  密度为240时, 1dp = 1.5px; 密度为320, 1dp = 2dp; 4. 在Android中, 一般宽高用dp, 5. 在不同的drawable-??dpi文件

Android将view保存为图片并放在相册中

在Android中,可以将view保存为图片并放在相册中,步骤为 view->bitmap->file,即先将view转化为bitmap,再将bitmap保存到相册中. 需要将红框标注的view转化为图片并保持到相册中.view的XML代码为 <RelativeLayout android:id="@+id/lanjing_code_rl" //要保存的view id android:layout_width="match_parent" andr

eclipse平台 android项目前显示红色叉号 android level-19 4.4平台导入项目 问题解决办法

android level-19  4.4平台导入项目 项目前显示红色叉号  问题解决办法 android level-19  4.4平台导入项目 项目前显示红色叉号,检查项目中文件,文件前没有叉号,分析是项目导入的问题,或者是lib库配置的问题. 1.用eclipse建立一个简单的android项目, HelloWorld: 2.选择HelloWorld项目,鼠标右键选择Build Path-Configure Build Path 对比发现,没有勾选 Android 4.4. 2.选择导入的

android——获取ImageView上面显示的图片bitmap对象

获取的函数方法为:Bitmap bitmap=imageView.getDrawingCache(); 但是如果只是这样写我们得到的bitmap对象可能为null值,正确的方式为: imageView.setDrawingCacheEnabled(true);Bitmap bitmap=imageView.getDrawingCache();imageView.setDrawingCacheEnabled(false); 只是提醒一下多多注意. 其他android学习经验: http://jin