拥有此选择器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/z01_pressed" /> <!-- pressed -->
<item android:state_active="true"
android:drawable="@drawable/z01_pressed" />
<item android:state_focused="true"
android:drawable="@drawable/z01_pressed" /> <!-- focused -->
<item android:drawable="@drawable/z01" /> <!-- default -->
</selector>
我可以在Android中修改它(或采用编程方式):
单击并按住ImageButton并将手指移动到另一个ImageButton时,另一个获得效果(按下效果),第一个返回到正常状态。
所以,如果你的屏幕上有多个按钮并且你的手指在它们顶部滑动,那么每个按钮都会在手指位于其上方时获得按压效果
这可以用XML完成吗?码?在API 4中?或以上?
这甚至可能吗?
谢谢
答案 0 :(得分:1)
对于那些可能感兴趣的人:
我无法在API级别4下找到我的问题的解决方案。所以,我放弃了!
答案 1 :(得分:0)
您可以通过为每个按钮使用onTouchListener和Region对象来完成此操作。首先,您需要找到每个按钮的大小,以便能够确定Region对象的大小:
编辑:
final ImageButton button = (ImageButton) findViewById(R.id.imagebutton);
int width = 128; // The width of the button
int height = 64; // The height of the button
int[] pos = new int[2];
button.getLocationInWindow(pos);
final ImageButton button2 = (ImageButton) findViewById(R.id.imagebutton2);
int width2 = 128; // The width of the button
int height2 = 64; // The height of the button
int[] pos2 = new int[2];
button2.getLocationInWindow(pos2);
final Region region2 = new Region(pos2[0], pos2[1], pos2[0] + width, pos2[1] + height);
button.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_DOWN || event.getAction() == MotionEvent.ACTION_MOVE) {
if(region1.contains((int)event.getX(), (int)event.getY())) {
button.setImageResource(R.drawable.z01_pressed);
button2.setImageResource(R.drawable.z01);
} else if(region2.contains((int)event.getX(), (int)event.getY())) {
button2.setImageResource(R.drawable.z01_pressed);
button.setImageResource(R.drawable.z01);
else {
button.setImageResource(R.drawable.z01);
button2.setImageResource(R.drawable.z01);
}
}
else {
button.setImageResource(R.drawable.z01);
button2.setImageResource(R.drawable.z01);
}
return false;
}
});