imageView--转-如何代码动态的获取和设置ImageView的宽度和高度?
11-
12-
13-android获取图片原始长宽;
=========
11--国内某金融企业的一道面试题:如何在代码中获得一个ImageVIew的高度和宽度?
相信很大一部分人,会直接想到用imageview.getWidth() 和 imageview.getHeight() 来获得,其实不然。
我们可以自己写个程序来跑一下,当我们放置一张图片在imageView中,并且设置了它的高度和宽度,我们不妨在日志控制台输出看一下,
Log.i("MainActivity", "宽度:"+String.valueOf(imageView.getWidth()));
Log.i("MainActivity", "高度:"+String.valueOf(imageView.getHeight()));
输出结果如下:
是不是很恼火呀,结果就是这样。
那么究竟该如何获取图片的高度和宽度呢? 其实,我们可以通过构建一个BItMap对象出来,这个BItMap就是从我们的那种图片资源转换而来,bitmap对象中的getWidth() 和getHeight()可以获得位图的大小,例子:
- ImageView imageView = (ImageView)findViewById(R.id.imageView);
- Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.newscar);
- Log.i("MainActivity", "宽度:"+String.valueOf(bitmap.getWidth()));
- Log.i("MainActivity", "高度:"+String.valueOf(bitmap.getHeight()));
这个时候我们再来看一下日志控制台的输出结果:
Ok,第一个问题我们搞定了(注意:这是原图片的大小,不是我们布局文件中设置的大小)。
12--我们看一下如何动态设置图片的高度和宽度,这问题比较简单,我们直接使用LayoutParams的对象来进行设置
代码如下:
- ImageView imageView = (ImageView)findViewById(R.id.imageView);
- imageView.setImageResource(R.drawable.newscar);
- LayoutParams params = imageView.getLayoutParams();
- params.height=200;
- params.width =100;
- imageView.setLayoutParams(params);
13--android获取图片原始长宽
在android里面要要取一张96 x 96像素每个像素点的RGB值然后处理,但是一开始直接读取
- Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001);
- int width=opts.outWidth;
- int height=opts.outHeight;
这样读出来的值却实变成了144 x 144像素,很无语,对Android接触不多,查看各种资料才发现如果这样写android默认读取的不是原始大小
- BitmapFactory.Options opts = new BitmapFactory.Options();
- opts.inJustDecodeBounds = true;
- BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);
- opts.inSampleSize = 1;
- opts.inJustDecodeBounds = false;
- Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);
- int width=opts.outWidth;
- int height=opts.outHeight;
将BitmapFactory.Options.inSampleSize设为1才是原始大小,有时候根据需要因为图片太大而内存溢出时,需要适当选择inSampleSize的值,可以参考http://hi.baidu.com/liganggang/item/6ab1e480fa2da1e3e596e015
相关文章
- 如何在代码中取得一个特点type的关节
- C# 基础知识 (四).C#简介及托管代码
- 写代码- 维护代码
- DevOps on DevCloud|代码检查服务如何降低“Billion Dollar Mistake” NPE风险
- 如何提高 PHP 代码的质量?第三:端到端 / 集成测试
- 判断浏览器内核JS代码
- vs中如何统计整个项目的代码行数
- java 结束程序进程 代码
- 120. 如何根据 SAP UI5 框架代码抛出的错误消息,反查出是哪一行代码引起的错误消息
- SAP CRM 如何使用 ABAP 代码读取 Campaign 的数据
- 如何使用ABAP代码创建SAP Product Category
- 如何使用nodejs代码在新浪微博上发布帖子
- 低代码如何实现页面之间的传参
- ZZNUOJ_C语言1073:画个圈圈诅咒你(完整代码)
- Python自动化办公:27行代码实现将多个Excel表格内容批量汇总合并到一个表格
- Springboot中如何优雅的写好Controller层代码
- spss pro网络挑战赛A题:人群疏散模拟代码
- 华为鲲鹏专家解读:90%代码如何移植到鲲鹏平台
- 在jsp中显示原始html代码,不要渲染 / 在JSP页面中如何将HTML标记显示出来
- 如何修改代码中的硬编码问题
- ChatGPT——请生成rundll32.exe 可以运行的打开计算器程序的dll C++代码,并给出编译代码和运行方式
- Python代码集----paramiko应用之远程在linux系统上执行命令并获取回显
- 扩展知识点--利用Linux应用代码如何控制LED
- Android Studio中如何编写JNI代码及编译so库
- 【问题解决】训练 python 代码时如何忽略 warnings
- 低数据极限下非线性动力学稀疏辨识模型预测控制(Matlab代码实现)
- wide_and_deep 思维导图和代码