我正在尝试在onBindViewHolder方法中设置一个条形图(只是一个ImageView)。
如果我不尝试动画它,那么它与这条线完美配合:
holder.progressBar.getLayoutParams().width = 100;
但是只要我添加一个函数来设置这个bar / imageView的动画,它就不起作用了。 我只能在recyclerView的第一项上看到该栏,并且该栏没有动画。
这是我使用的代码。有什么问题?
感谢所有人。
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
//holder.progressBarWeatherFactor.getLayoutParams().width = 100;
animateWidth(0, 100, holder.progressBar.getLayoutParams());
}
public void animateWidth(int start, int end, final ViewGroup.LayoutParams myBar)
{
ValueAnimator valueAnimator = ValueAnimator.ofInt(start, end);
valueAnimator.setDuration(1800);
valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
{
@Override
public void onAnimationUpdate( ValueAnimator valueAnimator)
{
myBar.width = ((int) valueAnimator.getAnimatedValue());
}
});
valueAnimator.start();
}
答案 0 :(得分:0)
所以,为了提供帮助,我找到了一个解决方案,也许不是最好的,但它有效,我希望它会有所帮助! (/ 10 * 3/64与我的图像大小有关,所以不要这么做)
@Override
public void onBindViewHolder(ViewHolder holder, int position)
{
animateWidth(0, 100, holder.progressBar);
}
public void animateWidth(int initialValue, int finalValue, ImageView image)
{
image.setPivotX(0f);
PropertyValuesHolder barWidth;
barWidth = PropertyValuesHolder.ofFloat("scaleX", 0, ((float)(((image.getResources().getDisplayMetrics().density)/10)*3)/64)*finalValue);
ObjectAnimator.ofPropertyValuesHolder(image, barWidth).setDuration(800).start();
}