我有一个Activity
,主屏幕只有标题栏(等等)。我在标题栏下面有另一个TextView
,我从上到下进行动画制作(从View.GONE
开始,然后在用户发生事件后,我将其设置为可见的动画)。< / p>
除了标题栏下方的TextView
动画到标题栏上方的位置之外,这样做效果很好。我希望它好像TextView
来自标题栏下面的 。两个视图都在LinearLayout
中,因此我无法像在FrameLayout
中那样处理z顺序。有什么建议吗?
答案 0 :(得分:2)
我最终通过在LinearLayout中包含textview,然后将LayoutAnimationController设置为LinearLayout来解决这个问题。这会导致所有子项相对于父容器进行动画处理,这使得下拉列表仅在LinearLayout中呈现(完美地工作)。这是我用于动画控制器和ListView的代码:
private void addDeleteDropAnimation() {
AnimationSet set = new AnimationSet(true);
Animation animation = new AlphaAnimation(0.0f, 1.0f);
animation.setDuration(150);
set.addAnimation(animation);
animation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF, 0.0f,Animation.RELATIVE_TO_SELF, 0.0f,
Animation.RELATIVE_TO_SELF, -1.0f,Animation.RELATIVE_TO_SELF, 0.0f
);
animation.setDuration(300);
set.addAnimation(animation);
controllerDel = new LayoutAnimationController(set, 0.5f);
vw_delLinearLayout.setLayoutAnimation(controllerDel);
}
答案 1 :(得分:0)
Handler handler = new Handler();
new Thread(){
public void run(){
TextView tv = (TextView)findViewById(R.id.xx);
LayoutParams params = (LayoutParams)tv.getLayoutParams();
handler.post(new Runnable(){
public void run(){
tv.setVisible(View.Visible);
}
}
int height = params.height;
for(int i = 0; i < height + 1; i++) {
params.topMargin = i - height;
handler.post(new Runnable(){
public void run(){
tv.requestLayout();
}
}
try{
Thread.sleep(5);
}catch(InterruptedException e){
}
}
}
}.start();
你可以试试这个。