使用 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()
方法采用:
RectF drawableBounds
:设置为KenBurnsView
的drawable边界;
RectF viewport
KenBurnsView
对象的边界。
Transition
构造函数采用:
RectF srcRect
:可绘制对象的子矩形,将在过渡开始时填充整个 KenBurnsView
(如下图所示):
插图来自Wikipedia
RectF dstRect
:当过渡结束时将填满整个KenBurnsView
的drawable子矩形;
long duration
:过渡的持续时间,以毫秒为单位。
Interpolator interpolator
:定义运动性质的插值器实例(可能是 AccelerateDecelerateInterpolator
、LinearInterpolator
等);
如果您希望每个转换都从上一个转换停止的地方开始,那么保存 dstRect
以在下一个转换中用作 srcRect
可能是个好主意。这正是 RandomTransitionGenerator
所做的。请记住 srcRect
和 dstRect
可以有不同的大小(但如果您想始终将图像保留在场景中,两者都应该是 drawableBounds
的子矩形)。重要的是它们都具有相同的纵横比 viewport
.
我正在使用图书馆 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()
方法采用:
RectF drawableBounds
:设置为KenBurnsView
的drawable边界;RectF viewport
KenBurnsView
对象的边界。
Transition
构造函数采用:
RectF srcRect
:可绘制对象的子矩形,将在过渡开始时填充整个KenBurnsView
(如下图所示):
插图来自Wikipedia
RectF dstRect
:当过渡结束时将填满整个KenBurnsView
的drawable子矩形;long duration
:过渡的持续时间,以毫秒为单位。Interpolator interpolator
:定义运动性质的插值器实例(可能是AccelerateDecelerateInterpolator
、LinearInterpolator
等);
如果您希望每个转换都从上一个转换停止的地方开始,那么保存 dstRect
以在下一个转换中用作 srcRect
可能是个好主意。这正是 RandomTransitionGenerator
所做的。请记住 srcRect
和 dstRect
可以有不同的大小(但如果您想始终将图像保留在场景中,两者都应该是 drawableBounds
的子矩形)。重要的是它们都具有相同的纵横比 viewport
.