전체 응용 프로그램을 세로 모드로만 설정하는 방법은 무엇입니까?
응용 프로그램이 세로 모드로만 실행되도록 설정하려면 어떻게 해야 합니까?나는 애플리케이션이 실행되는 동안 가로 모드를 비활성화하기를 원합니다.프로그래밍 방식으로 어떻게 합니까?
모든 Android 버전용
원본 XML지정할 수 있습니다.android:screenOrientation="portrait"manifest.xml 파일의 각 활동에 대해.에서 이 옵션을 지정할 수 없습니다.application꼬리표를 달다
다른 옵션은 프로그래밍 방식으로 수행하는 것입니다. 예를 들어,Activity기본 클래스:
@Override
public void onCreate(Bundle savedInstanceState) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
Android 4+(API 14+)의 경우
마지막 옵션은 Android 4.0(API 14+) 이후에만 사용할 수 있는 활동 수명 주기 청취자로 수행하는 것입니다.모든 일은 관습 속에서 일어납니다.Application클래스:
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleAdapter() {
@Override
public void onActivityCreated(Activity a, Bundle savedInstanceState) {
a.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
}
ActivityLifecycleAdapter의 빈 구현이 될 도우미 클래스를 만들어야 합니다.ActivityLifecycleCallbacks(따라서 단순히 인터페이스의 모든 메서드 중 하나가 필요할 때 해당 인터페이스의 모든 메서드를 재정의할 필요가 없습니다.)
예, 프로그래밍 방식으로 모든 활동이 확장되는 추상 활동을 만드는 모든 활동에 대해 이 작업을 수행할 수 있습니다.
public abstract class AbstractActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
이 추상 활동은 글로벌 메뉴에도 사용할 수 있습니다.
모든 활동을 공통 기본 클래스로 확장할 필요 없이 전체 응용프로그램에 대해 이 작업을 수행할 수 있습니다.
요령은 먼저 프로젝트에 하위 클래스를 포함시키는 것입니다.잇츠onCreate()앱이 처음 시작되면 개체(API 수준 14+)를 등록하여 활동 수명 주기 이벤트에 대한 알림을 수신합니다.
이렇게 하면 앱의 작업이 시작되거나 중지되거나 다시 시작되거나 어떤 작업이 시작될 때마다 자신의 코드를 실행할 수 있습니다.이 시점에서 전화를 걸 수 있습니다.setRequestedOrientation()새로 만든 활동에서.
class MyApp extends Application {
@Override
public void onCreate() {
super.onCreate();
// register to be informed of activities starting up
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity,
Bundle savedInstanceState) {
// new activity created; force its orientation to portrait
activity.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
....
});
}
}
매니페스트 파일에서 설정할 수 있습니다.
android:name=".your launching activity name"
android:screenOrientation="portrait"
클래스 파일에 다음과 같은 코드를 작성하여 동일한 정보를 얻을 수도 있습니다.
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
Android:screenOrientation="portrait"을 AndroidManifest.xml의 활동에 추가합니다.예:
<activity android:name=".SomeActivity"
android:label="@string/app_name"
android:screenOrientation="portrait">
사용:
android:screenOrientation="portrait"
세로 모드에서만 표시할 각 활동의 응용프로그램 매니페스트 파일에 이 행을 작성하기만 하면 됩니다.
모든 활동에 대해 매니페스트 파일에 기록합니다.
android:screenOrientation="portrait"
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//setting screen orientation locked so it will be acting as potrait
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LOCKED);
}
Android 개발자 가이드에 나온 것처럼:
"방향" 화면 방향이 변경되었습니다. 사용자가 장치를 회전했습니다.참고: 응용 프로그램이 API 레벨 13 이상(minSdkVersion 및 targetSdkVersion 특성에 의해 선언됨)을 대상으로 하는 경우 "screenSize" 구성도 선언해야 합니다. 장치가 세로 방향과 가로 방향으로 전환될 때 변경되기 때문입니다.
"screenSize" 현재 사용 가능한 화면 크기가 변경되었습니다.이 값은 현재 가로 세로 비율과 비교하여 현재 사용 가능한 크기의 변화를 나타내므로 사용자가 가로 세로 간에 전환할 때 변경됩니다.그러나 응용 프로그램이 API 수준 12 이하를 대상으로 하는 경우 활동은 항상 이 구성 변경 자체를 처리합니다(이 구성 변경은 Android 3.2 이상의 장치에서 실행되는 경우에도 활동을 다시 시작하지 않습니다).API 레벨 13에 추가되었습니다.
AndroidManifest.xml 파일에 다음과 같이 입력할 수 있습니다.
<activity
android:name=".activities.role_activity.GeneralViewPagerActivity"
android:label="@string/title_activity_general_view_pager"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden|screenSize"
>
</activity>
추가하기<preference name="orientation" value="portrait" /><widget>내 config.xml에서 작동했습니다.
(다른 솔루션은 내 장치에서 작동하지 않거나, 빌드 중에 덮어쓰거나, 빌드 프로세스 중에 사용되지 않는 오류가 발생했습니다.)
"세로"에서 사용할 활동을 매니페스트 파일에서 활동 태그에 이 코드를 기록해야 합니다.
android:screenOrientation="portrait"
이것처럼.
android:icon="@drawable/icon"
android:name="com.zemkoapps.hd.wallpaper.AndroidGridLayoutActivity"
android:screenOrientation="portrait" >
하지만 화면을 가로로 보려면 이 코드를 사용하십시오.
android:screenOrientation="landscape"
코틀린에서 모든 활동을 공통 기본 클래스로 확장하지 않고도 전체 응용 프로그램에 대해 이 작업을 수행할 수 있는지 궁금해하는 사람이 있다면 아래 예를 참조하십시오.
class InteractiveStoryApplication: Application() {
override fun onCreate() {
super.onCreate()
registerActivityLifecycleCallbacks(object: ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) {
activity?.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
override fun onActivityPaused(activity: Activity?) {
}
override fun onActivityResumed(activity: Activity?) {
}
override fun onActivityDestroyed(activity: Activity?) {
}
override fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) {
}
override fun onActivityStarted(activity: Activity?) {
}
override fun onActivityStopped(activity: Activity?) {
}
})
}
}
그런 다음 Android Manifest에서 공통 기본 클래스를 다음과 같이 추가해야 합니다.
<application android:allowBackup="true"
android:name=".InteractiveStoryApplication"
두 가지 방법으로 할 수 있습니다.
- 더하다
android:screenOrientation="portrait"활동의 당의스트파서에해활동로으당일신매. - 더하다
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);Create()의 'onCreate합니다.
그레이엄 볼랜드의 대답과 유사한...하지만 당신이 원하지 않는다면 애플리케이션 클래스를 만들 필요가 없는 것 같습니다.프로젝트에서 기본 활동만 생성합니다.
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
또한 Potrait 모드를 사용할 AppCompativity 대신 이 클래스를 확장합니다.
public class your_activity extends BaseActivity {}
Xamarin 사용자의 경우
당신이 의 모든 활동을 모든활다확경우장으로 한다면.BaseActivity추가만 하면 됩니다.
this.RequestedOrientation = ScreenOrientation.Portrait;
이렇게 하면 문제가 해결됩니다.한 활동을 , 특정활가지면려이재작다다정니에서 하세요.OnActivityCreated다음과 같이:
this.Activity.RequestedOrientation = ScreenOrientation.Landscape;
글쎄요, 저는 모든 답을 시도했지만 이전 버전의 안드로이드에서는 작동하지 않았습니다.따라서 최종 해결책은 setContentView 바로 위의 모든 활동에 이 코드를 추가하는 것입니다.
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
코틀린에서 -->
Create()에서 Extends Application 클래스 재미있게 사용할 수 있습니다...
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityCreated(p0: Activity, p1: Bundle?) {
p0.requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
}
override fun onActivityStarted(p0: Activity) {
}
override fun onActivityResumed(p0: Activity) {
}
override fun onActivityPaused(p0: Activity) {
}
override fun onActivityStopped(p0: Activity) {
}
override fun onActivitySaveInstanceState(p0: Activity, p1: Bundle) {
}
override fun onActivityDestroyed(p0: Activity) {
}
}
)}
매니페스트에 다음을 입력합니다.
<activity
android:screenOrientation="portrait"
<!--- Rest of your application information ---!>
</activity>
언급URL : https://stackoverflow.com/questions/6745797/how-to-set-entire-application-in-portrait-mode-only
'codememo' 카테고리의 다른 글
| __init_.py에서 참조 'xxx'을(를) 찾을 수 없습니다. (0) | 2023.08.21 |
|---|---|
| Angular2가 비동기 함수 호출을 활성화()할 수 있습니다. (0) | 2023.08.21 |
| Ionic + Angular POST 요청 반환 상태 404 (0) | 2023.08.21 |
| Python에 메서드가 있는지 확인하는 방법은 무엇입니까? (0) | 2023.08.21 |
| jquery $는 실제로 무엇을 반환합니까? (0) | 2023.08.21 |