我想创建以下概念:
首先将视图展开到其父级的宽度(它不相同)。 然后将视图展开到其父级的高度。
我知道我可以使用AnimatorSet()
创建序列。我找不到的是用于创建结果的动画属性。
我对宽度动画的想法: 我可能需要为两个定义左右的点设置动画,或者为平移和宽度设置动画。
我有点困惑,哪些属性会起作用?
答案 0 :(得分:1)
您需要定义自定义属性来执行此操作(我知道,愚蠢)。高度示例:
public static final Property<View, Integer> PROPERTY_HEIGHT =
new Property<View, Integer>(Integer.class, "viewLayoutHeight") {
@Override
public void set(View object, Integer value) {
object.getLayoutParams().height = value.intValue();
object.requestLayout();
}
@Override
public Integer get(View object) {
return object.getLayoutParams().height;
}
};
然后用作普通属性:
ObjectAnimator.ofInt(view, PROPERTY_HEIGHT, minHeight, maxHeight);
您需要在运行时获取父维度(可能使用ViewTreeObserver.OnGlobalLayoutListener
)。
答案 1 :(得分:0)
我认为没有必要使事情复杂化,你可以先使用width属性然后在AnimatorSet中使用高度,你的视图引力属性将定义视图将在哪个方向展开......