【问题标题】:Subclassing Gallery widget to create "Ticker" behavior子类化 Gallery 小部件以创建“Ticker”行为
【发布时间】: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


【解决方案1】:

Gallery 如前所述,不是一个很好的扩展类。实际上,这里更好的方法是获取源并使用它。

仅供参考,如果设备由于某种原因暂时锁定,速度会发生变化。

你并没有做错什么,而是这个类被设计错了/为了别的什么。

【讨论】:

    猜你喜欢
    • 2013-10-05
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多