了解

在安卓的界面XML中,ImageButton有这样一个属性android:scaleType,他干嘛的?

ImageView的Scaletype决定了图片在View上显示时的样子,如进行何种比例的缩放,及显示图片的整体还是部分。有八种类型即

1、center:图片位于视图中间,但不执行缩放。
2、centerCrop按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者大于相应的视图的维度
3、centerInside按统一比例缩放图片(保持图片的尺寸比例)便于图片的两维(宽度和高度)等于或者小于相应的视图的维度
4、fitCenter缩放图片使用center,在中间
5、fitEnd缩放图片使用END,靠近尾部
6、fitStart缩放图片使用START,靠近头部
7、fitXY缩放图片使用XY
8、matrix当绘制时使用图片矩阵缩放

相应的java代码为 imageButton.setScaleType(ImageView.ScaleType.FIT_CENTER);

在这里我们选择fitCenter缩放图片使用center

实施

我们想要实现的效果是一个按钮点击下去可以显示点击的效果,即另外一张图片。结合onTouchListener就可以实现,不过有个地方要注意一下。

   1:  public class Example extends Activity {
   2:  ImageButton exm;
   3:   
   4:  public void onCreate(Bundle savedInstanceState) {
   5:          super.onCreate(savedInstanceState);
   6:          setContentView(R.exampleLayout);
   7:          exm = (ImageButton)findViewById(R.id.exmBtn);
   8:          initBtnListener(exm);
   9:  }
  10:   
  11:  private void initBtnListener(ImageButton btn){
  12:         btn.setOnTouchListener(new  View.OnTouchListener(){
  13:          @Override
  14:          public boolean onTouch(View v, MotionEvent event) {
  15:              if(event.getAction() == MotionEvent.ACTION_DOWN){
  16:                  //更改为按下时的背景图片
  17:                  exm.setImageResource(R.drawable.anwbtn1);
  18:              }else if(event.getAction() == MotionEvent.ACTION_UP){
  19:                  //改为抬起时的图片
  20:                 exm.setImageResource(R.drawable.anwbtn0);
  21:              }
  22:              return false;
  23:              }
  24:          });
  25:      }
  26:   
  27:  };

在exampleLayout的XML中有一个id为exmBtn的ImageButton,并且设置属性android:scaleType=“fitCenter”

上面中更改按钮图片的方法还有另外一种就是v.setBackgroundResource(int);但是这种方法达不到让ImageButton自己管理图片缩放的效果,所以应该直接让ImageButton自己setImageResource。

注意上面的代码中使用到了内部类,其实上面的用法参数btn确实是指向exm,但是不能用btn代替exm去更换按钮图片,原因是btn必须声明为final才能在匿名内部类View.OnTouchListener()中使用。所以可以把btn参数直接替换成exm并把形式参数去掉。

ImageButton如何让图片按比例缩放不被拉伸的更多相关文章

  1. C#图片按比例缩放

    C#图片按比例缩放: // 按比例缩放图片 public Image ZoomPicture(Image SourceImage, int TargetWidth, int TargetHeight) ...

  2. 理解CSS3中的background-size(对响应性图片等比例缩放)

    理解CSS3中的background-size(对响应性图片等比例缩放) 阅读目录 background-size的基本属性 给图片设置固定的宽度和高度的 固定宽度400px和高度200px-使用ba ...

  3. 让ie6也支持max-width,和max-height实现图片等比例缩放

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. (转载)让ie6也支持max-width,和max-height实现图片等比例缩放

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 【转】微信小程序开发之图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    原文[https://blog.csdn.net/qq_31383345/article/details/53127804] 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于 ...

  6. css 如何实现图片等比例缩放

    在进行布局的时候,很多PM都要求图片等比例缩放,而且要求图片不失真,不变形,但是UI设计好了这个div的宽度又不能随意更改,而后台传过来的图片也不是等比例的图片,这就比较难受了,写成 width: 1 ...

  7. CSS让DIV按照背景图片的比例缩放,并让背景图片填充整个元素(转)

    目的是:通过background的一系列属性,让DIV按照背景图片的比例缩放,并让背景图片填充整个DIV 首先我们需要让背景图片在指定的DIV中全部填充显示 之前看有用类似 background-at ...

  8. 微信小程序学习点滴《十二》:图片等比例缩放 获取屏幕尺寸图片尺寸 自适应

    原文:http://www.wxapp-union.com/portal.php?mod=view&aid=360 早上在论坛上看到有人写了关于图片等比例缩放的文章,只是判断了图片宽是否大于屏 ...

  9. css技术之用最高和最宽的限制“max-height和max-width”做图片同比例缩放,达到图片不变形目的,做出批量打印图片功能,页面打印“window.print()”

    一.简介 他们是为流而生的,像width/height这种定死的砖头式布局,min-width/max-width就没有存在的意义 ,min-width/max-width一定是自适应布局或流体布局中 ...

随机推荐

  1. Ps切图学习

    1.切图的原文件格式为psd,用ps工具打开 2.鼠标点击需要切的图片,会自动选中图层: 3.选择需要切图的图层,右键复制图层 宽高必须为2的倍数 文件-存储为web和设备所用格式 预设选择为png- ...

  2. Android下pm命令详解

    在看相关PackageManager代码时,无意中发现Android 下提供一个pm命令,通常放在/system/bin/下.这个命令与Package有关,且非常实用.所以研究之. 0. Usage: ...

  3. Windows二进制文件的Python扩展包

    http://www.lfd.uci.edu/~gohlke/pythonlibs/ https://pypi.python.org/simple/

  4. com.classpath.www

    package com.classpath.www; import java.io.File; import java.net.URL; import javax.servlet.ServletCon ...

  5. linux 命令学习日记 20160621

    1.cat /proc/meminfo 观察Linux系统上虚拟内存的当前状态 2.ipcs -m ipcs命令专门用来查看系统上的当前共享内存页面 3.ls /dev -al sda* ttyS* ...

  6. 三个案例带你看懂LayoutInflater中inflate方法两个参数和三个参数的区别

    关于inflate参数问题,我想很多人多多少少都了解一点,网上也有很多关于这方面介绍的文章,但是枯燥的理论或者翻译让很多小伙伴看完之后还是一脸懵逼,so,我今天想通过三个案例来让小伙伴彻底的搞清楚这个 ...

  7. 你真的会用UIButton吗? UIButton详细介绍

    本节知识点: 什么是UIButton UIButton的状态 UIButton的属性设置 UIButton基本使用步骤 UIButton的代码创建与常用属性设置 重写按钮的某个状态属性的 setter ...

  8. jvm内存模型及分配参数

    jvm内存模型 程序计数器:是一块很小的内存空间.当线程数量超过cpu数量时,线程之间根据时间片轮询抢夺cpu资源.每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令. java虚拟机 ...

  9. fedora 23中配置nfs-server

    fedora 23中配置nfs-server */--> fedora 23中配置nfs-server Table of Contents 1. 产考资料 2. NFS配置文件 2.1. /et ...

  10. Javascript做图片无缝平滑滚动

    因需要,google得到.作者不详.多谢.我这里略作修改.只是改变了ID. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...