我有一个带有两个按钮的表格行,在没有触摸WebView三秒钟后,我使用动画淡化整个表格行。触摸WebView后,表格行重新淡入。但是,我注意到,当表格行淡出(并且按钮不可见)时,按钮仍然可以点击。我已经尝试在淡出动画之后立即将表行可见性设置为View.GONE,然后在淡入动画之前将可见性设置为View.VISIBLE,但无济于事;当我将它设置为View.VISIBLE时,它似乎忽略了,因为一旦表格行消失,它就不会再出现在屏幕触摸上;
TableRow tr;
Animation fade_in = new AlphaAnimation(0.0f, 1.0f);
Animation fade_out = new AlphaAnimation(1.0f, 0.0f);
WebView loss_source_dest;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.loss);
getStrings();
findIDs();
fade_in.setDuration(750);
fade_out.setDuration(750);
fade_out.setStartOffset(3000);
initial_fade.setDuration(750);
fade_in.setFillAfter(true);
fade_out.setFillAfter(true);
tr.startAnimation(fade_out);
loss_source_dest.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
tr.setVisibility(v.VISIBLE);
tr.startAnimation(fade_in);
tr.startAnimation(fade_out);
tr.setVisibility(v.GONE);
return false;
}
});
答案 0 :(得分:0)
Thread with wait() method应该做你想要的。您不仅需要为动画设置偏移,还需要为View.GONE设置偏移。
这也可以提供帮助:
myButton.setEnabled(false);
您只需在需要时启用/禁用按钮。
答案 1 :(得分:0)
好的,好像这里有一些问题。
1)要在调用setVisibility(View.GONE)后修复剩余可点击的按钮,可以在此... android View with View.GONE still receives onTouch and onClick中找到解决方案。 (我试图将此添加到您的解决方案中)。
2)startAnimation方法调用是非阻塞的,因此最好的解决方案是使用AnimationListener来检测已完成的动画,然后将按钮的可见性设置为View.GONE。
TableRow tr;
Animation fade_in = new AlphaAnimation(0.0f, 1.0f);
Animation fade_out = new AlphaAnimation(1.0f, 0.0f);
WebView loss_source_dest;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.loss);
getStrings();
findIDs();
fade_in.setDuration(750);
fade_out.setDuration(750);
fade_out.setStartOffset(3000);
fade_out.setAnimationListener(new AnimationListener(){
public void onAnimationStart(Animation anim)
{
}
public void onAnimationRepeat(Animation anim)
{
}
public void onAnimationEnd(Animation anim)
{
tr.setVisibility(View.GONE);
}
});
initial_fade.setDuration(750);
// fade_in.setFillAfter(true); (Removed)
// fade_out.setFillAfter(true); (Removed)
tr.startAnimation(fade_out);
loss_source_dest.setOnTouchListener(new View.OnTouchListener()
{
public boolean onTouch(View v, MotionEvent event)
{
tr.setVisibility(v.VISIBLE);
tr.startAnimation(fade_in);
tr.startAnimation(fade_out);
return false;
}
});
我希望我有所帮助:)