2011-07-05 6 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を保持し、あなたを動かしますもう1つはImageButtonに、もう1つは効果を得ます(押し付け効果)。最初のImageButtonは通常の状態に戻ります。

だから、あなたはあなたの画面に複数のボタンがあり、それらの上で指をスライドさせた場合、指がその上

あるとき、それぞれがプレス効果を取得し、これはXMLで行うことができますか?コード? API 4では?それとも?

これも可能ですか?

おかげ

答えて

1

:まず、あなたが地域のオブジェクトのサイズを決定することができるように、各ボタンのサイズを見つける必要があり

私はできませんでしたAPIレベル4の下で私の問題の解決策を見つけてください。だから、私はあきらめました!

0

あなたがonTouchListenerと各ボタンのリージョンオブジェクトを使用してこれを行うことができます。

EDIT:興味があるかもしれない人たちへ

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

すみません。私は誤解しました。更新されたコードを見てください。 –

関連する問題