0

アプリケーションで、複数のボタンを作成し、それらに同時にイベントを適用したい。次のコードで動的ボタンを作成しましたが、2つのボタンにタッチイベントを適用すると、イベントは一度に1つのボタンのみを適用します

以下のコードで複数のボタンを作成しました。

for(int ii= 0;ii <6;ii++)
            { 



params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
             params.width = 50;
             params.height = 50;


                switch(ii)
                 {
                 case 0:
                     params.setMargins(100,200, 0, 0);
                 break; 
                 case 1:
                     params.setMargins(350,200, 0, 0);
                     break;
                 case 2:
                     params.setMargins(600,200, 0, 0);
                     break;
                 case 3:
                     params.setMargins(300,400, 0, 0);
                     break;
                 case 4:
                     params.setMargins(100,500, 0, 0);
                     break;
                 case 5:
                     params.setMargins(350,500, 0, 0);
                     break;

                 }


        }



@Override
        public boolean onTouch(View v, MotionEvent event) {
        int eventaction = event.getAction();
        FrameLayout.LayoutParams params = null;
             switch (eventaction) {
             case MotionEvent.ACTION_DOWN:  

                 System.out.println("************event.getAction()******"+event.getRawX()+"*********"+event.getRawY());
                 params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                 params.setMargins((int)(event.getRawX() - (v.getWidth() / 2))-25, (int)(event.getRawY() - (v.getHeight()/2))-25,0,0);
                 params.width =100;
                 params.height=100;
                 v.setLayoutParams(params);
                 break;
             case MotionEvent.ACTION_MOVE:
                    Staticmethodclass.changecurrentplay = "Yes";

                   if(event.getRawX() < 780 && event.getRawY() < 1200 && event.getRawX()>=0 && event.getRawY()>=0)
                 {
                    params =new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
                    params.setMargins((int)(event.getRawX() - (v.getWidth() / 2)), (int)(event.getRawY() - (v.getHeight()/2)),0,0);
                    params.width =100;
                    params.height=100;
                    v.setLayoutParams(params);
                 }

             break;
             case MotionEvent.ACTION_UP:
                 System.out.println("*****actionup****event.getAction()******"+event.getRawX()+"*********"+event.getRawY());
                 if(event.getRawX() < 780 && event.getRawY() < 1200 && event.getRawX()>=0 && event.getRawY()>=0)
                 {
                 params =new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
//               params=(android.widget.FrameLayout.LayoutParams) v.getLayoutParams();
                 params.setMargins((int)(event.getRawX() - (v.getWidth() / 2))+25, (int)(event.getRawY() - (v.getHeight()/2))+25,0,0);
                 params.width = 50;
                 params.height= 50;
                 v.setLayoutParams(params);
                 }
                 else
                 {
                     System.out.println("***else***event.getAction()******"+event.getRawX()+"*********"+event.getRawY());
                     android.widget.FrameLayout.LayoutParams params1 =(android.widget.FrameLayout.LayoutParams) v.getLayoutParams();
                     params1.setMargins((int)params1.leftMargin+25, (int)(params1.topMargin+25),0,0);
                     params1.width = 50;
                     params1.height= 50;
                     v.setLayoutParams(params1);
                 }

             return false;

plzヘルプ..?

4

1 に答える 1

0

いずれかのボタンに触れると、そのボタンがビューvになります。他のボタンを有効にする場合は、単一のボタンではなく、すべてのボタンをレイアウト内に配置してから、タッチビューに移動して、最終的にはは、レイアウト内で動的に定義したすべての動的ボタンを移動し、単一のボタンではなくレイアウトを移動するため、複数のボタンを移動してレイアウト内に配置し、そのレイアウトを移動できます。

于 2012-04-16T10:51:38.157 に答える