2011-07-05 5 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> 

내가 그것을 수정 (또는 프로그래밍 방법이) 할 수 안드로이드에서이 작업을 수행하려면 :

을 클릭하고하여 ImageButton을 누른 상태로 이동 손가락을 다른 ImageButton에 놓으면 다른 하나는 효과 (누르는 효과)를 얻고 첫 번째 것은 정상 상태로 돌아갑니다. 당신은 당신의 화면에 여러 개의 버튼이 있고 그 상단에 손가락을 슬라이드하면 손가락이

이는 XML에서 할 수 이상인 경우

따라서, 각각의 하나는 언론의 효과를 얻는다? 암호? API 4에서? 또는 위?

이것도 가능합니까?

감사

답변

1

: 먼저이 지역 객체의 크기를 결정 할 수 있도록 각 버튼의 크기를 찾을 필요가

나는 할 수 없었다 API 레벨 4에서 내 문제에 대한 해결책을 찾으십시오. 그래서 포기했습니다!

0

당신은 onTouchListener 각 버튼의 지역 개체를 사용하여이 작업을 수행 할 수 있습니다.

편집 : 관심을 가질만한 사람들에게

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

죄송합니다. 나는 오해했다. 업데이트 된 코드를 살펴보십시오. –