我有一个片段,其中包含textView fadein的动画。动画必须在片段加载后2秒后延迟一段时间后启动。我为此写了一个代码。但动画部分已完成,然后呈现视图。如何加载片段并在一段时间后延迟启动我的动画
我的代码如下:注意:该类扩展片段
Animation animFadein;
MenuClickHelper mClickHelper;
TextView tv;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_main_menu,
container, false);
mClickHelper = new MenuClickHelper(rootView, getFragmentManager());
tv = (TextView) rootView.findViewById(R.id.tvPresentation);
animFadein = AnimationUtils.loadAnimation(getActivity()
.getApplicationContext(), R.anim.fade_in);
animFadein.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
@Override
public void onAnimationEnd(Animation animation) {
if (animation == animFadein) {
Toast.makeText(getActivity().getApplicationContext(),
"Animation Stopped", Toast.LENGTH_SHORT).show();
}
}
});
try {
Thread.sleep(2000);
tv.startAnimation(animFadein);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rootView;
}
答案 0 :(得分:2)
Thread.sleep(2000);
不要使用 sleep 方法阻止你的main,而是可以使用Handler类并使用postdelay来延迟动画:
<强>样品:强>
改变这个:
try {
Thread.sleep(2000);
tv.startAnimation(animFadein);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
到
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
tv.startAnimation(animFadein);
}
}, 2000); //will start animation in 2 seconds
答案 1 :(得分:0)
您可以使用
获得相同的结果android:startOffset="2000"
在您的XML动画集文件中。