以下是一个Android应用程序的代码段,该代码段生成一个1-20的随机数,用户猜测该数字,在猜测该数字后按下按钮时,该数字由用户写入(val)并由该应用程序生成(rand_no)比较。

比较之后,我希望显示的文本消失,以便每次进行猜测并按下按钮时都生成新的输出。

每次调用该函数时(按下按钮时)我将可见性设置为INVISIBLE,然后在进行比较并显示输出后再次将可见性设置为VISIBLE。
但是令我惊讶的是,该操作仅发生一次,并且在第一个函数调用之后该文本不再可见。

public class MainActivity extends AppCompatActivity {
Random random=new Random();
int rand_no=random.nextInt(20)+1;
public void function(View v)
{
    EditText e1=(EditText)findViewById(R.id.editText); //for text input by
                                                       //the user

    TextView e2=(TextView) findViewById(R.id.textOutput); //for output text

    int val=Integer.parseInt(e1.getText().toString());

    e2.setVisibility(View.INVISIBLE);  //setting output to INVISIBLE
    if(rand_no<val)
    {
        e2.setText("Go Lower!");
    }

    if(rand_no>val)
    {
        e2.setText("Go Higher!");
    }

    if(rand_no==val)
    {
        e2.setText("You guessed right!");
    }
    e2.setVisibility(View.VISIBLE); //setting output to VISIBLE

      /* Fading away the output*/
    e2.animate().setStartDelay(2000);
    e2.animate().alpha(0).setDuration(1000);
}


因此,我想知道函数结束后,控件再次传递给
布局文件?还是保留在MainActivity.java中,因为即使我们多次按下按钮才能再次执行该功能,可见性也只分配了一次。

最佳答案

e2.animate()。alpha(0).setDuration(1000);


您正在使其褪色,因此需要再次使其可见。

用下面的代码替换引号行

    e2.animate().alpha(0).setDuration(1000)
    .setListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {
            e2.animate().alpha(1).setDuration(500);
        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });

09-11 20:51