2012-11-26 4 views
-1

너무 근사하면 죄송합니다. 나는 확장하는 새로운 클래스를 생성 버튼 : 내 주요 활동에서맞춤 검색 버튼 만들기

public class MyButton extends Button { 
    public static final int STATUS_OFF = 0; 
    public static final int STATUS_PLAY1 = 1; 
    public static final int STATUS_PLAY2 = 2; 
    public static final int STATUS_PLAY3 = 3; 

    public int status; 

    private Context ctx; 

    public MyButton(Context context) { 
     super(context); 

     ctx = context; 
     status = STATUS_OFF; 
     super.setBackgroundResource(R.drawable.sound_button_off); 
    } 

    private void click() { 
     switch (status) { 
      case STATUS_OFF: 
       status = STATUS_PLAY1; 
       break; 
      case STATUS_PLAY1: 
       status = STATUS_PLAY2; 
       break; 
      case STATUS_PLAY2: 
       status = STATUS_OFF; 
       break; 
      case STATUS_PLAY3: 
       break; 
     } 
     // OTHER THINGS TO DO 
    } 
} 

:

이 가능한 것으로 만들 수있는 방법
public class MyActivity extends Activity { 
    private static final int HORIZ = 16; 
    private MyButton[] b = new MyButton[HORIZ]; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_rhythm); 

      createButtons(); 
    } 

    private void createButtons() { 
    LinearLayout layout = (LinearLayout)findViewById(R.id.layout_main_linear); 
    for (int w=0; w<HORIZ; w++) { 
     b[w] = new MyButton(MyActivity.this); 
     LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     layout.addView(b[w], p); 
     b[w].setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 

       // HELP ME HERE 
      // WHEN CLICKING THIS BUTTON, IT AUTOMATICALLY SHOULD RUN the private method click(); 
      // IT IS PRIVATE AND SHOULD NOT BE RUN FROM HERE, BUT AUTOMATICALLY EACH TIME THE BUTTON IS CLICKED. 

      } 
     }); 
    } 
    } 
} 

때 내 메인 클래스에서 내가 setOnClickListener(), 클릭() 메서드가 자동으로 호출됩니까? 다른 말로하면이 버튼은 다른 버튼처럼 동작하지만, 클릭 할 때 MORE를 수행해야합니다. 감사합니다. . 이름은이 파일이 유 유용 할 것이며,이 파일 이름으로 UR 버튼의 배경을 XML 당김 폴더에 넣고, 및 설정 ... :

+1

실제로 달성하고자하는 것을 얻지 못했습니다 .. –

+0

간단하게하기 위해 많은 코드가 생략되었지만 명확하지 않습니다. 내가 가지고있는 MainActivity에서 : private MyButton b = new MyButton(); (...) b.setOnClickListener (뉴 View.onClickListerner() { 공공 무효 온 클릭 (보기 V) { // 일부 코드 } }); b를 클릭하면 private click() 메서드가 실행 된 후에 만 ​​"some code"를 실행하려고합니다. 특히,()를 클릭하면 배경이 회전하고 사운드가 재생되며 일부 상태 변수가 변경됩니다. 이러한 작업은 b 내부에서 수행되어야하며 MainActivity의 setOnClickListener에서 실행되지 않아야합니다. 지금은 분명하기를 바랍니다. –

답변

0
https://github.com/johannilsson/android-actionbar/ 

이 선택에 대한 코드입니다

<?xml version="1.0" encoding="utf-8"?> 

    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 

     <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/focused" /> 

     <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/focusedpressed" /> 

     <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pressed" /> 

     <item android:drawable="@drawable/defaultbutton" /> 

    </selector> 
+0

답변 해 주셔서 감사합니다. 미안해. 나는 많은 것을 만들 필요가있는 click() 메서드에서 배경을 동적으로 변경해야합니다. 그 중 하나입니다. onClick()이 트리거 될 때 click()이 실행되어야합니다. 즉,이 버튼은 다른 버튼처럼 동작해야하지만, 클릭하면 click() 메소드도 실행됩니다. –

+0

http://samir-mangroliya.blogspot.in/2012/11/android-custom-button-example.html –

+0

https://www.dropbox.com/s/2h1vfze2a5zkyug/Android%20Custom%20Buttons.rar http : //android.programmerguru.com/android-custom-toast-example/ –