2012-02-13 91 views
6

我有一種情況,其中,如果Android設備是平板電腦,那麼我希望啓用方向(縱向和橫向),而如果設備是手機,我希望方向僅限於縱向模式。 你能幫我怎麼做?我們如何根據設備設置Android中的活動方向?

感謝, 尼西

+0

+ 1 for nice Concept。 – Praveenkumar 2012-02-13 06:48:48

+0

檢查http://stackoverflow.com/questions/4616176/android-orientation-change – 2012-02-13 06:54:45

+0

和http://www.workingfromhere。com/blog/2009/03/30/orientation-sensor-tips-in-android/ – 2012-02-13 06:55:05

回答

0

您可以使用this類獲取有關當前的構建,從系統屬性中提取的設備信息。

要設置取向性,使用後的屬性...

android:screenOrientation=["unspecified" | "user" | "behind" | 
            "landscape" | "portrait" | 
            "reverseLandscape" | "reversePortrait" | 
            "sensorLandscape" | "sensorPortrait" | 
            "sensor" | "fullSensor" | "nosensor"] 
+0

不起作用。這是在清單中硬編碼!所以平板電腦和手機也一樣。 – nithinreddy 2012-02-13 07:28:38

+0

在實際運行程序之前,您無法動態設置方向。使用默認設置,可以根據設備偏好以及用戶旋轉屏幕的方式來改變設置。或者「nosensor」用於設備的首選方向。 – 2012-02-13 07:33:42

0

獲取設備屏幕的寬度和高度,如果分辨率小於平板電腦,那麼你可以設置的方向該應用程序肖像。

如果需要在活動的像素的顯示尺寸,你可以使用的getSize:

Display display = getWindowManager().getDefaultDisplay(); 
Point size = new Point(); 
display.getSize(size); 
int width = size.x; 
int height = size.y; 

如果沒有一個活動,你可以通過WINDOW_SERVICE得到默認顯示:

WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); 
Display display = wm.getDefaultDisplay(); 

if(width<= (resolution width of tablet) && height<=(resolution height of tablet)) 
{ 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
} 

不給任何命令在清單基礎上

android:screenOrientation

+0

爲什麼downvote?這個答案不可能嗎? – 2012-02-13 07:10:28

+0

我認爲這個工程..我會給它一個鏡頭..謝謝! – nithinreddy 2012-02-13 07:28:08

0

我只是這個自己的初學者,但也許可以通過針對特定的API級別或dpi來實現這一點?您可以爲您定位的不同設備提供備用資源。

例如:

res/layout/main.xml 
res/layout-xhdpi/main.xml 
res/layout-v11/main.xml 

的一個好文件,可以發現here

1

你有2種方法:

a)創建組不同的佈局和繪圖的手機和平板電腦分開,並根據您所需要的方向設計它們。

b)在運行期間檢查操作設備並設置方向。要檢查設備,就下列參數進行檢查和編程設定的方向,

(1) Build.VERSION.SDK_INT 
    (2) Configuration.SCREENLAYOUT_SIZE_MASK 
1

試試這個 它完美對我.....

if (isXLargeScreen()) 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

和 此功能在平板電腦和手機之間做出決定,在上面的IF中稱爲.....

public static boolean isXLargeScreen(Context context) { 
return (context.getResources().getConfiguration().screenLayout 
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE; 
} 
相關問題