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

概述或这个不错的库说明如下:“高度可扩展:您可以定义如何生成要缩放和平移的矩形”
这正是我想要做的,但我不知 Prop 体怎么做。

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

谁能帮我 ?

谢谢。
阿德里安

最佳答案

您需要实现自己的 TransitionGenerator 并从必须返回 generateNextTransition() 对象的地方覆盖 Transition
generateNextTransition() 方法采用:

  • RectF drawableBounds :设置为 KenBurnsView 的 drawable 的边界;
  • RectF viewport KenBurnsView 对象的边界。
  • Transition 构造函数采用:
  • RectF srcRect : drawable 的一个子矩形,在转换开始时将填充整个 KenBurnsView(如下图所示):

  • android - 使用 KenBurnsView 定义缩放/平移开始位置-LMLPHP

    来自 Wikipedia 的插图
  • RectF dstRect : drawable 的一个子矩形,当过渡结束时将填充整个 KenBurnsView
  • long duration :转换的持续时间,以毫秒为单位。
  • Interpolator interpolator :一个插值器实例,它将定义运动的性质(可能是 AccelerateDecelerateInterpolatorLinearInterpolator 等);

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

    关于android - 使用 KenBurnsView 定义缩放/平移开始位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31958739/

    10-12 06:31