AndroidSDK Support 자체 야간,주간 모드 전환 상세 설명
6218 단어 AndroidSDKSupport모드 전환
본문 demo 다운로드 주 소 는 글 의 끝 에 있 습 니 다.문 서 를 보고 아직 실현 되 지 않 으 면 다운로드 하고 놀 수 있 습 니 다.
--------------------------------------------------------------------------------
효과 시범
왼쪽 은 안 드 로 이 드 4.1 효과,오른쪽 은 안 드 로 이 드 6.0 효과.
실현 절차
저 는 제 demo 를 예 로 들 어 Style 을 수정 해 야 합 니 다.Day/Night 에 대해 서로 다른 Style 이나 Color 를 설정 하고 전환 모드 는 자바 코드 에서 이 루어 져 야 합 니 다.
우선 새 항목 이 필요 합 니 다.초기 Activity 를 선택 할 때 BaseActivity 를 선택 하 십시오.
1.appcompat 라 이브 러 리 의존
app module 의 gradle 에서 app copat 라 이브 러 리 에 의존 하고 버 전 은 최소 23.2.0 입 니 다.
dependencies {
compile 'com.android.support:appcompat-v7:23.4.0'
}
오늘 블 로그 가 주간 야간 모드 로 전환 하 는 원 리 는 style 로 전환 하 는 것 입 니 다.우리 페이지 에 여러 가지 style 이 인용 되 어 있 기 때문에 우 리 는 서로 다른 style 을 정의 하기 위해 서 우리 의 레이아웃 페이지 를 대충 조회 하면 됩 니 다.
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="com.yanzhenjie.daynight.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay" />
</android.support.design.widget.AppBarLayout>
<include layout="@layout/content_main" />
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
android:src="@android:drawable/ic_dialog_email" />
</android.support.design.widget.CoordinatorLayout>
스타일 수정res/values/styles.xml 를 열 고 원래 의 것 을:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
다음으로 변경:
<style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
즉,Light 를 Day Night,Day Night 이라는 주제 나 하위 주제 로 바 꿔 야 화이트 야간 모드 전환 을 지원 합 니 다.3.서로 다른 패턴 을 위해 서로 다른 colors 를 씁 니 다.
우 리 는 위의 AppTheme 이라는 주제 아래 세 개의 색 을 설정 한 것 을 알 게 되 었 습 니 다.여기 서 하나의 효 과 를 간단하게 실현 합 니 다.우 리 는 이 세 가지 색 을 수정 하면 됩 니 다.res 아래 에 values-night 폴 더 를 새로 만 들 수 있 습 니 다.
이 폴 더 의 역할 을 먼저 설명해 야 합 니 다.기본 모드 는 보통 일간 모드 이기 때문에 시스템 은 values 의 값 을 읽 습 니 다.야간 모드 로 전환 할 때 values-night 의 값 을 읽 습 니 다.style 이 든 color 이 든.그래서 우 리 는 간단하게 색상 을 바 꿉 니 다.그러면 새로운 colors.xml 을 만 듭 니 다.values 의 colors.xml 를 먼저 봅 시다.
그리고 values 의 colors.xml 파일 을 values-night 에 복사 하고 색상 을 수정 합 니 다.
나 는 간단하게 짙 은 남색 을 옅 은 남색 으로 바 꾸 고,장미색 을 황금색 으로 바 꾸 었 다.
OK,styel 과 color 는 여기까지 기술 입 니 다.다음은 자바 코드 전환 모드 입 니 다.
자바 코드 낮 야간 모드 제어
우선 이 기능 은 슈퍼 port-apcompat 에서 왔 기 때문에 우리 의 Activity 는 계 승 된 AppCompat Activity 입 니 다.
아래 의 세 가지 모드 는 모두 초기 화,또는 명시 적 호출 에 사용 할 수 있 습 니 다.
첫 번 째,자동 모드 입 니 다.만약 에 저희 app 에 위치 추적 권한,네트워크 권한 등 이 있 으 면 시스템 은 지금 이 밤 인지 낮 인지 자동 으로 확인 할 수 있 습 니 다.사용자 가 앱 을 열 때 자동 으로 응답 모드 로 전환 합 니 다.이 모드 는 저희 가 앱 초기 화 나 Application 에서 정적 코드 로 설정 할 수 있 습 니 다.
{
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);
}
두 번 째,일간 모드,호출 후 Activity 의 recreate()방법 을 사용 해 야 합 니 다.getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
recreate();
세 번 째,야간 모드,호출 후 Activity 의 recreate()방법 을 사용 해 야 합 니 다.
getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);
recreate();
됐어,아주 거 칠 어,이렇게 간단 해,끝났어.
총결산
1.복잡 하 게 실현 하려 면 values-night 에서 만 다른 색 을 설정 하 는 것 이 아니 라 다른 style 을 만들어 다른 view 에 인용 할 수 있 습 니 다.
2.주의해 야 할 두 가지 부분,하 나 는 app 또는 activity 가 인용 하 는 style 입 니 다.Theme.AppCompat.Day Night 또는 그의 하위 style 이 필요 합 니 다.다른 하 나 는 getDelegate().setLocalNightMode()를 호출 하 는 것 입 니 다.당신 의 Activity 는 반드시 AppCompat Activity 를 계승 해 야 합 니 다.
문장 데모 원본 다운로드:http://xiazai.jb51.net/201609/yuanma/AndroidDayNightSample(jb51.net).rar
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[*기타*] 새로운 Mac 개발 환경 구축 메모새로운 Mac용 개발 환경 구축을 위한 개인 메모. 1. NodeJS 설치 에서 최신 버전을 추가합니다. 2. n 설치 3. cordova 설치 버전 지정으로 넣는다. 4. java 설치 에서 java8 최신 내용을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.