我正在使用图书馆KenBurnsView,我遇到了问题:
概述或这个漂亮的库说明如下:"高度可扩展:您可以定义如何生成缩放和平移的矩形" 而这正是我想做的事情,但我并不确切知道如何做。
我希望能够告诉库从我的图像的指定区域(我设想的RectF)进行缩放或平移。 我想我必须实现自己的TransitionGenerator并编写一个自定义的generateNextTransition()mtehod,但我不知道该怎么做。
任何人都可以帮助我吗?
感谢。 阿德里安
答案 0 :(得分:5)
您需要实现自己的TransitionGenerator
并覆盖generateNextTransition()
,必须从中返回Transition
个对象。
generateNextTransition()
方法需要:
RectF drawableBounds
:设置为KenBurnsView
;
RectF viewport
KenBurnsView
对象的范围。
Transition
构造函数需要:
RectF srcRect
:drawable的子矩形,在转换开始时填充整个KenBurnsView
(如下图所示): RectF dstRect
:drawable的子矩形,当过渡结束时将填充整个KenBurnsView
;
long duration
:转换的持续时间(以毫秒为单位)。
Interpolator interpolator
:一个插值器实例,用于定义移动的性质(可能是AccelerateDecelerateInterpolator
,LinearInterpolator
等等;
如果您希望每次转换都从最后一次转换停止的位置开始,那么在下一次转换中保存dstRect
以用作srcRect
可能是个好主意。这正是RandomTransitionGenerator
所做的。请注意,srcRect
和dstRect
可以有不同的大小(但如果您希望始终将图像保留在场景中,则两者都应为drawableBounds
的子矩形)。同样重要的是,它们都具有viewport
的相同宽高比。