优化在Android中移动视图的方式?

时间:2016-12-13 01:53:10

标签: android performance

我的代码如下,用于移动我的视图

private void movingViewUpDown(int topMargin) {
    final RelativeLayout.LayoutParams layoutParams =
            (RelativeLayout.LayoutParams) myView.getLayoutParams();
    layoutParams.topMargin = topMargin;
    myView.setLayoutParams(layoutParams);
}

效果很好,但每个动作似乎分配了一些内存,最终堆叠起来并需要GC来清除内存。所以事情会随着时间的推移而变慢。

我想知道是否有一种更有效的方式来移动我的视图,而不会让内存问题变得缓慢。

2 个答案:

答案 0 :(得分:1)

View.setLayoutParams()实际上表现不佳,因为会触发requestLayout。事实上,你总是应该避免调用它来移动视图。

您可以尝试View.offsetTopAndBottom(int offset)垂直移动或 水平View.offsetLeftAndRight(int offset),这将获得良好的表现。

答案 1 :(得分:0)

尝试使用View类中的animate方法 例如:

yourView.animate()
    .translationY(translationY)
    .setDuration(animationDuration)
    .start();