2013-12-09 3 views
0

4.7 인치 장치 이상에서 세로 및 가로 방향의 모든 장치에서 실행되는 응용 프로그램을 개발 중입니다.일부 화면 크기에서 방향을 고정하는 방법은 무엇입니까?

이제 약 50 가지 정도의 활동이 있고 기기 화면 크기가 보다 작고 인 경우 세로 방향으로 고정하려고합니다. 나는 아래의 코드를 사용하여 방향 잠금을 설정할 수 있습니다 : - : 이제

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

또는

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

- 코드 위

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); 

내가 디스플레이 측정을위한 오리엔테이션 및 코드 아래를 잠글 수 있습니다 내 질문은 장치에 대한 방향을 잠그는 데 적합한 방법은 무엇입니까 < = 5 인치이고 내 모든 활동에이 코드를 써야합니까? 또한 대부분의 활동이 이미 사용자 지정 리스너 클래스를 확장 중이므로 baseActivity를 사용하여 확장 할 수 없습니다.

답변

0

"BaseActivity"또는 "BaseFragmentActivity"를 작성하여 코드 재사용 가능성을 줄이고 중복성을 줄이는 최상의 OOP 사례 중 하나입니다. 매니페스트의 활동 방향을 제한하는 표준 방법입니다.

하지만 조건에 따라 제한해야하며 모든 활동에서 다시 작성하고 싶지는 않습니다. 그래서 귀하의 모든 하위 활동에 이르는 "기본 활동"을 작성하겠습니다.

public class BaseActivity extends Activity { 
    public void onCreate(Bundle savedState) { 
     //... 

     if(isScreenLarge()) { 
      // width > height, better to use Landscape 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
     } else { 
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
     } 
    } 

    public boolean isScreenLarge() { 
     final int screenSize = getResources().getConfiguration().screenLayout 
       & Configuration.SCREENLAYOUT_SIZE_MASK; 
     return screenSize == Configuration.SCREENLAYOUT_SIZE_LARGE 
       || screenSize == Configuration.SCREENLAYOUT_SIZE_XLARGE; 
    } 
} 

이제 모든 활동을 BaseActivity으로 확장하십시오.

희망이 도움이됩니다.

+0

대부분의 활동이 이미 사용자 정의 리스너 클래스를 확장하고 있으므로 확장 할 수 없습니다. –

+0

좋습니다. 그런 다음 재사용 기능을 제공하기 위해 관련 매개 변수 {activity, ...}를 사용하는 정적 메서드가있는 Util을 만들어야합니다. 하지만 Util.setRequestedOrienation (activity, ...)을 각 액티비티에서 호출해야합니다. 나는 이것이 항상 당신을이 상황에 빠지게 할 디자인 구조 문제와 더 비슷하다고 말한다. – Deminem

0

코드가있는 기본 활동 클래스를 만듭니다. 나머지 50 명은 그것을 연장합니다.

0

기본 활동을 만들면 50 가지 활동이 모두 확장됩니다. 잠금 논리를 해당 기본 활동의 onResume() 또는 onCreate()에 넣고 그 방향을 잠급니다.

동의어 : 50 개의 활동이 실제로 많이 있습니다. 시도한 조각?

+0

이것은 단지 예일뿐입니다 - 50 가지 활동 또는 단편. 주요 문제는 오리엔테이션 잠금입니다. –

관련 문제