目录

一、ImageButton简介

二、ImageButton的基本使用

三、ImageButton事件处理

四、ImageButton不同状态样式


一、ImageButton简介

ImageButton也是一个按钮,但与Button不同的是,Button显示的是文字,ImageButton显示的是图片,ImageButton集成自ImageView,拥有ImageView的所有属性,ImageView的详细讲解可以看我的这篇文章:Android ImageView使用详解

二、ImageButton的基本使用

我们一般在布局文件中直接创建ImageButton控件,调整好布局,也可以在代码中通过New的方式创建ImageButton,如非必要,一般不推荐。

下面的代码,在布局文件中创建了一个按钮,并且设置了图片按钮的src属性,引用了图片按钮上要展示的drawable资源。并为图片按钮设置了一个唯一的ID 'btnImage',此ID会在代码中获取按钮的时候使用到。ID的命名方式一般使用驼峰方式,并以控件类型作为前缀,此处为ImageButton,所以ID以btn做为了前缀。此种方式的好处是一眼就可看出控件的类型。

<LinearLayoutandroid:layout_width="300dp"android:layout_height="match_parent"android:layout_centerHorizontal="true"android:layout_marginTop="20dp"android:orientation="vertical"><ImageButtonandroid:id="@+id/btnImage"android:layout_width="100dp"android:layout_height="80dp"android:background="#ff0000"android:scaleType="centerCrop"app:srcCompat="@drawable/winter" /></LinearLayout>

在Activity中使用ImageButton。

public class MainActivity04 extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main_04);//根据ID获取到图片按钮对象ImageButton btnImage = findViewById(R.id.btnImage);//为图片按钮设置点击事件btnImage.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {System.out.println("我点击了图片按钮。");}});//为图片按钮设置长按事件btnImage.setOnLongClickListener(new View.OnLongClickListener() {@Overridepublic boolean onLongClick(View view) {System.out.println("我长按了图片按钮。");return false;}});//为图片按钮设置触摸事件btnImage.setOnTouchListener(new View.OnTouchListener() {@Overridepublic boolean onTouch(View view, MotionEvent motionEvent) {System.out.println("我touch了图片按钮。");int action = motionEvent.getAction();if(action == MotionEvent.ACTION_UP) {System.out.println("我按下了图片按钮。");}else if(action == MotionEvent.ACTION_DOWN) {System.out.println("我松开了图片按钮。");}else if(action == MotionEvent.ACTION_MOVE) {System.out.println("我按下并移动了图片按钮。");}return false;}});}
}

三、ImageButton事件处理

ImageButton和Button拥有同样的事件处理机制,事件处理可以查看我的这篇文章:Android Button的使用详解

四、ImageButton不同状态样式

通常情况下,我们需要根据按钮的不同状态改变按钮不同的样式,比如:按钮默认样式、按压时的样式、以及按钮选中时的样式等等。图片按钮也可以设置在不同状态下的不同图片展示。

我们只需要在图片按钮的app:srcCompat属性中引入一个设置样式的drawable资源,图片按钮的不同状态就写在drawable资源中。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><!--按钮的默认状态--><item android:state_window_focused="false" android:drawable="@drawable/winter"></item><!--按下时的按钮状态--><item android:state_pressed="true" android:drawable="@drawable/winter_pressed"></item><!--选中时的按钮状态--><item android:state_selected="true" android:drawable="@drawable/winter_selected"></item>
</selector>

需要注意的是:按钮默认状态和按下状态,系统会帮我们自己去判断,但选中状态,系统并不知道什么时候是选中,因此,若想设置成选中状态,需要手动调用按钮的setSeclect()函数。

原创不易,点个赞再走呗。。

Android ImageButton使用详解(系列教程四)相关推荐

  1. linux sed p变量,Linux sed 命令详解系列教程之各种问题解决

    本文目录: 1 sed中使用变量和变量替换的问题 2 反向引用失效问题 3 "-i"选项的文件保存问题 4 贪婪匹配问题 5 sed命令"a"和"N& ...

  2. 会说话的狗狗本电脑版_一看就会用!Fotor 电脑版 图片后期处理详解系列教程 第一节...

    Fotor 电脑版 图片后期处理详解系列教程 第一节 这节课我们先来了解一下 Fotor 电脑版的界面功能,为了能用 Fotor 电脑版修图处理打基础. 如图示,启动 Fotor 以后出面界面,有编辑 ...

  3. 《 Python List列表全实例详解系列(四)》__列表删除元素(4种方法)删除重复元素(去重)(8种方法)

    <  Python List列表全实例详解系列(四)> __列表删除元素(4种方法)删除重复元素(去重)(8种方法) 我的技术成长&学习资料整理分享之路 我遇到问题查找资料时,经常 ...

  4. Git实操图文详解系列教程(3)——IDEA集成Git

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 开发环境 本系列教程所涉开发环境,详情如下: 1.Win10 2.JDK1.8 3.Git2. ...

  5. Spring4详解系列(四)面向切面的Spring

    1.什么是面向切面编程 AOP(Aspect-Oriented Programming), 即面向切面编程, 它与 OOP( Object-Oriented Programming, 面向对象编程) ...

  6. 注意力机制详解系列(四):混合注意力机制

  7. 《 Python List列表全实例详解系列(三)》——列表添加元素(4种方法)

    < Python List列表全实例详解系列(三)> --列表添加元素(4种方法) 接上一篇:< Python List 列表全实例详解(二)>__访问列表元素(索引和切片)列 ...

  8. 《 Python List 列表全实例详解系列(九)》__列表反转(6种方法)

    < Python List 列表全实例详解系列(九)> __列表反转(6种方法) 本章目录: 十一.列表反转的6种方法 (11.1).通过列表的切片操作实现列表反转 (11.2).使用列表 ...

  9. 《 Python List列表全实例详解系列(二)》__创建列表(5种方式)

    < Python List列表全实例详解系列(二)> __创建列表(5种方式) 上一篇:< Python List 列表全实例详解系列(一)>__系列总目录.列表概念 本章目录 ...

  10. 《 Python List列表全实例详解系列(五)》——修改元素(修改单个、修改一组)

    < Python List列表全实例详解系列(五)> --修改元素(修改单个.修改一组) 接上一篇:<  Python List列表全实例详解系列(四)>__列表删除元素(4种 ...

最新文章

  1. 重磅升级,52个Python+OpenCV实战项目教你掌握图像处理
  2. 黄峥为何放手拼多多?数据揭秘电商平台布局背后逻辑
  3. 远程仓库与 fetch 命令——Git 学习笔记 20
  4. Maven-学习笔记04【基础-Maven生命周期和概念模型图】
  5. 【BZOJ1500】[NOI2005]维修数列 Splay
  6. 浅议NetMQ常见模式和消息加密机制
  7. 福斯i6飞行模式设置_数据网络卡的时候,不妨试试“开关飞行模式”?上网速度明显变快...
  8. Web框架——Flask系列之json、jsonify模块的使用(十四)
  9. 企业战略咨询方法:学习SWOT分析
  10. 【转载】嫁给程序员的十大好处。。
  11. win8.1除了应用界面的应用,其他系统程序都不能上网,包括IE
  12. 系统补丁自动批量安装
  13. 并发编程-信号量的使用方法和其实现原理
  14. add in Web.config
  15. 云计算将逐渐成为支撑SaaS应用的基础
  16. 暴风影音2007全功能完美版和Symantec Norton的冲突
  17. 怎么用8uftp上传网站,利用8Uftp上传自己的网页只需8步
  18. Matlab入门:界面认识
  19. 非满管电磁流量计测量平均流速
  20. 北京企业平均薪酬达16.68万元;小米 11 内核已开源;阿里达摩院 2021 十大科技趋势 | EA周报...

热门文章

  1. kalipython图形界面_Kali入侵入门版笔记!!!
  2. 对话 “智能+”平台大师,看IBM如何重塑企业数字化
  3. mac本 安装淘宝镜像
  4. Zalo超级群控 2021版[企业版]
  5. freeswitch安装1.6
  6. SQL语句的执行计划
  7. LabView学习笔记——简易入门AND初级实战项目(计算器)
  8. 韩顺平细说jsp购物车项目--用户登录及验证
  9. ubuntu系统下vscode字体显示异常(别扭)
  10. Open Inventor与Coin3D开发环境配置/Vs2017+Qt+coin3D配置方法,实测可用