利用可能な大きなレイアウトがある場合、タブレットに通常のレイアウトを使用させることは何らかの方法で可能ですか?
たとえば、次のようになります。
if(!user.payedForTabletApp) DO_NOT_USE_LARGE_LAYOUT();
問題にアプローチする方法は次のとおりです。
1) 2 つのレイアウトを作成:res/layout/phone.xml
およびres/layout/tablet.xml
2)レイアウト エイリアスを作成:
2.1) res/layout/main.xml
-> res/layout/phone.xml
2.2) res/layout-large/main.xml
-> res/layout/tablet.xml
2.3) res/layout-sw600dp/main.xml
->res/layout/tablet.xml
エイリアスとは、次のような意味です。
<resources>
<item name="main" type="layout">@layout/phone</item>
</resources>
レイアウト エイリアスのその他の例については、このチュートリアルを参照してください。
3)onCreate()
アクティビティ内の関数またはonCreateView()
フラグメント内の関数を更新して、適切なレイアウトを使用します。
アクティビティの例を次に示します。
int layoutResId = R.layout.main;
if (!user.payedForTabletApp) {
layoutResId = R.layout.phone;
}
setContentView(layoutResId);
これに対する簡単な答えはノーです。Android がリソース システムを処理します。
ただし、レイアウトフォルダーに2つの異なるレイアウトファイルを提供することはできます.
明らかactivity_home_normal.xml
に私activity_home_large.xml
はこれをお勧めしません!
次に、次のことができます。
if(!user.payedForTabletApp){
setContentView(R.layout.activity_home_normal);
}else{
setContentView(R.layout.activity_home_large);
}
しかし、レイアウトではなく他の機能の使用を課金することを検討します。iOS でアプリを購入した場合、同じアプリが両方のデバイス サイズで動作することを期待します。Android でも同じです。
レイアウトはユーザー エクスペリエンスを最適化します。