如何将Android XML布局转换为Java类?

如何将Android XML布局转换为Java类?,java,android,android-layout,Java,Android,Android Layout,以下是我想做的: 我想创建一个包含视图和图像的JAR,它将包含在Android应用程序中。据我所知,您不能将res文件夹打包到一个JAR中。因此,我要做的是将res文件夹中的XML文件转换为Android视图类,然后作为项目的一部分编译到JAR中 是否有任何工具或项目成功地做到了这一点?也欢迎其他解决方案。您可以动态创建其中的每个视图,并设置适当的设置-xml中的每个设置都有一个匹配的Java调用进行更改。不过,除了layouts文件夹之外,这并不能修复任何问题。将代码作为Android库项目提

以下是我想做的:


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


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

您可以动态创建其中的每个视图,并设置适当的设置-xml中的每个设置都有一个匹配的Java调用进行更改。不过,除了layouts文件夹之外,这并不能修复任何问题。将代码作为Android库项目提供给他们要容易得多。

这样做:

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
    }
}

如果您扩展
LinearLayout
它将是XML中的LinearLayout,扩展
RelativeLayout
然后是RelativeLayout等等。所有这些布局都是
视图的子类

我有一个确切的问题:想要将我的库作为jar文件分发。有相当数量的支持问题是由于人们对图书馆项目不熟悉造成的(这让我很震惊,但我是谁可以争论)

首先,实际上不支持从XML布局自动生成java类。我原以为我可以提取ADT用于将XML布局呈现为单独类的源代码,但在花了几个小时的时间研究之后,我放弃了,而是手工编写了布局。让他们扩展相对论,并在代码中构建层次结构。可以,但不太适合。在某些情况下,可能值得深入研究ADT源代码,以便导出布局

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

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

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

将其作为库引用如何?右键单击Eclipse中的项目并点击properties,然后单击android并选中
is library
的复选框。现在,在其他项目中,您可以转到它们的属性并添加库作为参考。“我想创建一个包含视图和图像的Android应用程序中包含的JAR”--因为没有实际的方法将图像转换为Java代码,所以我回应其他响应者并推荐一个Android库项目:目前正在这样做,虽然我更喜欢将其作为一个JAR分发,但您对Android库项目的具体问题是什么,导致您“更喜欢将其作为一个JAR分发”?如果是分发Java源代码的问题,Android库项目不需要Java源代码进行分发。@Commonware能否详细说明或链接到某个地方,说明如何分发没有Java源代码的库项目?由于资源是通过生成的源代码(即
R
类)引用的,所以在该项目中使用这些图像的所有代码不都需要以源代码的形式存在吗?我还需要将一些东西作为jar分发。我为这些图片所做的是(而不是Android资源)。我想对Android工具链的更改可能会打破这一点,但到目前为止,它已经奏效了。