Android动画结束后,view 的真实位置并不会改变,以下为解决办法:
功能:实现界面的弹出、隐藏。(类似输入法)
主要代码如下:
......
Button btn_show = (Button)findViewById(R.id.show); //长条按钮
btn_show.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isShow){
isShow=false;
LinearLayout dlg = (LinearLayout)findViewById(R.id.fujian);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, Util.dip2px(getApplicationContext(), 170));
translateAnimation.setDuration(200);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
LinearLayout dlg = (LinearLayout)findViewById(R.id.fujian);
TranslateAnimation anim = new TranslateAnimation(0,0,0,0);
dlg.setAnimation(anim);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, Util.dip2px(getApplicationContext(), 200));
layoutParams.gravity = Gravity.BOTTOM;
layoutParams.bottomMargin = Util.dip2px(getApplicationContext(), -170);
dlg.setLayoutParams(layoutParams);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
dlg.startAnimation(translateAnimation);
}
else {
isShow=true;
LinearLayout dlg = (LinearLayout)findViewById(R.id.fujian);
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, Util.dip2px(getApplicationContext(), -170));
translateAnimation.setDuration(200);
translateAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
LinearLayout dlg = (LinearLayout)findViewById(R.id.fujian);
TranslateAnimation anim = new TranslateAnimation(0,0,0,0);
dlg.setAnimation(anim);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, Util.dip2px(getApplicationContext(), 200));
layoutParams.gravity = Gravity.BOTTOM;
layoutParams.bottomMargin = Util.dip2px(getApplicationContext(), 0);
dlg.setLayoutParams(layoutParams);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
dlg.startAnimation(translateAnimation);
}
}
});
......