这里先用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. python[练习题]:实现Base64编码

    要求自己实现算法,不用库. Base64简介: Base64是一种用64个字符来表示任意二进制数据的方法. 用记事本打开exe.jpg.pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多 ...

  2. ubuntu 有些软件中不能输入中文

    如果Ubuntu设定的是英文语言,在各种软件例如wps等中很有可能就不能输入中文.这种情况,我们的解决方案是,把中文输入法加到软件的启动文件中,如何加呢?把下面内容加进去就可以解决: export X ...

  3. Lodop打印设计(PRINT_DESIGN)介绍

    打印设计(PRINT_DESIGN)界面上方有两栏菜单栏,举例说明(文本框,条码,图形等).(1)第一排最左侧第一个功能,位置移动:控制里面元素微上下左右移动,每次移动一个px.(用于微调,普通调整可 ...

  4. essential-phone的相关体验

    一.adb环境配置 1.下载adb工具 工具网上一搜一大把,注意路径不能有中文. 2.系统配置环境变量 找到环境变量,点击新建.变量名根据自己的习惯随便建,变量值为下载的adb工具解压后存放的路径. ...

  5. codeforces474D

    Flowers CodeForces - 474D 话说某个幸运的小伙伴X拿到了kevin女神送的蛋糕,然而他的吃法非常奇特,他独创了两种吃蛋糕的办法:一.一次吃一整个蛋糕:二.一次吃k个蛋糕. 那么 ...

  6. 2018-南京网络赛icpc-L题(分层最短路)

    题意:给你n个点,m条边的有向带权图,然后你每次可以选<=k条边的边权变成0,问你1到n的最短路: 解题思路:这道题基本上就是原题了呀,bzoj2763(无向图),解法就是拆点跑分层的最短路,比 ...

  7. hdu-6166(最短路+二进制分组)

    题意:给你n个点m条边的有向图,然后再给你k个不同的点,问你这k个点的最小距离: 解题思路:这道题最需要注意的就是k个点一定是不同的,那么有一个结论就是任意两个不同的数字中,在他们的二进制地表示中,一 ...

  8. luogu3702-[SDOI2017]序列计数

    Description Alice想要得到一个长度为nn的序列,序列中的数都是不超过mm的正整数,而且这nn个数的和是pp的倍数. Alice还希望,这nn个数中,至少有一个数是质数. Alice想知 ...

  9. 实验吧 WEB 貌似有点难

    错误!你的IP不在允许列表之内! 提示:代码审计 这个提示可谓是非常良心了,一看源代码是一个识别ip地址的东西,如果IP为1.1.1.1那么就会得到KEY. 第一个if是判断是否有client-ip ...

  10. kubernetes 创建系统用户来支持访问 dashboard

    Dashboard: 1.部署: 下载yaml文件  可以直接运行也可以下载下来kubectl apply -f https://raw.githubusercontent.com/kubernete ...