此代码在主要活动中运行良好。我在不同的按钮中使用了这段代码。 如何使用此代码创建类以删除重复的代码。 对于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);
}
}
}
}
提前致谢
答案 0 :(得分:1)
目前所有按钮都在同一个班级吗?因为如果是这样,你可以创建一个完成工作的方法,并为每个按钮调用它,将任何从按钮更改为按钮的变量作为方法参数传递。如果没有,您仍然可以制作一种方法,但您只需将其公开并将其放在所有其他人都可以访问的类中。
user1071777关于使用数组(例如int[] xd = int[10]
)而不是许多离散变量的评论也是现场评论。然后,您可以运行for循环(for( int i=0; i<10; i++ )
),在其中测试xd[i] == yd[i]
。