Android获取图片实际大小兼容平板电脑
项目中有个图片在平板电脑中显示特别小的原因。一直苦于没找到原因,也没有平板电脑測试,今天找了个改动分辨率的,编写相关方法最终处理了,记录下比較:
好让以后不造轮子。
主要是获取文章相关图片显示问题。直接用getIntrinsicWidth()方法获取。getIntrinsicWidth()获取的并不是图片的实际宽度,在手机看还过得去,不会相差太远,但在平板电脑看,
它简直就是一个小女孩。太害羞了,以至于显示那么小。
回到正题:
解决方法:
1.获取手机分辨率 用该分辨率乘以其密度
if (file.exists()) {
// 假设文件已经存在,直接返回
Drawable drawable = Drawable.createFromPath(savePath);
DisplayMetrics dm = new DisplayMetrics();
//获取手机屏幕分辨率
dm = context.getResources().getDisplayMetrics();
//屏幕实际大小
// int screenWidth = dm.widthPixels;
// int screenHeight = dm.heightPixels;
float density = dm.density;
//图片实际大小
int imgWidth = (int) (drawable.getIntrinsicWidth() *density);
int imgHeight = (int)( drawable.getIntrinsicHeight() * density);
//drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.setBounds(0, 0, imgWidth,imgHeight);
//}
return drawable;
}
没有图片时载入
private void setDrawable(Drawable nDrawable) {
drawable = nDrawable;
//drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
//setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
DisplayMetrics dm = new DisplayMetrics();
//获取手机屏幕分辨率
dm = context.getResources().getDisplayMetrics();
//屏幕实际大小
// int screenWidth = dm.widthPixels;
// int screenHeight = dm.heightPixels;
float density = dm.density;
//图片实际大小
int imgWidth = (int) (drawable.getIntrinsicWidth() *density);
int imgHeight = (int)( drawable.getIntrinsicHeight() * density);
//drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
drawable.setBounds(0, 0, imgWidth,imgHeight);
setBounds(0, 0, imgWidth, imgHeight); //注意加上。不加会出现图片和文字混淆在一起
}
Android获取图片实际大小兼容平板电脑的更多相关文章
- 限制Xamarin获取图片的大小
限制Xamarin获取图片的大小在App开发中,经常会使用网络图片.因为这样不仅可以减少App的大小,还可以动态更新图片.但是手机使用网络环境千差万别.当网络环境不是理想的情况下,加载网络图片就是一个 ...
- 获取图片的大小(宽高):BytesIO
获取图片的大小(宽高) from io import BytesIO,StringIO import requests from PIL import Image img_url = "ht ...
- imagick获取图片的大小bug
<? php /* imagick的获取图片的高度和宽度函数有问题,使用GD函数可获得正确结果 gd函数 array getimagesize ( string $filename [, arr ...
- js获取图片原始大小
摘要: 浏览器中显示的图片大小未必是他真实的高和宽,比如像下面这样,我们给他加上宽和高的样式 <img src="IE.png" style="width:25px ...
- android 获取图片
Android获取手机或者内存卡里面的图片有两种方式 1.这是通过一种action Intent intent=new Intent(); intent.setAction(Intent.ACTION ...
- Java不需要加载整张图片而获取图片的大小
转载地址 http://blog.jdk5.com/zh/java-get-image-size-without-loading-the-whole-data/ 利用Java类,获取图片的类型,宽度和 ...
- android 获取 图片或视频略缩图
/** * 根据指定的图像路径和大小来获取缩略图 此方法有两点好处: 1. * 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度, * 第二次读取的bitmap是根 ...
- Android获取 应用程序大小,数据大小,缓存大小
在项目中创建,android.content.pm 包名.里面创建两个aidl文件.PackageStats.aidl 和 IPackageStatsObserver.aidl. PackageSt ...
- Android获取屏幕的大小与密度的代码
Android项目开发中很多时候需要获取手机屏幕的宽高以及屏幕密度来进行动态布局,这里总结了三种获取屏幕大小和屏幕密度的方法 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
随机推荐
- Linux命令(九)——系统监视和进程控制
与windows系统一样,linux系统中也有很多进程在同时运行,每个进程都有一个识别码PID,它是进程的唯一识别标志. 一.进程的类型 1.系统进程 在操作系统启动后,系统环境平台运行所加载的进程, ...
- YII用户注冊和用户登录(三)之模型中规则制定和分析
3 模型中规则制定和分析 YII模型主要分为两类,一个数据模型,处理和数据库相关的增删改查.继承CActiveRecord.还有一个是表单模型,继承CFormModel.不与数据库进行交互.操作与数据 ...
- Centos安装FastDFS+Nginx
一.安装环境: gcc:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc: yum install gcc-c++ PCRE:PCRE(Perl C ...
- convert命令的使用【转】
本文转载自; http://www.charry.org/docs/linux/ImageMagick/ImageMagick.html
- nyoj--635--Oh, my goddess(dfs)
Oh, my goddess 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 Shining Knight is the embodiment of justice an ...
- 【转】坑爹的AsyncTask之根本停不下来
原文网址:http://www.jianshu.com/p/0c6f4b6ed558 上篇<坑爹的AsyncTask之内存泄露>已经简单的探讨过线程使用不当会造成内存泄露的问题,在Acti ...
- Python基本数据类型之字典dict
字典dict 是一个键(key)值(value)对,结构为{},大括号 创建字典 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 info = { # k ...
- centos6.6--------正向DNS配置
一.正向区: 将域名解析为IP====================================================================================注 ...
- [Offer收割]编程练习赛33
矩阵游戏II 把每列的数字加起来当一行处理.因为每次操作两列,所以最后最多剩下一个负数.如果负数的个数是偶数,直接所有数字的绝对值加起来即可:若负数个数为奇数,把所有数的绝对值加起来减去其中最小的绝对 ...
- Oracle数据库安装与连接与简介
Oracle数据库的安装 1.登录Oracle官网——试用和下载 2.同意协议--->file1 3.完成配置 4.测试连接:打开Oracle developer--->新建连接,注意用户 ...