使用KenBurnsView定义缩放/平移开始位置

时间:2015-08-12 07:30:43

标签: android android-imageview android-kenburnsview

我正在使用图书馆KenBurnsView,我遇到了问题:

概述或这个漂亮的库说明如下:"高度可扩展:您可以定义如何生成缩放和平移的矩形" 而这正是我想做的事情,但我并不确切知道如何做。

我希望能够告诉库从我的图像的指定区域(我设想的RectF)进行缩放或平移。 我想我必须实现自己的TransitionGenerator并编写一个自定义的generateNextTransition()mtehod,但我不知道该怎么做。

任何人都可以帮助我吗?

感谢。 阿德里安

1 个答案:

答案 0 :(得分:5)

您需要实现自己的TransitionGenerator并覆盖generateNextTransition(),必须从中返回Transition个对象。

generateNextTransition()方法需要:

  1. RectF drawableBounds:设置为KenBurnsView;

  2. 的drawable的范围
  3. RectF viewport KenBurnsView对象的范围。

  4. Transition构造函数需要:

    1. RectF srcRect:drawable的子矩形,在转换开始时填充整个KenBurnsView(如下图所示):
    2. Ken Burns effect

      来自Wikipedia

      的插图
      1. RectF dstRect:drawable的子矩形,当过渡结束时将填充整个KenBurnsView;

      2. long duration:转换的持续时间(以毫秒为单位)。

      3. Interpolator interpolator:一个插值器实例,用于定义移动的性质(可能是AccelerateDecelerateInterpolatorLinearInterpolator等等;

      4. 如果您希望每次转换都从最后一次转换停止的位置开始,那么在下一次转换中保存dstRect以用作srcRect可能是个好主意。这正是RandomTransitionGenerator所做的。请注意,srcRectdstRect可以有不同的大小(但如果您希望始终将图像保留在场景中,则两者都应为drawableBounds的子矩形)。同样重要的是,它们都具有viewport的相同宽高比。