首页 > 解决方案 > 如何将标准 Java 和 Android 代码组合到一个库中?

问题描述

如何最好地组织这样一个库的结构?

最小代码示例

一个具有单一 API 的库,与 Java SE 和 Android 兼容且相同。

接口:

/*
 * Given a fonts name, size (height) and a text,
 * the library returns the doubled (<- arbitrary) width of the text in pixels.
 */
int fetchTextWidthDoubled(String fontName, int fontSize, String text);

虽然加倍大小是通用代码,不应重复,但在 Android 和 Java SE 中获取字体指标的代码是不同的。

假设我有两个使用所需代码实现的类,如下所示:

Java SE:

public class JavaSeTextWidthFetcher implements TextWidthFetcher {
    @Override
    public int fetchTextWidth(String fontName, int fontSize, String text) {
        // something with java.awt.Font
    }
}

安卓:

public class AndroidTextWidthFetcher implements TextWidthFetcher {
    @Override
    public int fetchTextWidth(String fontName, int fontSize, String text) {
        // something with android.graphics.Paint.FontMetrics
    }
}

和API实现大致是这样的:

public class DoubleTextWidthFetcher

    private TextWidthFetcher impl;

    @Override
    public int fetchTextWidthDoubled(String fontName, int fontSize, String text) {
        return 2 * impl.fetchTextWidth(fontName, fontSize, text);
    }
}

标签: javaandroidmavenandroid-gradle-pluginosgi

解决方案


推荐阅读