drawable = getResources().getDrawable(R.drawable.xxx); System.out.println("Height:"+drawable.getIntrinsicHeight()); System.out.println("Width:"+drawable.getIntrinsicWidth());
如果是单组图片,获取到的图片资源大小或许和你实际图片资源的大小有区别,可能会大,可能会小。
原因处在哪里?像素密度(DPI)!
至于DPI如何计算,那就请度娘谷哥吧
四种屏幕尺寸分类:: small, normal, large, and xlarge
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
四种屏幕的DPI:ldpi是120dpi,mdpi是160dpi,hdpi是240dpi,xhdpi是320dpi
四种屏幕对应density:0.75,1,1.5,2
四种图片资源文件夹:drawable-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
基本资料搞清了,回到正题。
现在算算你的测试机,或者模拟器的DPI是多少吧,或许和上面四个值有差异,那就找比较靠近的(至于为什么,请看看这片文章 http://zhangkun716717-126-com.iteye.com/blog/1772696),或者运行下面的代码:
DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); System.out.println("dm.density:"+dm.density); System.out.println("dm.densityDpi:"+dm.densityDpi);
算出了测试机的DPI,记录为D_PHONE。好在看看你把你的测试图片放在了哪个文件夹下,根据上文资料找到对应的dpi,记录为D_FOLDER
你实际图片的高或者宽记录为IMAGE_SIZE
计算一下 x = IMAGE_SIZE * (D_PHONE/D_FOLDER)
好了x的结构是不是和最初程序里打印出的drawable的大小一样了
很明显了,与你你测试机像素密度对应的文件夹里没找到图片,他去另外一个像素密度的文件夹里找到了,相应结果的就是图片被放大(或者缩小)了。
总结一下:
简单的说:你没有做屏幕适配工作。根据目前的手机来说至少要做两组图片 分别为放在drawable-hdpi,drawable-xhdpi。大公司的产品就请把另外两组图片也做了吧,美工辛苦一点。如果只有一组图片又想获取到图片实际像素值,可以根据这个计算一下。
提醒一下,imageview在布局文件里用wap_content设置的高和宽,在没有其他控件挤压的情况下宽和高也是由对应drawable的宽高决定的,可以自己查源码。
再有不清楚的请留言。
相关推荐
### Android 通过图片名称获取 Drawable 目录下的图片 在Android开发过程中,有时我们需要动态地根据图片名称来加载Drawable资源。这种需求虽然不常见,但在某些特定场景下却显得尤为重要,比如实现一个自定义控件...
在Android开发中,图片资源的处理是常见...以上就是关于Android中Drawable、Bitmap、byte数组以及灰度图像之间转换的详细介绍,这些转换方法在实际开发中有着广泛的应用,掌握它们能够帮助开发者更灵活地处理图像资源。
以下是一些关于Android Drawable的重要知识点: 1. **状态选择器(State List Drawable)**: 状态选择器允许我们根据组件的状态(如按下、聚焦、选中等)显示不同的图像。通过在XML中定义`<selector>`元素,我们...
在Android中,`Drawable`是一个抽象类,用于描述可绘制对象,如矢量图形或位图。将其转换为`Bitmap`可以便于进行进一步的图像处理或显示。以下是一种将`Drawable`转换为`Bitmap`的方法: ```java public static ...
以上就是关于Android中Drawable和Bitmap相互转换的方法、注意事项以及应用场景的详细解释。理解并熟练运用这些知识,能够帮助开发者更有效地处理图像资源,提高应用的性能和用户体验。在实际项目中,要根据具体需求...
drawable实现三角形,原博客地址:https://blog.csdn.net/u010356768/article/details/76040972#comments 大家去原博客地址看下就知道了。不用下载浪费积分
- 动态加载Drawable:通过`ContextCompat.getDrawable()`方法获取XML定义的Drawable对象。 5. **优化Drawable** - 使用Nine-Patch图片(.9.png)为位图Drawable定义拉伸区域,保持内容的清晰度。 - 尽量减少...
在Android开发中,`Drawable`是一个非常重要的概念,它代表了可以绘制到屏幕上的图形对象。这个示例项目"android drawable"旨在展示如何在Android应用中有效地使用和显示`Drawable`资源。 `Drawable`在Android中...
### Android Drawable 下的 XML 详解 #### 一、概述 在Android开发中,`drawable`是一种非常重要的资源类型,主要用于存放应用所需的图形图像资源。这些资源可以被用于UI设计、图标绘制等多种场景。通常,开发者会...
### Android中Drawable、Bitmap与byte[]之间的转换 在Android应用开发过程中,经常需要对图像资源进行处理,这就涉及到了不同图像格式之间的转换。本文将详细介绍`Drawable`、`Bitmap`及`byte[]`三者之间的转换方法...
xhdpi图片转换,能任意转换Android Drawable下的各种规格格式 "ldpi", "mdpi", "hdpi", "xhdpi","xxhdpi", "xxxhdpi" 比如我的美工人员设计了一个图片适合 xhdpi 分辨率的手机,我可以通过AndroidDrawable将这个...
在Android开发中,Drawable是图形和图像处理的重要组成部分,它是一种可以绘制到Canvas上的对象,广泛用于界面元素的装饰和状态表示。以下是对Android中drawable集合的详细解释: 1. **Bitmap Drawable**: Bitmap ...
5. **动画问题**:如果自定义Drawable涉及动画,确保遵循Android的动画框架。例如,使用ValueAnimator和AnimatorSet来控制动画的播放。 总的来说,自定义Android Drawable是一种强大的工具,可以实现丰富的界面效果...
获取Drawable的内部宽度和高度可以使用`getIntrinsicWidth`和`getIntrinsicHeight`方法。对于BitmapDrawable,这两个方法会返回图片的实际尺寸;而对于ColorDrawable,由于无固定尺寸,它们会返回-1。 在实际应用中...
本资源包“android安卓APP之13种Drawable位图片资源.zip”涵盖了Android开发中常见的13种Drawable类型,这些类型极大地丰富了Android应用的视觉表现和动态效果。下面将详细介绍每种Drawable的特性和用法。 1. **...
Drawable资源是抽象的图形对象,可以包括图片、颜色、渐变等多种形式。在Android SDK中,开发者通常不需要直接操作Drawable的底层实现类,而是通过XML文件来定义和使用Drawable资源,通过资源ID来引用它们。 ...
Android所有系统资源图标android.R.drawable.xxx查看软件 源码地址:http://blog.csdn.net/dianyueneo/article/details/7197067
Android系统图标android.R.drawable下的所有图标查看软件
通过上述方法,开发者可以根据实际需求灵活地在`Drawable`和`Bitmap`之间进行转换,从而更好地处理Android应用中的图像资源管理问题。这些转换技巧对于优化用户体验、提高应用性能都有着重要的意义。
`android-gif-drawable`库的核心功能是提供了一个名为`GifDrawable`的类,它可以解析GIF文件并将其转换为Android可绘制对象(Drawable),然后在ImageView或其他支持Drawable显示的地方进行渲染。与原生Android API...