0

特定のアクティビティで使用されているAndroidのカスタム画面カテゴリを検出したいです。layout-sw640dpをプログラムで検出したいのですが、これをどのように実現できますか。小さい、通常、大きい、xlargeのレイアウトでも同じことができますが、私はこれについてはよくわかりません。親切にこれを手伝ってください。ありがとう。

4

2 に答える 2

2

なぜそれをする必要があるのか​​ わかりません。ただし、簡単なウォークアラウンドは、次のようにタグを使用することです。

mdpi:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:background="@drawable/content_bg"
  android:orientation="vertical"
  android:id="@+id/name"
  android:tag="mdpi-xxx-yyy" >

hdpiで:

  android:id="@+id/name"
  android:tag="hdpi-xxx-yyy" >

次に、コードから R.id.name のタグを読み取ります。


于 2013-03-15T06:06:57.230 に答える
1

sw640dp利用可能な最小サイズが 640 dp 以上であることを意味します。これは、デバイスの実際の解像度ではなく、アクティビティに使用できるレイアウト スペースに基づいています。したがって、アクティビティのルート レイアウトの寸法に基づいてこれを計算できます。

int density = getResources().getDisplayMetrics().density;
int widthDp = rootView.getWidth() / density;
int heightDp = rootView.getHeight() / density;
if(widthDp >= 640 || heightDp >= 640) {
    // qualifies for sw640dp
}
else {
    // does not qualify for sw640dp
}

Galaxy S3 の場合、解像度は 1280x720 で、これは 640x360 を dp 単位に変換したものです。解像度ではなくレイアウトswの利用可能なサイズに関係するため、ステータスバーなどのシステム装飾がレイアウトの利用可能な高さを減らすため、資格がないだろうと推測しています.sw640dp

于 2013-03-15T07:01:56.343 に答える