代码之家  ›  专栏  ›  技术社区  ›  polyglot

安卓:垂直画廊?

  •  6
  • polyglot  · 技术社区  · 15 年前

    我在寻找一个行为类似于画廊小部件,但垂直滚动而不是水平滚动的小部件。我到处搜索,显然答案是没有这样的预先制作的小部件存在。

    所以我自己说,哦,好吧,我会看看android源代码中的gallery类,并修改它以垂直滚动。不是那么容易。AndroidSDK隐藏了很多东西(对于框架维护来说是可以理解的),但是它也使得扩展小部件变得非常困难。例如,Gallery类使用其父级、abspinner(mselectedposition等)和其父级的父级等中的大量成员变量。从应用程序开发人员的角度来看,根本无法访问。如果没有访问这些成员变量,我就不能使用Gallery类中的类似代码供自己使用。

    除了向上移动继承链并将这些父类的源代码全部放在我的项目中,或者在不使用已经解决问题的现有框架小部件的情况下从头开始编写小部件之外,我找不到一种方法来获得垂直滚动库。

    有更好的方法吗?为什么Android框架会让扩展小部件变得如此困难?

    1 回复  |  直到 14 年前
        1
  •  12
  •   CommonsWare    15 年前

    有更好的方法吗?

    既然我们不知道你在建什么,那就不可能说了。我同意Yoni Samlan的评论, ListView 可能足以满足您的需求。

    为什么Android框架 扩展小部件如此困难?

    虽然可以想象 Gallery 可能会让你更简单,让它以不同的方向,核心Android团队必须权衡这种重新实现与其他开发优先级。

    其中一个优先事项是SDK保真度。他们希望尽可能确保为android 1.5编写的代码可以在android 2.1上运行而无需修改。这从两个方面限制了它们。首先,他们不能仅仅改变现有的 画廊 例如,为了满足您的需求,如果这样做会导致它们破坏现有的API。其次,核心Android团队不会公开新的方法或类,即使这些方法或类可能对第三方开发人员有利,除非并且直到团队准备好长期支持这些方法或类。

    android最初是在存在sdk之前编写的。这就是为什么大多数内置应用程序(例如计算器)不能单独使用SDK构建,而需要作为固件映像的一部分构建的原因。同样,核心Android团队必须在创建初始SDK的过程中做出决定,决定如何最好地使用现有代码和创建我们可以使用的公共资源,以及如何在考虑到SDK保真度的情况下保护/私有资源。正如您可能已经注意到的,Android是巨大的,因此创建SDK必须花费相应的大量工作人员时间。重写大量的代码以增加某些人(比如说)创建垂直线的可能性 画廊 可能不在他们的名单上。

    在一个理想的世界中,是的,我们能够更容易地扩展内置的小部件并显著地修改它们的行为。同样,在一个理想的世界里,我会有头发…-)