2013-04-23 128 views
2

下面是我正在做的事情:如何将Android XML布局转换为Java类?

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

是否有任何工具或项目已成功完成此项工作?替代解决方案也受到欢迎。

+1

把它作为一个库引用它怎么样?右键单击Eclipse中的项目,然后点击属性,然后单击android并选中“is library”复选框。现在在其他项目中,您可以转到其属性并添加库作为参考。 – chRyNaN 2013-04-23 23:50:02

+0

“我想创建一个JAR以包含在包含视图和图像的Android应用程序中” - 由于没有将图像转换为Java代码的实用方法,因此我会回复其他响应者并推荐一个Android库项目:http: //developer.android.com/tools/projects/index.html#LibraryProjects – CommonsWare 2013-04-23 23:56:24

+0

目前这样做,尽管我宁愿将其作为JAR分发。 – drhodes 2013-04-23 23:58:08

回答

1

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

0

这样做:

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这将是在的LinearLayout XML,扩展RelativeLayout则是RelativeLayout的等等。所有这些布局的View子类。

0

我有这个确切的问题:想将我的库作为jar文件分发。合理数量的支持问题是由于不熟悉图书馆项目的人(对我感到震惊,但我是谁争论)造成的。

首先,真的不支持从XML布局自动生成Java类。我认为我可以提取ADT使用的源代码来将您的XML布局渲染到不同的类中,但是在开始几个小时后,我放弃了手动编写布局。使它们扩展RelativeLayout并在代码中构建层次结构。工程,但并不完全规模。在某些时候,可能需要深入挖掘ADT源,以便导出布局。

对于图片,我将它限制为图标,然后编写了一个丑陋的小工具,它会从PNG文件生成一个byte[]数组,然后将其作为每个图像的单独类中的静态最终变量添加:对于小图像,我认为少于40k或Android构建过程的某些未知部分会因为生成的类文件太大而变得困难。一旦做到这一点,我可以使用这样的代码在我看来类重构图像:

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

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

+0

我需要将一些东西作为一个jar来分发。我为图片做的是[加载他们作为jar资源](http://stackoverflow.com/questions/574809/load-a-resource-contained-in-a-jar)(不是Android资源)。我想可能对Android工具链进行的修改可能会破坏这个功能,但目前为止还是有效的。 – kabuko 2013-04-24 00:37:34