我有一個Activity
主屏幕,只有一個標題欄(等)。我在標題欄下方還有另一個TextView
,我有從上到下的動畫效果(最初爲View.GONE
,然後在用戶發生事件後將其設置爲可見並放置到位)。繼續查看以上動畫的另一個視圖
這工作正常和丹迪,除了標題欄下面的TextView
動畫在標題欄上方的地方。我希望它看起來好像TextView
來自標題欄下面。兩個視圖都在LinearLayout
中,所以我無法像在FrameLayout
中那樣處理z順序。有什麼建議麼?
我有一個Activity
主屏幕,只有一個標題欄(等)。我在標題欄下方還有另一個TextView
,我有從上到下的動畫效果(最初爲View.GONE
,然後在用戶發生事件後將其設置爲可見並放置到位)。繼續查看以上動畫的另一個視圖
這工作正常和丹迪,除了標題欄下面的TextView
動畫在標題欄上方的地方。我希望它看起來好像TextView
來自標題欄下面。兩個視圖都在LinearLayout
中,所以我無法像在FrameLayout
中那樣處理z順序。有什麼建議麼?
我最終通過包含LinearLayout內部的textview,然後將LayoutAnimationController設置爲LinearLayout來解決此問題。這將導致所有childs相對於父容器進行動畫處理,這使得下拉列表只能在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);
}
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();
你可以試試這個。
此代碼似乎是一個動畫手工代碼...我可以使用與startAnimation()方法沿着動畫對象實現同樣的事,可我嗎?有什麼理由相信你的代碼繪製的textview會在我的應用程序的標題欄下面呈現嗎? –
當視圖做動畫。該物業不會改變。 爲什麼不先試一試。 –
嗨,即使我被困在類似的問題。我試過你的解決方案,但沒有奏效。我可能做錯了什麼? – gauravsapiens