ImageButton添加按下的动画效果 变亮或变暗
来源:互联网 发布:(n-2)的阶层的算法 编辑:程序博客网 时间:2024/05/22 15:40
Android中使用ImageButton的话,程序里按下那个ImageButton时感觉不到任何按下的效果。
网上有2中经典的解决方案,一种是使用xml,一种是写在代码里。
这里我想要介绍另一种方法,使ImageButton有按下的特效,只需要准备一张普通的图片,不需要按下效果的图片。
直接看示例代码,创建 TouchLight 和 TouchDark 这两个 OnTouchListener,然后给 ImageButton 设置OnTouchListener就行了,如果使用TouchLight,则按下效果是按键变亮;另一个就是变暗。
01
import
android.app.Activity;
02
import
android.graphics.ColorMatrixColorFilter;
03
import
android.view.MotionEvent;
04
import
android.view.View;
05
import
android.view.View.OnTouchListener;
06
07
public
class
TouchedAnimation
extends
Activity {
08
09
public
static
final
OnTouchListener TouchLight =
new
OnTouchListener() {
10
11
public
final
float
[] BT_SELECTED =
new
float
[] {
1
,
0
,
0
,
0
,
50
,
0
,
1
,
0
,
0
,
50
,
0
,
0
,
1
,
0
,
50
,
0
,
0
,
0
,
1
,
0
};
12
public
final
float
[] BT_NOT_SELECTED =
new
float
[] {
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
};
13
14
@Override
15
public
boolean
onTouch(View v, MotionEvent event) {
16
if
(event.getAction() == MotionEvent.ACTION_DOWN) {
17
v.getBackground().setColorFilter(
18
new
ColorMatrixColorFilter(BT_SELECTED));
19
v.setBackgroundDrawable(v.getBackground());
20
}
else
if
(event.getAction() == MotionEvent.ACTION_UP) {
21
v.getBackground().setColorFilter(
22
new
ColorMatrixColorFilter(BT_NOT_SELECTED));
23
v.setBackgroundDrawable(v.getBackground());
24
}
25
return
false
;
26
}
27
};
28
29
public
static
final
OnTouchListener TouchDark =
new
OnTouchListener() {
30
31
public
final
float
[] BT_SELECTED =
new
float
[] {
1
,
0
,
0
,
0
,-
50
,
0
,
1
,
0
,
0
,-
50
,
0
,
0
,
1
,
0
,-
50
,
0
,
0
,
0
,
1
,
0
};
32
public
final
float
[] BT_NOT_SELECTED =
new
float
[] {
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
,
0
,
0
,
0
,
0
,
1
,
0
};
33
34
@Override
35
public
boolean
onTouch(View v, MotionEvent event) {
36
if
(event.getAction() == MotionEvent.ACTION_DOWN) {
37
v.getBackground().setColorFilter(
38
new
ColorMatrixColorFilter(BT_SELECTED));
39
v.setBackgroundDrawable(v.getBackground());
40
}
else
if
(event.getAction() == MotionEvent.ACTION_UP) {
41
v.getBackground().setColorFilter(
42
new
ColorMatrixColorFilter(BT_NOT_SELECTED));
43
v.setBackgroundDrawable(v.getBackground());
44
}
45
return
false
;
46
}
47
};
48
49
@Override
50
public
void
onCreate(Bundle savedInstanceState) {
51
super
.onCreate(savedInstanceState);
52
setContentView(R.layout.main);
53
54
ImageButton ib1, ib2;
55
ib1 = (ImageButton) findViewById(R.id.ImageButton01);
56
ib2 = (ImageButton) findViewById(R.id.ImageButton02);
57
58
ib1.setOnTouchListener(TouchLight);
59
ib2.setOnTouchListener(TouchDark);
60
}
61
}
代码里的两个 float 数组里存的东西是颜色矩阵,不了解颜色矩阵也没关系,使用这个附件就行,只需调整亮度、对比度之类的值,然后把生产的颜色矩阵复制到代码里。
- ImageButton添加按下的动画效果 变亮或变暗
- Android ImageButton添加按下的动画效果 变亮或变暗
- [Android] 为ImageButton添加按下的动画效果 变亮或变暗
- [Android] 为ImageButton添加按下的动画效果 变亮或变暗
- 为ImageButton添加按下的动画效果 变亮或变暗
- 实现ImageView按下变暗,抬起变亮。
- 图片的变暗与变亮
- jQuery实现图片变亮或变暗
- JQUERY弹框效果,背景变暗,可以自行添加弹框的动画效果
- Activity界面变暗、变亮的核心方法
- 【Android技巧】ImageButton 去边框 & 添加按下效果
- ImageButton按下效果设计
- 设置图片按下变暗效果
- 点击ImageButton时有“按下”的效果的实现
- ImageButton添加鼠标效果
- 鼠标经过图片变亮离开变暗的js特效代码
- 鼠标经过图片变亮离开变暗的js特效代码
- UIButton的ImageView 添加animation,动画执行完毕后变暗
- CAP原理与最终一致性 强一致性 透析
- 嵌入式GSM短信息接口的软硬件设计
- [Ext JS 4] contentEL,renderTo, applyTo 释义与区别
- Java 中 数值交换的几种方法
- JQuery性能优化
- ImageButton添加按下的动画效果 变亮或变暗
- 统计数组中 某个值出现的概率
- 提升C++大量赋值性能
- sicily 1003. Hit or Miss
- c语言的头号标志性文件——头文件
- extjs4验证码
- 结构体字节对齐
- gcc 编译程序
- onWindowFocusChanged