Android填充与边距性能

Dar*_*usL 5 android

我正在做一些属性动画,想知道哪个更快-更新边距或填充。两者都通过扩展进行更新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投射和检查。但是,并非所有视图都具有相同的填充行为。