下面是我正在做的事情:如何将Android XML布局转换为Java类?
我想创建一个JAR以包含在包含视图和图像的Android应用程序中。据我所知,你无法将res文件夹打包到JAR中。所以我期望做的是将我的res文件夹中的XML文件转换为Android视图类,然后我可以将其作为项目的一部分编译到JAR中。
是否有任何工具或项目已成功完成此项工作?替代解决方案也受到欢迎。
下面是我正在做的事情:如何将Android XML布局转换为Java类?
我想创建一个JAR以包含在包含视图和图像的Android应用程序中。据我所知,你无法将res文件夹打包到JAR中。所以我期望做的是将我的res文件夹中的XML文件转换为Android视图类,然后我可以将其作为项目的一部分编译到JAR中。
是否有任何工具或项目已成功完成此项工作?替代解决方案也受到欢迎。
您可以动态调整其中的每个视图并设置适当的设置 - xml中的每个设置都具有匹配的Java调用以进行更改。这并不能解决布局文件夹以外的任何问题。将代码作为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
这将是在的LinearLayout XML,扩展RelativeLayout
则是RelativeLayout的等等。所有这些布局的View
子类。
我有这个确切的问题:想将我的库作为jar文件分发。合理数量的支持问题是由于不熟悉图书馆项目的人(对我感到震惊,但我是谁争论)造成的。
首先,真的不支持从XML布局自动生成Java类。我认为我可以提取ADT使用的源代码来将您的XML布局渲染到不同的类中,但是在开始几个小时后,我放弃了手动编写布局。使它们扩展RelativeLayout
并在代码中构建层次结构。工程,但并不完全规模。在某些时候,可能需要深入挖掘ADT源,以便导出布局。
对于图片,我将它限制为图标,然后编写了一个丑陋的小工具,它会从PNG文件生成一个byte[]
数组,然后将其作为每个图像的单独类中的静态最终变量添加:对于小图像,我认为少于40k或Android构建过程的某些未知部分会因为生成的类文件太大而变得困难。一旦做到这一点,我可以使用这样的代码在我看来类重构图像:
audio_icon = new BitmapDrawable(BitmapFactory.decodeByteArray(AudioIcon.bytes, 0, AudioIcon.bytes.length));
我有一个包中的所有图标,它实际工作得很好。您放弃了库格式提供的定制选项,但它使我们的集成过程变得非常简单。
我需要将一些东西作为一个jar来分发。我为图片做的是[加载他们作为jar资源](http://stackoverflow.com/questions/574809/load-a-resource-contained-in-a-jar)(不是Android资源)。我想可能对Android工具链进行的修改可能会破坏这个功能,但目前为止还是有效的。 – kabuko 2013-04-24 00:37:34
把它作为一个库引用它怎么样?右键单击Eclipse中的项目,然后点击属性,然后单击android并选中“is library”复选框。现在在其他项目中,您可以转到其属性并添加库作为参考。 – chRyNaN 2013-04-23 23:50:02
“我想创建一个JAR以包含在包含视图和图像的Android应用程序中” - 由于没有将图像转换为Java代码的实用方法,因此我会回复其他响应者并推荐一个Android库项目:http: //developer.android.com/tools/projects/index.html#LibraryProjects – CommonsWare 2013-04-23 23:56:24
目前这样做,尽管我宁愿将其作为JAR分发。 – drhodes 2013-04-23 23:58:08