3

アプリケーションをさまざまなブランドで利用できるようにしたいと考えています。これは、いくつかの場所で背景のビットマップを簡単に変更できるだけでなく、テキスト リソースも変更できる必要があることを意味します。

私の計画は、テーマとスタイルを使用することです。ビットマップの切り替えに使用できることはわかっていますが、たとえば TextViews のテキストも変更できますか?

スタイルまたはテーマでテキスト識別子を指定し、後でコードで動的に読み取ることも可能ですか?

[編集]

いくつかの調査の後、もちろん、テキストをスタイルに置き換えることができます。アプリケーションのブランディングに伴うもう 1 つの問題は、パッケージ名を変更する必要があることです。そうしないと、Google Play はブランド化されたアプリケーションを受け入れません。

[編集]

さらに調査した結果、以下に、アクティビティ レイアウトでドローアブルを置換し、テキストビューでテキスト リソースを使用できるようにする 2 つの切り替え可能なテーマを追加する方法に関する小さなサンプルを含めます。あとは setTheme(R.style.Theme1); を呼び出すだけです。または setTheme(R.style.Theme2); setContentView の前の onCreate で。

<-- attrs.xml />
<resources>
    <attr name="ProductName" format="reference"/>    
    <attr name="ProductBackground" format="integer"/>
</resources>

<-- styles.xml />
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Theme1" parent="android:Theme.Light">
        <item name="ProductName">@string/s_product_1_name</item>
        <item name="ProductBackground">@drawable/back_1_vga</item>
    </style>    
    <style name="Theme2" parent="android:Theme.Light" >         
        <item name="ProductName">@string/s_product_2_name</item>
        <item name="ProductBackground">@drawable/back_2_vga</item>
    </style>
</resources>

<-- my activity layout />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:background="?ProductBackground"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        tools:context=".MainActivity"
        android:background="#ff0000"
        android:text="?ProductName" 
        />
</RelativeLayout>
4

1 に答える 1

0

アプリの異なるブランディングを作成するには、次の 2 つの方法があります。

1) アプリを複数のライブラリ プロジェクトに分割します。共通コードは common_lib ライブラリ プロジェクトにあり、すべてのブランディングは common_lib を使用する別のプロジェクトにありますが、文字列、ドローアブル、パッケージ名などのリソースの一部を変更します。これが、アプリで選択したアプローチです。

2) gradle 製品のフレーバーを使用します: http://developer.android.com/sdk/installing/studio-build.html、これが推奨されるソリューションになるはずです。

于 2014-04-05T08:57:28.247 に答える