2013-04-23 59 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