这里先用XML设置。

myselector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/img_pressed"/>
<item android:state_focused="true"
android:drawable="@drawable/img_focused"/>
<item android:drawable="@drawable/img_normal"/> </selector>

将此文件放在res/drawable下面,并放入你想设置的图片背景文件,img_pressed.jpg,img_focused.jpg,img_mormal.jpg。

layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"> <ImageButton
android:id="@+id/imagebutton"
android:layout_gravity="center"
android:layout_marginTop="300px"
android:layout_width="200px"
android:layout_height="200px"
android:src="@drawable/myselector" /> </LinearLayout>

在Button下添加android:src指向myselector.xml就是采用其方法

MainActivity.java

package com.example.aimee.imagebuttontest;

import android.graphics.ColorMatrixColorFilter;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageButton; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageButton btn=(ImageButton) findViewById(R.id.imagebutton);
final float[] CLICKED=new float[]{
2,0,0,0,2,
0,2,0,0,2,
0,0,2,0,2,
0,0,0,1,0
};
final float[] CLICK_OVER=new float[]{
1,0,0,0,0,
0,1,0,0,0,
0,0,1,0,0,
0,0,0,1,0
};
// btn.setBackgroundResource(R.drawable.touch_up);
// btn.setOnTouchListener(new ImageButton.OnTouchListener(){
//
// @Override
// public boolean onTouch(View v, MotionEvent event) {
// if(event.getAction()==MotionEvent.ACTION_DOWN){
// v.setBackgroundResource(R.drawable.touch_down);
// v.getBackground().setColorFilter(new ColorMatrixColorFilter(CLICKED));
// }
// else if(event.getAction()==MotionEvent.ACTION_UP){
// v.setBackgroundResource(R.drawable.touch_up);
// v.getBackground().setColorFilter(new ColorMatrixColorFilter(CLICK_OVER));
// v.setBackground(v.getBackground());
// }
// return false;
// }
// }); }
}

可用模拟器运行,可能遇到的问题,聚焦怎么实现,将鼠标悬浮在图片上并不能改变图片的状态,遇到这种情况,可以设置键盘聚焦。

可以在.android/avd/5.1_WVGA_API_26.avd下有一个config.ini的文件,讲其中的hw_dpad改为yes就可以了。

如果不用selector.xml设置,可以直接在java文件里设置,将代码中注释的部分打开,取消layout文件中的android:src=“@drawable/myselector”就行。

第十四篇-ImageButton控制聚焦,单击,常态三种状态的显示背景的更多相关文章

  1. 第十四篇 Integration Services:项目转换

    本篇文章是Integration Services系列的第十四篇,详细内容请参考原文. 简介在前一篇,我们查看了SSIS变量,变量配置和表达式管理动态值.在这一篇,我们使用SQL Server数据商业 ...

  2. 【译】第十四篇 Integration Services:项目转换

    本篇文章是Integration Services系列的第十四篇,详细内容请参考原文. 简介在前一篇,我们查看了SSIS变量,变量配置和表达式管理动态值.在这一篇,我们使用SQL Server数据商业 ...

  3. 跟我学SpringCloud | 第十四篇:Spring Cloud Gateway高级应用

    SpringCloud系列教程 | 第十四篇:Spring Cloud Gateway高级应用 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 ...

  4. Spring Cloud第十四篇 | Api网关Zuul

    ​ 本文是Spring Cloud专栏的第十四篇文章,了解前十三篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring C ...

  5. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)

    解剖SQLSERVER 第十四篇    Vardecimals 存储格式揭秘(译) http://improve.dk/how-are-vardecimals-stored/ 在这篇文章,我将深入研究 ...

  6. Python之路【第十四篇】:AngularJS --暂无内容-待更新

    Python之路[第十四篇]:AngularJS --暂无内容-待更新

  7. SpringBoot第二十四篇:应用监控之Admin

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/11457867.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   前一章(S ...

  8. Egret入门学习日记 --- 第十四篇(书中 5.4~5.6节 内容)

    第十四篇(书中 5.4~5.6节 内容) 书中内容: 总结 5.4节 内容重点: 1.如何编写自定义组件? 跟着做: 重点1:如何编写自定义组件? 文中提到了重要的两点. 好,我们来试试看. 第一步, ...

  9. Hibernate(十四篇)

    (一)Hibernate简介 (二)hibernate配置管理 (三)Hibernate对象-关系映射文件 (四)Hibernate API详解 (五)Hibernate一级缓存 (六)Hiberna ...

随机推荐

  1. 建议3---理解Python与C语言的不同之处

    我们都知道,Python的底层是用C语言实现的,但切忌用C语言的思维和风格来编写Python代码.Python与其他语言有很多不同,以下来进行简单的分析: (1)"缩进"与“{}” ...

  2. python爬虫之Beautiful Soup的基本使用

    1.简介 简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据.官方解释如下: Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索 ...

  3. Python:matplotlib绘制线条图

    线型图是学习matplotlib绘图的最基础案例.我们来看看具体过程:  下面我们将两条曲线绘制到一个图形里:   可以看到这种方式下,两个线条共用一个坐标轴,并且自动区分颜色. plot方法的核心是 ...

  4. shit iview docs & i-radio bug

    shit iview docs & i-radio bug https://github.com/iview/iview/issues/5627 <i-row> <i-col ...

  5. mysql 数据库的主从同步

    1.复制准备 操作系统 centOS 主库(mysql master):  ip为123.56.94.1   port为3306  mysql 版本 5.7.16 从库(mysql slave):   ...

  6. dreamweavercs 和dreamweaver cc的區別

    https://zhidao.baidu.com/question/1541178469432885667.html

  7. Linux环境下安装NodeJS和mongoDB

    前面的话 本文将详细介绍如何下Linux环境下安装NodeJS和mongoDB NodeJS [1]使用二进制包安装 1.在官网下载Linux环境下的NodeJS安装包 2.通过xftp软件将安装包上 ...

  8. servlet篇 之 访问形式

    get方式访问和post方式访问: get/post区别? 1) 参数传递 查询字符串(的形式)! get  url?key1=value&key2=value 2) http协议 请求报文包 ...

  9. 洛谷 P1498 南蛮图腾

    题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图 ...

  10. Clear Linux 为脚本语言提供更高的性能

    导读 Clear Linux的领先性能不仅限于C/C++应用程序,而且PHP,R和Python等脚本语言也有很大的提升速度.在一篇新的博客文章中,英特尔的一位开发人员概述了他们对Python的一些性能 ...