这里先用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. linux redis服务安装

    redis下载 官网地址:https://redis.io/download 在Linux下安装Redis非常简单,具体步骤如下(官网有说明): 1.下载源码,解压缩后编译源码. $ wget htt ...

  2. Linux基础学习(15)--启动管理

    第十五章——启动管理 一.CentOS 6.x启动管理 1.系统运行级别: (1)运行级别: (2)运行级别命令: (3)系统默认运行级别: 2.系统启动过程: . 二.启动引导程序grub 1.Gr ...

  3. Yii2框架GridView自带导出功能最佳实践

    1. 导出excel的实现方法 (1)使用phpexcel封装工具类导出excel (2)使用爬虫爬取页面再处理封装工具类导出excel (3)使用页面渲染后处理html添加头部信息生成excel文件 ...

  4. Learning to Rank(转)

    https://blog.csdn.net/kunlong0909/article/details/16805889 Table of Contents 1 前言 2 LTR流程 3 训练数据的获取4 ...

  5. github---无命令可视化界面操作

    最近工作需要,研究了一下git,这个东西挺实用,给我的感觉并不是那么简单使用,我认为还可以再深入的研究一下,挺好玩的~ 说一下我的学习路线: 1.先看的廖老师的博客:https://www.liaox ...

  6. 使用Windows任务计划程序运行Windows PowerShell脚本

    创建计划任务以运行PowerShell脚本 我需要创建一个计划任务来运行Windows PowerShell脚本的第一件事是我将执行的命令行.找到这个的简单方法是使用Run 命令.有时,我需要知道什么 ...

  7. ubuntu系统备份与恢复-remastersys方法

    http://blog.csdn.net/yaoqi_isee/article/details/73730010 http://blog.csdn.net/handsome_sheng/article ...

  8. Qt 网格布局

    把十六个button放到网格布局的界面上 #include "mainwindow.h" #include <QApplication> #include<QtW ...

  9. C# 动态调用泛型方法

    static void Main(string[] args) { #region 具体类型可传递. Personal specifiedPersonal = new Personal(); Empl ...

  10. Elasticsearch 聚合统计与SQL聚合统计语法对比(一)

    Es相比关系型数据库在数据检索方面有着极大的优势,在处理亿级数据时,可谓是毫秒级响应,我们在使用Es时不仅仅进行简单的查询,有时候会做一些数据统计与分析,如果你以前是使用的关系型数据库,那么Es的数据 ...