[两个视图,一个动画,但是有问题

问题描述 投票:0回答:1

这是我的代码:

AlphaAnimation anim_fadeIn;
Button button, button2;
TextView t, e;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_splash);

    t = findViewById(R.id.text_Splash_t);
    e = findViewById(R.id.text_Splash_e);

    button = findViewById(R.id.button);
    button2 =  findViewById(R.id.button2);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    mAnimate();
                }
            }).start();
        }
    });
    button2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    mAnimate2();
                }
            }).start();
        }
    });

    anim_fadeIn = new AlphaAnimation(0.0f, 1.0f);
    anim_fadeIn.setDuration(1000);
    anim_fadeIn.setFillAfter(true);



 private void mAnimate() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            t.startAnimation(anim_fadeIn);
        }
    });
}



private void mAnimate2() {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            e.startAnimation(anim_fadeIn);
        }
    });
}

场景:

按下button1和text1将进行动画处理(即使您进行了几次)。然后按button2会将视图添加到某处,因此无论您按button1还是2,两个文本都将动画化。

方案2:

按下button2和text2将进行动画处理(即使您多次这样做)。然后按button1会将视图添加到某处,因此无论您按button1还是2,两个文本都将进行动画处理。

如何避免此问题

这是我的代码:AlphaAnimation anim_fadeIn;按钮button,button2; TextView t,e; @Override protected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState); ...

java android animation view
1个回答
0
投票

删除新的线程包装,只需像这样在主线程中调用mAnimate()或mAnimate2():

© www.soinside.com 2019 - 2024. All rights reserved.