0
我真的有动画三甲之列视图一个严重的问题,如显示在下面的图片 安卓:三个列表视图,流畅的动画效果
这里是动画的流我的布局文件
<ListView android:id="@+id/categoriesList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layerType="hardware">
</ListView>
<ListView android:id="@+id/subCategoriesList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layerType="hardware">
</ListView>
<ListView android:id="@+id/productsList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layerType="hardware">
</ListView>
,这里是我的代码
对项目点击收听
long time = AnimationUtils.currentAnimationTimeMillis();
collapseSize = (int)(categoriesListView.getMeasuredWidth()/4);
ObjectAnimator animator = new ObjectAnimator();
animator.setTarget(subCategoriesListView);
animator.setPropertyName("translationX");
animator.setFloatValues(3*collapseSize,0);
animator.setStartDelay(time);
animator.setDuration(1000);
animator.addUpdateListener(ShopFragment.this);
ValueAnimator.ofObject(new WidthEvaluator(categoriesListView), categoriesListView.getWidth(),collapseSize).setDuration(1000).start();
animator.start();
列表1的列表2 onItemClick监听
ObjectAnimator animator = new ObjectAnimator();
animator.setTarget(productsListView);
animator.setPropertyName("translationX");
animator.setFloatValues(collapseSize,0);
animator.setStartDelay(time);
animator.setDuration(1000);
ValueAnimator.ofObject(new WidthEvaluator(categoriesListView),
categoriesListView.getWidth(),0).setDuration(1000).start();
ValueAnimator.ofObject(new WidthEvaluator(subCategoriesListView), subCategoriesListView.getWidth(),collapseSize).setDuration(1000).start();
animator.start();
,这里是宽度计算器
private class WidthEvaluator extends IntEvaluator {
private View v;
public WidthEvaluator(View v) {
this.v = v;
}
@Override
public Integer evaluate(float fraction, Integer startValue,
Integer endValue) {
int num = (Integer)super.evaluate(fraction, startValue, endValue);
ViewGroup.LayoutParams params = v.getLayoutParams();
params.width = num;
v.setLayoutParams(params);
return num;
}
}
用户按下后退按钮以反转动画。主要问题是动画根本不流畅,它只是跳到新的位置。谁能帮我解决这个问题吗?
注意:那些列表视图是在一个片段内而不是一个活动,如果重要的话。另外,为了向后兼容,我使用了九库。
你在测试什么类型的设备? – Tyler
您似乎在翻译视图,然后将该翻译转换为新的版面宽度值,是否正确?这是有原因的吗?这是有点奇怪,因为翻译覆盖布局的值。您是否考虑过直接使用ValueAnimator制作动画宽度,并在每次更新宽度时请求重新布局? –
@TylerAndFriends我正在使用三星S3自定义ROM [4.3] –