我正在做一些属性动画,想知道哪个更快-更新边距或填充。两者都通过扩展进行更新Property<T, V>。
public static final Property<View, Integer> LINEAR_TOP_MARGIN_PROPERTY = new Property<View, Integer>(Integer.class, "") {
@Override
public Integer get(View view) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
return params.topMargin;
}
@Override
public void set(View view, Integer value) {
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) view.getLayoutParams();
params.topMargin = value;
view.requestLayout();
}
};
public static final Property<View, Integer> PADDING_BOTTOM_PROPERTY = new Property<View, Integer>(Integer.class, "") {
@Override
public Integer get(View view) {
return view.getPaddingBottom();
}
@Override
public void set(View object, Integer value) {
object.setPadding(
object.getPaddingLeft(),
object.getPaddingTop(),
object.getPaddingRight(),
value
);
}
};
Run Code Online (Sandbox Code Playgroud)
填充看起来更灵活,因为它可以在任何布局中工作,而无需大量的LayoutParams投射和检查。但是,并非所有视图都具有相同的填充行为。