0

Android 앱에서 방향 변경을 사용하지 않으려하지만 사용자가 기본 방향 (태블릿의 경우 가로 방향, 휴대 전화의 세로 방향)을 사용하도록 허용하려고합니다.다른 기기의 Android 기기에서 화면 방향을 수정하는 방법

다른 값으로 "android : screenOrientation"을 설정하려고했지만 적절한 값을 찾을 수 없습니다.

Java 코드 (작성해야하는 코드)를 작성해야합니까, 아니면 manifest를 사용하여 해결할 수 있습니까? @ Pierrew의 힌트에

UPD으로, 나는 세로 레이아웃 가로 레이아웃의 기본 레이아웃에 대한 res/layout/main.xml, res/layout-land/main.xmlres/layout-port/main.xml을 작성해야합니다. 따라서, 모든 레이아웃을 res/layout/main.xml에 정의하고 오리엔테이션을 res/layout-land/main.xmlres/layout-port/main.xml으로 명확하게 정의하는 방법을 알아야합니다.

은 내가 res/layout/main.xml에 레이아웃을 선언하고 res/layout-land/main.xmlres/layout-port/main.xml 모든 레이아웃 속성을 도출하고 도출 된 레이아웃 만 android:screenOrientation 값을 재정의 할 필요가 있다고 생각합니다.

어떻게 할 수 있습니까?

+1

권한을 추가하는 것이 질문이었다 nswered [여기] (http://stackoverflow.com/questions/9627774/android-allow-portrait-and-landscape-for-tablets-but-force-portrait-on-phone) –

답변

0

레이아웃 을 레이아웃 xml로 설정하면됩니다. 다양한 기기 (태블릿 및 휴대 전화)를 지원하려면 크기 한정자를 사용해야합니다. res 폴더에서 res/layout-large/main.xml을 만들어 태블릿을 지원해야합니다. 그래서 당신이 정제를위한 풍경을 원한다면. res/layout-large/main.xml에 android:screenOrientation="landscape"을 넣으십시오. 일반적인 res/layout/main.xml에는 android:screenOrientation="portrait"을 넣을 수 있습니다. Android는 사용자가 사용중인 기기를 자동으로 감지하고 적절한 XML을로드합니다. 자세한 내용은 크기 한정자 섹션 (http://developer.android.com/training/multiscreen/screensizes.html#TaskUseSizeQuali)을 확인하십시오.

+0

그리고 내가 어떻게 하나의 레이아웃을 설명 할 수 있습니까? 파일을 만들고, res/layout-large/main.xml의 차이점 만 설명하십시오. (전화에 대해 작성해야 할 내용은 무엇입니까?) –

+0

그 밖의 모든 것이 동일하면 res/layout 내부의 모든 내용을 복사해야합니다 (기본값). 이 폴더는 전화를위한 것입니다.) res/layout-large /로 이동 한 다음 구성을 변경하십시오. 사람들이 일반적으로 레이아웃을 재 배열하여 모든 것이 큰 화면에 맞춰지기 때문에 안드로이드 디자인이 그 것입니다. – Pierrew

+0

또한 relativelayout을 사용하면 모든 UI 요소가 이동 될 수 있으므로 가로 모드에서 세로 모드로 전환 할 때 모든 것이 올바르게 정렬되어 있는지 확인해야합니다. – Pierrew

0

이러한 방법을 사용하여 약간의 논리를 사용할 수 있습니다.

Boolean isTablet = (ctx.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE; 

프로그래밍 방식으로 화면 방향을 변경하십시오.

ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE 

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT 

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 

ActivityInfo이 당신을 위해 트릭을 할해야

http://developer.android.com/reference/android/content/pm/ActivityInfo.html

:

import android.provider.Settings; 
public static void setAutoOrientationEnabled(ContentResolver resolver, boolean enabled){ 
    Settings.System.putInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, enabled ? 1 : 0); 
} 

는 AndroidManifest.xml을

<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
관련 문제