1

我有 3 个项目desktop_starterandroid_starterplatform。两个启动项目都引用了该platform项目,并且该platform项目应该(99%)独立于平台,并且包含几乎所有代码。

原因当然是我希望能够在桌面上运行 android 应用程序而不必使用模拟器。

但是,至少在一个地方我需要在platform. 具体来说,我需要javax.ImageIO在桌面上使用或android.graphics.Bitmap逐像素读取图像。

由于 java AFAIK 中没有预处理器或类似结构,我的选择是什么?

  • 我想我可以将图像阅读器作为对象发送到platform并使用反射,但这很脏。
  • 我找到了一个适用于桌面 java 和 android 的内置图像阅读器,有什么想法吗?
  • JNI 并使用 libpng 或类似的东西,我猜,似乎应该有一个更简单的方法。
4

1 回答 1

4

您可以在定义所需方法的接口上简单地编写平台代码,并从平台特定项目传递此接口的平台特定实现。

例如,如果您需要的是一个包含图像所有像素的 int 数组(只是一个示例),那么接口将是:

public interface ImageReader {
    int[] getImagePixels(InputStream in) throws IOException;
}

您将有两种接口实现:一种在内部使用 ImageIO,在桌面项目中,另一种在内部使用 Bitmap,在 android 项目中。这些类之一的实例将被传递给与平台无关的代码。

于 2012-11-19T21:18:23.140 回答