我正在尝试让 TextView 每 472 毫秒生成一个随机数,五次。我将如何使用循环来执行此操作?



所以,我有一个生成随机数的TextView。我需要该 TextView 每 472 毫秒生成一个随机数,五次。所以我点击屏幕并出现一个随机数,然后在 472 毫秒后出现另一个数字,并重复直到显示五个随机数。我知道我需要使用循环,但是我会使用什么条件来确保只生成五个随机数?

这是我的 XML:

<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="0dp"
android:layout_height="0dp"
android:clickable="true"
android:onClick="perform_action"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_marginBottom="75dp"
android:gravity="center"
android:textSize="400sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" />
</RelativeLayout>
</LinearLayout>
</android.support.constraint.ConstraintLayout>

还有我的爪哇:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void perform_action(View view) {
Random r = new Random();
int minNumber = 1;
int maxNumber = 9;
int randomNumber = r.nextInt((maxNumber-minNumber)+1)+minNumber;
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(String.valueOf(randomNumber));
}
}

你应该使用 rxjava

添加这些依赖项:

implementation 'io.reactivex.rxjava2:rxjava:2.2.2'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.0'

然后当你点击你的按钮:

final List< Integer > randomNumbers = new ArrayList<>( );
Observable.intervalRange( 0, 5, 0, 472, TimeUnit.MILLISECONDS )
.map( aLong -> {
int previous = randomNumbers.size( ) > 0 ? randomNumbers.get(
randomNumbers.size( ) - 1 ) : -1;
int randomNumber = generateRandomNumber();
while( randomNumber == previous ) generateRandomNumber();
randomNumbers.add( randomNumber );
return randomNumber;
} )
.observeOn( AndroidSchedulers.mainThread( ) )
.subscribe(integer -> {
TextView tv = (TextView) findViewById(R.id.textView1);
tv.setText(String.valueOf(integer));
} );
private int generateRandomNumber( )
{
Random r = new Random( );
int minNumber = 1;
int maxNumber = 9;
return r.nextInt( ( maxNumber - minNumber ) + 1 ) + minNumber;
}

就是这样!

创建一个计数器来检查它被触摸了多少次。

int counter=0;

创建触摸侦听器 。

mView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//paste logic here
return false;
}
});

逻辑将是。

if(counter<=5){
perform_action();
counter++;
}

最新更新