2013-03-15 55 views
0

我想檢測在特定活動中使用的android中的自定義屏幕類別,我想以編程方式檢測layout-sw640dp,如何實現此目的。我們可以對小尺寸,正常,大尺寸& xlarge佈局執行相同的操作,但我不確定這個,請在​​此幫助我。謝謝。我們如何檢測android中的自定義屏幕類別?

+0

與別人有什麼不同? – Rajesh 2013-03-15 06:03:27

+0

其針對Galaxy S3設備,多數民衆贊成在 – Karthik 2013-03-15 06:05:41

+0

我的問題是如何檢測邏輯與其他人不同? (不是。) – Rajesh 2013-03-15 06:06:49

回答

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" > 

在華電國際:

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

然後,從你的代碼讀取標籤的R.id 。名稱。


+0

如何以編程方式讀取android:標記? – Karthik 2013-03-15 06:41:50

+0

查看v =(查看)findViewById(R.id.name); v.getTag(); – Calvin 2013-03-15 09:21:13

1

sw640dp只是表示最小可用維度至少爲640dp。這是基於活動的可用佈局空間,而不是設備的實際分辨率。所以,你可以關閉此基於活動的根佈局的尺寸計算:

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 
} 

在銀河S3的情況下,它的分辨率爲1280x720,也就是640×360轉換成DV單元。由於sw屬於佈局的可用尺寸,而不是分辨率,因此我猜測它會而不是有資格獲得sw640dp,因爲系統裝飾(例如狀態欄)會降低佈局的可用高度。

+0

這可以獲得維度,但不能獲得其他配置,例如drawable-en-rUS-long-hdpi-v9 – Calvin 2013-03-15 09:23:42

+0

@Calvin正確,但那不是問題。 OP想知道如何檢測'layout-sw640dp' – 2013-03-15 17:00:30