2011-07-05 19 views
1

有了這個選擇XML文件:變化的ImageButton行爲

<?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中?或以上?

這甚至可能嗎?

感謝

回答

1

對於那些誰可能會感興趣:

我做不到在API級別4下找到解決方案。所以,我放棄了!

0

您可以通過使用onTouchListener併爲每個按鈕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; 
    } 
}); 
+0

不適用於我。你知道它會工作嗎? – iTurki

+0

如果我點擊並按住一個按鈕並移過另一個按鈕,則最後一次未被點擊。這就是我想要的 – iTurki

+0

對不起。我誤解了。看看更新的代碼。 –