HorizontalScrollView 在与另一个滚动动画一起执行时在更新之间跳转。
HorizontalScrollView jumps between updates when preforming a scroll animation in tandum with another.
我有一个 Horizontal ScrollView,我试图移动它,同时设置另一个单独的线性布局的权重。问题是当视图正在计算 H-Scrollview 的权重(或者可能只是在计算新高度时)时,它会跳到位置 512px 并停留在那里。这使得当两个动画一起播放时,scrollview 看起来像是在跳跃。我也试过只设置滚动视图的重量,但它仍然可以。
为水平滚动视图设置动画的代码:
if(currentPlace == 2){
currentPlace--;
if(currentPlace < 0){currentPlace = 0;}
DriverManagerV2.this.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ValueAnimator ani = ValueAnimator.ofInt((int) scroller.getScrollX(), screenWidth *currentPlace);
ani.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) lay.getLayoutParams();
lp.weight = .7f - (.7f*animation.getAnimatedFraction());
lay.requestLayout();
LinearLayout.LayoutParams lp2 = (LinearLayout.LayoutParams) scroller.getLayoutParams();
lp2.weight = 4f + (.7f*animation.getAnimatedFraction());
scroller.requestLayout();
scroller.setScrollX((int) animation.getAnimatedValue());
Log.e("KICKU",""+scroller.getScrollX());
}
});
ani.setDuration(1500);
ani.start();
}
});
}
HorizontalScrollView 的 XML:
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
android:id="@+id/driver_manager_content"
android:layout_weight="4">
知道如何解决这个问题吗?
想通了。这是因为我有一个聚焦的 EditText,每当高度改变时它就会跳到那个 editText。
我有一个 Horizontal ScrollView,我试图移动它,同时设置另一个单独的线性布局的权重。问题是当视图正在计算 H-Scrollview 的权重(或者可能只是在计算新高度时)时,它会跳到位置 512px 并停留在那里。这使得当两个动画一起播放时,scrollview 看起来像是在跳跃。我也试过只设置滚动视图的重量,但它仍然可以。
为水平滚动视图设置动画的代码:
if(currentPlace == 2){
currentPlace--;
if(currentPlace < 0){currentPlace = 0;}
DriverManagerV2.this.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ValueAnimator ani = ValueAnimator.ofInt((int) scroller.getScrollX(), screenWidth *currentPlace);
ani.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) lay.getLayoutParams();
lp.weight = .7f - (.7f*animation.getAnimatedFraction());
lay.requestLayout();
LinearLayout.LayoutParams lp2 = (LinearLayout.LayoutParams) scroller.getLayoutParams();
lp2.weight = 4f + (.7f*animation.getAnimatedFraction());
scroller.requestLayout();
scroller.setScrollX((int) animation.getAnimatedValue());
Log.e("KICKU",""+scroller.getScrollX());
}
});
ani.setDuration(1500);
ani.start();
}
});
}
HorizontalScrollView 的 XML:
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:fillViewport="true"
android:id="@+id/driver_manager_content"
android:layout_weight="4">
知道如何解决这个问题吗?
想通了。这是因为我有一个聚焦的 EditText,每当高度改变时它就会跳到那个 editText。