Android
테마, 스타일, 속성
수색…
전세계 사용자 정의 테마 사용
themes.xml에서 :
<style name="AppTheme" parent="Theme.AppCompat">
<!-- Theme attributes here -->
</style>
AndroidManifest.xml의 경우 :
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- Activity declarations here -->
</application>
기본, 기본 어두운 색 및 강조 색 정의
테마의 색상 표를 사용자 정의 할 수 있습니다.
프레임 워크 API 사용
<style name="AppTheme" parent="Theme.Material">
<item name="android:colorPrimary">@color/primary</item>
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<item name="android:colorAccent">@color/accent</item>
</style>
Appcompat 지원 라이브러리 (및 AppCompatActivity
)
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
활동마다 사용자 정의 테마 사용
themes.xml에서 :
<style name="MyActivityTheme" parent="Theme.AppCompat">
<!-- Theme attributes here -->
</style>
AndroidManifest.xml의 경우 :
<application
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.AppCompat">
<activity
android:name=".MyActivity"
android:theme="@style/MyActivityTheme" />
</application>
Overscroll Color (API 21+)
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorEdgeEffect">@color/my_color</item>
</style>
리플 색상 (API 21 이상)
사용자가 클릭 할 수있는 뷰를 누를 때 리플 애니메이션이 표시됩니다.
보기에서 ?android:colorControlHighlight
를 할당하는 앱에서 사용한 것과 동일한 리플 색상을 사용할 수 있습니다. 테마의 android:colorControlHighlight
속성을 변경하여이 색상을 맞춤 설정할 수 있습니다.
이 효과 색상은 변경할 수 있습니다.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:colorControlHighlight">@color/my_color</item>
</style>
또는 소재 테마를 사용하는 경우 :
<style name="AppTheme" parent="android:Theme.Material.Light">
<item name="android:colorControlHighlight">@color/your_custom_color</item>
</style>
라이트 상태 표시 줄 (API 23 이상)
이 특성은 상태 표시 줄 아이콘의 배경을 화면 맨 위에 흰색으로 바꿀 수 있습니다.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowLightStatusBar">true</item>
</style>
반투명 탐색 및 상태 표시 줄 (API 19 이상)
탐색 바 (화면 하단)는 투명해질 수 있습니다. 그것을 달성하는 방법입니다.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentNavigation">true</item>
</style>
이 속성을 스타일에 적용하여 상태 표시 줄 (화면 상단)을 투명하게 만들 수 있습니다.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:windowTranslucentStatus">true</item>
</style>
탐색 바 색상 (API 21 이상)
이 특성은 탐색 모음 (뒤로, 홈 최근 버튼이 포함 된 탐색 모음)을 변경하는 데 사용됩니다. 보통은 검은 색이지만 색깔은 바뀔 수 있습니다.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="android:navigationBarColor">@color/my_color</item>
</style>
테마 상속
테마를 정의 할 때 일반적으로 시스템에서 제공하는 테마를 사용하고 변경 사항은 자신의 응용 프로그램에 맞게 모양을 수정합니다. 예를 들어, 다음은 Theme.AppCompat
테마가 상속 된 방법입니다.
<style name="AppTheme" parent="Theme.AppCompat">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
이 테마는 이제 명시 적으로 변경된 테마를 제외한 표준 Theme.AppCompat
테마의 모든 속성을 Theme.AppCompat
습니다.
상속 할 때도 바로 가기가 있으며, 일반적으로 자신의 테마에서 상속받을 때 사용됩니다.
<style name="AppTheme.Red">
<item name="colorAccent">@color/red</item>
</style>
이미 AppTheme.
이 있기 때문에 AppTheme.
이름의 시작 부분에 parent
테마를 정의 할 필요없이 자동으로 상속합니다. 이 기능은 앱의 특정 부분 (예 : 단일 활동)에 대한 특정 스타일을 만들어야하는 경우에 유용합니다.
하나의 앱에 여러 테마 추가
Android 애플리케이션에서 하나 이상의 테마를 사용하여 다음과 같이 모든 테마에 맞춤 색상을 추가 할 수 있습니다.
먼저 style.xml
과 같이 테마를 추가해야한다.
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
</style>
<!-- -->
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
</style>
......
위에서 OneTheme 및 TwoTheme을 볼 수 있습니다.
이제 AndroidManifest.xml
로 이동하여 android:theme="@style/OneTheme"
을 애플리케이션 태그에 추가하면 OneTheme 이 기본 테마가됩니다.
<application
android:theme="@style/OneTheme"
...>
attrs.xml
이라는 새 xml 파일을 만들고 다음 코드를 추가합니다.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="custom_red" format="color" />
<attr name="custom_blue" format="color" />
<attr name="custom_green" format="color" />
</resources>
<!-- add all colors you need (just color's name) -->
style.xml
돌아가서 각 테마의 값과 함께 다음 색상을 추가하십시오.
<style name="OneTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="custom_red">#8b030c</item>
<item name="custom_blue">#0f1b8b</item>
<item name="custom_green">#1c7806</item>
</style>
<style name="TwoTheme" parent="Theme.AppCompat.Light.DarkActionBar" >
<item name="custom_red">#ff606b</item>
<item name="custom_blue">#99cfff</item>
<item name="custom_green">#62e642</item>
</style>
이제 각 테마에 대한 맞춤 색상이 있으며,이 색상을 Google의보기에 추가해 보겠습니다.
"? attr /"을 사용하여 custom_blue 색상을 TextView에 추가하십시오.
이미지보기로 이동하여 다음 색상 추가 :
<TextView>
android:id="@+id/txte_view"
android:textColor="?attr/custom_blue" />
우리는 단 한 줄의 테마로 테마를 변경할 수 있습니다. setTheme(R.style.TwoTheme);
이 줄은 onCreate()
메서드의 setContentView()
메서드 앞에 있어야합니다 onCreate()
예 : Activity.java
.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.TwoTheme);
setContentView(R.layout.main_activity);
....
}
한 번에 모든 활동의 주제를 변경하십시오.
모든 액티비티의 테마를 변경하려면 MyActivity라는 이름의 새 클래스를 만들어 AppCompatActivity
클래스 (또는 Activity
클래스)를 확장하고 setTheme(R.style.TwoTheme);
행을 추가해야 setTheme(R.style.TwoTheme);
onCreate () 메소드에 :
public class MyActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (new MySettings(this).isDarkTheme())
setTheme(R.style.TwoTheme);
}
}
마지막으로, 모든 액티비티로 이동하여 MyActivity 기본 클래스를 확장하십시오.
public class MainActivity extends MyActivity {
....
}
테마를 변경하려면 MyActivity 로 이동하여 테마 ( R.style.OneTheme
, R.style.ThreeTheme
....)로 R.style.TwoTheme
을 변경하십시오.