2

这是我正在尝试做的事情:

我想创建一个包含在包含视图和图像的 Android 应用程序中的 JAR。据我所知,您不能将 res 文件夹打包在 JAR 中。所以我要做的是将我的 res 文件夹中的 XML 文件转换为一个 Android 视图类,然后我可以将它作为项目的一部分编译到 JAR 中。

是否有任何工具或项目成功地做到了这一点?也欢迎替代解决方案。

4

3 回答 3

1

您可以动态地制作其中的每个视图并设置适当的设置 - xml 中的每个设置都有一个匹配的 Java 调用来更改。但是,除了布局文件夹之外,这并不能解决任何问题。将代码作为 Android 库项目提供给他们会容易得多。

于 2013-04-23T23:50:09.337 回答
0

我有这个确切的问题:想要将我的库作为 jar 文件分发。合理数量的支持问题是由不熟悉库项目位的人引起的(令我震惊,但我该争论谁)。

首先,确实不支持从 XML 布局自动生成 java 类。我原以为我可以提取 ADT 使用的源代码来将您的 XML 布局呈现到单独的类中,但是在为此折腾了几个小时后,我放弃了,而是手工编写了布局。让它们在代码中扩展RelativeLayout和构建层次结构。有效,但规模不大。在某些时候,可能值得深入研究 ADT 源以允许您导出布局。

对于图像,我将其限制为仅图标,然后编写了一个丑陋的小工具,该工具byte[]将从 PNG 文件生成一个数组,然后将其作为静态最终变量添加到每个图像的单独类中:您仅限于小图像,我认为少于 40k 或者由于生成的类文件太大,Android 构建过程的某些未知部分会出错。完成后,我可以使用如下代码重构视图类中的图像:

audio_icon = new BitmapDrawable(BitmapFactory.decodeByteArray(AudioIcon.bytes, 0, AudioIcon.bytes.length));

我有一个包含所有图标的包,它实际上工作得很好。您确实放弃了库格式提供的自定义选项,但它使我们的集成过程变得非常简单。

于 2013-04-24T00:11:34.080 回答
0

Do this:

public class MyView extends View{
    private TextView tv; //or other elements in the layout you want
    //here also has constructors
    @Override
    public void onDraw(Canvas canvas){
        //draw the views that you prepared in your constructor
    }
}

If you extend LinearLayout it would be LinearLayout in XML, extends RelativeLayout then be RelativeLayout etc. All these layouts are subclasses of View.

于 2013-04-24T00:03:54.653 回答