使用 KenBurnsView 定义 zoom/pan 开始位置

Define zoom/pan start position with KenBurnsView

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

概述或这个不错的库说明如下:"Highly extensible: you can define how the rectangles to be zoomed and panned will be generated" 这正是我想做的,但我不知道具体怎么做。

我希望能够告诉库从图像的指定区域(我假设是 RectF)缩放或平移。 我想我必须实现自己的 TransitionGenerator 并编写一个自定义的 generateNextTransition() 方法,但我不知道在里面做什么。

谁能帮帮我?

谢谢。 阿德里安

您需要实现自己的 TransitionGenerator 并从必须 return 一个 Transition 对象的位置覆盖 generateNextTransition()

generateNextTransition() 方法采用:

  1. RectF drawableBounds:设置为KenBurnsView的drawable边界;

  2. RectF viewport KenBurnsView 对象的边界。

Transition 构造函数采用:

  1. RectF srcRect:可绘制对象的子矩形,将在过渡开始时填充整个 KenBurnsView(如下图所示):

插图来自Wikipedia

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

  2. long duration:过渡的持续时间,以毫秒为单位。

  3. Interpolator interpolator:定义运动性质的插值器实例(可能是 AccelerateDecelerateInterpolatorLinearInterpolator 等);

如果您希望每个转换都从上一个转换停止的地方开始,那么保存 dstRect 以在下一个转换中用作 srcRect 可能是个好主意。这正是 RandomTransitionGenerator 所做的。请记住 srcRectdstRect 可以有不同的大小(但如果您想始终将图像保留在场景中,两者都应该是 drawableBounds 的子矩形)。重要的是它们都具有相同的纵横比 viewport.