zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MySQL 获得 当前日期时间 函数
    07/26/2019 00:38:17 INFO macOS users need to install XQuartz. See https://support.apple.com/en-gb/HT201341
    ModuleNotFoundError: No module named 'pynvx'
    ModuleNotFoundError: No module named 'cv2'
    ModuleNotFoundError: No module named 'tqdm'
    WARNING: You are using pip version 19.1.1, however version 19.2.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
    多进程和多线程的理解
    python 装饰器demo
    python 日志内容提取
    python 中 list 去重复
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4331946.html
Copyright © 2011-2022 走看看