Java android-if语句的switch case返回值
在我的应用程序中,我有一个随机选取的图像。图像显示在屏幕上,用户可以将其滑动到一侧。每次它是图像Java android-if语句的switch case返回值,java,android,Java,Android,在我的应用程序中,我有一个随机选取的图像。图像显示在屏幕上,用户可以将其滑动到一侧。每次它是图像a,计数器都应该计数,但它不计数。my int getMyRandomResId的返回值在条件中是否错误,或者错误在哪里 public class MainActivity extends Activity { private ImageView imageView; public int sco = 0; float x1, x2; float y1, y2;
a
,计数器都应该计数,但它不计数。my int getMyRandomResId的返回值在条件中是否错误,或者错误在哪里
public class MainActivity extends Activity
{
private ImageView imageView;
public int sco = 0;
float x1, x2;
float y1, y2;
final Random rand = new Random();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
score = (TextView)findViewById(R.id.textView1);
score.setText(String.valueOf(sco));
}
int getMyRandomResId()
{
int imag = rand.nextInt(4);
switch (imag)
{
case 0:
return R.drawable.a;
case 1:
return R.drawable.b;
case 2:
return R.drawable.c;
default:
return R.drawable.d;
}
}
public boolean onTouchEvent(MotionEvent touchevent)
{
final ViewPropertyAnimator animator = imageView.animate();
switch (touchevent.getAction())
{
case MotionEvent.ACTION_DOWN:
{
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP:
{
x2 = touchevent.getX();
y2 = touchevent.getY();
//if left to right sweep event on screen
if (x1 < x2 && (x2 - x1) >= (y1 - y2) && (x2 - x1) >= (y2 - y1))
{
if(getMyRandomResId() == R.drawable.a)
{
sco++;
score.setText(String.valueOf(sco));
}
animationRunning = true;
animator.translationX((imageView.getWidth()))
.setDuration(250)
.setListener(new AnimatorListenerAdapter()
{
@Override
public void onAnimationEnd(Animator animation)
{
imageView.setTranslationX(0);
imageView.setImageResource(getMyRandomResId());
animationRunning = false;
}
})
.start();
}
}
}
}
公共类MainActivity扩展活动
{
私人影像视图;
公共int sco=0;
浮点x1,x2;
浮动y1,y2;
最终随机数=新随机数();
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_游戏);
分数=(TextView)findViewById(R.id.textView1);
score.setText(String.valueOf(sco));
}
int getMyRandomResId()
{
int imag=rand.nextInt(4);
开关(imag)
{
案例0:
返回R.drawable.a;
案例1:
返回R.drawable.b;
案例2:
返回R.drawable.c;
违约:
返回R.可提取d;
}
}
公共布尔onTouchEvent(MotionEvent touchevent)
{
最终视图属性yanimator animator=imageView.animate();
开关(touchevent.getAction())
{
case MotionEvent.ACTION\u DOWN:
{
x1=touchevent.getX();
y1=touchevent.getY();
打破
}
case MotionEvent.ACTION\u UP:
{
x2=touchevent.getX();
y2=touchevent.getY();
//如果屏幕上出现从左向右扫描事件
如果(x1=(y1-y2)&&(x2-x1)>=(y2-y1))
{
if(getMyRandomResId()==R.drawable.a)
{
sco++;
score.setText(String.valueOf(sco));
}
animationRunning=true;
animator.translationX((imageView.getWidth())
.setDuration(250)
.setListener(新的AnimatorListenerAdapter()
{
@凌驾
AnimationEnd上的公共无效(Animator动画)
{
imageView.setTranslationX(0);
setImageResource(getMyRandomResId());
animationRunning=false;
}
})
.start();
}
}
}
}
每次创建Random rand=new Random();
都从同一点开始
如果使用相同的种子创建了两个Random实例,并且对每个实例进行了相同的方法调用序列,则它们将生成并返回相同的数字序列
您应该只创建一次Random
类的实例。例如:
公共类MainActivity扩展活动{
最终随机数=新随机数();
…
每次创建Random rand=new Random();
时,它都从同一点开始
如果使用相同的种子创建了两个Random实例,并且对每个实例进行了相同的方法调用序列,则它们将生成并返回相同的数字序列
您应该只创建一次Random
类的实例。例如:
公共类MainActivity扩展活动{
最终随机数=新随机数();
…
getMyRandomResId()此方法运行良好,尽管Foxana的建议也更好,但我已经做了一些更改,我已经对此进行了测试并为我工作了
public class MainActivity extends Activity
{
private ImageView imageView;
public int sco = 0;
float x1, x2;
float y1, y2;
Random rand;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
score = (TextView)findViewById(R.id.textView1);
score.setText(String.valueOf(sco));
rand = new Random();
}
int getMyRandomResId()
{
int imag = rand.nextInt(4);
switch (imag)
{
case 0:
sco++;
return R.drawable.a;
case 1:
return R.drawable.b;
case 2:
return R.drawable.c;
default:
return R.drawable.d;
}
}
public boolean onTouchEvent(MotionEvent touchevent)
{
final ViewPropertyAnimator animator = imageView.animate();
switch (touchevent.getAction())
{
case MotionEvent.ACTION_DOWN:
{
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP:
{
x2 = touchevent.getX();
y2 = touchevent.getY();
//if left to right sweep event on screen
if (x1 < x2 && (x2 - x1) >= (y1 - y2) && (x2 - x1) >= (y2 - y1))
{
if(getMyRandomResId() == R.drawable.a)
{
score.setText(String.valueOf(sco));
}
animationRunning = true;
animator.translationX((imageView.getWidth()))
.setDuration(250)
.setListener(new AnimatorListenerAdapter()
{
@Override
public void onAnimationEnd(Animator animation)
{
imageView.setTranslationX(0);
imageView.setImageResource(getMyRandomResId());
animationRunning = false;
}
})
.start();
}
}
}
}
公共类MainActivity扩展活动
{
私人影像视图;
公共int sco=0;
浮点x1,x2;
浮动y1,y2;
随机兰德;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_游戏);
分数=(TextView)findViewById(R.id.textView1);
score.setText(String.valueOf(sco));
rand=新随机数();
}
int getMyRandomResId()
{
int imag=rand.nextInt(4);
开关(imag)
{
案例0:
sco++;
返回R.drawable.a;
案例1:
返回R.drawable.b;
案例2:
返回R.drawable.c;
违约:
返回R.可提取d;
}
}
公共布尔onTouchEvent(MotionEvent touchevent)
{
最终视图属性yanimator animator=imageView.animate();
开关(touchevent.getAction())
{
case MotionEvent.ACTION\u DOWN:
{
x1=touchevent.getX();
y1=touchevent.getY();
打破
}
case MotionEvent.ACTION\u UP:
{
x2=touchevent.getX();
y2=touchevent.getY();
//如果屏幕上出现从左向右扫描事件
如果(x1=(y1-y2)&&(x2-x1)>=(y2-y1))
{
if(getMyRandomResId()==R.drawable.a)
{
score.setText(String.valueOf(sco));
}
animationRunning=true;
animator.translationX((imageView.getWidth())
.setDuration(250)
.setListener(新的AnimatorListenerAdapter()
{
@凌驾
AnimationEnd上的公共无效(Animator动画)
{
imageView.setTranslationX(0);
setImageResource(getMyRandomResId());
animationRunning=false;
}
})
.start();
}
}
}
}
希望这能有所帮助。getMyRandomResId()此方法运行良好,尽管Foxana的建议也更好,但我已经做了一些更改,我已经测试了此方法并为我工作
public class MainActivity extends Activity
{
private ImageView imageView;
public int sco = 0;
float x1, x2;
float y1, y2;
Random rand;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game);
score = (TextView)findViewById(R.id.textView1);
score.setText(String.valueOf(sco));
rand = new Random();
}
int getMyRandomResId()
{
int imag = rand.nextInt(4);
switch (imag)
{
case 0:
sco++;
return R.drawable.a;
case 1:
return R.drawable.b;
case 2:
return R.drawable.c;
default:
return R.drawable.d;
}
}
public boolean onTouchEvent(MotionEvent touchevent)
{
final ViewPropertyAnimator animator = imageView.animate();
switch (touchevent.getAction())
{
case MotionEvent.ACTION_DOWN:
{
x1 = touchevent.getX();
y1 = touchevent.getY();
break;
}
case MotionEvent.ACTION_UP:
{
x2 = touchevent.getX();
y2 = touchevent.getY();
//if left to right sweep event on screen
if (x1 < x2 && (x2 - x1) >= (y1 - y2) && (x2 - x1) >= (y2 - y1))
{
if(getMyRandomResId() == R.drawable.a)
{
score.setText(String.valueOf(sco));
}
animationRunning = true;
animator.translationX((imageView.getWidth()))
.setDuration(250)
.setListener(new AnimatorListenerAdapter()
{
@Override
public void onAnimationEnd(Animator animation)
{
imageView.setTranslationX(0);
imageView.setImageResource(getMyRandomResId());
animationRunning = false;
}
})
.start();
}
}
}
}
公共类MainActivity扩展活动
{
公共关系
<RelativeLayout android:id="@+id/activity_main"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ImageView
android:id="@+id/x"
android:layout_width="200dp"
android:layout_height="200dp"
android:text="Hello World!"
app:srcCompat="@drawable/ic_android_black_24dp" />
</RelativeLayout>
E/ResId:: 2130837590
E/ResId:: 2130837590
E/ResId:: 2130837589
E/ResId:: 2130837588
E/NewScoId: 1
E/ResId:: 2130837587
E/ResId:: 2130837590
E/ResId:: 2130837588
E/NewScoId: 2
E/ResId:: 2130837587
E/ResId:: 2130837589
E/ResId:: 2130837588
E/NewScoId: 3
[...]