【问题标题】:Imageview reveal animationImageview 显示动画
【发布时间】:2014-10-30 19:41:36
【问题描述】:

我正在尝试设置一个显示图像超时的图像视图(水平) 我现在通过扩展 ImageView 和 onDraw 让它工作。取自CoveredImageView

@Override
protected void onDraw(Canvas canvas) {

    canvas.getClipBounds(mRect);
    int i = round((float) mRect.width() * mPercent);
    mRect.right = i + mRect.left;
    canvas.clipRect(mRect);

    super.onDraw(canvas);
    invalidate();

}

mPercent 是我想要显示的数量,我将它连接到音乐播放器和搜索栏并像这样显示

@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        revealImg.updatePercent((float) progress / (float) seekBar.getMax());
    }
}

当计时器/歌曲持续时间长(如

我知道它为什么这样做,我在想是因为 onDraw 中的 clipRect 显示每个像素的像素,所以如果歌曲是 30 秒并且设备是前 300 像素宽,它每秒跳 10 像素,而 10 分钟的歌曲只会是.5px 四舍五入到 1px(不那么明显)

我想知道是否有人有更好的方法让它不波涛汹涌。我想我可以使用ValueAnimator,但我不太确定如何使用它来显示图像视图。

【问题讨论】:

    标签: android android-animation


    【解决方案1】:

    用 ValueAnimator 搞定了!

    我刚换了

    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        revealImg.updatePercent((float) progress / (float) seekBar.getMax());
    }
    

    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        float value = (float) animation.getCurrentPlayTime();
         revealImg.updatePercent(value / mixDurationInMilli);
    }
    

    现在一切都顺利多了 :) 我只是不太清楚为什么... :/

    【讨论】:

      猜你喜欢
      • 2017-11-10
      • 2015-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      相关资源
      最近更新 更多