android studio中从布局文件到MainActivity.java的控制流
下面是一个android应用程序的代码片段,该应用程序生成一个1-20形式的随机数,用户猜测该数字,当在猜测该数字后按下按钮时,将比较用户编写的数字(val)和应用程序生成的数字(rand_no) 在比较之后,我希望显示的文本消失,以便在每次猜测和按下按钮时生成新的输出 每次调用函数时(按下按钮时),我都将可见性设置为不可见,然后在进行比较并显示输出后再次将可见性设置为可见。 但令我惊讶的是,该操作只发生一次,在第一次函数调用后,文本不再可见android studio中从布局文件到MainActivity.java的控制流,java,android,android-studio,buttonclick,Java,Android,Android Studio,Buttonclick,下面是一个android应用程序的代码片段,该应用程序生成一个1-20形式的随机数,用户猜测该数字,当在猜测该数字后按下按钮时,将比较用户编写的数字(val)和应用程序生成的数字(rand_no) 在比较之后,我希望显示的文本消失,以便在每次猜测和按下按钮时生成新的输出 每次调用函数时(按下按钮时),我都将可见性设置为不可见,然后在进行比较并显示输出后再次将可见性设置为可见。 但令我惊讶的是,该操作只发生一次,在第一次函数调用后,文本不再可见 public class MainActivity
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);
}
public类MainActivity扩展了AppCompatActivity{
随机=新随机();
int rand_no=random.nextInt(20)+1;
公共职能(视图五)
{
EditText e1=(EditText)findViewById(R.id.EditText);//用于输入的文本
//用户
TextView e2=(TextView)findViewById(R.id.textOutput);//用于输出文本
int val=Integer.parseInt(e1.getText().toString());
e2.setVisibility(View.INVISIBLE);//将输出设置为不可见
如果(新兰德)
{
e2.setText(“再高一点!”);
}
if(rand_no==val)
{
e2.setText(“你猜对了!”);
}
e2.setVisibility(View.VISIBLE);//将输出设置为可见
/*减弱输出*/
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) {
}
});
问题在于这行代码
e2.animate().alpha(0).setDuration(1000);
现在只需注释并验证。将alpha设置为0似乎是个问题。