0

現時点では、メソッドを呼び出すトグルボタンがあります。それを押すと、トグルボタンが無効になり、コードが実行され、ボタンが再度有効になり、もう一度押すと、同じことが再び有効になり、元の状態に戻ります. これを変更して、ボタンを押したままにすると状態が変化してコードが実行され、離すと元に戻ります。これどうやってするの?このメソッドである種のリスナーを設定できますか? そこで、このメソッドで clicklistener を設定します。ボタンのハンドルで、ここで呼び出されるボタンは何ですか。リスナーをアタッチする名前を付ける必要がありますか?

public void pushtotalk3(final View view) {

                //if more than one call, change this code
                  int callId = 0;
                  for (SipCallSession callInfo : callsInfo) {
                      callId = callInfo.getCallId();                      
                  }
                  final int id= callId;

        final boolean on = ((ToggleButton) view).isChecked();
        ((ToggleButton) view).setEnabled(false);
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    if (on) {
                        OnDtmf(id, 17, 10);
                        Thread.sleep(10);
                        OnDtmf(id, 16, 9);
                    runOnUiThread(new Runnable() {
                            public void run() {
                                ((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
                                ((ToggleButton) view).setEnabled(true);
                            }
                        });
                    } else {
                        OnDtmf(id, 18, 11);
                        Thread.sleep(10);
                        OnDtmf(id, 18, 11);
                        runOnUiThread(new Runnable() {
                            public void run() {
                                ((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
                                ((ToggleButton) view).setEnabled(true);
                            }
                        });
                    }
                } catch (InterruptedException e) {
                    Log.d(TAG, "Failed to send: " + e.getMessage());
                }
            }
        }).start();
    }

編集:特に、ボタンを使用する「メソッドバージョン」でこれを行う方法を考えています。「アクティビティのボタンに OnClickListener を適用する代わりに、android:onClick 属性を使用して、XML レイアウトのボタンにメソッドを割り当てることができます」

ビューをトグルボタンにキャストしてそれを使用しますか?

4

2 に答える 2

2

これを試して:

    ToggleButton yourBtn = (ToggleButton) findViewById(R.id.yourbtnid)
    yourBtn.setOnTouchListener(new OnTouchListener() {

                        @Override
                        public boolean onTouch(View v, MotionEvent event) {
                            switch (event.getAction()) {
                            case MotionEvent.ACTION_DOWN: {

                                //press
                                ((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
                                ((ToggleButton) view).setEnabled(true);


                                return true;
                            }
                            case MotionEvent.ACTION_UP: {

                                //release
                                ((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
                                ((ToggleButton) view).setEnabled(true);

                                return true;
                            }
                            default:
                                return false;
                            }
                        }

                    });

onClick メソッドで呼び出したい場合は、これを試してください。しかし、私は何も約束しません。

public void touchButton(View view) {
       view.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
             switch (event.getAction()) {
             case MotionEvent.ACTION_DOWN: {

                 //press
                 ((ToggleButton) view).setBackgroundResource(R.drawable.btn_blue_glossy);
                 ((ToggleButton) view).setEnabled(true);


                 return true;
             }
             case MotionEvent.ACTION_UP: {

                 //release
                 ((ToggleButton) view).setBackgroundResource(R.drawable.btn_lightblue_glossy);
                 ((ToggleButton) view).setEnabled(true);

                 return true;
             }
             default:
                 return false;
             }
        }
    });
    }

これを XML 項目に入れます。

android:onClick="touchButton"
于 2013-10-25T09:48:25.900 に答える
1
    button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
    if(event.getAction() == MotionEvent.ACTION_DOWN) {

    } else if (event.getAction() == MotionEvent.ACTION_UP) {

    }
}
    };

これがあなたを助けることを願っています

于 2013-10-25T09:48:40.417 に答える