我想减少Android中的代码

时间:2014-07-16 17:44:22

标签: java android

此代码在主要活动中运行良好。我在不同的按钮中使用了这段代码。 如何使用此代码创建类以删除重复的代码。 对于10个按钮,我有“if(ba1x [i] == x3&& ba1y [j] == y3)to if(ba10x [i] == x3&& ba10y [j] == y3)”。 / p>

  if(pevent.getAction()==MotionEvent.ACTION_MOVE)
                {
                    x3=(int)pevent.getRawX();
                    y3=(int)pevent.getRawY()-130;
                //  b4.setText("ss"+x3+y3);
                        for(int i=0;i<67;i++){
                            for(int j=0;j<67;j++){

                             if( ba1x[i]==x3&&ba1y[j]==y3)
                             {
                                 for(int a=0;a<=3;a++){
                                     if(xp1==0&&f1[a]==null){
                                         f1[a]=(Integer) ib1.getTag();
                                         xp1=1;
                                         if(xd1==0&&yd1==0){

                                             xd1=(int) ib1.getX();
                                             yd1=(int) ib1.getY();
                                             b.touch_start(xd1,yd1);
                                             b.invalidate();
                                             }
                                                if(xd2==0&&yd2==0){

                                                     xd2=(int) ib2.getX();
                                                     yd2=(int)ib2.getY();
                                                     }
                                                if(xd3==0&&yd3==0){

                                                     xd3=(int)ib3.getX();
                                                     yd3=(int)ib3.getY();
                                                     }
                                                if(xd4==0&&yd4==0){

                                                     xd4=(int)ib4.getX();
                                                     yd4=(int)ib4.getY();
                                                     }
                                                if(xd5==0&&yd5==0){

                                                     xd5=(int)ib5.getX();
                                                     yd5=(int)ib5.getY();
                                                     }
                                                if(xd6==0&&yd6==0){

                                                     xd6=(int)ib6.getX();
                                                     yd6=(int)ib6.getY();
                                                     }
                                                if(xd7==0&&yd7==0){

                                                     xd7=(int)ib7.getX();
                                                     yd7=(int)ib7.getY();
                                                     }
                                                if(xd8==0&&yd8==0){

                                                     xd8=(int)ib8.getX();
                                                     yd8=(int)ib8.getY();
                                                     }
                                                if(xd9==0&&yd9==0){

                                                     xd9=(int)ib9.getX();
                                                     yd9=(int)ib9.getY();
                                                     }
                                                if(xd10==0&&yd10==0){

                                                     xd10=(int)ib10.getX();
                                                     yd10=(int)ib10.getY();
                                                     }
                                                else{

                                                     xd1=(int)ib1.getX();
                                                     yd1=(int)ib1.getY();
                                                     b.touch_move(xd1, yd1);
                                                     b.invalidate();
                                                     rl.addView(b);

                                                }


                                     }


                                 }  
                             }  

                             if( ba2x[i]==x3&&ba2y[j]==y3)
                             {
                                 for(int a=0;a<=3;a++){
                                     if(xp2==0&&f1[a]==null){
                                         f1[a]=(Integer) ib2.getTag();
                                         xp2=1;
                                         if(xd1==0&&yd1==0){

                                             xd1=(int) ib1.getX();
                                             yd1=(int) ib1.getY();

                                             }
                                                if(xd2==0&&yd2==0){

                                                     xd2=(int) ib2.getX();
                                                     yd2=(int)ib2.getY();
                                                     b.touch_start(xd2,yd2);
                                                     b.invalidate();
                                                     }
                                                if(xd3==0&&yd3==0){

                                                     xd3=(int)ib3.getX();
                                                     yd3=(int)ib3.getY();
                                                     }
                                                if(xd4==0&&yd4==0){

                                                     xd4=(int)ib4.getX();
                                                     yd4=(int)ib4.getY();
                                                     }
                                                if(xd5==0&&yd5==0){

                                                     xd5=(int)ib5.getX();
                                                     yd5=(int)ib5.getY();
                                                     }
                                                if(xd6==0&&yd6==0){

                                                     xd6=(int)ib6.getX();
                                                     yd6=(int)ib6.getY();
                                                     }
                                                if(xd7==0&&yd7==0){

                                                     xd7=(int)ib7.getX();
                                                     yd7=(int)ib7.getY();
                                                     }
                                                if(xd8==0&&yd8==0){

                                                     xd8=(int)ib8.getX();
                                                     yd8=(int)ib8.getY();
                                                     }
                                                if(xd9==0&&yd9==0){

                                                     xd9=(int)ib9.getX();
                                                     yd9=(int)ib9.getY();
                                                     }
                                                if(xd10==0&&yd10==0){

                                                     xd10=(int)ib10.getX();
                                                     yd10=(int)ib10.getY();
                                                     }
                                                else{

                                                     xd2=(int)ib2.getX();
                                                     yd2=(int)ib2.getY();
                                                     b.touch_move(xd2, yd2);
                                                     b.invalidate();
                                                     rl.addView(b);
                                                }

                                     }


                                 }            


                             }   

提前致谢

1 个答案:

答案 0 :(得分:1)

目前所有按钮都在同一个班级吗?因为如果是这样,你可以创建一个完成工作的方法,并为每个按钮调用它,将任何从按钮更改为按钮的变量作为方法参数传递。如果没有,您仍然可以制作一种方法,但您只需将其公开并将其放在所有其他人都可以访问的类中。

user1071777关于使用数组(例如int[] xd = int[10])而不是许多离散变量的评论也是现场评论。然后,您可以运行for循环(for( int i=0; i<10; i++ )),在其中测试xd[i] == yd[i]