【发布时间】:2011-10-04 06:33:39
【问题描述】:
这主要是一个哲学问题,因为实际问题已经解决。 SDK 提供了一个 Gallery 类。这个画廊是我需要的 90%,它只是缺少两件事。一个我想实现一个额外的 Runnable 来触发定期前进到下一个项目,两个我需要它来为项目之间的滚动设置动画。
自动定期推进很容易。但是,我遇到了在项目之间实现 scoll 动画的主要问题。现在我已经通过覆盖 setSelection 来解决这个问题,使其成为 onFling 的包装器。
目前我的背景主要是 Python,所以这个实现对我来说有点脏。我正在根据父母的宽度计算速度,然后调用 onFling(null, null, my_calculated_velocity, 0)。这对我来说真的很不对劲,如果由于某种原因谷歌计算速度变化的距离的方式怎么办?
现在我浏览了 Gallery 的源代码,我发现了很多让我感觉好很多的方式: 移动下一个 滚动到子级 mFlingRunnable.startUsingDistance
这些都不能从 Gallery 的子类访问。在 Python 中没有真正的私有概念,所以当我在 java 中对某些东西进行子类化时,我最终不得不复制粘贴 2/3 的类来覆盖单个行为。
所以问题是我做错了什么,导致我尝试以违反 Java 的方式做事,还是我每次坐下来做一个 android 项目并发现所有问题时都会感到沮丧做我需要的方法是私有的或默认的,而不是公共的或受保护的?
【问题讨论】:
-
我认为你很不幸试图使用
Gallery来做你想做的事。我最近开始使用Gallery来实现TextView小部件的水平菜单,我开始意识到它确实不是特别灵活,并且是一个真正的PITA。一般来说,大多数旨在轻松扩展的 Android 类都提供了足够多的功能 -Gallery恰好是一个糟糕的 IMO,我已经阅读了很多人认为它不值得的东西使用。我目前正在重新考虑Gallery确实没有削减它。 -
可以肯定的是,
Gallery是一个设计糟糕的类。我想那么正确的方法是什么。是否有一个开箱即用的小部件更适合以我描述的基本行为处理TextViews的水平列表?也许即使它只是更灵活的扩展,所以我将来可以完全避免Gallery? -
“Private”只是设计师说“不要乱用这个功能”的方式。
-
@John:我没有你想要做什么的答案 - 我的要求不是让我的菜单文本自动移动,即使它一般对我有用
Gallery只是除了图像之外似乎没有多大用处。我建议你用谷歌搜索“Android 股票”——我通过这样做找到了一些想法,它们使用标准的TextView设置为“marquee”,重复限制为永远。祝你好运。 -
@Richard 哦,即使我来自一个不强制执行私有/公共的国家,我也理解这个概念。遇到不以“复制粘贴类的整个源代码并重写您需要更改的 5-10 行”以外的方式扩展它们的类的实现,真是令人沮丧
标签: android inheritance android-gallery