• 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()可以获得位图的大小,例子:

    1. ImageView imageView = (ImageView)findViewById(R.id.imageView);  
    2.     Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.newscar);  
    3.     Log.i("MainActivity", "宽度:"+String.valueOf(bitmap.getWidth()));  
    4.     Log.i("MainActivity", "高度:"+String.valueOf(bitmap.getHeight()));  


    这个时候我们再来看一下日志控制台的输出结果:

    Ok,第一个问题我们搞定了(注意:这是原图片的大小,不是我们布局文件中设置的大小)。

     

    12--我们看一下如何动态设置图片的高度和宽度,这问题比较简单,我们直接使用LayoutParams的对象来进行设置 

    代码如下:

      1. ImageView imageView = (ImageView)findViewById(R.id.imageView);  
      2.     imageView.setImageResource(R.drawable.newscar);  
      3.     LayoutParams params = imageView.getLayoutParams();  
      4.     params.height=200;  
      5.     params.width =100;  
      6.     imageView.setLayoutParams(params);  

    13--android获取图片原始长宽

      在android里面要要取一张96 x 96像素每个像素点的RGB值然后处理,但是一开始直接读取

    1. Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001);  
    2. int width=opts.outWidth;  
    3. int height=opts.outHeight;  

         这样读出来的值却实变成了144 x 144像素,很无语,对Android接触不多,查看各种资料才发现如果这样写android默认读取的不是原始大小

    1. BitmapFactory.Options opts = new BitmapFactory.Options();  
    2.         opts.inJustDecodeBounds = true;  
    3.         BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);  
    4.         opts.inSampleSize = 1;    
    5.         opts.inJustDecodeBounds = false;  
    6.         Bitmap mBitmap =BitmapFactory.decodeResource(getResources(), R.drawable.jimg001, opts);  
    7.         int width=opts.outWidth;  
    8.         int height=opts.outHeight;  

          将BitmapFactory.Options.inSampleSize设为1才是原始大小,有时候根据需要因为图片太大而内存溢出时,需要适当选择inSampleSize的值,可以参考http://hi.baidu.com/liganggang/item/6ab1e480fa2da1e3e596e015

  • 相关阅读:
    面经分享 | B站 | 数据分析 | 2021.1--转载
    TensorFlow 2.0 学习笔记--第六章 循环神经网络
    TensorFlow 2.0 学习笔记--第五章 神经网络卷积计算
    TensorFlow 2.0 学习笔记--第一章 神经网络计算过程及介绍
    免费服务器
    Nginx采坑日记(后台响应ResponseEntity时,Nginx将部分数据过滤)
    Vue 注意事项
    服务熔断&服务降级
    阿里微服务解决方案-Alibaba Cloud之负载均衡(Feign)(五)
    阿里微服务解决方案-Alibaba Cloud之服务消费方(Feign)(四)
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4331946.html
Copyright © 2020-2023  润新知