我尝试了几种隐藏视图然后从父布局中删除它的方法:
每次,生成的动画都会失败---视图会从屏幕上消失两次。 Alpha淡入淡出动画可以正常工作,但是当您更改可见性或将其从父视图中删除时,它会再次快速重新出现,然后再次消失。结果是一个意想不到的紧张动画。
示例代码:
Animation animation = AnimationUtils.loadAnimation(AddTaskActivity.this,
R.anim.fade_out);
final LinearLayout parentView = (LinearLayout) findViewById(R.id.addtask_root);
animation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
parentView.post(new Runnable() {
public void run() {
parentView.removeView(test);
}
});
}
该动画失败---测试视图从视图中消失两次。
有什么想法吗?
答案 0 :(得分:0)
我 猜测 如果您在删除视图或更改视图之前透明视图,则可以执行所需操作:
@Override
public void onAnimationEnd(Animation animation) {
parentView.post(new Runnable() {
public void run() {
// transparent your view
...
parentView.removeView(test);
}
});
修改强>
我在动画中看到了android文档,它说:
视图动画系统的另一个缺点是它只是 修改了绘制视图的位置,而不是实际的视图本身。对于 例如,如果你动画一个按钮在屏幕上移动,那么 按钮绘制正确,但您可以单击的实际位置 按钮不会改变,所以你必须实现自己的逻辑 处理这个。
使用属性动画系统,这些约束是完全的 删除,你可以动画任何对象的任何属性(视图和 非视图)实际上修改了对象本身。该物业 动画系统的执行方式也更加强大 动画。在较高级别,您可以为属性分配动画师 您想要制作动画,例如颜色,位置或大小等 定义动画的各个方面,例如插值和 同步多个动画师。
所以我猜您必须使用 property animation
。