2012-02-13 28 views
6

Mam sytuację, w której, jeśli urządzeniem z Androidem jest tablet, chcę włączyć orientację (pionową i poziomą), natomiast jeśli urządzenie jest telefonem, chcę, aby orientacja była tylko w trybie portretu. Czy możesz mi pomóc, jak to zrobić?Jak ustawić orientację działania w systemie Android na podstawie urządzenia?

Dzięki Nithin

+0

+ 1 za miłą koncepcję. – Praveenkumar

+0

sprawdź http://stackoverflow.com/questions/4616176/android-orientation-change –

+0

i http: //www.workingfromhere.com/blog/2009/03/30/orientacja-sensor-napiwki-w-android/ –

Odpowiedz

0

Można użyć this klasę, aby uzyskać informacje o urządzeniu o bieżącej produkcji, wydobytego z właściwości systemu.

Aby ustawić właściwości orientacji, zastosowanie następujący atrybut ...

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

Nie działa. To jest zakodowane w manifeście! Tak samo jest w przypadku tabletu i telefonu. – nithinreddy

+0

Nie można ustawić orientacji dynamicznie przed uruchomieniem programu. Użyj domyślnej, aby umożliwić jej zmianę w zależności od preferencji urządzenia i sposobu obracania ekranu przez użytkownika. Lub "nosnik" dla preferowanej orientacji urządzenia. –

0

uzyskać szerokość i wysokość ekranu urządzenia, jeśli rozdzielczość jest mniejsza niż tabletki, można ustawić orientację aplikacja do portretu.

Jeśli potrzebujesz wymiary wyświetlacza w pikselach aktywności, można użyć getSize:

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

Jeśli nie jest aktywny można uzyskać domyślny wyświetlacza poprzez 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); 
} 

nie daję żadnego polecenia w manifeście na podstawie

Androidzie: screenOrientation

+0

Dlaczego w dół? Czy ta odpowiedź nie jest możliwa? –

+0

Myślę, że to działa..i da mu zastrzyk..dzięki! – nithinreddy

0

Jestem po prostu początkującym w tym się, ale być może byłoby to możliwe poprzez kierowanie na konkretny poziom API lub dpi? Możesz zapewnić alternatywne zasoby dla różnych urządzeń, na które kierujesz reklamy.

Na przykład:

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

Dobrym dokumentacji, które można znaleźć here.

1

Masz 2 sposoby:

a) tworzenie różnych zestawów układ i kanału alfa dla telefonu i tabletu oddzielnie i zaprojektować je w zależności od orientacji trzeba.

b) Sprawdź urządzenie operacyjne podczas pracy i ustaw orientację. Aby sprawdzić urządzenie, dają kontrolę następujących parametrów i ustawić orientację programowo,

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

spróbować tej To działa idealnie dla mnie .....

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

i tej funkcji do zdecydować między tabletem a telefonem, zadzwonić w IF powyżej .....

public static boolean isXLargeScreen(Context context) { 
return (context.getResources().getConfiguration().screenLayout 
& Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE; 
} 
Powiązane problemy