12

私は7インチのタブレットで最高の気分になり、10インチのタブレットと5インチのSamsungNoteサイズのデバイスで問題なく快適に感じるゲームを持っています。Nexus4の携帯電話やS3のサイズのものでもかなり楽しいです。小さいもので遊ぶのはまったく楽しいことではありません。そうだとすれば、マニフェストは、小型の携帯電話に制限されながら、4.7インチのデバイスから10インチのタブレットまで何にでもインストールできるようにどのように書くことができるでしょうか。

編集

少し前に戻りますが、この質問の理由は、Android開発者のWebサイトのドキュメントが非常に混乱し、矛盾していることがわかったためです。混乱がどこから来ているのかを示すためにいくつかの例を挙げましょう:

たとえば、いくつかの異なるデバイスを見てみましょう。

ドロイド3

  • 4インチディスプレイ
  • 540x960ピクセル
  • 275 ppi

サポート画面のドキュメントを見ると、次のことが推測できます...

  • 4インチでは、「大きい」の裸の端にある可能性がありますが、おそらく中程度です
  • 540x960では、「大」の最小値の範囲内です。
  • 275 ppiで、hdpi画面であると主張します

ただし、このデバイスは私がサポートしたいデバイスよりもはるかに小さいです...しかし、ドキュメントでは、3つのカウントのうちの2つで、このデバイスには「大」画面があるように見えます。この用語の正しい定義は、4インチの画面「大」ではありません。それでは、さらに進んでみましょう...

ネクサス4

  • 4.7インチディスプレイ
  • 768x1280ピクセル
  • 318 ppi

サポート画面のドキュメントを見ると、次のことが推測できます...

  • この画面の物理的な寸法は、中と大の境界にあります
  • ピクセルの寸法は、それがxlargeである可能性があることを示します
  • ppiは、それがxhdpiデバイスであることを示します

繰り返しになりますが、4.7インチの画面が「xlarge」であるというのは正しい定義ではありません...画面のサイズはおそらくゲームを楽しむのに十分な大きさですが、それは「中」の画面ですか?「大画面」?どうやって知ることができますか?

上記の電話は両方とも「中」ですか?ドロイドは「中」、ネクサスは「大」でしょうか?なぜまたはなぜそうではないのですか?また、Nexusが「大」の場合、「大」であるはずの7インチタブレットとどのように区別されますか?

そして、ドキュメントがサポートしていると主張しているという事実があります-screens /sizeはとにかく3.2で非推奨になりました

しかし、古い電話(インチ単位の適切な物理画面サイズを想定)と新しいタブレットの両方をサポートしたい場合、または森の中に隠れている場合は、その場所で何を使用するかについての明確なガイダンスはありません。誰かがクレティエリアが本当に重要である理由と、特定のデバイスが特定のフィルターに適合するか、それを失敗させる理由を明確に示すことができますか?

4

4 に答える 4

6

Googleドキュメントに基づくと、これは要件(5インチ以下)に対応すると思います。

<compatible-screens>

    <screen android:screenSize="large" android:screenDensity="ldpi" />
    <screen android:screenSize="large" android:screenDensity="mdpi" />

    <screen android:screenSize="xlarge" android:screenDensity="ldpi" />
    <screen android:screenSize="xlarge" android:screenDensity="mdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="hdpi" />
    <screen android:screenSize="xlarge" android:screenDensity="xhdpi" />

</compatible-screens>

またはこれを使用する(4.7 "以下):

<supports-screens android:smallScreens="false"
                  android:normalScreens="true"
                  android:largeScreens="true"
                  android:xlargeScreens="true"
                  android:requiresSmallestWidthDp="536" />

2番目の方法の方が正確なので、2番目の方法をお勧めします。

536はどのように計算されますか?http://developer.android.com/guide/practices/screens_support.htmlに基づいて(高さx幅):

  • xlarge画面は少なくとも960dpx720dp
  • 大画面は少なくとも640dpx480dp
  • 通常の画面は少なくとも470dpx320dpです
  • 小さな画面は少なくとも426dpx320dpです

(720-480)/(7-4)= 80、480 +(80 * 0.7)= 536

また、「非推奨の警告」について心配する必要はありません。新しい提案された方法は、UIが全画面表示ではなく、画面の上下からいくつかのスペースがタイトルバーや戻るメニューに使用されるタブレットアプリ(IMO)用です。ゲームがおそらくフルスクリーンモードで実行されている間のボタンなど。

http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayoutsのGoogleドキュメントからこれを確認してください。

注:これらの修飾子を使用して指定するサイズは、実際の画面サイズではありません。むしろ、サイズは、アクティビティのウィンドウで使用できるdp単位の幅または高さです。。Androidシステムは、システムUIに画面の一部(画面下部のシステムバーや上部のステータスバーなど)を使用する場合があるため、一部の画面はレイアウトに使用できない場合があります。したがって、宣言するサイズは、アクティビティに必要なサイズに具体的に一致する必要があります。システムは、レイアウトに提供するスペースの量を宣言するときに、システムUIによって使用されるスペースを考慮します。また、アクションバーはアプリケーションのウィンドウスペースの一部と見なされることに注意してください。ただし、レイアウトでは宣言されていないため、レイアウトに使用できるスペースが少なくなり、デザインで考慮する必要があります。

于 2013-02-10T21:03:53.263 に答える
3

残念ながら、「物理的」サイズに従ってデバイスを除外する方法はありません。これは、必要なものです。

2つの理由があります。

  1. 画面サイズには、小、通常、大、x大の4種類しかありません。これは粗すぎます。より高い粒度が必要です:'LCDが4.7インチ未満のデバイスを除外します'これは現在のAndroidプラットフォームではサポートされていません。
  2. 画面サイズは、物理的な密度とは大きく異なる値に設定できる論理的な密度によって決まります。たとえば、デバイスの画面が5インチで、物理密度が180ppiであると仮定します。これはおそらくあなたがサポートしたい画面です。ただし、何らかの理由で、製造元はデバイスの論理密度を320dpiに設定することにしました。次に、デバイスは、その物理的な密度に関係なく、小画面デバイスとして分類されます。

参考までに、論理密度と画面ピクセル数から画面サイズを決定する内部ロジックを紹介します。

http://androidxref.com/4.0.4/xref/frameworks/base/services/java/com/android/server/wm/WindowManagerService.java#5899

于 2013-02-14T16:33:24.820 に答える
1

そうだとすれば、マニフェストは、小型の携帯電話に制限されながら、4.7インチのデバイスから10インチのタブレットまで何にでもインストールできるようにどのように書くことができるでしょうか。

技術的に言えば、できません。

android:requiresSmallestWidthDpあなたの希望する目的に最も近くなります。これは密度に依存しないピクセルで測定され、密度に依存しないピクセルは1/160インチであると想定されているdpため、160を掛けることで任意のインチ数の値を算出できます。

ただし、これは、要求に応じて対角線を指すものではありません。これは、最短の辺の幅を指します(たとえば、縦向きの幅、横向きの高さ)。

したがって、最小幅の観点から希望を再キャストできる場合は、を使用android:requiresSmallestWidthDpして、Google Playがそれを尊重するかどうかについて言及しているときに、ドキュメントが混乱するように祈ってください。アプリをPlayストアデベロッパーコンソールにアップロードして、どのデバイスがそれをサポートしているかを確認すると、小さすぎることがわかっているデバイスを見つけて(ただし、そうでない場合はアプリを実行する必要があります)、フィルター処理されているかどうかを確認できます。

のドキュメントandroid:requiresSmallestWidthDpが正しく、Playストアがフィルタリングの目的でそれを無視している場合(grrrrr ...)、あなたは大部分が困惑しています。次に近い解決策は<compatible-screens>、他の回答ごとに使用することであり、サポートlargeしているのはxlarge画面サイズのみであると主張します。これにより、サポートしたい範囲の下限にあるさまざまなデバイスがノックアウトされますが、normal画面サイズは必要なサイズよりもはるかに小さくなります(対角3インチまで)。

ところで、normal対角線は3 "-5"なので、Droid3はnormalではなくlargeです。ピクセルサイズは、画面サイズとはまったく関係ありません。

于 2013-02-11T00:27:06.533 に答える
0

実際のアプリケーションでそれを行う適切な方法がないようです。そして、Android開発ガイドがどれほどひどく混乱して矛盾しているのかについてあなたに同意します。しかし、私の経験では、そのようなことの良い回避策は、開発者コンソールでアプリを公開するときに、アプリを実行できるデバイスを変更することです。しかし、私はざっと見て、ここで同様の質問を見つけました:

Androidマーケットでデバイスの画面サイズをフィルタリングする

それを行うための最良の方法のようです。幸運を!

于 2013-02-13T20:30:45.360 に答える