我希望通过将所有内容移动到下面的位置来显示一个视图,然后使其可见(使其下方的项目滑动为其腾出空间)。我目前在TranslateAnimation
的视图上使用RelativeLayout
。我的第一个想法是测量我将要显示的视图,并翻译第一个视图。我的希望是,如果我为一个视图制作动画,那么它也会移动布局中依赖于它的所有其他内容。尝试后,只有动画的视图移动。我知道我可以将所有内容放在布局中,并翻译布局,但为了布局效率并使流程尽可能通用,
如何让所有View的RealtiveLayout家属随之移动,或以其他方式获得描述的效果?
答案 0 :(得分:1)
将动画应用于整个RelativeLayout或封装在顶部RelativeLayout内的分组RelativeLayout中的子组。
答案 1 :(得分:0)
写一个动画类
public class Animate extends Animation implements AnimationListener {
public int height,width;
@Override
public void initialize(int width, int height, int parentWidth,
int parentHeight) {
// TODO Auto-generated method stub
super.initialize(width, height, parentWidth, parentHeight);
this.width = width;
this.height = height;
setDuration(500);
setFillAfter(true);
setInterpolator(new LinearInterpolator());
}
Camera camera = new Camera();
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
// TODO Auto-generated method stub
super.applyTransformation(interpolatedTime, t);
Matrix matrix = t.getMatrix();
camera.save();
camera.getMatrix(matrix);
matrix.setTranslate(0, (-height * interpolatedTime));
matrix.preTranslate(0, -height);
camera.restore();
}
使用它来制作布局动画
View v= new View();
// use whatever view you want and set it up
v.startAnimation(new Animate());