【发布时间】:2015-03-06 17:31:12
【问题描述】:
在创建活动时,我设置了AlphaAnimation 以执行一些视觉效果。现在我设置了LayoutAnimationListener 并覆盖了onAnimationEnd() 方法。动画正确执行,对onAnimationEnd() 的回调也正常工作。在 onAnimationEnd() 方法中,我想对 Activity 布局的两个子对象执行另一个动画。这是两个EditTexts,在XML 中定义,属性为android:visibility="gone"。对于初学者,我想做的是将它们设置为VISIBLE。
我尝试从他们的parent 获取参考,更改他们的setVisibility(View.VISIBLE); 并最终使父视图无效。
这种尝试似乎不起作用。您将在下面找到代码:
@Override
public void onAnimationEnd(Animation animation) {
Log.d(TAG, "onAnimationEnd()");
// TODO move icon up, make edittext's appear.
RelativeLayout layout = (RelativeLayout) View.inflate(
getApplicationContext(), R.layout.splash_dialog_layout,
null);
LinearLayout linear = (LinearLayout) layout.getChildAt(0);
Log.d(TAG, "Children" + linear.getChildCount());
email = (EditText) linear.findViewById(R.id.splash_Email);
email.setVisibility(View.VISIBLE);
pass = (EditText) linear.findViewById(R.id.splash_password);
pass.setVisibility(View.VISIBLE);
linear.invalidate();
layout.invalidate();
Splash_Activity.layout.invalidate();
}
};
我尝试从父级中删除所有视图,并一一添加它们并再次使其无效,但这似乎也不起作用。
我可能对视图通货膨胀的运作方式存在误解,这不应该有效吗?
感谢您的宝贵时间。
【问题讨论】:
-
你正在膨胀一个全新的布局。您需要从实际使用的布局中获取子视图,例如
Activity.this.findViewById(int). -
感谢您的回答,这确实是问题所在。有时答案就在那里。发表您的评论作为答案,我会接受。
标签: android android-layout view layout-inflater