시스템 설정 이벤트에 응답(구성 클래스)


이 섹션 소개:

이 섹션에서 소개하는 Configuration 클래스는 화면 방향과 같은 휴대폰 장치의 구성 정보를 설명하는 데 사용됩니다. 터치 스크린의 터치 방법 등. 사용자 정의 ROM을 갖고 있는 친구들은 다음을 수행할 수 있다는 것을 알아야 한다고 생각합니다. 프레임워크/베이스/코어/java/android/content/res/Configuration.java 이 클래스를 찾아 기본 글꼴 크기 조정 등 관련 설정을 변경해보세요! 관심이 있으시면 직접 찾아보실 수 있습니다! Android 개발에서 이 섹션에 설명된 Configuration 클래스의 사용 방법~ API 문서: Configuration


1. Configuration

  • densityDpi에서 제공하는 메서드 목록: 화면 밀도
  • fontScale: 현재 사용자가 설정한 글꼴의 배율 인수
  • hardKeyboardHidden: 결정 하드 키보드 표시 여부에 관계없이 두 가지 선택 값이 있습니다: HARDKEYBOARDHIDDEN_NO, HARDKEYBOARDHIDDEN_YES, 각각 16진수 0과 1
  • keyboard: 현재 연결된 키보드 유형 가져오기: 이 속성의 반환 값: KEYBOARD_12KEY(만 12키 작은 키보드), KEYBOARD_NOKEYS, KEYBOARD_QWERTY(일반 키보드)
  • keyboardHidden: 이 속성은 현재 키보드를 사용할 수 있는지 여부를 식별하는 부울 값을 반환합니다. 이 속성은 시스템의 하드웨어 키보드뿐만 아니라 시스템의 소프트 키보드(화면에 위치)도 결정합니다.
  • locale: 사용자의 현재 로케일 가져오기
  • mcc: 모바일 신호의 국가 코드 가져오기
  • mnc: 모바일 신호의 네트워크 코드 가져오기
    ps: 국가 코드와 네트워크 코드가 공동으로 결정 현재 휴대폰 네트워크 운영 비즈니스
  • navigation: 시스템의 방향 탐색 장치 유형을 결정합니다. 이 속성의 반환 값: NAVIGATION_NONAV(탐색 없음), NAVIGATION_DPAD (DPAD 네비게이션) NAVIGATION_TRACKBALL (트랙볼 네비게이션), NAVIGATION_WHEEL (휠 네비게이션)
  • orientation: 시스템 화면의 방향을 가져옵니다. 이 속성의 반환 값: ORIENTATION_LANDSCAPE(가로 화면), ORIENTATION_PORTRAIT(세로 화면)
  • screenHeightDp, screenWidthDp: dp로 표시되는 화면의 사용 가능한 높이와 너비
  • touchscreen: 터치 모드 가져오기 시스템 터치스크린의 모습입니다. 이 속성의 반환 값: TOUCHSCREEN_NOTOUCH(터치 스크린 없음), TOUCHSCREEN_STYLUS(스타일러스 터치 스크린), TOUCHSCREEN_FINGER(손가락을 받는 터치 스크린)

2. 테스트할 간단한 예를 작성하세요.

스크린샷 실행:

1.png

코드 구현:

public 클래스 MainActivity는 AppCompatActivity 확장 {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main) ;
        TextView txtResult = (TextView) findViewById(R. id.txtResult);
        StringBuffer 상태 = new StringBuffer();
        /1获取系统的Configuration对象
        구성 cfg = getResources().getConfiguration();
        //②想查什么查什么
        status.append(" DensityDpi:" + cfg.densityDpi + "n");
        status.append("fontScale:" + cfg.fontScale + "n");
       status.append("hardKeyboardHidden:" + cfg.hardKeyboardHidden + "n") ;
        status.append("keyboard:" + cfg.keyboard + "n");
        status.append("keyboardHidden:" + cfg.keyboardHidden + "n");
        status.append("로케일:" + cfg .locale + "n");
        status.append("mcc:" + cfg.mcc + "n");
        status.append("mnc:" + cfg.mnc + "n");
        status.append ("navigation:" + cfg.navigation + "n");
        status.append("navigationHidden:" + cfg.navigationHidden + "n");
        status.append("orientation:" + cfg.orientation + "n ");
        status.append("screenHeightDp:" + cfg.screenHeightDp + "n");
        status.append("screenWidthDp:" + cfg.screenWidthDp + "n");
        status.append("screenLayout:" + cfg.screenLayout + "n");
        status.append("smallestScreenWidthDp:" + cfg.densityDpi + "n");
        status.append("터치스크린:" + cfg.densityDpi + "n");
        status.append("uiMode:" + cfg.densityDpi + "n");
        txtResult.setText(status.toString());
    }
}

3. 시스템 설정 변경에 응답하도록 onConfigurationChanged를 다시 작성하세요.

이 방법은 시스템 설정 변경을 모니터링하는 데 사용됩니다. 콜백을 기반으로 하는 시간 처리 방법입니다. 시스템 설정이 변경되면 자동으로 실행됩니다. 그러나 다음 방법을 사용하여 모니터링하는 경우 targetSdkVersion 속성은 최대 12까지만 설정할 수 있습니다. 12보다 높으면 메서드가 트리거되지 않습니다! 다음은 참고용으로 가로 화면과 세로 화면 전환 예시입니다. 기타 정보는 직접 구글링해 보세요~

코드 예시: 간단한 버튼을 클릭하면 가로 화면과 세로 화면 사이를 전환한 다음 토스트가 가능합니다. 프롬프트

렌더링 실행:

2.jpg3.jpg

구현 코드:

public 클래스 MainActivity 확장 활동 {  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
         
        버튼 btn = (버튼) findViewById(R.id.btncahange);  ㅋㅋㅋ  구성 config = getResources().getConfiguration();  
              //如果是横屏的话切换成竖屏  
              if( config.orientation == Configuration.ORIENTATION_LANDSCAPE)  
               {  
                 MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  
               }  
               //如果竖屏的话切换成横屏  
              if(config.orientation == Configuration.ORIENTATION_PORTRAIT)  
                {
                  MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  
              }  
           } ; = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE?"horizontal screen":"vertical screen";
Toast.makeText(MainActivity.this, "시스템 화면 방향이 변경되었습니다. n 수정된 방향은" + 화면, Toast.LENGTH_SHORT) .show();
}
}


또한 AndroidManifest.xml에 다음을 추가해야 합니다. 설명:


Permission:
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" / >
< 액티비티 태그에 추가하세요:

android:configChanges="orientation"

targetSdkVersion을 12, 12 이상으로 변경하는 것도 허용됩니다

이 섹션 요약:이 섹션에서는 다음을 설명합니다. onConfigurationChanged는 시스템 설정 변경에 응답하므로 일반적인 이해만 있으면 됩니다. 나중에 활용해서 더 깊게 들어가보겠습니다~