
Portuguese: 
Olá, pessoal! 
Obrigado pela presença. 
Meu nome é Nick Butcher. 
E eu sou Chris Banes. 
Somos engenheiros da equipe de relações
com desenvolvedores do Android. 
O tema desta conferência parece
ser desenvolvimento do Android moderno. 
Estamos felizes em
estar falar sobre os temas
e estilos do Android,
que não mudaram muito
desde a API de nível 1. 
Apesar de eles estarem por
aí há algum tempo,
ainda vejo desenvolvedores
confusos e frustrados
quando tentam usar o sistema
de temas do Android. 
Acho isso uma pena,
porque o uso efetivo do sistema de temas
permite muito mais flexibilidade,
além de layouts e estilos reutilizáveis. 
Isso significa menos códigos. 
E a manutenção do código é mais fácil. 
Quem não quer isso? 
É possível realizar
algumas práticas modernas, como os temas. 

Spanish: 
Hola a todos. 
Gracias por venir. 
Soy Nick Butcher. 
Yo soy Chris Banes. 
Somos ingenieros del equipo
de Relaciones con Desarrolladores de Android. 
El tema de esta conferencia
parece ser el desarrollo moderno en Android. 
Por eso, nos entusiasma estar aquí hablando
acerca de temas y estilos de Android
que casi no han cambiado 
desde la API nivel 1. 
A pesar de que existe hace un tiempo,
veo que algunos desarrolladores
todavía se confunden o se frustran
al intentar usar el sistema
de temas de Android. 
Creo que es una pena,
porque el uso eficaz del sistema de temas
permite implementar diseños y estilos
más flexibles y reutilizables,
lo que es genial, ya que significa 
que escribirán menos código. 
Y el código en sí 
resulta más fácil de mantener. 
¿Quién no quiere eso? 
De hecho, permite algunas prácticas modernas,
como los temas. 

Korean: 
[음악 재생]
안녕하세요
참석해주셔서 감사합니다
저는 닉 버처입니다
저는 크리스 베인스입니다
저희는 Android 개발자 관계팀의
엔지니어입니다
이번 컨퍼런스에서는
Modern Android 개발을 다루고 있는데요
이 자리에서 API 레벨 1
이후 큰 변화가 없는
Android 테마와 스타일에
대해 말씀드리려고 하니
정말 신나네요
[웃음]
Android 테마 설정 시스템이
사용되기 시작한 지 꽤 되었지만
아직도 많은 개발자들이
이 시스템을 사용할 때
헷갈리거나 어려워하고 있습니다
테마 설정 시스템을 효과적으로 사용하면
유연성이 훨씬 향상된
재사용 가능한 레이아웃과 스타일을
활용할 수 있으며
작성하는 코드도 줄어들기 때문에
어려워하신다는 점이 안타깝습니다
코드 자체도 유지보수가 훨씬 잘 되죠
마다할 사람이 없을 겁니다
테마 설정과 같은 최신 작업도
가능해집니다

Japanese: 
皆さん ようこそ
私はニックです
クリスです
2人ともAndroid Developer Relationsの
エンジニアです
今回のテーマは
モダンなAndroid開発です
Androidのテーマやスタイルを
紹介していきます
APIレベル１からほぼ変更ありませんが
リリースしてから時間が経っていますが
いまだに多くの開発者が
Androidテーマシステムに戸惑っています
しかしテーマシステムを活用すれば
ずっと柔軟で再利用可能な
レイアウトやスタイルを作れますし
コードの量も減って
ずっと管理しやすくなります
しかもダークテーマやマテリアルといった

Chinese: 
大家好 感谢大家前来
我是 Nick Butcher
我是 Chris Banes
我们都是 Android 开发者关系团队的工程师
这次峰会的主题是 现代 Android 开发
所以 我们很高兴来和大家谈谈 Android 主题和样式
这些东西从 API 1 以来 似乎很少变动过
尽管它们已经存在了很久
我仍然看到有很多开发者
在使用 Android 主题系统时感到困惑或沮丧
我可以说 这个局面让我们团队很难堪
因为 对主题系统的有效使用
有助于开发者创建更加灵活 可重复利用性更好的布局和样式
这很好 因为这意味着你可以少写点代码
而你写下的代码 维护起来也会方便得多
谁不想这样呢？ 
它还带来了一些现代实践 例如主题

Indonesian: 
[MUSIK DIPUTAR]
Halo semua. 
Terima kasih sudah datang. 
Saya Nick Butcher. 
Saya Chris Banes. 
Kami berdua adalah engineer
di tim Relasi Developer Android. 
Tema konferensi ini
sepertinya adalah
pengembangan Android
modern, karenanya
kami sangat tertarik untuk
berbicara tentang tema
dan gaya Android di sini,
yang sebagian besar
tidak berubah sejak API
tingkat 1. 
[TERTAWA]
Jadi walaupun Android sudah
ada sejak beberapa lama,
saya lihat masih banyak developer
yang cukup bingung
atau frustasi saat coba menggunakan
sistem bertema Android. 
Dan saya cukup
menyayangkannya,
karena penggunaan sistem
bertema yang efektif
benar-benar memungkinkan
tata letak dan gaya yang fleksibel
dan dapat dipakai lagi. 
Ini hebat karena Anda hanya perlu
menulis lebih sedikit kode. 
Kode itu juga lebih dapat
dipertahankan. 
Dan siapa yang tidak menginginkannya? 
Hal ini sebenarnya memungkinkan
beberapa praktik modern, seperti tema. 

English: 
[MUSIC PLAYING]
NICK BUTCHER: Hello, everybody. 
And thanks for coming. 
So my name is Nick Butcher. 
CHRIS BANES: I'm Chris Banes. 
NICK BUTCHER: And we are
both engineers on the Android
Developer Relations team. 
Now the theme of
this conference seems
to be modern Android
development, which
is why we're super excited to
be here talking about Android
themes and styles, which
have remained largely
unchanged since API level 1. 
[LAUGHTER]
So despite them having
been around for some time,
I still see lots of
developers somewhat confused
or frustrated when trying to
use the Android theming system. 
And I think this
is kind of a shame,
because effective use
of the theming system
really enables much more
flexible and reusable layouts
and styles--
which is great, because it
means you write less code. 
And that code itself is
much more maintainable. 
And who doesn't want that? 
But it does actually enable
some modern practices
such as theming. 

English: 
So you can support things
like dark themes or design
systems such as material. 
So I think there's some huge
benefits in understanding
the theme system. 
So while it can be powerful,
it can also be easy to misuse
or not understand it. 
And I think a lot
of it comes down
to the ergonomics of how we
write these themes and styles. 
So we get this XML tag which is
like a set of key value pairs,
essentially. 
But I think a lot of the
problem is that it's largely
an untyped system. 
So you can put pretty much
anything inside a theme
or style and it'll compile. 
Android Studio won't complain. 
It won't give you a handy
little red squiggly underneath. 
And who here has
been frustrated when
they're trying to
apply a theme or style
and it's not worked the
way that you wanted it to? 
I mean, wouldn't it be nice
if you had a tag like this? 
So if you wanted to define
style, you use a style tag. 
And if you wanted to define
a theme, you use a theme tag. 
Wouldn't that be great? 
Unfortunately that
doesn't exist. 
[LAUGHTER]
So today what we'd
like to do is give you
a crash course in understanding
Android's theme and style

Korean: 
그렇기 때문에 어두운 테마 또는
머티리얼과 같은
디자인 시스템을 지원할 수 있죠
따라서 테마 시스템을 이해하면
이점이 아주 많을 것입니다
하지만 기능이 강력한
반면에 제대로 사용하거나
파악하지 못할 가능성도 큽니다
저는 이 시스템의 대부분은 결국
테마와 스타일을 작성하는 방법의
인체 공학으로 이어진다고 생각합니다
그래서 키와 값의 쌍이라는
세트와 같은 XML 태그를
가져왔습니다
문제는 대체적으로
유형이 없는 시스템이라는 것입니다
테마나 스타일에
아무거나 집어넣으면
컴파일되는 것이죠
Android 스튜디오는
까다롭지 않습니다
구불구불한 빨간 선으로
표시하지 않죠
혹시 테마나 스타일을 적용하려는데
원하는 대로 되지 않았던 경험이
있으신가요? 
이 태그를 사용하면 잘되지 않을까요? 
스타일을 정의하려면
style 태그를 사용하면 됩니다
테마를 정의하려면
theme 태그를 사용하면 됩니다
좋은 방법 같죠? 
죄송하지만 이런 방법은 없습니다
[웃음]
오늘 저희는 Android의
테마와 스타일 시스템과
이 시스템의 실제 작동 방식을

Spanish: 
Es compatible con el uso de temas oscuros
o sistemas de diseño, como material. 
Creo que comprender el sistema de temas
ofrece grandes beneficios. 
Si bien puede ser potente,
también puede ser fácil
usarlo mal o no comprenderlo. 
Creo que gran parte de eso
se debe a la ergonomía
de la escritura de estos temas y estilos. 
Tenemos esta etiqueta XML que es, 
básicamente,
un conjunto de pares clave-valor. 
Creo que parte del problema se debe 
a que es un sistema sin tipificar. 
Pueden poner casi cualquier cosa
dentro de un tema o estilo
y se compilará. 
Android Studio no se quejará. 
No mostrará ningún
símbolo rojo de ayuda debajo. 
¿Y quién no se frustraría
si al intentar aplicar un tema o estilo,
resulta que no funciona como querías? 
¿No sería bueno
tener una etiqueta como esta? 
Si quisieran definir un estilo,
usarían una etiqueta de estilo. 
Si quisieran definir un tema,
usarían una de tema. 
¿No sería genial? 
Lamentablemente, eso no existe. 
Así que hoy, 
quiero darles un curso acelerado

Portuguese: 
Há compatibilidade com elementos
como temas escuros ou sistemas de design,
como o Material Design. 
Há enormes benefícios nos temas. 
Embora ele seja eficiente,
pode também ser usado indevidamente
ou incompreendido. 
Boa parte do sistema se resume
à ergonomia de como criamos
esses temas e estilos. 
Temos esta tag XML, que é essencialmente
como um conjunto de pares de chave-valor. 
Parte do problema
é que ele é um sistema não tipificado. 
Você pode colocar qualquer
coisa dentro de um tema
ou estilo e isso será compilado. 
O Android Studio não reclama. 
Não dá um aviso. 
Quem aqui já ficou frustrado ao
tentar aplicar um tema ou um estilo
e não funcionou do
jeito que você gostaria? 
Então, não seria legal se
você tivesse uma tag como essa? 
Se quer definir um estilo,
use uma tag de estilo. 
Se quer definir um tema,
use uma tag de tema. 
Não seria o ideal? 
Infelizmente, isso não existe. 
Hoje vocês terão um curso intensivo
sobre o sistema de temas e estilos

Indonesian: 
Jadi, Anda bisa mendukung hal
seperti tema gelap
atau sistem desain,
seperti material. 
Saya yakin, akan ada manfaat
yang besar
dalam memahami sistem tema. 
Namun, meskipun amat hebat,
sistem ini juga mudah disalahgunakan
atau tidak dipahami. 
Saya rasa alasan utamanya
adalah
ergonomi cara kita menulis
tema dan gaya ini. 
Pada dasarnya, kita punya tag XML
semacam rangkaian key value pair. 
Saya rasa mayoritas masalahnya,
tag ini kebanyakan sistem tak bertipe. 
Anda bisa letakkan hampir
apa saja di dalam tema
atau gaya,
dan semua akan terkompilasi. 
Android Studio tidak akan keberatan. 
Tak akan ada garis bergelombang merah
di bawahnya. 
Siapa yang pernah
merasa bingung
saat mencoba menerapkan
tema atau gaya
tapi tidak bekerja
sesuai keinginan? 
Maksud saya, bukankah memudahkan
jika Anda memiliki tag seperti ini? 
Jadi, jika ingin menetapkan gaya,
gunakan tag gaya. 
Dan jika ingin menetapkan tema,
gunakan tag tema. 
Bagus kan kalau begitu? 
Sayangnya tidak begitu. 
[TERTAWA]
Hari ini kami ingin
memberi Anda
kursus singkat untuk memahami
sistem tema dan gaya Android,

Chinese: 
现在你可以支持诸如暗色主题 Material 设计系统等东西
我认为 理解主题系统 好处是很大的
虽然它是强大的 但也很容易被误用或误解
我认为这些误会很多都可以归结为
我们编写主题和样式的方式
这个 XML tag 就像是一套键值对
但我认为 有问题的地方在于
它在很大程度上讲 属于一种无类型的系统
你可以把几乎任何东西放进主题或样式里
编译都可以进行
Android Studio 不会觉得有问题
不会在你的代码下面加上红色曲线
大家有谁是在试图应用主题或样式时
发现效果和自己事先想的不一样的？ 
如果有一个这样的 tag 不是很好吗？ 
如果你想要定义样式 就使用 style tag
如果你想要定义主题 就使用 theme tag
难道这样不好吗？ 
不幸的是 这个 tag 并不存在
所以 今天 我们要简要地为大家介绍一下
Android 的主题和样式系统的工作原理

Japanese: 
最新のプラクティスや
デザインシステムに対応できます
テーマシステムを理解すれば
大きな見返りがあります
しかし理解不足や誤解も多くあります
その大きな理由は
テーマやスタイルの人間工学にあると思います
このXMLタグはキーと値のペアです
しかし型のないシステムであるため
テーマやスタイルに何を入れても
コンパイルできます
Android Studioは
赤い波線で警告したりしません
テーマやスタイルの適用が思い通りにいかず
イライラすることもありますよね
では このようなタグが理想なのでは？ 
これなら スタイルは styleタグで定義し
テーマはthemeタグで定義できます
「たられば」ですが
今日はAndroidの
テーマとスタイルの仕組みと

Chinese: 
然后我们会为大家提供一些指南
指导大家如何使用
如何发挥出它的最大潜能
然后 我们会教大家 如何使用它们
来开发暗色主题 支持 Material 主题
这样大家就懂了
我们开始吧
首先是理解主题和样式
如我所说 这种 XML 语法里
有 name 以及 key 和 value
你可以把主题和样式都想象成
类似配置存储一样的东西
你可以把一些数值放进一些地方
用来在之后引用或者应用于其他东西上
但是 主题和样式其实是很不一样的
我认为 只有理解了它们之间的差异
才能有效地发挥它们的功能
下面我们就来讲解一下这些不同之处
首先 你可以把样式想象成某种 map
它将设置数值和视图对应
而主题则是数值和主题对应
我们来看看这个定义究竟意味着什么
你编写的样式 看起来可能是这个样子
这个 map 中的要点是 这些视图属性

Japanese: 
その使い方や活用方法に関する
ガイダンスです
後半の応用編は
ダークテーマの作成手順と
マテリアルテーマへの対応方法です
まずテーマとスタイルについてです
先ほどのXML構文ですが
キーと値のセットになっています
テーマやスタイルは
言わば構成ストアです
値を代入して
後で参照したり適用したりできます
テーマとスタイルは大きく異なります
その違いを理解すれば
効果的に活用できるようになります
その違いを詳しく見ていきましょう
まずスタイルは 言うなれば
ビュー属性と値のマッピングです
テーマは
テーマ属性と値のマッピングです
こんなスタイルを作成しました
このキーはビュー属性で

Korean: 
집중적으로 설명드리겠습니다
그리고 이 시스템의 사용 방법과
시스템을 최대한
활용할 수 있는 방법에 대해
저희의 의견을 담은
지침을 알려드리겠습니다
그리고 나서 이 시스템을 적용해
어두운 테마를 개발하고
머티리얼 테마 설정을 지원하는
방법을 설명함으로써
여러분의 이해를 돕겠습니다
시작하겠습니다
주제는 테마와 스타일 이해하기입니다
XML 구문이 있습니다
이름을 지정한 키와 값의 세트가
여기에 있죠
테마와 스타일은 모두
구성 저장소에 가깝습니다
구성 저장소는 참조하고
나중에 다른 것에 적용하기 위한 값을
채워 넣는 곳이라고
할 수 있습니다
하지만 테마와 스타일은 엄연히 다릅니다
이 둘의 차이점을 이해해야
강력한 이점을
효율적으로 활용할 수 있습니다
그럼 차이점부터 살펴보겠습니다
먼저 스타일의 경우
스타일이 값에 대한 뷰 속성인
맵을 떠올리시면 됩니다
반면 테마는 값에 대한 테마 속성입니다
무슨 뜻인지 보겠습니다
이러한 스타일을 작성했다고 가정하겠습니다
이 맵에 있는 키는 뷰 속성입니다

English: 
system, how it
does actually work. 
We're going to then give you
some opinionated guidance
about how we think you
should use it-- how
you can get the most out of it. 
And then we're going to
walk you through applying
this to develop dark themes
and support material theming
so you can understand it. 
So let's get started. 
So understanding
themes and styles. 
So as I said, you have
this kind of XML syntax,
where it's kind of like
you have this named
set of keys and values. 
And you can think of these--
both themes and styles--
as almost like
configuration stores. 
They're somewhere you
can stuff some values
in order to kind of refer to,
apply to something else later
on. 
But really themes and
styles are very different. 
And I think understanding
the difference between them
unlocks the power to
wielding them effectively. 
So let's zero in on what
the differences are. 
Now, first up, a style you can
think of as a map where it's
a view attribute to values--
whereas a theme is a
theme attribute to values. 
Let's look at what these mean. 
So hopefully you've written
a style something like this. 
So the keys here in the map
are these view attributes. 

Indonesian: 
bagaimana sebenarnya
cara kerjanya. 
Kami akan berikan panduan
sesuai pengalaman kami
tentang cara yang seharusnya
dilakukan,
cara mendapat manfaat maksimal. 
Lalu Anda akan kami pandu
untuk menerapkannya
untuk mengembangkan tema gelap
dan mendukung tema material
agar Anda dapat
memahaminya. 
Mari kita mulai. 
Memahami tema dan gaya. 
Seperti yang saya bilang,
ada sintaks XML seperti ini,
semacam serangkaian
kunci dan nilai bernama. 
Anda dapat menganggap
tema dan gaya ini,
hampir seperti penyimpanan
konfigurasi. 
Jadi Anda bisa simpan
beberapa nilai untuk jadi rujukan,
menerapkannya
ke sesuatu yang lain nanti. 
Namun, tema dan gaya
benar-benar berbeda. 
Dan saya rasa,
memahami perbedaan keduanya
akan membuat Anda
dapat memanfaatkannya dengan efektif. 
Jadi mari berfokus
pada perbedaannya. 
Pertama, gaya bisa Anda anggap
sebagai peta tempat di sinilah
tampilan beratribut ke nilai,
sementara tema adalah tempat
tema beratribut ke nilai. 
Kita lihat apa maksudnya. 
Semoga Anda telah menulis
gaya yang seperti ini. 
Jadi, kuncinya di peta ini adalah
atribut tampilan ini. 

Spanish: 
para comprender el sistema de temas
y estilos de Android y cómo funciona. 
Les brindaremos una guía
acerca de cómo creemos que deben usarlo
y cómo pueden aprovecharlo. 
Luego, les mostraremos
cómo aplicar esto
para desarrollar temas oscuros
y admitir temas de material
para que puedan comprenderlo. 
Comencemos. 
Cómo comprender los temas y estilos. 
Como dije, tienen esta especie
de sintaxis XML donde es probable
que tengan este conjunto de claves y valores
con nombres. 
Si lo piensan, los temas y estilos
son como almacenes de configuración. 
Allí pueden colocar algunos valores
para consultarlos y aplicarlos
en otro lugar más tarde. 
Pero en realidad, los temas
y los estilos son muy diferentes. 
Comprender la diferencia entre ellos
les permitirá usarlos de manera eficaz. 
Veamos cuáles son las diferencias. 
Primero, imaginen 
que en un estilo es un mapa
donde se encuentra 
un atributo de vista para valores,
mientras que un tema
es un atributo de tema para valores. 
Veamos qué significa. 
Es de esperar que hayan escrito un estilo 
más o menos así. 
Las claves en el mapa
son estos atributos de vista. 

Portuguese: 
do Android e como ele realmente funciona. 
Daremos orientações sobre
como achamos que vocês devem usá-lo,
como aproveitá-lo ao máximo. 
Depois, vamos ver como aplicá-lo
para desenvolver temas escuros e oferecer
suporte a temas do Material Design. 
Então, vamos começar. 
Temas e estilos. 
Temos esse tipo de sintaxe XML,
com um conjunto nomeado
de chaves e valores. 
Vocês podem pensar nesses temas e estilos
como repositórios de configuração. 
É possível colocar alguns valores
para usar como referência e
aplicar a algo mais tarde. 
Mas, na verdade, temas e
estilos são muito diferentes. 
Conhecer a diferença entre eles
dá a oportunidade de executá-los
com eficiência. 
Então, vamos desvendar
essas diferenças. 
Primeiro, um estilo que vocês
podem usar como um mapa,
um atributo de visualização para valores. 
Um tema é um atributo
de temas para valores. 
Vejamos o que isso significa. 
Imaginem que vocês tenham
criado um estilo como este. 
As chaves aqui são esses
atributos de visualização. 

Chinese: 
你需要在布局中把它们设置在某个具体的视图上
数值就是可以应用在那个属性上的资源
希望大家都熟悉这些可用的资源类型
主题 则有所不同
这里的关键并不是视图属性
而是一种被称为 主题属性 的东西
请注意 你并不需要把这些东西设置在单独的视图中
任何视图类型都不存在 colorPrimary 属性
这些其实可以算作是 针对这个配置存储
按照语义来命名的变量
就像是把配置塞进 map
为的是稍后将其取出 并对其进行引用
它们看起来有点像是视图属性
它们在 attr 文件中的定义方式也是类似的
而且它们的资源类型和我们之前见过的类型是很接近的
但二者之间仍有差异
在引用它们的时候 
大家可以使用 ? attr 语法
以及你想要从这个配置中获取的数值相应的语义名称
这里的这个 ?  如果大家之前没有见过的话

Korean: 
레이아웃에서 특정 뷰에 설정하는
것들이죠
값은 속성에 적용 가능한
리소스입니다
사용 가능한 여러 리소스 유형을
잘 알고 계시다고 가정하겠습니다
테마는 스타일과 조금 다릅니다
여기에 있는 키는 뷰 속성이 아닙니다
테마 속성이라고 불리는 것입니다
그렇기 때문에 개별 뷰에 설정되지도
않습니다
뷰 유형에 대한
color primary 속성 같은 것은
없습니다
이 구성 저장소에 있는
의미론적으로 명명된 변수와
비슷하다고 할 수 있습니다
맵에 구성을 집어넣어
나중에 꺼내 참조할 수 있는
방법을 제공합니다
테마 속성은 뷰 속성과 비슷해 보입니다
attr 파일에 비슷하게 정의되어 있습니다
이전에 살펴본 것처럼
둘 다 동일한 리소스 유형이 있습니다
하지만 둘은 다릅니다
둘을 참조할 때는
? attr 구문을 사용하고
이후 구성 저장소에서 꺼내고 싶은 값의
의미론적인 이름을
사용합니다
이전에 본 적이
없으실 수도 있는 물음표는

Spanish: 
Son elementos que se configuran
en sus diseños
para una vista en particular. 
Y los valores son los recursos
aplicables a ese atributo. 
Seguramente conozcan
todos los tipos de recursos diferentes
que pueden usar. 
En cambio, los temas son un poco diferentes. 
Las claves no son atributos de vista. 
Son algo llamado atributos de tema. 
No son elementos que se pueden configurar
en una vista individual. 
No hay un atributo de color primario
para un tipo de vista. 
Son más bien variables
con nombres semánticos
para el almacén de configuración. 
Existen maneras de colocar
configuración en un mapa
para sacarla luego y consultarla. 
Se ven como atributos de vista. 
Se definen de manera similar
en el archivo de atributos. 
Y tienen el mismo tipo de recurso
que vimos antes. 
Pero son diferentes. 
Al consultarlos, pueden hacerlo
con la sintaxis ? attr
y luego el nombre semántico
del valor que quieren sacar
de este almacén de configuración. 
Por si no lo vieron antes,
el signo de pregunta

English: 
These are things that you
would set in your layouts
onto a particular view. 
And the values are
the resources that are
applicable to that attribute. 
And you're hopefully familiar
of all the different resource
types available to you to use. 
Themes, on the other hand,
are slightly different. 
The keys here not
view attributes. 
They're something
called theme attributes. 
So, critically,
these aren't things
that you would set onto
an individual view. 
There's no kind of like color
primary attribute for any view
type. 
These are really kind of like
semantically-named variables
for this configuration store. 
They're ways to stuff some
configuration into a map
in order to pull it out
later on and refer to it. 
They look a bit like
view attributes. 
They're defined similarly
in your attr file like this. 
And they have the same
kind of resource types
as we looked at before. 
But they are different. 
When we refer to
them, you can then
refer to them using
this question mark attr
syntax and then
the semantic name
for the value you want to pull
out from this configuration
store. 
And the question mark here,
if you haven't seen it before,

Portuguese: 
É o que que você definiria no seu layout
em uma visualização específica. 
Os valores são os recursos
aplicáveis a esse atributo. 
Vocês devem conhecer os tipos
de recursos disponíveis para uso. 
Por outro lado, os temas são
um pouco diferentes. 
As chaves não são
atributos de visualização. 
Chamamos de "atributos de temas". 
Não seria algo
que definiria em uma visualização. 
Não há um atributo principal
de cor para qualquer tipo de visualização. 
Eles são algo como variáveis
nomeadas semanticamente
para o repositório. 
São maneiras de incluir
configuração em um mapa
para retirar depois e usar
como referência. 
Parecem atributos de visualização. 
São definidos de modo parecido
no arquivo de atributos
e têm o mesmo tipo de recurso
que vimos antes. 
Mas são diferentes. 
É possível referenciar
com a sintaxe de ponto de interrogação
e o nome semântico
do valor a ser retirado do repositório. 

Japanese: 
レイアウトの特定のビューに設定します
値はその属性に適用するリソースです
ご存知のとおり
リソースには多くのタイプがあります
一方の テーマは若干異なります
キーはビュー属性ではなくテーマ属性です
ビューに個別で設定するものでは
ありません
colorPrimary属性などはありません
これらはセマンティック名を持つ
この構成ストア用の変数です
何らかの構成を後で取得したり
参照したりできます
ビュー属性に似ていて
attrファイルで定義します
先に見たようなリソースタイプですが
実際は異なります
参照するには ? attr構文を使います
構成ストアから取得する値は
セマンティック名で指定します
この「?」記号は

Indonesian: 
Ini adalah sesuatu yang akan
Anda tetapkan di tata letak
untuk tampilan tertentu. 
Dan nilai adalah resource
yang dapat diterapkan ke atribut itu. 
Semoga Anda kenal dengan
semua jenis resource berbeda
yang tersedia untuk Anda gunakan. 
Di sisi lain, tema sedikit
berbeda. 
Kuncinya di sini bukanlah
atribut tampilan. 
Tapi sesuatu yang disebut
atribut tema. 
Secara kritis,
ini bukan hal
yang akan Anda tetapkan
di tampilan individu. 
Tidak seperti atribut colorPrimary
untuk jenis tampilan apa pun. 
Ini seperti variabel
dengan nama semantik
untuk penyimpanan konfigurasi ini. 
Ada cara untuk memasukkan
konfigurasi ke peta
untuk menariknya nanti
dan merujuknya. 
Tampak mirip
atribut tampilan. 
Didefinisikan serupa
di file attr Anda seperti ini. 
Dan memiliki jenis resource yang sama
seperti yang tadi. 
Namun berbeda. 
Saat kita merujuknya,
Anda kemudian dapat
merujuknya dengan
sintaks attr tanda tanya
lalu dengan nama
semantiknya
untuk nilai yang ingin ditarik
dari penyimpanan konfigurasi ini. 
Tanda tanya ini,
jika belum pernah lihat,

Japanese: 
テーマのセマンティック名の
現在の値を参照します
これはよく出来ていています
このレベルの分離により
いろいろと可能になります
その例をご紹介します
Materialライブラリに
colorPrimaryという
テーマ属性があります
次にアプリで
セマンティック名に対する値として
色（...）を設定します
これの良い点は
別の画面を違う外観にしたい時
たとえばPro画面に
別の色スキームを持たせたい時に
新たなテーマを定義できます
プロダクトマネージャーが
ライトテーマとダークテーマを要求しているなら
異なる値を設定できます
つまりテーマ属性のメリットは
外観で変更したい部分だけを
直接変更できる点です

Indonesian: 
pada dasarnya
mencari nilai saat ini
untuk item bernama semantik ini
dalam tema saat ini. 
Dan saya rasa itu keren sekali. 
Saya rasa, dengan memiliki tingkat
pemisahan seperti ini,
Anda dapat melakukan
beberapa hal keren. 
Mari kita lihat contoh yang
menunjukkan pentingnya hal ini. 
Ini adalah contoh
dari library material,
yang menentukan atribut tema,
yang disebut colorPrimary. 
Lalu di aplikasi,
berikan nilai konkret untuk
item bernama semantik ini. 
Anda tetapkan nilai ini. 
Anda tetapkan warna ini. 
Tapi, yang keren adalah
jika nantinya Anda harus,
mendukung tampilan
dan nuansa lain di layar lain,
misalnya layar [? Pro?]  dengan
skema warna berbeda,
Anda dapat memisahkannya
dan menetapkan
tema kedua yang menetapkan
nilai lain untuknya. 
Lalu, katakanlah,
manajer produk Anda
ingin dukungan
tema terang & gelap. 
Lalu Anda bisa berikan
nilai yang berbeda lagi
untuk skema terang dan gelap. 
Yang menurut saya keren adalah
isolasi terhadap hal yang ingin diubah,
tampilan dan nuansa
yang ingin diubah,
hanya ke tempat yang
ingin diubah. 

Korean: 
현재 테마에서 의미론적으로 명명된 것의
현재 값을 찾는다는 것을 의미합니다
정말 멋진 것 같습니다
이 정도 수준의 분리라면
멋진 작업을 하실 수 있을 것 같습니다
이제 이 내용이 중요한
의미를 갖는 예시를 보겠습니다
color primary라고 불리는
테마 속성을 정의하는
머티리얼 라이브러리에서 가져온
예시입니다
그러면 여러분은 애플리케이션에서
의미론적으로 명명된 이것의
구체적인 값을 제공합니다
따라서 값을 설정합니다
색상을 설정합니다
여기에서 마음에 드는 부분은
또 다른 화면에서 다른 디자인과 느낌을
제공하고자 할 때
예를 들어 화면에
다른 색상 체계가 있는 경우
이를 분리하여
다른 값을 설정하는
두 번째 테마를 정의할 수 있다는 것입니다
이후 제품 관리자가
밝은 테마와 어두운 테마를
지원하기 원한다고 가정해봅시다
그러면 밝은 색상 체계와
어두운 색상 체계에서
다른 값을 제공하면 되는 것이죠
디자인이나 느낌 등
변경하고 싶은 부분을
변경을 적용하려는 장소로
분리하는 점이 정말 괜찮다고 생각합니다

Spanish: 
significa que hay que buscar
el valor actual
para ese elemento en el tema actual. 
Creo que esto es algo genial. 
Tener este nivel de separación
permite hacer cosas increíbles. 
Veamos un ejemplo
donde esto es importante. 
Este es un ejemplo 
de la biblioteca de material
donde se define este atributo de tema
llamado "colorPrimary"-
Luego, en su aplicación,
proporcionan un valor concreto
para este elemento nombrado semánticamente. 
Establecen el valor, este color. 
Pero lo genial es que, por ejemplo,
si luego tienen que agregar
un aspecto diferente en otra pantalla,
por ejemplo, en una pantalla
para la versión Pro,
pueden separarlo
y definir un segundo tema
que establece un valor diferente para eso. 
Luego, supongamos
que el gerente de Producto
quiere que sea compatible 
con temas oscuros y claros. 
Pueden proporcionar diferentes valores
en los esquemas oscuro y claro. 
Creo que es genial,
ya que aísla lo que quieren cambiar,
la apariencia que quieren cambiar,
solo en el lugar que quieren hacerlo. 

English: 
basically means look
up the current value
for this semantically-named
thing in the current theme. 
And I think this is really cool. 
I think actually having
this level of separation
allows you to do
some cool stuff. 
So let's walk through an
example of where this matters. 
So this is example
from the material
library, which defines
this theme attribute called
color primary. 
And then, in your
application, you
supply a concrete value for
this semantically-named thing. 
So you set this value. 
You set this color. 
But what's cool
about this, I think,
is that if you
have to then, say,
support a different look
and feel on another screen--
like say a [?  Pro ?]  screen
has a different color scheme--
you can then separate
that out and define
a second theme which sets
a different value for that. 
And then, say, your
product manager
wants you to support
light and dark themes. 
And then you can provide
different values again
under light and dark schemes. 
So what's really cool, I think,
about this is it isolates
the thing you want to change--
the look and feel that you want
to change--
into just the place
you want to change it. 

Chinese: 
它的意思大概是 在当前主题中
为这个按照语义命名的东西寻找当前数值
我认为这种做法很有意思
这种分离性 可以让大家做到很多东西
下面我们来讲一个例子 看看它的用途
这个例子来自 Material 代码库
它定义了这个名为 colorPrimary 的主题属性
在大家的应用中 你为这个按照语义命名的东西
提供了一个具体值
你设定了这个数值 设定了这个颜色
有意思的是 如果你需要在其他屏幕上支持另一种外观
比如 Pro 屏幕就有不同的配色方案
这时你就可以把它分离出来 
定义第二个主题 也就是设定第二个数值
然后 假如你的产品经理想要你的应用支持浅色和暗色主题
那么你就可以提供不同的数值 对应浅色和暗色主题
它的一个优点是 它可以把你想要改动的各种东西
比如你想要改动的外观
隔离在你想要改动的那个空间之内

Portuguese: 
O ponto de interrogação serve para
procurar o valor atual
desse elemento nomeado
semanticamente no tema atual. 
Isso é muito legal. 
Ter esse tipo de separação...
permite fazer coisas incríveis. 
Vamos ver um exemplo de
onde isso é importante. 
Vejam um exemplo da
biblioteca do Material Design,
que define o atributo "colorPrimary". 
No app,
você fornece um valor concreto para
esse item nomeado semanticamente. 
Depois, define este valor, a cor. 
O legal aqui é que se tiver que oferecer
uma aparência diferente em outra tela,
por exemplo, uma tela Pro
com outro esquema de cores...
é possível separá-lo e definir
um segundo tema
com um valor diferente. 
Depois, seu gerente quer
que você ofereça
temos claros e escuros. 
Novamente, você pode oferecer
valores diferentes
em temas claros e escuros. 
O que é muito legal sobre
isso é que ele isola
o que você quer mudar,
a aparência que você quer mudar...
no lugar que você quer. 

Spanish: 
Consideren qué pasaría 
si no usáramos atributos de tema aquí. 
Si intentaran hacer lo mismo con estilos,
es decir, esquemas de colores diferentes
para situaciones diferentes,
terminarían escribiendo
cuatro estilos diferentes. 
Pero, como dijimos antes, un estilo
es específico a una vista en particular. 
Hace referencia a atributos
que son particulares para un tipo de vista. 
Entonces, deben escribir
todos los tipos de cambios de vistas
que usan en su aplicación. 
El resultado es una especie
de explosión de combinaciones
de configuración que tienen que agregar. 
Al poder extraer
y tener esta indirección para algunas cosas
pueden aislar 
lo que quieren cambiar en temas
y, luego, usar sus widgets y usar un tema
para obtener la combinación deseada
en el momento adecuado. 
Espero haber aclarado un poco la diferencia. 
Las claves son los almacenes de configuración
de atributos de vista para estilos
y atributos de temas para temas. 
También se diferencian
en la forma en que aplican. 

Korean: 
여기에서 테마 속성을
사용하지 않는 경우를 생각해봅시다
스타일을 통해 이처럼
다른 경우에 대한 다른 색상 체계를
적용하려 한다면
스타일을 네 가지 작성하게 됩니다
하지만 이전에 보았듯이
스타일은 특정 뷰에 한정됩니다
한 가지 뷰 유형에 대해 특정한
레이아웃 속성을 가리킵니다
그렇기 때문에 애플리케이션에서 사용하는
뷰의 모든 순열에 대해
각기 다른 스타일을
작성할 수밖에 없게 되죠
결국 지원해야 하는 구성의 조합이
폭발적으로 증가하게 됩니다
추출과 간접 참조를 통해
변경되는 것을 테마에 분리시키고
위젯과 테마를 사용하여
적절한 시기에
이것들을 결합할 수 있습니다
이제 차이점이 좀 이해되셨으면 좋겠네요
키는 스타일의 경우 뷰 속성
테마의 경우 테마 속성의
구성 저장소입니다
적용되는 방식에서도 차이를 보이죠

Indonesian: 
Pikirkan jika kita tak menggunakan
atribut tema di sini. 
Jika mencoba melakukan hal sama,
skema warna berbeda ini
untuk situasi berbeda ini,
dengan gaya,
Anda pastinya akan menulis
empat gaya yang berbeda. 
Tapi, seperti yang kita lihat tadi,
gaya spesifik untuk tampilan tertentu. 
Gaya merujuk ke atribut tata
letak yang khusus
untuk satu jenis tampilan. 
Jadi, Anda harus menulis semua
jenis berbeda ini
untuk semua permutasi tampilan
yang berbeda
yang digunakan di
aplikasi. 
Anda akan memiiki ledakan
gabungan konfigurasi
yang harus didukung. 
Dengan mengekstrak
dan memiliki pengalihan
untuk hal-hal yang pasti,
Anda bisa mengisolasi hal
yang berubah
ke dalam tema,
dan menggunakan widget
dan tema,
serta mendapatkan kombinasi item
tersebut di waktu yang tepat. 
Semoga hal itu sedikit menjelaskan
perbedaannya. 
Intinya, penyimpanan
konfigurasi
atribut tampilan untuk gaya,
atribut tema untuk tema. 
Cara keduanya diterapkan
juga berbeda. 

English: 
Consider if we weren't
using theme attributes here. 
If you tried to do the same
thing-- these different color
schemes for these different
situations-- with styles,
you'd end up writing
four different styles. 
But as we saw before, a style is
specific to a particular view. 
It refers to layout
attributes which are
particular to one type of view. 
So you'd end up having to write
all these different styles
for all the different
permutations of views
that you use in
your application. 
You end up with this like
combinatorial explosion
of configuration
you have to support. 
By extracting out and
having this indirection
for certain things,
it allows you
to just isolate the things that
are changing into the themes,
and then use your
widgets and use a theme
and get the combination of
those things at the right time. 
So hopefully that's clarified
the difference a little bit. 
So the keys are these
configuration stores
of view attributes
for styles and theme
attributes for themes. 
They also differ in that the
way that they are applied. 

Portuguese: 
Imagine se não estivéssemos
usando atributos de tema aqui. 
Se fizessem o mesmo,
esquemas de cores diferentes
para situações distintas
com estilos,
seriam quatro diferentes. 
Como já vimos, um estilo é específico
a uma visualização em particular. 
Ele se refere a atributos de
layout específicos
a um tipo de visualização. 
Seria necessário
criar estilos diferentes
para todas as
trocas de visualizações
que vocês usam no seu app. 
Vocês acabariam com
essa gama de combinações
de configurações que precisam oferecer. 
Com a extração e a indireção
para algumas coisas, vocês podem
isolar os elementos
que mudam nos temas,
usar seus widgets e um tema
e ter a combinação
desses itens no momento certo. 
Espero que isso tenha
esclarecido a diferença. 
As chaves são repositórios de configuração
de atributos de visualização para estilos
e atributos de temas para os temas. 
A diferença também está em
como eles são aplicados. 

Japanese: 
テーマ属性を使わない場合
このように４種類のスタイルを
作る必要が生じます
スタイルは特定のビューに適用するので
ビュー固有のレイアウト属性を参照します
各ビューにスタイルを作成しようとすると
構成の組み合わせが
このように爆発的に増えます
つまり 間接的な抽出により
テーマの中で変更する箇所を分離し
ウィジェットとテーマを使って
適切な組み合わせを作れます
これらが違いです
キーは構成ストアで
スタイルのビュー属性と
テーマのテーマ属性を格納します
適用の仕方も異なります
先ほど見たように

Chinese: 
想想看 如果我们使用的不是主题属性会怎样
如果在这种情况下 你要做到同样的事情
应付多种配色方案 多种情况 还要考虑样式
这时你就得编写4种样式
但是 我们之前已经展示过
样式是局限于特定视图的
它引用的是布局属性
而这种属性是仅能用于一种视图的
所以 最后你就不得不为应用内的所有这些不同的视图的组合
编写多种不同的样式
最后导致这种组合大爆炸 要支持这么多种不同的配置
通过提取并针对特定对象间接取值
你就可以把那些变为主题的东西抽离出来
然后使用 widget 和主题
在合适的时间获取正确的组合
希望这样的解释能让大家明白二者之间的差异
关键在于 这些为样式而设置的视图属性配置存储
以及为主题而设置的主题属性
它们的区别还包括 不同的应用方式

Spanish: 
Como vimos, un estilo es específico
de una vista o tipo de vista en particular,
mientras que el tema se aplica
asociado a un contexto
y, luego, aplicado a una jerarquía. 
Veamos un ejemplo. 
Supongamos que tienen
una jerarquía en su aplicación. 
Algo así. 
Si quisieran aplicarle un estilo,
se aplicaría a una vista en particular. 
Distinto sería si establecieran 
un tema en la misma vista
con la etiqueta de temas de Android. 
Se esparciría a los elementos secundarios
porque se aplica a una jerarquía. 
De hecho, siempre ejecutarían la app
dentro de un tema. 
Siempre hay un tema en el nivel superior. 
La actividad podría tener un tema configurado
o podría heredarlo de la aplicación
o estar dentro del tema. 
Cada uno de estos temas interactúa 
y se aplica uno encima del otro. 
Esto puede resultar muy útil
si quieren compilar algo así. 
Aquí hay una aplicación
con una apariencia bastante rosada. 
"colorPrimary" está configurado en rosado. 
Pero luego, al final de la pantalla,
tenemos una sección relacionada

Japanese: 
スタイルは
特定のビューやビュータイプに固有ですが
テーマはコンテキストに応じて
階層に適用されます
実際に見ていきましょう
このような階層のアプリがあります
スタイルの場合
１つのビューだけに適用されます
一方 テーマを同じビューに適用するには
android:themeタグを使います
階層に適用されるので
すべての子にカスケードされます
実際には 上位のどこかに
必ずテーマがあります
アクティビティに
テーマが設定されているか
アプリから継承しているか
どちらかです
テーマは相互に作用し
重ねて適用されます
このようなものを構築するのに役立ちます
このアプリの外観 つまり
colorPrimaryはピンクです
下部にこのようなセクションがあり

Portuguese: 
Um estilo é específico a
uma certa visualização,
ou ao tipo de visualização,
e um tema é aplicado,
ou associado a um contexto e
aplicado a uma hierarquia. 
Vamos ver aqui o
que eu quero dizer. 
Imaginem que vocês tenham
uma hierarquia no seu app,
algo assim. 
Se fossem aplicar um estilo a ele,
seria apenas a essa
visualização específica. 
Imaginem que estejam
definindo um tema na mesma visualização
com a tag de temas do Android. 
Ele seria propagado a todos os filhos,
porque se aplica a uma hierarquia. 
Na verdade, você
está sempre executando
com um tema, um por vez. 
Há sempre um tema em algum lugar. 
Imaginem que a atividade
tenha um tema,
herde do app ou esteja nele. 
Assim, cada um desses temas
interage e se aplica
em sobreposição um ao outro. 
Isso pode ser útil ao criar algo assim. 
Este app é majoritariamente rosa. 
A cor primária é o rosa. 
Na parte inferior da tela,
temos uma seção com aparência diferente,

Indonesian: 
Seperti yang sudah kita lihat
gaya khusus untuk satu tampilan
atau jenis tampilan tertentu,
sementara tema diterapkan ke--
terkait dengan konteks,
lalu diterapkan ke hierarki. 
Mari kita lihat apa
maksud saya. 
Katakanlah Anda memiliki hierarki
dalam aplikasi,
seperti ini. 
Jika Anda akan menerapkan
gaya ke sini,
gaya hanya akan diterapkan
ke satu tampilan tertentu itu. 
Berbeda dengan saat Anda ingin menetapkan
tema di tampilan yang sama
dengan tag tema Android. 
Tag ini akan turun
ke semua turunannya
karena diterapkan ke
hierarki. 
Dan Anda sebenarnya selalu
melakukannya
dalam tema sesekali. 
Selalu ada tema di tempat
di atas Anda. 
Misal, Activity mungkin memiliki
tema yang ditetapkan
atau mungkin mewarisinya dari
aplikasi atau sudah ada di sana. 
Dengan begitu,
tiap tema ini berinteraksi
dan diterapkan
di atas satu sama lain. 
Kini, akan sangat bermanfaat
jika ingin membuat sesuatu seperti ini. 
Ini adalah aplikasi dengan
tampilan dan nuansa pink. 
colorPrimary ditetapkan
menjadi pink. 
Tapi kemudian,
di bagian bawah layar,
ada bagian terkait ini
yang menggunakan tampilan
dan nuansa lain,

Korean: 
스타일은 하나의 특정 뷰나
뷰 유형에 한정되는 반면에
테마는 컨텍스트와 관련이 있고
계층 구조에 적용됩니다
이게 무슨 뜻인지 알아보겠습니다
애플리케이션에 이렇게
계층 구조가 있다고 가정합니다
스타일을 여기에 적용하려면
특정 뷰 하나에 적용됩니다
Android theme 태그를 사용하여
동일한 뷰에 테마를
설정하는 것과 대조해 보세요
계층 구조에 적용되기 때문에
하위 항목에 단계적으로 적용됩니다
한 번에 하나의 테마 아래에서
항상 실행됩니다
그렇기 때문에 여러분의 상위에
항상 테마가 있게 되죠
활동에는 활동에
설정된 테마가 있거나
활동이 애플리케이션에서
상속되거나 애플리케이션에 있게 됩니다
이와 같이 여기 있는 테마 각각은
상호작용하며 서로 층층이 적용됩니다
이와 비슷한 것을 빌드하려는 경우
아주 유용한 정보가 될 수 있습니다
여기에 주로 분홍색
디자인과 느낌이 적용된
애플리케이션이 있습니다
기본 색상이
분홍색으로 설정되어 있죠
하지만 화면 하단을 보면
파란색 디자인과 느낌을 준

Chinese: 
如我们所见 样式是限于某一个特定视图或视图类型的
而主题则与上下文相关 并会被应用在控件层级中
下面我来解释一下
这里是应用中的一组控件结构
如果你想为它应用一个样式
那么这个样式只会被应用到特定的某一个视图中
但如果是主题的话 如果你使用 android:theme tag
为同一个视图设置一个主题
那么这个主题就会顺次传递到所有子类 应用到各个层级中
在任意时刻 你总是运行在某一个特定的主题下
也就是说 总有某个主题在你上面
如果 activity 被设置了一个主题
或者是从 application 中继承了一个主题
这些主题都会互相影响 互相应用
如果你想要构建这样的效果 那么以上的过程也许是有用的
这个应用大体上呈现出粉红色调
这里的主色调是粉红色
在屏幕底部 有一个相关内容推荐

English: 
So as we saw, a style is
specific to one particular view
or the view type, whereas
a theme is applied to--
is associated with a context
and then applied to a hierarchy. 
Let's look at what
I mean by that. 
So say you have a hierarchy
in your application--
something like this. 
If you were to
apply a style to it,
it would just apply to
that one particular view. 
Contrast that to if you were
to set a theme on the same view
using the Android theme tag. 
That would actually cascade
down to all the children
because it applies
to a hierarchy. 
And you are actually
always running
under a theme at any one time. 
So there's always a theme
somewhere above you. 
So say the activity might
have a theme set on it
or it might inherit from the
application or be on that. 
And as such, each
of these themes
interact, and they kind of
apply on top of each other. 
Now this can be really
useful if you want
to build something like this. 
So here's an application
which has a largely pink look
and feel. 
The color primary
is set to pink. 
But then, at the
bottom of the screen,
we have this kind
of related section

English: 
which is using a different look
and feel-- this kind of bluey
look and feel. 
So because we can
have a theme that
applies to the
whole hierarchy, we
can set that blue theme just on
the root of this bottom section
and have it apply to
all the views that
are inflated underneath it. 
So let's have a little look
at this stacking behavior. 
There's a few nuances which
is important to understand. 
So in this example,
we might have
a pink theme set at
the activity or perhaps
the view of a
fragment like this. 
And then when you get
down to the bottom bit--
the blue hierarchy-- we want you
to set a different blue theme. 
But if we look at
these themes, it's
interesting to
understand how they
stack on top of each other. 
So the pink theme-- you would
define the things you want
specific to that screen. 
[?  And you're ?] [?  going to ?] 
[?  sink ?]  some colors and
[?  things ?]  and so on. 
But that probably inherits
from a parent theme--
so like material
components, which
is going to set up a bunch of
stuff like some widget styles
and so forth. 
That in turn is going to
inherit for AppCompat,
which is probably going to
inherit from the platform
theme. 
So you always have this kind of
stack of inherited styles sat
on top of each other. 
And the thing to
understand here is

Japanese: 
こちらは青い外観です
階層全体にテーマを適用できるので
青のテーマを
このセクションのroot に設定すれば
その下でinflateされる
すべてのビューに適用されます
その動作を見ていきましょう
理解しておくべき細かい点があります
この例では
ActivityかFragmentのビューに
ピンクのテーマが設定され
下の階層では 青のテーマが設定されています
これを見ると
階層の中を理解できます
Theme. Owl. Pinkには
画面での色などを定義します
ただし 親のテーマ つまり
MaterialComponentsから
さまざまなスタイルを継承します
その上には AppCompatがあり
さらにその上には
プラットフォームのテーマがあります
つまり スタイルは
常にこのように継承されるのです
優先されるのは

Spanish: 
con un aspecto diferente,
que es más bien de color azul. 
Como podemos tener un tema
que se aplique a toda la jerarquía,
podemos aplicar el tema azul
solo a la raíz de esta sección inferior
y aplicarlo a todas las vistas
que aparecen debajo de ella. 
Veamos este comportamiento de pilas. 
Hay algunas cuestiones
que son importantes de comprender. 
En este ejemplo,
podemos tener un tema rosado
aplicado en la actividad
o tal vez en la vista de un fragmento,
como este. 
Cuando van a la parte inferior,
la jerarquía azul
pueden aplicar un tema azul diferente. 
Al mirar estos temas,
es interesante comprender 
cómo se apilan uno encima de otro. 
En el tema rosado, pueden definir 
todo lo específico a esa pantalla. 
Probablemente, este tema se hereda 
de un tema principal,
por lo que los componentes principales
establecerán varias cosas,
como el estilo de los widgets, etc. 
A su vez, eso se heredará a AppCompat,
que probablemente heredará 
el tema de la plataforma. 
Siempre tienen esta especie de pila
de estilos heredados uno encima del otro. 
Lo que deben comprender

Indonesian: 
berupa kebiruan. 
Jadi, karena kita bisa
memiliki tema
yang diterapkan
ke seluruh hierarki
kita bisa tetapkan tema biru itu
hanya di root bagian bawah ini
dan menerapkannya di semua
tampilan mengembang di bawahnya. 
Mari kita lihat sekilas
perilaku penumpukan ini. 
Ada beberapa nuansa yang
penting untuk dipahami. 
Dalam contoh, kita
mungkin sudah tetapkan
tema merah muda di
Activity atau mungkin
tampilan fragmen
seperti ini. 
Lalu, saat Anda sedikit
ke bawah,
ke hierarki biru, kami ingin
Anda menetapkan tema biru lain. 
Namun, jika kita melihat
tema ini,
menarik sekali untuk memahami
caranya bertumpuk satu sama lain. 
Jadi, tema pink,
Anda akan menentukan hal
yang Anda inginkan khusus untuk layar itu. 
[?  Dan Anda ?] [?  akan ?] 
[?  menenggelamkan ?]  beberapa warna
dan [?  item ?]  dan sebagainya. 
Tapi, itu mungkin diturunkan
dari tema induk,
jadi seperti komponen
material,
yang menyiapkan beberapa hal
seperti gaya widget dan lainnya. 
Yang akhirnya akan
diturunkan untuk AppCompat,
yang mungkin akan diturunkan
dari tema platform. 
Jadi Anda akan selalu memiliki
jenis stack gaya turunan ini
di atas satu sama lain. 
Yang perlu dipahami
di sini adalah

Korean: 
관련 섹션이
있습니다
전체 계층 구조에 적용되는 테마를
가질 수 있으므로
파란색 테마를 하단 섹션 루트에 설정하고
아래로 확장되어 있는 모든 뷰에
적용합니다
이렇게 쌓는 작업을 잠시 살펴보겠습니다
미묘한 차이를 이해하는
것이 중요하기 때문에
예를 들어보겠습니다
여기 활동에 설정된
분홍색 테마 또는
이러한 프래그먼트의 뷰가 있다고 합시다
하단에 파란색 계층 구조가 있는데요
여기에서 다른
파란색 테마를 설정하고자 합니다
그런데 여기에 있는 테마의 경우
서로의 위에 어떻게 쌓여 있는지 이해하면
재미있습니다
분홍색 테마에서
해당 화면에 특정한 것들을
정의할 텐데요
다양한 색상 등 여러 가지가 있습니다
상위 테마에서 상속받은 것이겠죠
위젯 스타일과 같은 다양한 것을 설정하는
MaterialComponents와
유사하게 상위 테마에서
상속됩니다
이제 플랫폼 테마에서
상속받을 가능성이 있는
AppCompat에 대해
상속받습니다
따라서 서로의 위에
배치된 상속받은 스타일이
이렇게 항상 쌓이게 됩니다
여기에서 이해해야 할 것은

Chinese: 
它的色调就比较不同 采用的是偏蓝的设定
因为我们的主题应用在整个层级上
所以我们可以只在底部的这个部分应用蓝色主题
并将其应用在底部内容包含的所有视图中
我们来看看这个堆栈行为
其中一些细节很有必要了解
在这个例子中 我们在 activity 中或 fragment 视图中的主题是偏粉色的
但是 拉到底部之后 我们就希望这里的主题是偏蓝色的
我们来看这些主题是如何堆叠的 很有意思
你想把专属于那个屏幕的东西定为粉色主题
但是 它很可能继承自母系主题
像是 Material 组件之类
可以设定很多东西 包括 widget 样式等等
而它也会继承 AppCompact
AppCompact 可能继承自平台主题
所以 总是存在这种层层叠叠的继承样式
这里需要搞清楚的是

Portuguese: 
meio azulada. 
Como podemos ter um tema
aplicável a toda a hierarquia,
só podemos definir esse tema azul
à raiz dessa seção inferior
e aplicá-lo a todas as visualizações
ampliadas abaixo dela. 
Vejamos esse
comportamento de empilhamento. 
Há alguns detalhes importantes. 
Neste exemplo, temos
um tema rosa definido na
atividade ou talvez
a visualização de um fragmento como este. 
Quando você vai para a parte inferior,
a hierarquia azul, queremos que você
defina um tema azul diferente. 
Ao analisar esses temas,
é interessante entender
como eles se sobrepõem. 
Quanto ao tema rosa,
vocês definiriam os detalhes da tela. 
Elementos como cores etc. 
Isso provavelmente é herdado
de um tema pai,
como componentes do Material Design,
que definirão detalhes como widgets etc. 
Isso, por sua vez, é herdado de AppCompat,
que talvez seja herdado
do tema da plataforma. 
Sempre há um tipo de pilha
de estilos herdados e sobrepostos. 

Chinese: 
最靠近底部的这个子项 大概会胜出
如果这个堆栈中两个层级的主题定义了同一个属性
Material 定义一种主色调 
然后你设定自己的主色调
位于较低层级的那个项目就会胜出
它会覆盖其他一切母项
再来看看这样的层级示例
这次我们把粉色主题和蓝色主题堆叠在底部
大家需要注意几个地方
第一 这两个主题的祖项应该是非常近似的
所以可以说有点浪费 
感觉就像是在应用同样的 已经生效了的东西
比如已经生效的 Material 组件
重复应用 作用不大
更重要的是 如果你把一个主题设置在另一个之上
就要当心 不能让自己想要保留的东西被覆盖掉
比如 你刻意让粉色主题为全屏设置了一些特定形状的外观
那么你就要当心 不能出现覆盖现象
这时就要用到主题叠加 (ThemeOverlay) 的功能

Korean: 
하단에 가장 가까운 하위 항목이
우선한다는 것입니다
이 층에서 테마의 두 수준이
동일한 속성을 선언하고
material이 color primary를 정의하면
자체 기본 색상을
설정하게 되는 것이죠
하위 항목이 우선합니다
하위 항목이 모든 상위 항목을
재정의합니다
분홍색 테마와 하단에
오버레이된 파란색 테마가 있는
이 계층 구조 예시에서
몇 가지 주의해야 할 사항이
있습니다
먼저 두 테마는
공통 상위 항목을 가질 가능성이 있습니다
따라서 이미 실행되고 있는 동일한 것을
적용하는 것은 낭비일 수 있죠
이미 실행되고 있을
가능성이 있는 머티리얼
구성요소가 그 예입니다
다시 적용하는 것은 별 의미가 없습니다
테마를 또 다른 테마의
위에 설정하는 경우에는
유지하려는 것이 재정의되지 않도록
주의해야 합니다
분홍색 테마에서 전체 화면에
모양과 같은 구체적인
내용을 설정하려는 경우
이를 재정의하지 않도록
주의해야 합니다
여기에서 바로
테마 오버레이라는 기술이 필요합니다

English: 
that the nearest one to the
bottom-- so the nearest child--
kind of wins. 
So if two levels of themes in
this stack declare the same
attributes-- so material
defines a color primary,
and then you set your
own color primary--
the one lower down
is going to win. 
It's going to
override anything--
any parent or any ancestor. 
So when we have this
hierarchy example again
where we have the pink theme
and the blue theme overlaid
at the bottom,
there's a few things
you've got to be careful of. 
Firstly, is that
they both probably
have very common ancestors. 
So it's a bit of a
waste, almost, applying
exactly the same things
which are already in effect--
like [INAUDIBLE] material
components I probably
already in effect. 
So applying it again
isn't much use. 
But more importantly, if you set
a theme on top of another one,
you've got to be careful
not to override something
you've actually wanted to keep. 
So say the pink theme
sets up some things--
like maybe something specific
like a shape appearance--
for the whole screen that
you actually want to apply,
you've got to be careful
not to override it. 
And that's where a technique
called theme overlays comes in. 

Indonesian: 
yang terdekat dengan bagian
bawah, turunan terdekat,
semacam akan menang. 
Jika dua tingkat tema dalam
stack ini mendeklarasikan
atribut yang sama, materialnya
menentukan colorPrimary,
dan Anda menetapkan
colorPrimary sendiri,
yang lebih bawah akan menang. 
Ini akan menimpa
apa pun,
induk maupun ancestor
lainnya. 
Saat kita punya contoh
hierarki ini lagi
tempat kita punya tema pink
dan tema biru yang terhampar
di bagian bawah,
ada beberapa hal
yang harus diwaspadai. 
Pertama, bahwa keduanya
mungkin
memiliki ancestor yang sama. 
Jadi hampir sia-sia
untuk menerapkan
hal yang sama persis yang
sudah berfungsi,
seperti komponen material
yang mungkin sudah berfungsi. 
Jadi, menerapkannya lagi
tidak akan terlalu berguna. 
Yang lebih penting, jika Anda
menetapkan tema di atas tema lain,
Anda harus hati-hati agar
tidak mengganti sesuatu
yang sebenarnya ingin dipertahankan. 
Misalkan, tema pink
menyiapkan beberapa hal,
misalnya sesuatu yang khusus
seperti tampilan bentuk,
untuk seluruh layar yang sebenarnya
ingin Anda terapkan,
Anda harus hati-hati agar
tidak menggantinya. 
Dan di sinilah muncul teknik
yang disebut overlay tema. 

Spanish: 
es que el estilo de más abajo,
el secundario más cercano, es el que gana. 
Si dos temas de la pila
declaran los mismos atributos,
material define un color primario
y, luego, ustedes definen
su propio color primario
el que esté más abajo, ganará. 
Anulará cualquier elemento principal
o anterior. 
Con este ejemplo de jerarquía,
donde tenemos el tema rosado
y el tema azul superpuesto 
en la parte inferior,
hay que tener cuidado
con algunos aspectos. 
Primero, es probable que ambos
tengan antecesores comunes. 
Por lo que es un desperdicio
aplicar exactamente lo mismo
que ya está en efecto,
como los componentes de material
que ya se hayan aplicado. 
Volver a aplicarlos no tiene mucho sentido. 
Lo más importante
es que si configuran un tema sobre otro
deben tener cuidado de no anular algo
que sí querían conservar. 
Supongamos que el tema rosado
establece algo específico,
como una forma en la apariencia,
para toda la pantalla,
y ustedes quieren mantenerlo;
deben tener cuidado de no anularlo. 
Ahí es donde aparece una técnica
llamada superposición de temas. 

Portuguese: 
Precisamos entender aqui que
"vence" aquele mais perto do fim,
o último filho. 
Se dois níveis de temas nessa
pilha declaram os mesmos atributos,
ou seja, se o Material Design
define uma cor primária,
e você define outra,
vence o mais perto do fim. 
Substituirá tudo,
qualquer pai ou ancestral. 
Quando temos esse tipo de hierarquia
com o tema rosa e o azul sobrepostos
na parte inferior,
devemos ter alguns cuidados. 
Primeiro, provavelmente eles têm
ancestrais muito comuns. 
É desperdício aplicar
as mesmas coisas que já estão em vigor,
como componentes do Material Design. 
Aplicar isso novamente
não adianta muito. 
O mais importante é:
ao definir um tema sobre o outro,
tenham cuidado para
não substituir algo que queiram manter. 
Se o tema rosa configurar
elementos específicos,
como uma aparência de forma,
para toda a tela,
e vocês queiram aplicá-los,
tenham cuidado para não substituí-los. 
Aqui entra uma técnica
chamada "sobreposição de temas". 

Japanese: 
階層の一番下
つまり一番近い子です
このスタックのうち
２つのテーマが同じ属性の場合
たとえば
colorPrimaryを定義している場合
階層が下のものが優先され
親や祖先をオーバーライドします
階層のもう１つの例です
ピンクのテーマと青のテーマがあり
青は下の方でオーバーレイになっています
おそらく共通の祖先を持っているので
実質的に同じものを重ねて
適用するのは無駄です
テーマを重ねて設定するときは
キープしたいものをオーバーライドしないよう
注意してください
画面全体に適用する
shapeAppearanceなどが
テーマにある場合は
オーバーライドしないよう気をつけます
そこで役立つのが
ThemeOverlayです

Spanish: 
Veo personas
confundidas con la superposición de temas. 
En realidad, es una idea bastante simple. 
No es un tipo diferente. 
Es solo una técnica de uso de temas
para hacer algo específico. 
Lo que deben hacer
es declarar que no tiene elemento principal,
que no hereda de ningún elemento. 
Luego, solo declaran
los elementos exactos que quieren cambiar. 
Esto está diseñado para aplicarse
por encima de un tema existente
que proporciona todo lo demás
necesario para la pantalla. 
Solo quiero cambiar
estas dos cosas en particular. 
Cuando aplico
una versión de superposición de temas,
se conservan los elementos del tema rosado
que queríamos. 
No se vuelven a cargar
todos los atributos de AppCompat. 
Solo se cambia lo que queremos. 
La superposición de temas es algo muy simple. 
Puede ser muy útil. 
Un consejo: hay varias superposiciones 
de temas ya hechas
y les recomiendo que las usen. 
Por ejemplo, MaterialComponents
ofrece una superposición de tema oscuro. 
Supongamos que tienen una pantalla
principalmente clara
y quieren una subsección
con un tema oscuro. 

Indonesian: 
Saya lihat orang-orang
bingung dengan overlay tema. 
Namun sebenarnya ini
gagasan sederhana. 
Overlay ini bukan jenis yang berbeda. 
Semua itu adalah teknik
menggunakan tema untuk
melakukan sesuatu yang spesifik. 
Yang harus dilakukan adalah
menyatakan ini tidak punya induk. 
Anda hanya perlu nyatakan bahwa
ini tidak mewarisi apa pun. 
Lalu Anda hanya mendeklarasikan
hal akurat
yang ingin Anda ubah. 
Jadi, ini didesain agar
terhampar di bagian atas
tema yang sudah ada,
yang memberikan semua hal lain
yang diperlukan untuk layar. 
Dan saya hanya ingin ubah..
Saya ingin mengubah dua
hal tertentu ini saja. 
Jadi, saat jika menerapkannya,
versi ThemeOverlay,
kita akan pertahankan semua hal
dalam tema pink yang diinginkan. 
Kita tidak akan memuat semua atribut
AppCompat lagi. 
Dan kita hanya akan ubah
yang ingin diubah. 
Jadi, overlay tema
adalah hal yang amat sederhana. 
Tapi bisa sangat berguna. 
Dan sedikit tips,
ada banyak yang sudah dibuat
untuk Anda yang sebaiknya
Anda gunakan. 
Misalnya,
MaterialComponents
menawarkan overlay tema gelap. 
Misalnya, sebagian besar
layar terang. 
Dan ada subbagian yang ingin
dijadikan bertema gelap. 

Korean: 
어떤 분들은 테마 오버레이를
잘 이해하지 못하시는데요
사실 아주 간단합니다
어떤 특별한 다른 유형이 아닙니다
테마 오버레이는
특정 작업에 테마를 사용하는
기법입니다
상위 항목이 없다고 선언만 하면 됩니다
다른 데서 상속받지
않는다고 선언하는 거죠
변경하기 원하는 것만
선언하면 됩니다
테마 오버레이를 적용하면
화면에 필요한 모든 것을 제공하는
기존 테마의 위에 오버레이합니다
여기에서 조심스럽게
이 두 가지만
변경하고자 하는 경우를 봅시다
테마 오버레이 버전을 대신 적용한 다음
원하는 분홍색 테마의
다른 모든 사항은 유지합니다
AppCompat 속성은
다시 입력하지 않습니다
원하는 것만 변경하는 거죠
테마 오버레이는 아주 간단합니다
매우 유용하기도 하죠
사전 제작된 테마 오버레이가 많기 때문에
사용해보시길 추천합니다
예를 들어 MaterialComponents는
어두운 테마 오버레이를 제공합니다
화면이 대부분 밝은 경우를 가정해
보겠습니다
그리고 어두운 테마를 적용하고 싶은
하위 섹션이 있다고 가정하겠습니다

English: 
I see people getting
confused by theme overlays. 
But they are actually
quite simple idea. 
They aren't a different
type of anything. 
All they are is a technique
of using themes in order
to do something specific. 
And what you do is you
declare that it has no parent. 
You just say this doesn't
inherit from some other thing. 
And then you only
declare the exact things
that you want to change. 
So this is designed to be
applied to overlay on top
of an existing theme which does
provide all the other things
that you need for your screen. 
And I only want to change--
I want to ninja
in and just change
these two particular things. 
So then if we apply this, say,
a theme overlay version instead,
then we'll retain all the things
in the pink theme we wanted. 
We're not loading up all the
AppCompat attirbutes again. 
And we're just changing
those things we want to do. 
So theme overlay, it's
a simple, simple thing. 
But that can be really handy. 
And a little tip--
there's a bunch of them
premade for you that I
encourage you to use. 
So for example,
MaterialComponents
offers a dark theme overlay. 
So say you have a
mostly light screen. 
And you have a subsection which
you want to be darkly-themed. 

Portuguese: 
As pessoas ficam confusas
com esse recurso. 
Na verdade, a ideia é bem simples. 
Não é um tipo de coisa diferente. 
É simplesmente uma técnica
de uso de temas para
fazer algo específico. 
O que você faz é declarar
que não há um item pai. 
Você informa que não há herança
e declara o que quer mudar. 
Isso deve ser aplicado à sobreposição
sobre um tema que ofereça
o que é necessário para a tela. 
Eu só quero mudar
dois elementos específicos. 
Se aplicarmos
uma versão de sobreposição de temas,
manteremos tudo
que queríamos no tema rosa. 
Não estamos carregando todos os
atributos "AppCompat" novamente. 
Só mudamos o que queremos. 
A sobreposição de temas é algo simples. 
E pode ser realmente útil. 
Uma pequena dica:
há algumas predefinidas para vocês usarem. 
Como "MaterialComponents",
com uma sobreposição de temas escuros. 
Em telas claras que precisam
ter uma parte escura,

Chinese: 
有的人会被主题叠加这个功能搞得很困惑
但它其实是相当简单的
它并不是前所未见的新东西
只是一种技巧 为特定目标来运用主题而已
你只需声明它没有母项
声明它没有从其他地方继承什么
然后 你只需声明你想要更改的东西
它的设计意图是 覆盖到现存的主题上面
现存主题会提供你的屏幕所需的一切其他元素
我只想悄悄地更改这两个地方而已
然后 如果我们应用这个 ThemeOverlay 版本
就可以按照我们的意图 在粉色主题中保留我们想要保留的东西
无需再次加载 AppCompact 属性
只需更改我们想要更改的东西
主题覆盖 是很简单的东西
但是 也是非常有用的
讲一个小技巧 我们为大家提前做好了很多这样的东西
我们鼓励大家使用它们
例如 MaterialComponents 可以提供暗色主题覆盖
假如你的屏幕色调以浅色为主
但你想把屏幕的某个局部做成暗色主题

Japanese: 
難しそうに見えて実はシンプルです
別のタイプなどではなく
特定の目的にテーマを使う手法です
この手法では
親を持たず
何も継承しないと宣言し
変更したいものだけを宣言します
既存のテーマを基にした
オーバーレイに適用されます
他の必須要素は そこから取得されます
変更が必要なこの２つだけです
そしてThemeOverlayを適用すると
ピンクのテーマの
必要な設定を保持できます
しかも AppCompat属性を
再度読み込んだりせずに
必要な部分だけ変更できます
ThemeOverlayはシンプルですね
そしてとても便利です
既成のものがいくつかあるので
ぜひ活用してください
たとえばダークテーマのオーバーレイがあります
明るい画面の一部だけ
ダークテーマにしたいときは

Japanese: 
このダークなThemeOverlayを
階層に設定します
ライトもあります
階層はこのように振る舞うため
コンテキストやそれに関連したテーマには
注意が必要です
色を取得するこのような処理が
コードベースにあるかもしれません
どんなコンテキストに適用するかに注意します
あまりに離れている場合
例えばFragmentのrootにあって
その上にテーマが適用されている場合
下方のコンテキストを使うと取得できません
一番近いビューのコンテキストを使えば
その上にあるどのテーマも取得できます
それよりもさらに良いのがテーマ属性です
テーマ属性はテーマシステムに対応しているので
名前が付いた色ではなく
テーマ属性を使用することを勧めます

Indonesian: 
Anda dapat menetapkan overlay
tema gelap ini di hierarki itu
dan ini akan mengalihkannya. 
Dan akan ada terang juga. 
Juga karena jenis perilaku
hierarki ini,
hati-hatilah saat 
menggunakan konteks itu,
atau tema yang terkait
dengan konteks,
saat menangani hal
dalam kode. 
Anda mungkin punya kode
di suatu tempat di code base,
tempat mengambil warna
menggunakan ContextCompat. 
Hati-hatilah dengan konteks
yang akan Anda terapkan di sana,
karena jika menggunakan
konteks yang terlalu jauh,
misalnya menggunakan konteks
dari root fragmen
atau seperti ini,
tema yang ditumpuk di atasnya,
jadi jika menetapkan tema Android
di suatu tempat di tata letak,
tema tak akan diambil
jika Anda gunakan konteks yang
ada dalam [?  biru. ?] 
Jadi Anda mungkin ingin menggunakan
konteks tampilan terdekat
sehingga segala jenis tema
yang ditumpukkan di atasnya
akan diambil. 
Atau yang lebih baik,
memilih atribut tema. 
Atribut tema dibuat untuk bekerja
dengan sistem bertema. 
Dan sebaiknya Anda
mencobanya dan memilih
menggunakan atribut tema
alih-alih warna bernama jika

Chinese: 
那么你只需在层级中设置暗色主题覆盖
系统就会自动为你完成颜色翻转工作
同时保留浅色主题
而且 因为存在着这种层级行为
所以请大家在编写代码 运用相关上下文
或运用与上下文相关的主题时多加小心
在你使用 ContextCompat 获取颜色时
你的代码中可能就存在着这样的代码
请留意你要把代码应用在哪个上下文里
因为 如果你使用的上下文太遥远
比如 如果你使用的语境来自 fragment 的 root
那么任何堆叠在它上面的主题都会...
如果你在布局中的某处设置好了 Android 主题
如果你使用的上下文位于下方
那么它就不会被使用到
所以 你大概需要使用距离最近的视图所在的上下文
这样一来 你堆叠在它上面的主题才会被用到
更好的做法是 选择使用主题属性
主题属性本来就是准备和主题系统协作的
所以 我鼓励大家尽可能地使用主题属性 
而不是命名颜色 因为它可以与系统协作

Spanish: 
Pueden configurar esta superposición
de tema oscuro en esa jerarquía
y se superpondrá por ustedes. 
También hay uno claro. 
Debido a este tipo de comportamiento
de jerarquía,
tengan cuidado al usar ese contexto
o ese tema asociado con un contexto
dentro del código. 
Seguramente tengan algo de código
en su base de código
donde recuperan el color
mediante ContextCompat. 
Tengan cuidado en qué contexto lo aplican
porque si usan uno demasiado distante,
por ejemplo, de la raíz del fragmento,
los temas que se apilen encima,
si configuran el tema de Android en el diseño,
no se seleccionarán 
si usan el contexto debajo. 
Les recomiendo usar
el contexto de la vista más cercana
para que se seleccionen
los temas que apilan encima. 
O mejor aún,
pueden usar atributos de temas. 
Los atributos de temas se compilan
para funcionar con el sistema de temas. 
Les sugiero usarlos, siempre que sea posible,
en lugar de nombrar los colores
porque funcionan con el sistema. 

Korean: 
어두운 테마 오버레이를
계층 구조에 설정하면
전환됩니다
밝은 테마도 마찬가지입니다
이러한 계층 구조 행동 때문에
컨텍스트를 사용하거나
컨텍스트와 관련이 있는
테마를 사용하는 경우
즉 코드에서 작업하는
경우에는 주의해야 합니다
ContextCompat를 사용해
색상을 검색하는
코드베이스 어디인가에서
코드를 가져왔을 수 있습니다
거기에서 어떤
컨텍스트를 적용하는지 잘 살피세요
너무 먼 거리에 있는 것을 사용하는 경우
프래그먼트의 루트에 있는 것이나
그 위에 놓인 테마와 같은 것을
사용하게 되기 때문입니다
따라서 레이아웃에서
Android 테마를 설정할 때
파란색 테마의 컨텍스트를 사용하면
테마가 선택되지 않습니다
가장 가까운 뷰의 컨텍스트를 사용하여
위에 쌓은 모든 종류의
테마가 선택되도록 하는 것이
좋습니다
테마 속성을 활용하시면 더 좋습니다
테마 속성은 테마 설정 시스템과
연계되도록 만들어졌습니다
이름이 지정된 색상보다는
가능할 때마다 테마 속성을
사용하시는 것을 추천드립니다

Portuguese: 
é possível definir a sobreposição
de tema escuro nessa hierarquia
para fazer essa mudança. 
E há um tema claro também. 
Com esse tipo de
comportamento de hierarquia,
tenham cuidado ao usar esse contexto
ou um tema associado a um contexto
quando usarem código. 
Vocês já devem ter usado código para
recuperar cores usando "ContextCompat". 
Observem qual contexto é aplicado,
porque ao usar um que
esteja muito distante,
como um da raiz do fragmento,
isso afetará os temas empilhados. 
Se definir os temas
em qualquer lugar do layout,
eles não serão selecionados
ao usar o contexto. 
Neste caso, azul. 
Convém usar
o contexto da visualização mais próxima
para que qualquer tipo de tema
que você empilhar seja selecionado. 
Ou, melhor ainda, prefira
atributos de temas. 
Eles são criados para funcionar
com o sistemas de temas. 
Então, eu recomendo usar atributos
em vez de cores nomeadas
sempre que possível,
porque eles funcionam com o sistema. 

English: 
You can just set this dark
theme overlay on that hierarchy
and it will flip it for you. 
And there's a light as well. 
Also because of this kind
of hierarchy behavior,
be careful when you're
using that context--
or theme associated
with a context--
when you treating
things in code. 
So you've probably got some
code out there somewhere
in your code base
where you're retrieving
the color using ContextCompat. 
Watch out for which context
you are applying just there,
because if you use one
which is too distant--
so you're using one from
the root of the fragment
or something like this--
any themes that get
stacked on top of it--
so if you set the Android theme
somewhere in your layout--
it's not going to get picked
up if you use the context which
is in [?  blue. ?] 
So you probably want to use
the context of the nearest view
so that any kind of themes
you get stacked on top
will be picked up. 
Or better yet, prefer
theme attributes. 
So theme attributes are built
to work with the theming system. 
And so I'd encourage you
instead to try and prefer
to use theme attributes rather
than named colors wherever

Japanese: 
コードでオーバーレイと同じ処理をするには
ContextThemeWrapperを使って
コンテキストをラップし
別のスタイルを適用します
こちらは
android:themeタグの内部処理です
テーマとスタイルの違いを
理解していない人も珍しくありません
ボタンの背景色を変更したい場合は
このようにスタイルで
colorPrimaryを設定します
スタイルではビュー属性に値を設定しますが
困ったことにcolorPrimaryは
ビュー属性ではありません
これはテーマ属性で存在しません
テーマ属性の存在理由や
使い方を理解したうえで
このようにThemeOverlayを設定すると
色を設定できます
一言で言えば

Portuguese: 
Se precisar de códigos para
ter a sobreposição,
use o wrapper de temas de contexto,
que permite pegar um contexto e
uni-lo, aplicando outro estilo
para ter o mesmo comportamento. 
É isso o que a tag de temas do
Android faz internamente. 
Então, no fim das contas,
acho que muitos ficam confusos
porque não entendem a diferença
entre temas e estilos. 
Imagine que queira
mudar a cor de um botão. 
Todos já passamos por isso. 
E tentamos fazer algo assim,
um estilo que define "colorPrimary". 
O problema é que o estilo
é como os atributos de
visualização para os valores. 
Aqui, dizemos para definir
o atributo de visualização colorPrimary. 
Ele não é um atributo desse tipo. 
Os atributos de temas
são outra indireção. 
Isso não existe. 
Em vez disso, entendam a diferença entre
o motivo da existência desses atributos,
as maneiras de usá-los e a definição de
uma sobreposição de temas como esta,
que defina a cor para você. 
Gosto de pensar assim:
"Não traga um estilo para
uma luta de temas." 

Indonesian: 
mungkin, karena atribut itu
berfungsi dalam sistem. 
Dan jika dalam kode perlu
melakukan perilaku overlay yang sama
Anda bisa melihatnya
dengan wrapper tema konteks,
jadi Anda bisa
ambil konteks
dan membungkusnya,
menerapkan gaya lain,
untuk memberi perilaku
overlay yang sama ini. 
Inilah yang dilakukan tag tema
Android secara internal. 
Jadi sebenarnya ini adalah...
saya rasa banyak orang
yang bingung dengan ini,
saat tidak paham perbedaan
antara tema dan gaya. 
Katakanlah Anda ingin mengubah
warna latar belakang tombol. 
Kita semua pernah melakukannya. 
Lalu mereka coba seperti ini,
menetapkan gaya
yang mengatur colorPrimary. 
Dan masalahnya adalah
gaya itu
sebenarnya adalah atribut
tampilan ke nilai. 
Jadi pada dasarnya
Anda mencoba
menetapkan atribut tampilan
colorPrimary. 
colorPrimary bukan
atribut tampilan. 
Ini titik
pengalihan lainnya,
semacam atribut tema. 
Jadi, ini tidak ada. 
Yang harusnya Anda lakukan
adalah memahami perbedaan
mengapa atribut tema ini ada,
bagaimana cara menggunakannya, dan
menetapkan overlay tema seperti ini
yang mengarah ke..
yang menetapkan warna. 
Dan saya anggap hal ini--
jangan libatkan gaya
dalam memilih tema. 
Terutama, jika Anda paham
perbedaan keduanya,

Korean: 
시스템과 호환되기 때문입니다
코드에서 동일한 유형의
오버레이 동작을 수행하려는 경우
컨텍스트를 가져와 래핑하는
컨텍스트 테마 래퍼를
사용하여 확인하고
다른 스타일을 적용하면
동일한 오버레이 행동이 제공됩니다
이것이 바로 Android 테마 태그가
내부적으로 하는 일입니다
이제 정리해보겠습니다
많은 분들이 테마와 스타일의 차이점을
이해하지 못하기 때문에
헷갈리십니다
버튼의 배경 색을 변경하는 경우를
생각해보겠습니다
이미 해봤죠
이제 color primary를 설정하는
스타일을 설정하는 경우입니다
스타일은 기본적으로
값에 대한 뷰 속성과 유사합니다
color primary 뷰 속성을
설정하면 된다고
생각하실 수도 있지만
color primary는 뷰 속성이 아닙니다
테마 속성이라는
간접 참조의 다른 부분이기 때문에
color primary 뷰 속성이라는 것은
없죠
이러한 테마 속성이 존재하는 이유와
테마 속성 사용 방법과
색상을 설정해주는
테마 오버레이를 설정하는 방법의
차이를
이해하시기 바랍니다
저는 이 부분을
테마에 스타일을 끌어들이지
않기라고 정리하고 싶습니다
테마와 스타일의 차이점과

English: 
possible, because they
work with the system. 
And if you in code need to do
the same kind of overlaying
behavior, you can look at
it using the context theme
wrapper, which allows
you to take a context
and wrap it, applying
another style,
to give you this very
same overlay behavior. 
And this is what the Android
theme tag does internally. 
So it really comes down to--
I think a lot of
people get confused
like this, where they don't
understand the difference
between themes and styles. 
And say you just want
to change the background
color of a button, right? 
We've all been there. 
And they try and do
something like this,
where they set a style
which sets color primary. 
And the problem
is that the style
is like basically these
view attributes to values. 
And so you're basically
trying to say,
set the color primary
view attribute. 
Color primary isn't
a view attribute. 
It's this other
point of indirection,
this theme attribute thing. 
So this doesn't exist. 
Instead you want to be doing
is understanding the difference
between why these
theme attributes exist,
how to use them, and set
a theme overlay like this
which itself points to--
it sets the color for you. 
And I like to think
of it as this--
don't bring a style
to a theme fight. 
Basically, if you understand
the difference between them--

Spanish: 
Y si necesitan hacer la misma
superposición en el código,
pueden usar el mismo envoltorio
de tema de contexto
que les permite tomar un contexto
envolverlo y aplicarlo a otro estilo
para ese mismo comportamiento
de superposición. 
Eso es lo que hace la etiqueta de temas
internamente. 
Todo se reduce a...
Creo que muchos se confunden
cuando no comprenden la diferencia
entre temas y estilos. 
Supongamos que solo quieren cambiar
el color de fondo de un botón. 
A todos nos ha pasado. 
Prueban con algo como definir un estilo
que establece el color principal. 
El problema es que el estilo
es como los atributos de vista para valores. 
Entonces, intentan definir
el atributo de vista de colorPrimary. 
colorPrimary no es un atributo de vista. 
Este atributo de tema está en otra dirección. 
Por lo que no existe. 
En cambio, deben comprender
la diferencia de por qué
existen estos atributos de tema,
cómo usarlos
y configurar una superposición de tema
como esta que apunta a...
definir el color por ustedes. 
Me gusta pensar que es así:
No lleven al estilo al nivel del tema. 

Chinese: 
如果你在代码中需要完成同样的叠加行为
你可以使用 ContextThemeWrapper
这样你就可以封装上下文 应用另一种样式
从而获取完全一致的叠加行为
这就是 Android theme tag 在内部做的事情
归根结底 我认为很多人有如下的困扰：
他们不理解主题和样式之间的区别
他们觉得 不就是要修改一个按钮的背景颜色吗
他们会尝试着做这样的事
他们会设置一个样式 这个样式会设置好 colorPrimary
问题在于 样式本质上就是数值所拥有的视图属性
所以 你想表达的是
设置 colorPrimary 视图属性
colorPrimary 不是视图属性
它只是另一个间接取值 类似主题属性
所以 这种状况不存在
你需要做的是 理解这些主题属性存在的原因
如何使用它们 
并像这样设置主题叠加
它本身会帮你设置好颜色
我是这样看待它的：
在主题适用的地方 不要使用样式
基本上 如果你能理解二者之间的差异

English: 
why they exist and how they
interact between each other--
I think it will resolve a
lot of this frustration a lot
of people see around theming. 
So, yeah. 
Understand the difference
between theme and styles
is kind of like the
fundamentals of this talk. 
Understand why some attributes
exist and how you can use them. 
And I've really tried to
tease apart the difference
between themes and styles. 
But the reality is they're
best when they work together. 
So you can and absolutely
should create styles which refer
to themes-- like theme
and attributes and so on--
and use themes which set styles. 
So it's understanding
what they're
good at, when you use each,
and how they work together. 
CHRIS BANES: Thank you, Nick. 
Nick's just spoke
about the theory
behind themes and styles. 
Now I'm going to go
into how you actually
apply this to your apps. 
So for me the most important
kind of resource in your apps
tends to be colors. 
They're what make
up the majority
of things that are drawn. 
Now there are a number of ways
to define colors on Android. 
We have the color tag
which is typically
made up of an ARGB color value. 

Portuguese: 
Ao entender a diferença entre eles,
por que existem e como interagem,
isso resolve muitas
das frustrações em relação aos temas. 
Entender a diferença entre temas e estilos
é a base dessa conversa. 
Entender por que alguns atributos
existem e como você pode usá-los. 
Eu tentei estabelecer a diferença
entre temas e estilos. 
Mas a verdade é que eles
são melhores quando trabalham juntos. 
Criem estilos
que façam referência a temas,
como atributos de temas. 
E usem temas que definam estilos. 
Entendam para que servem,
quando usar cada um
e como eles funcionam juntos. 
Obrigado, Nick. 
Nick falou sobre a teoria
por trás de temas e estilos. 
Agora, vou mostrar
como aplicá-la aos apps. 
Para mim, o recurso mais
importante nos seus apps
são as cores. 
Elas formam a maioria
de tudo o que é desenhado. 
Há várias maneiras de
definir cores no Android. 
Temos a tag de cores, que é, tipicamente,
constituída de um valor de cor ARGB. 

Chinese: 
它们为何存在 如何互动
我认为你就可以解决很多人在主题方面遇到的困惑
理解主题和样式之间的差异 
理解主题属性存在的意义 使用它的方法
是这次演讲的基础
我想尽量讲解主题和样式之间的差别
但其实 它们两个合起来才更有效
所以你可以 并且绝对应该
创建一些引用主题的样式 比如主题属性 等等
并使用那些可以设置样式的主题
所以 在你使用每个主题和样式的时候 
要知道它们各自的优势 以及协作的方式
谢谢 Nick
Nick 刚才讲了主题和样式背后的理论
下面我来讲讲如何把它们用到应用里
我认为 你的应用内最重要的资源就是颜色
你绘制的内容中 大部分都属于颜色
在 Android 中定义颜色的方式有很多种
比如 color tag 
它主要由 ARGB 颜色值组成

Indonesian: 
alasan keberadaan, dan bagaimana
keduanya saling berinteraksi,
saya rasa itu akan menyelesaikan
kebingungan banyak orang terkait tema. 
Begitulah. 
Memahami perbedaan antara
tema dan gaya
adalah semacam fondasi
dalam diskusi ini. 
Memahami mengapa beberapa
atribut ada dan cara menggunakannya. 
Saya benar-benar mencoba
untuk menguraikan perbedaan
antara tema dan gaya. 
Namun faktanya, keduanya
paling baik jika bekerja sama. 
Jadi Anda bisa dan harus
membuat gaya yang merujuk ke tema,
seperti tema dan atribut, dsb. 
dan menggunakan tema
yang menetapkan gaya. 
Jadi, memahami keahliannya,
kapan harus digunakan,
dan bagaimana keduanya bekerja sama. 
Terima kasih, Nick. 
Nick barusan membahas
tentang teori
di balik tema dan gaya. 
Sekarang saya ingin jelaskan
bagaimana penerapannya ke aplikasi. 
Bagi saya, jenis resource
terpenting di aplikasi,
adalah warna. 
Warnalah yang menyusun
sebagian besar item yang digambar. 
Ada sejumlah cara untuk
mendefinisikan warna di Android. 
Kita punya tag warna
yang biasanya
dibuat dari nilai warna ARGB. 

Spanish: 
Si comprenden la diferencia
por qué existen y cómo interactúan,
creo que se resolverá
gran parte de la frustración
que existe con los temas. 
Comprender la diferencia
entre temas y estilos
es la base de esta charla. 
Comprender por qué existen
algunos atributos y cómo pueden usarlos. 
Realmente intenté diferenciar
los temas de los estilos. 
La realidad es que funcionan mejor 
cuando se usan juntos. 
Pueden y deberían crear estilos 
que hagan referencia a temas,
como temas y atributos, etc., 
y usar temas que definan estilos. 
Se trata de comprender para qué sirven
y cómo funcionan juntos. 
Gracias, Nick. 
Nick habló sobre la teoría
de los temas y los estilos. 
Ahora, les hablaré
sobre cómo aplicar esto en sus apps. 
Para mí, el tipo de recurso
más importante de sus apps
suelen ser los colores. 
Son lo que forma la mayor parte
de los elementos que se dibujan. 
En Android, pueden definir colores
de diferentes maneras. 
Tenemos la etiqueta de color,
que típicamente se compone
de un valor de color ARGB. 

Korean: 
두 가지가 왜 존재하고
서로 어떻게 상호작용하는지 이해하면
테마 설정과 관련해 겪는 어려움이
많이 해소될 것이라고 생각합니다
네
테마와 스타일의 차이를 이해하는 것이
이번 강연의 핵심이죠
속성이 존재하는 이유와
속성의 사용 방법을 이해하는 것이 필요합니다
지금까지 테마와 스타일의 차이점을
살펴보았습니다
하지만 실제로는 두 가지가
함께 작용할 때가 가장 좋습니다
따라서 테마와 속성과 같이
테마를 참조하는 스타일을 만들어
스타일을 설정하는
테마를 사용하는 것이 좋습니다
이들의 장점과 각각을 언제 사용해야 하는지
어떻게 함께 작용하는지 이해해야 하죠
닉, 감사합니다
닉이 테마와 스타일에 대한
배경을 설명해주셨습니다
저는 이제 실제로 앱에 적용하는 방법을
설명드리겠습니다
제가 생각하기에
앱에서 가장 중요한 리소스는
바로 색상입니다
그림으로 표시되는 것의
대부분을 차지합니다
Android에서 색상을
정의하는 방법은 아주 많습니다
주로 ARGB 색상 값으로
구성되는 color 태그가
있습니다

Japanese: 
スタイルとテーマの
違い、存在理由、相互作用を理解すれば
テーマに対するフラストレーションが
かなり解消されるはずです
重要なのは
テーマとスタイルの違いを理解し
属性の存在理由と
使い方を理解することです
これらを踏まえた上で
両方をうまく活用するのが一番です
テーマや属性を参照するスタイルを作成し
テーマでスタイルを設定します
大切なのは 長所や使う場所
組み合わせです
ありがとう ニック
ニックが紹介したテーマやスタイルの理論を
アプリで応用していきましょう
アプリで最も重要なリソースは色です
大半の要素には色が着いています
色を定義する方法は複数あります
colorタグの中身はARGBの値でです

Portuguese: 
As tags de cores podem referenciar
outras tags de cores para criar aliases. 
Não é possível referenciar
um atributo de tema em uma tag de cor. 
Só pode referenciar outras tags de cor. 
Essas são as cores estáticas. 
Vou falar de cores como estado. 
Listas de estados de cores são um
wrapper com estado para cores. 
Elas permitem definir cores diferentes
usadas em estados distintos. 
Elas usam o mesmo sistema
drawable de estados
como drawables e como visualizações. 
É assim que funcionam. 
Como um exemplo, temos um botão. 
Ao ser pressionado,
é igual a "true". 
Quando o usuário clica, a cor muda. 
Mas quando você desativa
essa visualização,
ele fica meio translúcido. 
E isso se baseia em uma
lista de estado de cores. 
Se você observar como as
listas de estado de cores são feitas,
temos a tag "selector". 
Neste exemplo temos dois itens. 
O primeiro item define uma cor. 
Ele aponta para "brand_color_bright". 
E isso será usado sempre que
"state_checked=true" estiver ativado. 

Chinese: 
color tag 可以引用其他 color tag 
所以 你可以创建 alias
这里需要注意的是
你不能从颜色 tag 那里引用主题属性
而只能引用其他颜色 tag 
静态颜色就介绍到这里
下面我们来谈谈有状态的颜色
颜色状态列表是围绕颜色设置的有状态封装器
它可以让你定义用在不同状态下的不同颜色
它们作为可绘制对象以及视图
使用相同的状态绘制系统
这就是它的工作原理
看这个例子 这个按钮
state_pressed = true
当用户点击视图的时候 它会更改颜色
但是 当你禁用这个视图的时候 
它也会变成这样的半透明状
驱动它的动力是颜色状态列表
我们来看看颜色状态列表是如何构建出来的
这里有一个 selector tag
在本例中 有两个项
第一个项定义了一种颜色
所以它指向的是 brand_color_bright
每当 state_checked=true 为真的时候
它就会被使用

Korean: 
color 태그는 다른 color 태그를
참조할 수 있기 때문에
별칭을 생성할 수 있습니다
한 가지 알아야 할 것은
color 태그에서 theme 속성을
참조할 수 없다는 점입니다
다른 color 태그만 참조할 수 있습니다
따라서 정적이라고 할 수 있죠
이제 스테이트풀 색상에 대해 알아보겠습니다
color state list는 color 양옆에 있는
스테이트풀 래퍼입니다
각기 다른 state에서
사용되는 다양한 색상을
정의할 수 있게 해주죠
동일한 state 드로어블 시스템을
드로어블이나 뷰처럼 사용합니다
여기까지가 작동 방식입니다
예시를 들어보면
state pressed가 true인
버튼이 있습니다
사용자가 뷰에서 클릭하면 색상이 바뀌죠
이 뷰를 중지하면
반투명해집니다
color state list
덕분에 가능하죠
color state list를
어떻게 만드는지 보기 위해
selector 태그를 준비합니다
이 예시에서는 항목 두 개가 있습니다
첫 번째 항목은 색상을 정의합니다
brand_color_bright를 가리키죠
state_checked가 true일 때마다
사용 설정됩니다

Japanese: 
colorタグから別のcolorタグを参照して
エイリアスを作成できます
またcolorタグからテーマ属性は参照できず
別のcolorタグのみ参照できます
次は動的な色です
ColorStateListは
色のステートフルなラッパーで
異なる状態に応じて使用する色を定義できます
Drawableなどと同じ
State Drawableシステムです
たとえばこのボタンは
stat_pressedがtrueで
クリックすると色が変わります
ビューを無効にすると
このような半透明になります
ColorStateListを使っています
ColorStateListの中には
selectorタグに
アイテムが２つあります
１つ目は色です
brand_color_brightで定義した色は
state_checkedがtrueの時の色です

Spanish: 
Pueden hacer referencia
a otras etiquetas de color creando alias. 
Deben saber que no pueden hacer
referencia a un atributo de tema
desde una etiqueta de color. 
Solo pueden hacer referencia
a otras etiquetas de color. 
También están los colores estáticos. 
Hablaré sobre colores con estado. 
Las listas de estado de color
son un envoltorio de color con estado. 
Permiten definir diferentes colores
que se usan en diferentes estados. 
Usan el mismo sistema
de elementos de diseño de estado
que los elementos de diseño
y los de vista. 
Como ejemplo, tienen un botón
con el valor state_pressed = true. 
Cuando el usuario hace clic en la vista,
cambia de color. 
Cuando inhabilitan esa vista,
pasa a esta especie de transparencia. 
Eso es gracias a la lista de estado de color. 
Si miran cómo se conforman
las listas de estado de color,
tenemos la etiqueta de selector. 
En este ejemplo, hay dos elementos. 
El primero define un color. 
Apunta a brand_color_bright. 
Se usará cuando state_checked = true
esté habilitado. 

Indonesian: 
Tag warna sebenarnya dapat
merujuk tag warna lain
jadi Anda bisa buat
alias. 
Satu hal yang
perlu diketahui adalah
Anda tak bisa merujuk atribut
tema dari tag warna. 
Anda hanya dapat merujuk
tag warna lain. 
Dan begitu juga warna statis. 
Sekarang tentang
warna stateful. 
Jadi, daftar status warna adalah
wrapper stateful terkait warna. 
Daftar ini memungkinkan Anda
mendefinisikan warna lain
yang digunakan di status yang berbeda. 
Yang digunakan adalah sistem
drawable status sama
sebagai drawable,
tapi juga tampilan. 
Begitulah kerjanya. 
Sebagai contoh di sini,
ada tombol
dengan state_pressed = true. 
Jadi, saat tampilan diklik,
warna akan berubah. 
Ini sebenarnya [TIDAK TERDENGAR]. 
Tapi saat Anda menonaktifkan
tampilan itu,
jadinya semacam
tembus pandang. 
Dan itu didukung oleh
daftar status warna. 
Jadi, jika Anda melihat cara
daftar status warna dibuat,
kita punya tag pemilih. 
Dan dalam contoh ini,
kita punya dua item. 
Item pertama mendefinisikan warna. 
Yang menunjuk ke
brand_color_bright. 
Dan akan digunakan kapan pun
status state_checked = true diaktifkan. 

English: 
Now color tags can actually
reference other color tags
so you can create aliases. 
And the one thing
to know here is
that you can't reference a theme
attribute from a color tag. 
You can only reference
other color tags. 
And so there's static colors. 
Now when I talk about
stateful colors. 
So color state lists are a
stateful wrapper around colors. 
And it allows you to define
different colors that
are used on different states. 
They use the same
state drawable system
as drawables but also as views. 
So that's how they work. 
So as example here,
you've got button
when state pressed equals true. 
So when the user clicks in
the view, it changes color. 
It's actually [INAUDIBLE]. 
But when you disable
that view, it also
goes into this kind
of translucent. 
And that's powered by
a color state list. 
So if you actually look at how
color state lists are made,
we have the selector tag. 
And in this example,
we have two items. 
Now the first item
defines a color. 
So it points to
brand_color_bright. 
And that will be used whenever
the state_checked equals
true state is enabled. 

Spanish: 
El segundo elemento no define ningún estado. 
Eso significa que es el color predeterminado. 
Si no hay otros elementos de color
que coincidan con el estado actual,
no se usará. 
Les sugiero siempre ordenar los elementos
de la lista de estado de colores
del más específico arriba
al menos específico abajo. 
Eso es por cómo funciona
la lista de estados de color. 
Itera por todos los elementos
hasta encontrar cuál coincide. 
Si volvemos al ejemplo y cambiamos el orden
con los elementos sin estado arriba,
lo que sucede es que este
es el único color que se usa. 
Sin estado significa
que coincide con todos los estados. 
Por lo tanto los elementos debajo
nunca se usarán, solo se usará este. 
Deben tenerlo en cuenta. 
ColorStateList se actualizó
con el paso de los años. 
En Lollipop, agregamos la modulación Alfa
con la etiqueta Alfa de Android. 
Luego en la API nivel 23,
agregamos la posibilidad

Chinese: 
第二个项并没有定义任何状态
这意味着 它是默认颜色
所以 如果没有其他颜色项可以配对当前状态
它就会被使用
这方面的一个小技巧是 
你应该总是在颜色状态列表中把各项
按照从最顶端-最相关 到 最底端-最不相关 的顺序进行排列
这是由颜色状态列表的工作原理决定的
它会在所有项目中迭代
直到找出配对的选项
我们回到之前举过的例子
调换一下顺序
把无状态的项置于顶端
那么 就只有这一种颜色会被使用了
无状态 意味着它可以配合每个状态
所以 在它之下的任何项都不会被使用 除了这个项
这个小技巧希望大家都能了解
ColorStateList 在过去的几年中进行了几次升级
在 Lollipop 版本中 我们使用 android:alpha tag
加入了 alpha 调整
在 API 23 中 它可以引用主题属性了

Indonesian: 
Lalu kita punya item
kedua yang
tidak mendefinisikan status apa pun. 
Artinya itu adalah warna
default-nya. 
Jadi, jika tidak ada item warna lain
yang akan sesuai dengan status saat ini,
ini tidak akan digunakan. 
Satu tips:
Anda harus selalu
mengurutkan item di
daftar status warna
mulai paling spesifik di atas
ke paling tidak spesifik di bawah. 
Karena begitulah daftar status
warna ini bekerja. 
Daftar ini mengulangi
seluruh item
hingga [? mereka?]  menemukan
yang cocok. 
Jika kita kembali
ke contoh
dan membalik urutannya,
jadi item tanpa status
ada di atas,
yang terjadi adalah inilah
satu-satunya warna
yang akan digunakan. 
Tanpa status artinya cocok
dengan status apa pun. 
Sehingga, item apa pun
di bawahnya
tidak akan digunakan,
hanya yang ini. 
Ada sedikit [TIDAK TERDENGAR]
yang harus Anda ketahui. 
ColorStateList menjalani
beberapa upgrade
beberapa tahun ini. 
Di Lollipop, kami tambah
modulasi alfa
menggunakan tag alfa Android. 
Dan di API 23, kami
memberikan kemampuan

English: 
And then we have the
second item which
doesn't define any states. 
And what that means is that
it's the default color. 
So if there's no
other color items
which will match the current
state, this will not be used. 
Now one tip for this is
that you should always
order the items in
the color state list
from most specific at the top
to least specific at the bottom. 
And this is because of the
way color state list works. 
It iterates through
all of the items
until [?  they ?]  find
one which matches. 
If we actually go
back to the example
and swap the order around--
and so the item with no
states is that the top--
what actually happens is that
this is the only color which
is ever used. 
No states means that
it matches every state. 
And so therefore
any items below it
will never be used,
only this one. 
There's a bit of a [INAUDIBLE]
for you to know about. 
So ColorStateList
has had a number
of upgrades over the years. 
In Lollipop, we added
the alpha modulation
using the Android alpha tag. 
And then in API 23,
we gave it the ability

Portuguese: 
Depois, temos o segundo item,
que não define nenhum estado. 
Isso significa que ele é a cor padrão. 
Se não houver outros itens de cor
que serão associados ao estado
atual, ele não será usado. 
Uma dica é sempre classificar os itens
da lista do mais para o menos específico. 
Isso devido à forma
como a lista funciona. 
Ela itera todos os itens
até encontrar um correspondente. 
Se voltarmos ao exemplo
e trocarmos a ordem,
se o item sem estado for o
primeiro da lista,
o que acontece é que
essa é a única cor que será usada. 
"Sem estado" significa que
corresponde a todos os estados. 
Os itens abaixo dele
nunca serão usados, só este. 
É algo capcioso. 
"ColorStateList" teve vários
upgrades ao longo dos anos. 
No Lollipop,
adicionamos a modulação Alfa
com a tag "alpha" do Android. 

Japanese: 
２つ目は
状態を定義していないので
既定の色になります
現在の状態に一致する色が他になければ
この色が使われます
ColorStateList内のアイテムは
必ず 具体性の順に上から並べます
ColorStateListは
一致するものが見つかるまで
全アイテムを調べるからです
先ほどのアイテムの順序を入れ替えて
状態のないアイテムを一番上にすると
この色しか使われなくなります
状態を指定してないのですべての状態に一致し
その下のアイテムは使われません
これは重要な点です
ColorStateListも改良を重ねてきました
Lollipopでは
android:alphaタグを使う
透過度調整を追加したほか

Korean: 
두 번째 항목은 state를
정의하지 않습니다
기본 색상이라는 의미죠
따라서 현재 state에 맞는
색상 항목이 없기 때문에
사용되지 않습니다
이때 한 가지 팁은
color state list에서
특정적인 성격이 가장 강한
항목일수록 상단에
가장 약한 항목일수록
하단에 정렬하는 것입니다
color state list의
작동 방식 때문입니다
color state list는
대응하는 것을 찾을 때까지
모든 항목을 반복합니다
예시로 돌아가서
순서를 바꾸어
state가 없는 항목이 상단으로 가면
한 번이라도 사용된 색상은
이것밖에 없게 됩니다
state가 없다는 것은
항목이 모든 state에 대응함을 의미합니다
따라서 하위 항목은 전혀 사용되지 않고
이것만 사용되는 거죠
여기에서 알아야 할 점이 있습니다
ColorStateList는 몇 년 동안
업그레이드를 여러 번 거쳤다는 것입니다
Lollipop에서는
Android alpha 태그를 사용하여
알파 모듈레이션을 추가했습니다
API 23에서는
테마 속성을 참조할 수 있는

Spanish: 
de hacer referencia a atributos de temas. 
Es una herramienta muy útil
en cuanto a temas y estilos. 
Si usan AppCompat,
proporciona un backport
hasta la API nivel 14. 
Todos los widgets de AppCompat
usan este método internamente. 
Así que pueden usarlo manualmente
o, por ejemplo, para color de texto
también se usa internamente. 
Pueden hacer referencia
a listas de estado de color
con estos atributos de temas
en esos estilos. 
Podemos usar listas de estado de color
para evitar esta situación. 
Siempre puedo garantizar
que obtendrán algo como esto:
tienen una copia de color
con tipos de color Alfa variables. 
Por lo general, es gris,
por lo que tendrán 20 o 40 tonos de gris. 
Queremos evitar tener un solo color,
para que no tengan que cambiarlo luego. 
Luego tienen que pasar por todas
estas variantes Alfa aleatorias
de algún lugar de su app
y cambiarlas también. 
Lo que podemos hacer
es usar listas de estados de color. 
No es necesario que tengan muchos elementos. 
Pueden tener solo uno. 

Indonesian: 
untuk merujuk atribut tema. 
Saat ini menjadi
alat yang sangat berguna
untuk membantu Anda terkait
tema dan gaya. 
Atau jika menggunakan
AppCompat,
akan terjadi backport
kembali ke API 14. 
Semua widget AppCompat mungkin
memakai metode ini secara internal. 
Anda bisa gunakan
secara manual atau banyak--
katakanlah, warna teks, atau
apa pun itu,
dan ini digunakan
secara internal. 
Jadi, Anda dapat merujuk daftar
status warna dengan aman
menggunakan atribut tema
dalam gaya tersebut. 
Jadi, satu cara
menggunakan daftar status warna
adalah menghindari
situasi ini. 
Saya hampir bisa jamin
Anda akan memperoleh hal seperti ini,
memiliki salinan warna
dengan berbagai jenis alfa warna. 
Biasanya warna abu-abu,
jadi ada sekitar 20
atau mungkin 40 nuansa
abu-abu di sana. 
[TERTAWA]
Kita memang harus menghindarinya,
karena Anda tak ingin
hanya punya satu warna,
dan lalu mengubahnya. 
Namun Anda kemudian melihat
semua varian alfa acak ini
di suatu tempat di aplikasi Anda,
dan mengubahnya juga. 
Jadi, kita bisa
gunakan daftar status warna. 
Daftar status warna tak
harus punya banyak item. 
Bisa hanya satu item. 

Japanese: 
API 23で
テーマ属性の参照が可能になり
とても有用なツールになっています
また AppCompatを使えば
API 14までバックポートできます
AppCompatウィジェットも
仕組みは同じです
手動で使うことも
内部で使うこともできます
スタイル内のテーマ属性を使って
ColorStateListを
安全に参照できます
ColorStateListを使えば
次のような状況を回避できます
このように透過度が異なる
色のコピーがあります
普通は灰色で
20や40ぐらいの灰色の色調になります
これは避けたいわけです
なぜなら １色を変更するだけで
アプリ内の透過度を変えたバリアントまで
全部変更する必要が出るからです
ColorStateListなら
アイテムを複数持つ必要はなく
１つで十分です

Portuguese: 
Na API 23, permitimos
a referência de atributos de temas. 
É uma ferramenta muito útil
para temas e estilos. 
Se você usa AppCompat,
há retrocompatibilidade
com todas as APIs até o nível 14. 
Todos os widgets de AppCompat
usam esse método internamente. 
Você pode usá-lo manualmente ou,
por exemplo, com cores de texto. 
E elas usam isso internamente. 
Você pode referenciar
listas de estado de cores
usando atributos de temas nesses estilos. 
Uma maneira de usar essas listas
é para evitar esta situação. 
Eu sei que vocês têm algo assim,
uma cópia de uma cor
com vários tipos Alfa de cores. 
Geralmente, é o cinza. 
Então, haverá 20 ou 40 tons de cinza lá. 
É bom evitar isso,
porque não é legal ter
uma única cor e depois mudá-la. 
Depois é preciso passar
pelas variações aleatórias de Alfa
em algum lugar do app e mudá-las também. 
É possível usar listas de estados. 
Elas não precisam ter vários itens. 
Você só precisa de um. 

English: 
to reference theme attributes. 
So now it's actually
a really useful tool
in your belt in
themes and styles. 
Or if you actually
use an AppCompat,
it backports it all
the way back to API 14. 
All of the AppCompat widgets
kind of use this method
internally. 
So you can either use
it manually or a lot
of the-- so, for instance,
text color, or whatever it is--
and they actually
use this internally. 
So you can safely
reference color state lists
using theme attributes
in those styles. 
So one way we can
use color state lists
is to avoid this
kind of situation. 
So I can almost guarantee
you've got something
like this, where you've
got a copy of a color
with varying alpha kind
of colors in there. 
Usually it's for
grays, so you'll
have like 20 or maybe 40
shades of gray in there. 
[LAUGHTER]
So what we really want
to do is avoid that,
because you don't want
to have one color,
and then you change it. 
But then you've to go through
all these random alpha variants
somewhere in your app
and change them too. 
So what we can [?  then ?] 
is use color state lists. 
So color state lists don't
have to have multiple items. 
You can just have one. 

Chinese: 
现在它其实是个非常有用的主题和样式工具
如果你使用 AppCompat 的话
它可以一直向上支持到 API 14
所有 AppCompat widget 都在内部使用这个方法
所以你可以手动使用它
或者 比如在文本颜色等地方 它们会在内部使用这个
这样你就可以安全地通过在这些样式中使用主题属性
来引用颜色状态列表
我们可以这样来使用颜色状态列表：
避免这种情况
我几乎可以向大家保证 你会遇到这样的情况
颜色的拷贝拥有各种不同的 alpha 值
通常这是用于灰度的
所以你会得到20-40个灰度
我们想要避免这种情况
因为你不想在更改了一种颜色之后
又在自己的应用查阅这些随机的 alpha 变量 然后把它们也更改掉
所以 我们能做的就是 使用颜色状态列表
颜色状态列表不必拥有多个项目
只有一个项也没问题

Korean: 
기능을 넣었습니다
테마와 스타일에서
편리하게 사용하실 수 있는
유용한 도구입니다
AppCompat를 사용하시는 경우
ColorStateList는 이를
API 14로 백포팅합니다
AppCompat 위젯 전부는
이 메서드를 내부적으로
사용합니다
따라서 수동으로 사용 가능합니다
텍스트 색상과 같은 경우는
위젯이 이 메서드를 내부적으로 사용합니다
그렇기 때문에 이 스타일에서
테마 속성을 사용하여
color state list를 참조할 수 있습니다
color state list를
사용하는 방법 한 가지는
이러한 상황을 피하는 것입니다
색상에 대해 다양한 알파가 적용된 색상의
복사본을 가지는 경우
이렇게 표시됩니다
보통 회색에 사용되는 것인데요
20개에서 40개 사이의
색조가 적용된 회색이 표현됩니다
[웃음]
한 가지 색상만 사용하려는 것이 아니라
변경도 하기 때문에
이러한 경우는 피하고 싶죠
하지만 앱 어디인가에서
이 임의의 알파 변이형을 거치면
변이형도 바꾸게 됩니다
따라서 color state list를
사용할 수 있습니다
color state list에 많은
항목이 필요하지는 않습니다
하나만 있으면 됩니다

Japanese: 
既定の色を使って
そのアイテムを常に使う色にします
ここではcolorOnPrimaryという
テーマを参照するので
透過度を調整できます
値は０から１の間です
colorOnPrimaryは
色のalpha値を取得して
指定した値をそれに掛けます
それがこの25%のcolorOnPrimaryです
このファイルを必要なalpha値の分だけ
コピーします
ColorStateListの
便利な使い方をもう１つ
この例では
色をビューの背景として参照しています
前景でも画面ソースでも構いませんが
色をDrawableとして参照しています
内部的には 属性システムが
この色をinflateして
ColorDrawableにラップします
でも色をColorStateListに設定すると
うまくいきません

English: 
And we can use that
functionality of the default
color to have that single
item be the always color used. 
So here we're going to have
pointed to a theme called
colorOnPrimary. 
And so we can actually use
the Android modulation,
which I mentioned earlier, which
is a fraction from zero to one. 
And what that will do is that
will take the alpha value
from the color and then
multiply it by whatever fraction
you gave it. 
And that way we get 25%
colorOnPrimary here. 
You can copy this file to be
as many as you need on all
the different alpha values. 
And another gotcha of
the color state lists
is something like this. 
So here we have a color which
we're actually referencing
as a background on a view. 
It doesn't have
to be background. 
It could be foreground. 
It could be image source--
whatever it is. 
But a referencing a
color as a drawable. 
Now internally, what happens
is that the attribute
system will inflate
that color and wrap it
into a ColorDrawable. 
And that's what
actually gets set. 
But if you try and
do this instead,
where you're actually just set
that to be a color state list,
that won't work. 

Indonesian: 
Kita bisa gunakan
fungsi itu dari warna default
item tunggal itu selalu
menjadi warna yang dipakai. 
Jadi kita akan fokus
pada tema yang disebut
colorOnPrimary. 
Kita bisa gunakan
modulasi Android,
yang saya sebutkan tadi,
yaitu pecahan antara nol dan satu. 
Yang akan dilakukannya adalah
mengambil nilai alfa
dari warna itu dan mengalikannya
dengan pecahan yang Anda berikan
Jadi, kita mendapatkan 25%
colorOnPrimary di sini. 
Anda bisa salin file ini
sebanyak yang dibutuhkan
di semua nilai alfa yang berbeda. 
Fitur lain dari
daftar status warna
adalah hal seperti ini. 
Di sini ada warna yang
sebenarnya kita rujuk
sebagai latar belakang tampilan. 
Tak selalu
latar belakang. 
Bisa latar depan,
sumber gambar--
apa saja. 
Namun merujuk warna
sebagai drawable. 
Secara internal, yang terjadi
adalah sistem atribut
akan mengembangkan warna
itu dan membungkusnya
ke dalam ColorDrawable. 
Dan itulah yang sebenarnya
ditetapkan. 
Tapi, jika mencoba dan melakukan ini,
yakni menetapkannya
menjadi daftar status warna,
itu tak akan berfungsi. 

Spanish: 
Y podemos usar esa función
de color predeterminado
para que un elemento
siempre tenga el mismo color. 
Aquí apuntaremos a un tema
llamado colorOnPrimary. 
Podemos usar la modulación de Android
que mencioné antes,
que es una fracción de cero a uno. 
Tomaremos el valor Alfa del color
y lo multiplicaremos por la fracción
que le asignaron. 
Así, obtenemos 25% de colorOnPrimary. 
Pueden copiar este archivo
para que aparezca en todos los que necesiten
en los diferentes valores Alfa. 
Otro aspecto de las listas
de estados de color es esto. 
Tenemos un color
al que hacemos referencia
como fondo en una vista. 
No tiene que ser de fondo,
puede ser de primer plano. 
Podría ser una fuente de imágenes
o cualquier cosa,
pero que haga referencia a un color
como elemento. 
Lo que sucede internamente
es que el sistema de atributos
inflará ese color y lo envolverá
en un ColorDrawable. 
Eso es lo que se configura. 
Pero si intentan en cambio hacer esto,
donde configuran que sea una lista
de estados de color,
no funcionará,

Chinese: 
我们可以使用这个默认颜色的功能
来让那个单一项成为默认被使用的颜色
这里我们要指向一个主题 名叫 colorOnPrimary
我们可以使用我之前提到过的 Android 调整
这是一个从0到1的取值范围
它的作用是 从颜色中获取 alpha 值
再乘以你给予它的取值
然后我们就得到了 25% 的 colorOnPrimary
你可以把这个文件复制任意多次
应用在你需要的所有 alpha 值中
另一个颜色状态列表方面的小技巧是：
这里有一个被我们在视图中作为背景引用的颜色
它不必是背景
也可以是前景 或者图像源 等等
不过 我会把颜色作为 Drawable 来使用
在内部 属性系统会填充那个颜色 
并将其封装为 ColorDrawable
然后再把它设置好
不过 如果你这样做的话
也就是将其设置为颜色状态列表
那样做不行

Portuguese: 
Podemos usar
essa funcionalidade de cor padrão
para ter esse item como
a cor que é sempre usada. 
Aqui indicaremos um tema chamado
"colorOnPrimary". 
Podemos usar a modulação do Android,
que eu mencionei antes, que é uma
fração entre zero e um. 
O que ela fará é pegar o valor Alfa
da cor e multiplicá-lo pela fração
que você deu para ele. 
Teremos 25% de "colorOnPrimary" aqui. 
Você pode copiar o arquivo
quantas vezes precisar
nos valores Alfa. 
Outra coisa capciosa das listas
de estados é algo assim. 
Aqui há uma cor referenciada
como plano de fundo em uma visualização. 
Ela não precisa estar no fundo. 
Pode ser em primeiro plano,
a origem da imagem etc. 
Há uma referência a uma
cor como um drawable. 
Internamente, o que acontece
é que o sistema de atributos
aumentará e aplicará essa cor
em um ColorDrawable. 
É isso o que realmente acontece. 
Se tentar fazer isso,
definindo tudo como uma lista
de estados de cores,
não vai funcionar...

Korean: 
기본 색상이라는 기능을 사용해
단일 항목을
항상 사용되는 색상으로 만들겠습니다
colorOnPrimary라는 테마를
사용하도록 하죠
제가 이전에 언급했던
0에서 1사이의 분수인
Android 모듈레이션을
사용할 수 있습니다
이 경우 color에서 알파 값을 가져와
입력되는 분수와
곱합니다
이러한 방식으로 25%
colorOnPrimary가 생겼습니다
다양한 알파 값에
이 파일을 필요한 만큼
복사할 수 있습니다
color state list에
대한 또 다른 정보는
이것입니다
뷰에서 백그라운드로 참조하는
색상이 있습니다
반드시 백그라운드일
필요는 없습니다
포그라운드도 가능하죠
이미지 리소스 등
무엇이나 가능합니다
하지만 색상을 드로어블로 참조합니다
이제 이 속성 시스템이
색상을 확장하고
ColorDrawable로
래핑합니다
이렇게 설정이 되죠
하지만 대신
이렇게
color state list로 설정하면
작동하지 않습니다

Chinese: 
这是因为 在内部 颜色可绘制对象是没有状态的
所以 它不知道要如何处理颜色状态列表
这个做法在 Android 10 及以后的版本中有效
因为我们加入了一个新的类 ColorStateList Drawable
这个小技巧是大家需要在不同 API 等级中频繁测试的
因为 不是所有东西都总是会管用
想要在所有 API 等级中获取相同的效果 一个变通的做法是
使用背景着色
我们会使用纯色设置一个矩形
我喜欢使用洋红色 因为如果主题设置失败
洋红色会格外显眼
此外 如果我们使用背景着色指向那个颜色状态列表
那么我们也会获得同样的效果
关于颜色的话题就讲到这里
下面我们来讲讲组织方面的内容
我为大家准备了三个小技巧
第一 命名你的资源
我几乎可以保证 你的应用中肯定有这些内容
也就是各种颜色资源
它们是按照你准备使用的主题属性来命名的
这里有 color_primary
color_primary_dark
color_accent 
你的主题大概会是这个样子

Spanish: 
porque internamente el elemento de diseño
de color no tiene un estado. 
Por lo que no sabe qué hacer
con la lista de estados de color. 
Sí funcionará en Android 10
y versiones posteriores
porque hay una nueva clase
llamada elementos de diseño
de lista de estados de color. 
Esto es algo que siempre
deben probar en diferentes niveles de API
porque no siempre todo funciona. 
Una solución que pueden usar
para tener el mismo efecto
que funcione
en todos los niveles de API es esta. 
Usaremos el ajuste de tono de fondo. 
Definiremos un rectángulo
con un color sólido. 
Me gusta usar magenta
porque es bastante obvio
cuando no es un tema. 
Luego, si usamos el ajuste de tono de fondo
para apuntar a esa lista de estados de color,
nos dará el mismo efecto. 
Eso es todo sobre el color. 
Ahora hablaremos
sobre elementos organizativos. 
Tengo tres sugerencias al respecto. 
La primera es nombrar sus recursos. 
Estoy seguro de que tienen algo así
en su app:
un número de recursos de color
cuyos nombres son los atributos
de tema en los que los usarán. 
Tengo color_primary. 
color_primary_dark y color_accent. 
Y probablemente los temas sean así,

Korean: 
color drawable은
스테이트풀이 아니기 때문이죠
그래서 color state list로
무엇을 해야 하는지도 모릅니다
이제 color state list drawable이라는
새로운 클래스가 있기 때문에
Android 10 이상에서
작동됩니다
또 다른 정보는
다양한 API 레벨에서
테스트해봐야 한다는 것입니다
예외 없이 늘
작동하는 게 아니기 때문이죠
모든 API 레벨에서
동일한 효과를 얻기 위해
참고할 수 있는 해결책은
이것입니다
바로 배경 착색을 사용하는 것이죠
단색으로 채운 직사각형을 만들겠습니다
테마 설정이 되지
않았을 때 분명하게 보이는
자홍색을 사용합니다
color state list를 가리키는
배경 착색을 사용하면
동일한 효과가
생깁니다
여기까지 색상에 대해 다루었습니다
이제 조직에 관련된 내용을 다루겠습니다
가장 중요한 팁
세 가지를 드리려고 합니다
첫 번째는 리소스 명명입니다
이와 비슷한 것이
여러분의 앱에 있을 텐데요
테마 속성에서 명명된
여러 가지 색상 리소스입니다
이것을 사용할 겁니다
여기에 color primary,
color primary dark,
color accent가 있습니다
그리고 이와 비슷하게 보이는

Indonesian: 
Karena secara internal, drawable
warna tidak bersifat stateful. 
Jadi tak tahu apa yang harus dilakukan
dengan daftar status warna. 
Ini akan berfungsi
di Android 10 ke atas,
karena ada class baru yang disebut
drawable daftar status warna. 
Jadi ini adalah satu
tips untuk Anda,
agar selalu menguji
di level API berbeda,
karena tidak semua
akan selalu berfungsi. 
Satu trik yang
bisa dilakukan
untuk mendapatkan efek yang sama
yang berfungsi di semua level API
adalah ini. 
Kita gunakan
pewarnaan latar belakang. 
Kita akan tetapkan kotak
dengan warna solid. 
Saya pakai magenta
sebab akan sangat terlihat
saat belum bertema. 
Lalu kita pakai tinta
latar belakang yang menunjuk
ke daftar status warna itu,
dan efek yang didapat tetap sama. 
Itulah beberapa hal
tentang warna. 
Sekarang mari kita membahas
tentang item organisasi. 
Saya punya tiga tips teratas
untuk Anda di sini. 
Pertama, tentang penamaan
resource Anda. 
Saya hampir yakin
bahwa Anda punya sesuatu
seperti ini di aplikasi,
yakni sejumlah resource warna
yang diberi nama sesuai
atribut tema
yang akan digunakan untuk
warna itu. 
Ada color_primary,
color_primary_dark, color_accent. 
Lalu tema Anda,

Portuguese: 
porque, internamente,
ColorDrawable não é dinâmico. 
Ele não sabe o que fazer com
uma lista de estados de cores. 
Mas funcionará no Android 10
e versões posteriores, porque há a classe
"ColorStateListDrawable". 
Isso é algo que
precisa ser testado
em vários níveis da API
porque nem tudo funciona sempre. 
Uma solução alternativa
para ter o mesmo efeito
em todos os níveis da API é esta. 
Usar tonalização de plano de fundo. 
Vamos definir um retângulo
com uma cor sólida. 
Gosto de usar magenta, porque
fica óbvio quando esse não é o tema. 
Se usarmos a tonalização apontando
para essa lista de estado de cores,
teremos o mesmo efeito. 
Chega de cores. 
Agora, vamos falar de organização. 
Tenho três dicas. 
A primeira é a nomeação dos seus recursos. 
Tenho certeza que vocês têm algo
assim no seu app, recursos de cores
com nomes
dos atributos de temas que vai usar. 
"color_primary",
"color_primary_dark", "color_accent". 
Quanto ao tema,
devem ter algo assim:

English: 
And that is because internally,
color drawable isn't stateful. 
So it doesn't actually know what
to do with a color state list. 
Now this will actually
work on Android 10
and above, because we have a new
class called color state list
drawable. 
And so this is
one gotcha for you
that should always test
on different API levels,
because not everything
always works. 
So one workaround
you can actually
use to get the same effect
that works on all API levels
is this. 
We going to use
background tinting. 
So we'll actually set a
rectangle with a solid color. 
I like to use magenta because
it's very obvious when
this isn't themed. 
And then if we use
background tint pointing
to that color state list,
and that will actually
give you the same effect. 
So that's kind of some
stuff about color. 
Now let's talk about some
organizational stuff. 
So I've got three top
tips for you here. 
The first one is about
naming your resources. 
So I can almost guarantee
you've also got something
like this in your app, which
is a number of color resources
which are named on
theme attributes
you're going to use them. 
So we've got color primary,
color primary dark,
color accent. 
And then your theme--

Japanese: 
内部的にColorDrawableは
ステートフルではないため
ColorStateListの扱い方が
分からないのです
しかし Android 10以降では
ColorStateListDrawable
という新クラスで処理できます
必ず異なるAPIレベルでテストしてください
すべてのAPIレベルで機能させる
ひとつの策は
backgroundTintを使うことです
塗りつぶした四角を設定し
色はテーマでないとすぐに分かる
マゼンタにしています
backgroundTintで
ColorStateListを参照すると
同じ効果が得られます
以上が色でした
次のトピックは 整理方法です
３つの役立つアドバイスがあります
１つ目はリソースの命名についてです
皆さんのアプリにも
こんな色のリソースがあるのでは？ 
使うテーマ属性が名前になっています
color_primary、color_primary_dark
color_accentがあります

Portuguese: 
um tema apontando
para um recurso de cor com o mesmo nome. 
Isso não é bom...
porque estamos dando um
significado semântico
ao que é apenas o valor de uma cor. 
São só valores A, R, G e B.
São só cores. 
Mas damos um nome
e um significado semântico. 
O bom é ter um nome literal. 
Se você tem uma cor de marca...
nesse caso, azul, ou qualquer outra,
dê esse nome. 
Se estiver usando o
sistema de cores do Material Design,
que define cores em termos de tons...
Vejam o azul 500 do Material Design. 
Não precisa ser Material Design,
mas se você tem algo como um
sistema de tons, isso é ótimo também. 
O que descrevemos aqui não é
um problema apenas em temas e estilos. 
É um problema de
engenharia de software. 
Para mim, é como
interface versus a implementação...
É semelhante ao que Nick falou,
sobre temas serem
a configuração do sistema
de cores para seu app. 
O resto é implementação. 
As interfaces são o tema. 
É isso o que você sempre

Japanese: 
テーマはこのようになっていて
同じ名前の色リソースを参照しています
これは好ましくありません
色の値に セマンティックな
意味を持たせているからです
単なるARGBの値で指定した色ですが
名前と意味を持たせてしまっています
名前はリテラル名にします
ブランド色があれば
ここでは青ですが
そう名付けます
マテリアルなどの色システムは
色をトーンで定義します
material_blue_500と
なっています
マテリアルでなくても
トーンシステムがあれば大丈夫です
ここで説明したのは
テーマやスタイルだけでなく
ソフト開発全般の問題です
インターフェースか実装かですね
テーマはアプリの色を決める
システム構成のようなもので
その下にあるのは 単なる実装です
インターフェースはテーマです

Chinese: 
主题指向同名的颜色资源
这其实不是我们想要的
因为 我们获取了颜色值的语义含义
这个含义由 A R G B 四个值组成
这只是一种颜色而已
但是 我们要给它命名 并赋予它语义含义
我们真正想做的是 给它一个文字名称
我们有一个品牌色彩 在本例中是蓝色
但其实可以是你想要的任意颜色
我们就这样为它命名
或者 如果你使用 Material 颜色系统的话
它会为你按照色调来定义颜色
这里是 Material 蓝色 500
这个颜色并不一定要是 Material 的
但如果你有一个色调系统的话 那就很好
我们在这里所描述的东西
在主题和样式方面并不存在太大的问题
问题出在综合软件工程层面
至少对我来说 它意味着界面和实现的对立
类似 Nick 刚才讲过的
主题应该是你的应用的颜色系统配置
而在它之下的所有东西都只是实现而已
界面就是你的主题 

Spanish: 
donde un tema apunta a un recurso de color
que tiene el mismo nombre. 
Esto no es recomendable
porque le damos significado semántico
a algo que solo debe ser valor de color. 
Es simplemente un valor A, R, G y B.
Es un color. 
Pero le damos un nombre
y significado semántico. 
Lo recomendable es asignarle
un nombre literal. 
En este caso, tengo un nombre, azul. 
Pueden usar el que quieran. 
S usan material o un sistema de color
donde se definen colores por tonos,
pueden usar, por ejemplo,
material_blue_500. 
No tiene que ser "material"
pero si tienen un sistema de tonos,
es genial también. 
Lo que describí aquí
no es realmente un problema
solo en temas y estilos,
sino un problema en ingeniería
de software en general. 
Se trata de interfaz
versus implementación. 
Es similar a lo que decía Nick antes
acerca de que los temas
deberían ser la configuración
del sistema de color de su app. 
Y todo lo que está debajo
es simplemente implementación. 
Las interfaces deberían ser su tema,

Indonesian: 
Anda mungkin punya
sesuatu seperti ini,
mengarah ke.. tema
sebenarnya mengarah
ke resource warna
dengan nama yang sama. 
Kita tidak benar-benar
menginginkannya. 
Alasannya karena kita
mendapatkan makna semantik
untuk apa yang hanya berupa nilai warna. 
Ini cuma [?  sebuah ?]  nilai A, dan
R, G, dan B.
Itu cuma warna. 
Namun kita memberinya nama
dan makna semantik. 
Yang ingin kita lakukan
adalah memberi nama literal. 
Jika ada semacam
warna merek,
dalam hal ini biru,
bisa berupa warna apa saja,
beri nama seperti itu juga. 
Atau jika sesuatu seperti material,
sistem warna tempat Anda
mendefinisikan warna
dalam hal corak,
di sini ada material_blue_500. 
Tidak harus selalu
material,
Tapi jika punya sistem corak,
itu bisa sangat membantu. 
Yang kami sampaikan
bukan cuma masalah
dalam tema
dan gaya saja,
ini adalah masalah
rekayasa software umum. 
Bagi saya, ini seperti
antarmuka versus implementasi,
sama seperti
pembicaraan Nick tadi,
dalam tema seperti itu
seharusnya ada jenis konfigurasi
sistem warna untuk aplikasi Anda. 
Dan hal lainnya di bawahnya
hanyalah implementasi. 
Jadi, antarmuka akan jadi tema,
itulah yang selalu digunakan

Korean: 
테마가 있는데
동일한 이름의 색상 리소스를
가리킵니다
사실 이것은 필요 없습니다
의미론적인 의미를
단순한 색상 값에 부여하기 때문이죠
이것은 단지 ARGB 값입니다
색상일 뿐입니다
하지만 여기에 이름과
의미론적인 의미를 부여하려고 합니다
문자적인 이름을 부여하고자 하죠
이 경우 브랜드 컬러인 파랑이라든지
필요한 색상이라면 무엇이든
색상대로 이름을 붙이세요
머티리얼과 같은 것을 사용하는 경우
색상 시스템에서는
색상을 색조로 정의합니다
여기에는 material blue 500이 있네요
꼭 머티리얼일 필요는 없습니다
색조 시스템 등이 있다면 그것도 좋습니다
여기에서 설명드린 내용은
테마와 스타일에서는 문제가 되지 않습니다
일반적인 소프트웨어
엔지니어링에서 문제가 되죠
제 경우에는
인터페이스와 구현 간의 문제입니다
닉이 아까 말한 것과 유사한데요
테마가 앱의
색상 시스템 구성이 되어야 하는
식이죠
그리고 그 아래에 있는
모든 것이 구현입니다
따라서 인터페이스가
여러분의 테마가 됩니다

English: 
you've probably got something
like this, where we've got--
it points-- a theme
actually pointing
to a color resource
of the same name. 
Now we don't actually want this. 
And the reason is because
we're getting semantic meaning
to what is just a color value. 
It's just [?  an ?]  A, an
R, a G, and a B value. 
That's just a color. 
But we're giving it a name
and a semantic meaning. 
What we really want to do
is give it a literal name. 
So if you've got
like a brand color--
in this case, a blue-- it could
be whatever you need it to be--
name it as so. 
Or if you're using
something like materials,
a color system where you have--
it defines colors
in terms of tones--
here we got material blue 500. 
It doesn't have
to be a material,
but if you've got like a tone
system, that's great too. 
What we've described
here it isn't really
a problem just in
themes and styles,
it's a problem in general
software engineering. 
It's kind of-- for
me, anyway, it's
interface versus
the implementation--
it's kind of similar to
what Nick was talking
about earlier, in
that themes should
be kind of the color system
configuration for your app. 
And anything else underneath
it is just implementation. 
So interfaces would be your
theme-- that's what you always

Korean: 
리소스를 확보하기 위해
거쳐야 하는 것이죠
그 아래에는 리소스와
색상, 드로어블
디멘션 등이 있습니다
그렇기 때문에 첫 번째 규칙은
리소스에 문자적인 이름을 사용하는 것입니다
두 번째 규칙은 일관성 있는
스타일 이름을 사용하는 것입니다
첫 번째와 조금 다르죠
여기를 보시면
스타일이 있는데요
AppTheme와 Toolbar입니다
이름을 보면 확실히 알 수 있죠
무엇에 쓰이는지 추측할 수 있습니다
AppTheme은 테마일 것이고요
Toobar는 툴바 위젯 스타일 같습니다
세 번째 스타일인
BlueThemedToolbar을 추가하겠습니다
이게 무엇인지 감이 잘 안 잡히네요
테마일까요? 
스타일일까요? 
잘 모르겠죠
닉이 아까 언급한 것처럼
테마와 스타일에는 항상
style 태그를 사용해야 하기 때문에
유형을 제대로 파악할 수가 없네요
이것의 정체를 어떻게 알 수 있을까요? 
지금 하고자 하는 것은
이름을 붙이는 규칙을 생성하는 것입니다
명명 시스템에 유형을 적용하는 것이죠
이렇게 하면 용도를 알 수 있죠
이제 프레임워크에서 사용하는 것과

Indonesian: 
untuk memperoleh resource. 
Lalu, di bawahnya,
ada resource Anda,
warna, permasalahan,
apa pun itu, dimensi. 
Itulah aturan pertamanya,
gunakan nama literal untuk resource. 
Aturan kedua,
gunakan nama gaya yang konsisten,
yang sedikit berbeda. 
Jadi, saya yakin Anda
punya sesuatu seperti ini,
tempat Anda memiliki
gaya di sini,
satu disebut AppTheme,
satunya Toolbar. 
Sekarang cukup jelas
dari penamaannya di sini. 
Anda kemungkinan bisa menebak
apa maksudnya. 
AppTheme --
mungkin sebuah tema. 
Toolbar -- kemungkinan sebuah gaya
widget toolbar. 
Tapi sekarang saya ingin menambahkan
yang ketiga, BlueThemedToolbar. 
Tidak terlalu jelas kan apa maksudnya. 
Tema? 
Atau gaya? 
Entah. 
Ini tidak jelas sebab
kita tak tahu pasti jenisnya
di sini karena tema dan gaya,
seperti yang dikatakan Nick,
kita selalu harus menggunakan
tag gaya. 
Siapa yang tahu apa maksudnya itu? 
Jadi, yang harus
dilakukan adalah
membuat beberapa aturan
yang membuat nama. 
Kita harus sematkan jenis
ke sistem penamaan. 
Jadi Anda sungguh
bisa melihat fungsinya. 

Portuguese: 
passa para ter um recurso. 
Abaixo disso, você tem os seus recursos...
cores, drawables,
outros elementos, como dimensões. 
Essa é a primeira regra: use
nomes literais para seus recursos. 
A segunda é: use nomes
de estilos consistentes. 
O que é um pouco diferente. 
Mais uma vez,
sei que vocês têm algo assim,
estes estilos:
"AppTheme" e "Toolbar". 
Pelos nomes, fica óbvio. 
Vocês podem imaginar o
que são esses estilos. 
"AppTheme", talvez um tema. 
"Toolbar", um estilo
de widget de barra de ferramentas. 
Agora vou adicionar um terceiro estilo:
"BlueThemedToolbar". 
Agora não é tão óbvio. 
Um tema?  Um estilo? 
Não fica claro, não
sabemos exatamente o tipo
porque, nos temas e estilos,
temos sempre que usar a tag apropriada. 
Quem sabe o que é isso? 
O ideal é criar regras que gerem nomes. 
Precisamos incorporar
um tipo ao sistema de nomeação
para ver a função. 

Chinese: 
你总是会通过它来找到资源
在它之下 你的资源
包括颜色 可绘制对象 等等 
这就是第一条规则 使用文字名称来命名你的资源
第二条规则是 使用一致的样式名称
这和第一条有所差异
相信大家都看到过这样的东西
多个样式 一个叫 AppTheme 一个叫 Toolbar
从命名方式就可以看出 
它们的用途是什么 很明显
AppTheme 大概就是某种主题
Toolbar 大概就是工具栏 widget 样式
现在我要加入第三个样式：BlueThemedToolbar
它的用途并不是太明显
它是主题还是样式？谁知道呢
我们不清楚 是因为我们不知道它的类型
因为 正如 Nick 所说 主题和样式
我们总是要使用 style tag
谁知道它到底是什么呢？ 
你真正想做的就是 创建一些规则 
用规则来创建名称
我们需要将类型嵌入命名系统
这样我们就能看出它到底是什么了

English: 
go through to get a resource. 
And then underneath you'll
have your resources--
so your colors, your
troubles, your--
whatever else it
is-- dimensions. 
So that's the first rule-- use
literal names your resources. 
The second rule is using
consistent style names,
which is slightly different. 
So again, I'm sure
you've got something
like this, where you
have these styles here,
one called AppTheme,
one called Toolbar. 
And now it's pretty obvious
from the naming here. 
You can probably guess
what they're about. 
AppTheme-- probably a theme. 
Toolbar-- probably a
toolbar widget style. 
But now I'm going to add a third
one called BlueThemedToolbar. 
Now it's not obvious
what this actually is. 
Is it a theme? 
Is it a style? 
Who knows. 
Now it's unclear because we
don't actually know the type
here because themes and styles--
as Nick mentioned earlier--
we always have to
use the style tag. 
Who knows what it actually is? 
So what really you
want to do is create
some rules that create names. 
What we have to do is embed
type into the naming system. 
And that allows you to
actually see what it's for. 

Japanese: 
リソースはテーマを通じて取得し
その下にリソース
すなわち 色、Drawable
ディメンションなどがあります
ヒント１：
リソースにはリベラル名を使うこと
ヒント２：
一貫性のあるスタイル名を使うこと
次のようなスタイルを並べた経験が
あるでしょう
２つあり
AppThemeとToolbarです
名前から これらが何かは
すぐに見当がつきます
AppThemeはテーマで
Toolbarは
ツールバーウィジェット用でしょう
これにBlueThemedToolbarを
追加します
これだとテーマなのかスタイルなのか
はっきりしません
なぜなら テーマもスタイルも
必ずstyleタグを使うので
タイプがはっきりしません
なので命名規則を定めて
名前にタイプを含めれば
用途が明快になります

Spanish: 
es decir, a lo que recurren
para obtener un recurso. 
Y debajo tendrán los recursos:
los colores, los problemas, las dimensiones. 
Esa es la primera regla:
usen nombres literales para los recursos. 
La segunda es usar nombres
de estilos coherentes,
lo cual es algo diferente. 
Seguro tienen algo como esto,
con estos estilos,
uno llamado AppTheme y otro Toolbar. 
Por el nombre, resulta bastante obvio. 
Pueden adivinar de qué se trata. 
AppTheme probablemente sea un tema. 
Toolbar, puede ser
un estilo de widget de barra de herramientas. 
Pero ahora agrego un tercero
llamado BlueThemedToolbar. 
No resulta obvio qué es. 
¿Es un tema? 
¿Es un estilo? 
Quién sabe. 
No es claro porque
no sabemos de qué tipo es,
ya que los temas y los estilos, 
como dijo Nick,
siempre usan la etiqueta de estilo. 
¿Quién sabe qué es realmente? 
Lo que hay que hacer
es crear reglas que creen nombres. 
Tenemos que incorporar el tipo
en un sistema de nombres. 
Eso les permite ver para qué sirve. 

Spanish: 
Aquí usaremos
lo que usa el marco de trabajo,
así como AppCompat y AndroidX
y el resto,
que es un esquema de nombres
delimitado por puntos. 
El primer grupo será el tipo de estilo. 
Temas, estilos, podrían ser apariencias,
superposiciones de temas,
apariencia de formas, 
es decir, el tipo de estilo que usarán. 
Luego es el nombre del grupo. 
En general, sería el nombre de la app. 
Pero podría ser el nombre del módulo
si tienen una app modular. 
Cualquier agrupación lógica para los estilos. 
Lo siguiente es el nombre de subgrupo. 
Generalmente, se usa para widgets. 
Sería el nombre de clase de la vista
para la que están creando el estilo. 
Lo último es opcional. 
Es la variante. 
Si tienen una variante 
de un estilo principal,
por ejemplo, Theme. AppName. Blue
es la variante del tema principal,
esa sería la forma. 
Y se pueden repetir. 
Pueden tener variantes de variantes, etcétera. 
Si volvemos a nuestros ejemplos,
se vería así. 

Portuguese: 
Aqui vamos usar o que está no framework
e também no AppCompat, AndroidX etc. 
É um esquema de nomeação
delimitado por um ponto. 
O primeiro grupo será o tipo de estilo. 
Temas, estilos, aparências
de texto, sobreposições de temas,
aparência de formas...
É o tipo de estilo que vamos usar. 
O outro é nome de grupo. 
Seria o nome do seu app. 
No caso de apps modulares,
poderia ser o nome do módulo. 
Qualquer que seja o agrupamento
lógico dos seus estilos. 
O próximo é seu nome de subgrupo. 
Normalmente, é usado para widgets. 
Poderia ser o nome
da classe da visualização
para a qual você está criando um estilo. 
O último é opcional,
é a variação. 
Uma variante de um estilo principal...
por exemplo, Theme. AppName. Blue
é uma variação do tema principal. 
Essa será uma maneira. 
E tudo pode ser repetido. 
Você pode ter variantes de variantes etc. 
Se voltarmos para os exemplos,
eles seriam algo assim. 

Korean: 
AppCompat과 Android X 그리고
나머지 전체를
사용하려고 합니다
명명 체계로서 마침표로 구분됩니다
첫 번째 그룹은 스타일 유형입니다
테마와 스타일은
텍스트 표시, 테마 오버레이,
모양 표시 등
사용하고자 하는 스타일의 유형입니다
다음은 그룹 이름입니다
보통 앱의 이름이 되죠
모듈식 앱이 있다면
모듈 이름이 될 수도 있습니다
무엇이 되었든
스타일에 대한 논리적 그룹화입니다
다음은 하위 그룹 이름입니다
보통 위젯에 사용되죠
스타일을 지정할 대상이 되는 뷰의
클래스 이름이 될 것입니다
나머지는 선택 사항으로
가변형입니다
주요 스타일의 변이형이 있는 경우
예를 들어 AppName. Blue라는 테마가 있다면
이것이 주요 테마의 변이형입니다
이것이 하나의 방법입니다
이것들은 반복될 수 있습니다
따라서 변이형의 변이형
등등이 생길 수 있죠
예시로 다시 돌아와보면
이와 같은 내용을 확인할 수 있습니다

Japanese: 
ここではフレームワークやAndroidXと
同じ命名規則を使用します
この規則では名前をピリオドで区切ります
最初はスタイルのタイプで
テーマ、スタイル、テキストの外観
テーマオーバーレイ、シェイプの外観などです
次はグループ名
つまりアプリ名です
モジュール型アプリならモジュール名になります
スタイルの論理的なグループです
次はサブグループ名で
ウィジェットに使用します
スタイルを作成するビューの
クラス名となります
最後は任意の
バリアントです
メインスタイルのバリアントは
Theme. AppName. Blue
という名前になります
これを繰り返して
バリアントのバリアントも作れます
例に戻ると次のようになります

Indonesian: 
Jadi, di sini kita akan gunakan
[? framework?] [ TIDAK TERDENGAR]
dan juga [? AppCompat?] 
dan Android X,
yang merupakan skema penamaan,
yang dipisahkan dengan titik. 
Jadi, grup pertama kita
adalah jenis gaya. 
Tema, gaya, bisa jadi tampilan
teks, overlay tema,
tampilan bentuk,
apa saja,
ini adalah jenis gaya
yang akan Anda gunakan. 
Selanjutnya nama grup. 
Ini biasanya akan jadi
nama aplikasi Anda. 
Tapi, jika ada aplikasi
yang amat modular,
ini bisa jadi cuma nama modul. 
Apa pun pengelompokan logis
untuk gaya Anda. 
Selanjutnya adalah nama
subgrup Anda. 
Ini biasanya digunakan
untuk widget. 
Ini akan menjadi
nama class tampilan
yang gayanya Anda buat. 
Yang terakhir opsional. 
Ini adalah varian. 
Jika Anda punya varian
gaya utama,
katakanlah Anda punya tema
[? bernama?]  AppName. Blue,
itu adalah varian
tema utama. 
Jadi ini akan [? jadi?] 
sebuah cara. 
Dan dapat diulang. 
Jadi, Anda bisa punya varian dari
varian, dan seterusnya. 
Jika kita kembali ke
contoh di sini,
akan ada sesuatu
yang seperti ini. 

Chinese: 
这里我们使用一些用户框架
AppCompact 等等
这是一个命名方案 被周期所限定
我们的第一个群组是样式类型
主题 样式 文本外观 主题叠加 形状外观 等等
这就是我们要使用的样式类型
下面来看群组名称
这里通常采用应用名称
但如果你的应用是高度模块化的 也可能是模块名称
无论你的样式的逻辑组合是什么
接下来就是你的小群组名称
这个名称通常用于 widget
也就是你为之创建样式的视图类的名称
最后一个名称 变量名 是可选的
如果你的主样式有一个变量
比如 theme.appname.blue
这就是主题的一个变量
这个变量是可以重复的
也就是说 变量也可以有变量 等等
回到我们的例子 它会变成这个样子

English: 
So here we're going to use what
[INAUDIBLE] [?  framework ?] 
uses--
and also [?  AppCompat ?] 
and Android X
and all the rest of them--
which is a naming scheme,
which is delimited by a period. 
So our first group
will be the style type. 
So themes, styles, could be text
appearances, theme overlays,
shape appearance--
whatever it is,
it's the type of style
you're going to be using. 
The next is the group name. 
So this would typically
be your app name. 
But it could be if you
have a really modular app,
could be just the module name. 
Whatever is the logical
grouping for your styles. 
The next one is
your sub-group name. 
So this is typically
used for widgets. 
So it would be the
class name of the view
that you're actually
creating a style for. 
And then last one is optional. 
It's the variance. 
So if you've got a
variant of a main style--
so say you got a theme
[?  called ?]  app name dot blue,
that's a variant
of the main theme. 
So this will [?  be a ?]  way. 
And these can be repeated. 
So you can have variants of
variants, blah, blah, blah. 
So if we go back to
our examples here,
they would become something
like this is instead. 

Portuguese: 
Vai de "AppTheme" para 
"Theme. MyApp"
e por aí vai
para os estilos de widgets. 
O importante aqui é saber que
a notação de ponto não é
um tipo de mágica no Android. 
Temos um sistema
herdado implícito baseado nele. 
Aqui,
"Widget. MyApp. Toolbar. Blue"
herda implicitamente o do meio
por causa da anotação de ponto. 
Está no sistema. 
O sistema de nomeação
se destaca na revisão do código. 
Aqui temos um exemplo
em que, acidentalmente,
uso um tema como
um estilo de visualização,
o que não é bom. 
Aqui, Nick pediu a revisão do código
porque estamos usando esse item
e o nome incorpora esse tipo
de informação,
podemos ler a partir do nome. 
Na revisão de código, fica muito melhor. 
Podemos até criar uma regra do lint
para pegar
certos aspectos automaticamente. 
Essa foi nossa segunda dica. 
A terceira e última 
é a divisão de arquivos. 

Japanese: 
「AppTheme」から
「Theme. MyApp」に変わっています
ここでのポイントですが
Androidシステムの仕組み上
ピリオド区切りに基づいた
暗黙の継承があります
このWidget. MyApp. Toolbar. Blueは
上のものを暗黙に継承しています
この命名規則が本当に役立つのは
コードレビューです
この例では 誤ってテーマを
スタイルに設定しています
これは明らかにまずいですね
ニックがコードレビューを要求します
名前に情報が含まれているので
名前から読み取れます
コードレビューがずっと楽になり
Lintルールを作って自動で補足もできます
３つ目となる最後のヒントは
ファイルの分割です

Indonesian: 
Jika Anda berpindah dari bingkai
aplikasi ke Theme. MyApp
lalu begini, begitu,
untuk gaya widget. 
Yang perlu diketahui di sini
adalah notasi titik sebenarnya
sejenis keajaiban dalam
sistem [?  Android ?], 
dan kita punya sistem turunan
implisit berdasarkan hal ini. 
Jadi di sini,
Widget. MyApp. Toolbar. Blue
sebenarnya secara implisit
diturunkan dari yang di tengah
karena notasi titik. 
Ini merupakan bawaan sistem. 
Satu tempat
yang paling menonjol,
sistem penamaan ini,
sesuatu seperti ini. 
Ini adalah tinjauan kode. 
Ini ada contoh,
saat saya tak sengaja
menggunakan tema
sebagai gaya tampilan,
yang jelas tidak bagus, seperti
yang sudah kita lakukan tadi. 
Ini, Nick menyebutnya
tinjauan kode,
karena kita sebenarnya
menggunakannya,
dan nama menyematkan jenis
informasi itu ke--
kita sebenarnya bisa baca
dari namanya. 
Jadi [? kita?] [? menyebabkan?] 
tinjauan kode itu
jauh lebih baik. 
Kita bahkan bisa
tulis aturan lint di sini
agar benar-benar mendapatkannya
secara otomatis. 
Dan contoh ketiga,
itu tips teratas kedua kami. 
Dan yang ketiga,
yang terakhir,
adalah memisah file. 

Spanish: 
Cambian de app frame a Theme. MyApp,
etc.,  para los estilos de widgets. 
Lo que deben saber
es que los puntos
son algo mágicos en el sistema Android
y que tenemos un sistema de legado
implícito basado en ellos. 
Aquí Widget. MyApp. Toolbar. Blue
implícitamente hereda el del medio
por la anotación del punto. 
Está compilado en el sistema. 
Un lugar en el que realmente
se destaca el sistema de nombres se ve así. 
Es una revisión de código. 
Aquí tenemos un ejemplo
en el que accidentalmente
estoy usando un tema como estilo de vista,
lo cual, como vimos antes, no es bueno. 
Aquí Nick lo llamó "revisión de código"
porque estamos usando un nombre
que incluye el tipo de información
al que hace referencia. 
Hicimos una revisión de código. 
Mucho mejor. 
Incluso podríamos
haber escrito una función lint
para que lo detecte automáticamente. 
Esa fue la segunda sugerencia. 
Y la tercera es dividir los archivos. 

Korean: 
앱 프레임에서
Theme. MyApp으로 넘어가면
위젯 스타일이 이렇게 있죠
여기에서 알아야 할 것은 온점 표시가
Android 시스템에 있는 기능이며
이에 기반한 내재적 상속 시스템이 있다는 것입니다
따라서 Widget. MyApp. Toolbar. Blue는
온점 표시로 인해 가운데 것을
내재적으로 상속합니다
시스템에 내장되어 있죠
제대로 효과를 발휘하는
곳에 하나씩 위치시킵니다
명명 시스템은
이렇게 되어 있습니다
코드 리뷰입니다
이 예시에서는 우연히
테마를 뷰 스타일로 사용했습니다
이전에 확인했듯이 좋은 방법은 아닙니다
닉은 이것을 코드 리뷰라고 했는데요
왜냐하면 그것을 실제로
저희가 사용하고 있고
이름은 관련 정보를 담고 있기 때문에
이름에서 유추할 수 있는 거죠
그래서 저희는 코드 리뷰를
더 잘 이해할 수 있습니다
그리고 린트 규칙을 작성하여
자동으로 파악할 수도 있습니다
세 번째 예시는
두 번째로 중요한 팁입니다
세 번째이자 마지막은 바로
파일 분할입니다

English: 
So if you go from app
frame to theme dot my app
and then blah, blah, blah
for the widget styles. 
The thing here to know is that
the dot notation isn't by--
is actually kind of magic
in the [?  Android ?]  system,
and that we have an implicit
inheritance system based on it. 
So here
Widget. MyApp. Toolbar. Blue
actually implicitly
inherits the middle one
because of the dot notation. 
It's built into the system. 
One by one place where
this really shines--
this naming system--
is something like this. 
It's code review. 
So here we have an example
where I'm accidentally
using a theme as a view style--
which obviously, as we went
through earlier, isn't good. 
So here, Nick has called
it a code review--
because we're
actually using that--
and the name embeds that type
of information into the--
we can actually read
it from the name. 
So [?  we've ?] [?  caused ?] 
that code review--
much better. 
And we could even
write a lint rule here
to actually catch it
for us automatically. 
And the third example--
that's our second top tip. 
And the third one--
our last one-- is
splitting files. 

Chinese: 
如果你从应用框架到 theme. MyApp
widget 样式就会是这样
这里需要了解的是 
.  符号其实在 Android 系统内是很神奇的
我们有一个基于它的隐含的继承系统
这里 Widget. MyApp. Toolbar. Blue
其实隐含继承了中间的这个
原因就是这个内置于系统中的 .  符号
它在命名系统这里大放异彩
这里是代码审查
在这个例子中 我不小心把主题作为视图样式来使用
而根据我们之前的说法 这样做很显然效果并不好
所以 Nick 在代码审核里注意到了这个
因为我们其实就在使用这个命名方法
把类型的信息嵌入其中
我们只看名字就能知道它的含义
所以我们把它叫做代码审核 这下好多了
我们甚至还可以在这里写一条 lint 规则
自动抓取它
我们要分享的第二个小技巧就是这样
第三个 也是最后一个小技巧是 分割文件

Spanish: 
Aquí tenemos la app de I/O de este año. 
Tenemos nuestros temas. 
Tenemos widgets. 
Tenemos nuestras apariencias de texto. 
Luego, tenemos solo un archivo 
llamado styles.xml. 
Eso es bastante malo,
porque es un archivo enorme. 
Creo que tiene 600 líneas. 
Es casi imposible navegar en él. 
Y eso es porque se organizaron
todos los archivos
según el tipo de recurso real. 
Entonces, todos los estilos de style.xml,
las dimensiones, las strings, etcétera,
están bajo el mismo nombre de archivo. 
Lo que podríamos hacer entonces
es lo que llamamos "modo simple". 
Haremos la división
según el propósito del tipo de recurso. 
Entonces podremos nuestros temas
en un archivo llamado themes.xml. 
Ahí solo hay temas
y superposiciones de temas, nada más. 
Luego tendremos type.xml, 
con información como la tipografía,
la apariencia, el tamaño 
y las dimensiones del texto,
los archivos de fuente, tal vez, todo eso. 
Luego tendremos styles.xml. 

Japanese: 
これは今年のI/Oのアプリです
テーマや...
...ウィジェット
テキストの外観が定義され
ファイルはstyles.xml の１つです
そのせいでサイズが大きく
600行ぐらいあるので
中身を追うのは大変です
原因はファイルを
リソースタイプ別に分けているからです
スタイルはstyles.xmlに
ディメンションはdimens.xmlに
...などとしているせいです
ここではそうではなく
イージーモードで行きます
リソースタイプを用途で分類します
テーマはthemes.xmlで
テーマとテーマオーバーレイだけです
type.xmlは
タイポグラフィ テキストの外観
テキストのサイズ ディメンション
フォントファイルなどです
styles.xmlは

English: 
So here we got the I/O app
from this year, actually. 
Here we've got our themes. 
We've got widgets. 
And we've got our
text appearances. 
And [?  there's ?]  only one
file, called styles.xml. 
Now, that's kind of bad
because that file is huge. 
I think it's like
600 lines long. 
And it's just kind of
impossible to actually navigate. 
And that's because they've
organized all of their files
by the actual resource type. 
So all styles in style.xml,
dimensions, strings, blah,
blah, blah--
they're all in the
same file name. 
So one way we could
do this instead--
that's --_?}  one
we could do this instead is
what we've called easy mode. 
So instead, we're to split based
on the purpose of the resource
type. 
So we're going to just put
our themes in our themes.xml. 
So these are just themes and
theme overlays, nothing else. 
Then we've going to have
our type information--
so typography, text appearances,
text sizes, dimensions,
font files, maybe--
all that stuff. 
Then we've going to
have our styles.xml. 

Indonesian: 
Ini sebenarnya adalah
aplikasi I/O tahun ini. 
Di sini ada tema. 
Ada widget. 
Dan ada tampilan teks. 
Dan [? ada?]  hanya satu file,
styles.xml. 
Ini sepertinya buruk karena
file itu besar sekali. 
Saya rasa sepertinya
ada 600 baris. 
Dan mustahil untuk
dinavigasikan. 
Karena semua filenya dikelola
oleh jenis resource aktual. 
Jadi, semua gaya di style.xml,
dimensi, string, dan lainnya--
semuanya ada dalam
nama file yang sama. 
Salah satu cara yang
dapat dilakukan,
yakni easy mode (mode mudah). 
Kita tinggal memisahkan berdasarkan
tujuan jenis resource. 
Jadi kita hanya perlu meletakkan
tema di themes.xml. 
Ini hanya tema dan overlay
tema, tak ada lainnya. 
Lalu kita akan membuat
informasi jenis,
tipografi, tampilan teks,
ukuran teks, dimensi,
atau mungkin file font,
semua hal itu. 
Lalu kita membuat
styles.xml. 

Portuguese: 
Aqui temos o app da I/O deste ano. 
Temos nossos temas. 
Temos widgets. 
E temos aparências de texto. 
E há um único arquivo chamado styles.xml. 
E isso é ruim porque
o arquivo é enorme. 
Acho que tem umas 600 linhas. 
É quase impossível navegar nele. 
É por isso que organizaram
todos esses arquivos
pelo tipo de recurso real. 
Todos os estilos em style.xml,
dimensões, strings etc., 
todos no mesmo arquivo. 
Uma maneira de fazer isso
é o que chamamos de "modo fácil". 
Dividimos com base
no propósito do tipo de recurso. 
Vamos só colocar os
temas no themes.xml. 
São apenas temas e
sobreposições de temas, só isso. 
Depois teremos as
informações de fontes...
tipografia, aparências de texto,
tamanhos de texto, dimensões,
arquivos de fontes...
todas essas coisas. 
Temos styles.xml. 

Chinese: 
这里是我们今年的 I/O 应用
其中有主题 widget 文本外观
还有一个名叫 styles.xml 的文件
这可不是什么好事 因为那个文件太巨大了
可能有600行代码
阅览起来几乎不可能
这是因为 它们按照实际资源类型组织了所有文件
所以 style.xml 中的所有样式
以及 dimen string 等等 都算一个文件名称
所以 一种替代性的做法是 我们所谓的 简单模式
我们会把资源类型的目的作为标准进行分割
我们会把主题放进 themes.xml 
这些都只是主题和主题叠加而已
还有类型信息
也就是字体 文本外观 文本尺寸 维度 字体文件 等等
此外还有 styles.xml
我们会保存它

Korean: 
여기 올해 나온 I/O 앱이 있습니다
저희의 테마가 있고
위젯이 있습니다
텍스트 표시도 있고요
styles.xml라는 유일한 파일이 있습니다
이 파일은 매우 크기 때문에
좋은 건 아닙니다
600줄 정도 되는 것 같습니다
실제로 탐색하기는 불가능하죠
실제 리소스 유형에 따라 모든 파일을
조직했기 때문입니다
style.xml에 있는
모든 스타일, 디멘션, 문자열
등등은
동일한 파일 이름 안에 있습니다
따라서 이 방법 외에
저희가 '쉬운 모드'라고 부르는 것을
활용할 수 있습니다
리소스 유형의 목적에 따라
분할하는 것이죠
저희의 테마를
themes.xml에 넣겠습니다
테마와 테마 오버레이만 있습니다
그러면 유형 정보가 생기는데요
글꼴, 텍스트 표시,
텍스트 크기, 디멘션,
폰트 파일 등이
있습니다
또한 styles.xml이 생기는데

Korean: 
이를 유지하되
뷰 스타일에만 사용합니다
그리고 나머지는
실제 리소스 유형 파일 이름에 들어갑니다
수준을 한 단계 높일까요? 
저는 이것을 '어려운 모드'라고 부릅니다
한발 더 나아가는 거죠
이제 나눠볼 텐데요
논리 유형에 따라 나눕니다
모양 관련 작업을 하고 싶다면
shape.xml가 되겠죠
또 다른 좋은 예시로는 sys_ui가 있습니다
제가 바라는 바와 같이
에지 투 에지를 선택하신다면
관련 리소스를
모두 포함시키실 수 있습니다
탐색 메뉴와 상태 표시줄에 대한
모든 부울 플래그, 색상은
기본 상태의 리소스와 관련이
없어도 됩니다
사용 방법에 따라 달라질 수 있는 것이죠
Android 스튜디오에서 Android 프로젝트 뷰를
사용하는 경우에는 특히 좋은데
리소스 한정자에 의해
재정의된 것이 있는 경우
프로젝트 뷰에서 이들 전부를 그리드하고
차이점을 쉽게 확인하도록 하기 때문입니다
이것이 저희의 세 가지 팁입니다
네
닉의 머티리얼 테마
설정 발표로 넘어가겠습니다

Indonesian: 
Kita akan mempertahankannya,
tapi hanya untuk gaya tampilan kita,
bukan yang lain. 
Lalu yang lainnya akan
masuk ke dalam nama file
jenis resource aktual. 
Jika menginginkan
yang lebih rumit,
Anda gunakan yang
saya sebut mode sulit. 
Kita sebenarnya akan
lakukan lebih jauh. 
Jadi, kita akan memecahnya,
kita akan memisahkan
jenis-jenis logikanya. 
Jika ingin melakukan
sesuatu dengan bentuk,
mungkin shape.xml. 
Atau contoh bagus lainnya,
sys_ui. 
Jika ingin dari tepi ke tepi,
yang seperti saya harapkan,
Letakkan saja semua resource
yang terkait dengan hal itu. 
Flag Boolean atau
warna apa pun untuk
menu navigasi atau status bar,
apa pun semacamnya,
tak perlu terkait
dengan resource alaminya. 
Bisa jadi suatu cara
untuk menggunakannya. 
Akan sangat bagus jika
menggunakan tampilan project Android
di Android Studio,
karena saat ada penggantian
oleh pengkualifikasi resource,
akan menjadi kisi yang apik,
dan Anda dapat melihat perbedaannya
dengan sangat mudah. 
Jadi itulah tiga tips kami. 
Baiklah. 
Kembali ke Nick untuk membahas
tentang tema material. 

Spanish: 
Lo mantendremos, pero solo será
para nuestros estilos de vista, nada más. 
El resto iría a los nombres de archivos
de tipos de recursos. 
Si quieren un poco más de detalle,
puede usar el "modo difícil". 
De hecho, avanzaremos un poco más. 
Haremos la división
según los tipos lógicos. 
Si tienen algo relacionado con las formas,
tal vez shape.xml. 
Otro buen ejemplo es sys_ui. 
Si irán de borde a borde,
lo cual espero que hagan,
pueden poner
todos sus recursos relacionados con eso. 
Los indicadores booleanos
o los colores de la barra de navegación
o barra de estado. 
No tienen que estar relacionados 
con un recurso natural. 
Podrían estar relacionados
con la forma en que los usan. 
Esto es muy bueno si usan 
la vista de proyecto en Android Studio
porque cuando tienen anulaciones
de calificadores de recursos,
los calificarán y podrán ver la diferencia 
entre ellos muy fácilmente. 
Esas son nuestras tres sugerencias. 
Bien. 
Ahora Nick hablará de los temas de material. 
Gracias. 

Chinese: 
但它只会是我们的视图样式 而不是别的
其他东西都会被归类为实际资源类型文件名
如果你还想更进一步
那么你可以使用我称之为 困难模式 的东西
我们来详细介绍一下它
我们来按照逻辑类型进行分割
如果和形状有关 比如 shape.xml
另一个合适的例子是 sys_ui
如果你想要全面屏应用 
顺便说一句 这也是我希望你做到的
那么你就可以把你的所有资源都变为和它相关
任意的布尔式 flag 或用于导航栏/状态栏的任意颜色
它们都不必与自然资源相关
而只需与你的使用方式相关
如果你在 Android Studio 中使用 Android 项目视图
那么这样做的效果是相当不错的
因为 当你用于覆盖的文件是按照资源限定符分隔和排列的时候
这些限定符就会把它们一一分开
并让你能够轻松看到它们之间的差异
这就是我们要和大家分享的三条小技巧
下面请 Nick 来讲讲 Material 主题

Portuguese: 
Vamos manter isso, mas apenas
para nossos estilos de visualização. 
Todo o resto ficará
nos nomes de arquivos de
tipos de recursos reais. 
Se quiser fazer um esforço extra,
pode entrar no que
eu chamo de "modo difícil". 
Precisamos ir um pouco mais fundo. 
Vamos dividir em tipos lógicos. 
Se você mexe com formas...
talvez shape.xml. 
Outro exemplo bom é sys_ui. 
Se fizermos o trabalho completo...
o que eu espero que vocês façam...
vocês podem colocar todos os
recursos relacionados. 
Sinalizações booleanas
ou cores das barras, coisas assim. 
Não tem que estar
relacionado a um recurso natural. 
Poderia ser a forma como
os estamos usando. 
Isso é muito bom se você usa visualização
do projeto no Android Studio
porque, quando há substituições
por qualificadores de recursos,
tudo é colocado em grade,
permitindo ver a diferença entre eles
com bastante facilidade. 
Essas são nossas três dicas. 
Agora o Nick vai falar
sobre temas do Material Design. 
Obrigado. 

Japanese: 
ビュースタイルだけで 他の情報は含めません
それ以外は
リソースタイプをファイル名とします
もっと頑張りたいなら
ハードモードで行きます
これをさらに進めて
論理的なタイプ別に分けます
シェイプに関するものは
shape.xmlにまとめます
ほかにもsys_uiがあります
エッジトゥエッジで行く場合は
それに関連するリソースを含めます
ブール値フラグや
ナビゲーションバーやステータスバーの色です
リソース自体でなくとも
使い方が関連していれば構いません
Android Studioの
プロジェクトビューでは
リソース修飾子別に
オーバーライドの違いを
すぐに見分けられるので便利です
以上が３つのアドバイスです
ニックがマテリアルテーマについて話します

English: 
We're going to keep
that, but it's only
going to be for our view
styles, nothing else. 
And then anything
else would just
fall into the actual
resource type file names. 
If you want to go
that extra mile,
you can go what
I call hard mode. 
We're actually going
to go a bit further. 
So we're going to break out--
we're going to split on
logical types instead. 
So if you've got anything
to do with shape--
maybe shape.xml. 
Or another example
which is good is sys_ui. 
If you're going to
go edge to edge--
which I hope you will are--
you can put all of your
resources related to that. 
So any Boolean
flags or any colors
for navigation bar or
status bar, anything
like that-- it
doesn't have to be
related to a natural resource. 
It could be to the way
you're going to use them. 
And this is really good if
you're using the Android
project view in Android studio,
because when you have overrides
by some resource qualifiers,
it will grid them all nicely
and allows you to see the
difference between them
super easily. 
So that's our three tips. 
All right. 
Over to Nick to talk
about material theming. 

English: 
Cheers. 
NICK BUTCHER: Cool. 
So let's see what
we can actually
build once you
understand and know
how to get the most
of the theme system. 
One thing which I am a big
fan of is material theming. 
So material theming
is the idea that you
can bring much more
brand and personality
to your application. 
The material design
gives you a set
of well-tested, well-designed,
researched widgets,
but you should bring your own
personality, your own branding,
your own look and feel, to them. 
And so the way it does this
is it exposes these three
parameter systems--
typography, shape, and color. 
And just by providing values
for the typography, shape,
and color, you can
actually achieve huge range
of expressiveness
in your application
so your apps look and feel
very different to each other
and they embody your
own kind of brand. 
It's quite amazing
how much personality
you can get with just these
kind of three dimensions. 
So let's take a look
at how you use this. 
So the color system,
to start with,
is built up on lots of
semantically-named variables. 
So semantically-named
variables, I've

Spanish: 
Bien. 
Veamos qué podemos compilar
una vez que comprendemos
cómo aprovechar al máximo
el sistema de temas. 
Algo que me gusta mucho
son los temas de material. 
Con los temas de material
pueden brindar mucha más singularidad
y personalidad a su aplicación. 
Material design ofrece un conjunto
de widgets bien diseñados, 
investigados y probados,
pero ustedes deberían darle su propia
personalidad, su propia marca
a la apariencia de los widgets. 
La personalización consiste en exponer
estos tres sistemas de parámetros:
tipografía, forma y color. 
Con solo proporcionar valores
para la tipografía, la forma y el color,
pueden lograr una amplia gama
de expresión en su aplicación. 
Así, la apariencia entre las apps
es muy diferente, y cada una
contiene su propio estilo de marca. 
Es asombroso el grado de personalidad
que pueden obtener
con estas tres dimensiones. 
Veamos cómo se utilizan. 
Comencemos por el sistema de color,
que se compila
con muchas variables con nombres semánticos. 

Portuguese: 
Beleza. 
Vejamos o que podemos criar
com o sistema de temas. 
Uma coisa que eu gosto muito são
os temas do Material Design. 
Com eles, você pode trazer muito mais
marca e personalidade ao seu app. 
O Material Design oferece um conjunto
de widgets bem testados, bem projetados
e com um trabalho de pesquisa por trás,
mas você precisa trazer
sua personalidade, sua marca,
seu toque para eles. 
O jeito que ele faz isso é expondo
três sistemas de parâmetros...
tipografia, forma e cor. 
Fornecendo valores para eles,
é possível dar
muita expressividade ao seu app. 
Eles podem ter aparências diferentes
e incorporar seu tipo de marca. 
É incrível quanta personalidade
você tem com apenas essas três dimensões. 
Vejamos utilizá-los. 
Para começar, o sistema de cores
é criado com base em variáveis
nomeadas semanticamente. 

Chinese: 
好 下面我们来看看
在你理解了如何利用主题系统之后
我们可以构建出什么来
我非常喜欢 Material 主题
Material 主题可以为你的应用增添大量的
品牌特质和个人风格
Material Design 为你提供了一系列
设计良好 并经过测试和研究的 widget
但你也应该把你自己的个人特质 品牌形象
以及观感带进这些 widget 之中
它的工作原理是
展示这三个参数系统
字体 形状 颜色
通过提供字体 形状和颜色相关的数值
你可以让你的应用拥有强大的表现力
让你的应用拥有自己独特的外观和触感
并表达出你自己的品牌特质
仅仅通过这三个维度 就可以增添如此之多的特质
下面我们来看看应该如何运用它们
首先来谈谈颜色系统
这个系统的构建基础是大量使用语义命名的变量

Korean: 
잘 부탁드립니다
좋습니다
테마 시스템을 최대로 활용하는 방법을
이해하고 파악한 후
무엇을 빌드할 수 있는지 살펴보겠습니다
저는 머티리얼 테마
설정을 굉장히 좋아합니다
머티리얼 테마 설정은
애플리케이션에 브랜드와 개성을
더 잘 표현할 수 있게 해줍니다
머티리얼 디자인은
테스트와 연구를 거쳐
잘 설계된 위젯을 제공합니다
하지만 여기에 고유의
브랜드, 개성, 디자인, 느낌이
필요하죠
이를 위해 글꼴, 모양, 색상이라는
매개변수 시스템 세 가지를
적용합니다
글꼴, 모양, 색상에
값을 제공함으로서
애플리케이션 내에
다양하고 풍부한 표현이 가능해져
앱마다 서로 다른
디자인과 느낌을 가질 수 있으며
자체 브랜드를 형상화할 수 있습니다
이렇게 세 가지 차원으로 개성을
풍부하게 표현할 수 있다는 점은
매우 큰 장점입니다
이제 사용 방법을 살펴보겠습니다
먼저 색상 시스템은
의미론적으로 명명된
여러 변수를 기반으로 만듭니다

Japanese: 
テーマシステムを理解したら
次は何を作れるか見ていきましょう
マテリアルテーマには
大きな魅力があります
これを使うとアプリのブランド性や個性を
大きく強化できます
マテリアルデザインには入念に
検証、設計、研究されたウィジェットが
用意されています
ここに 独自の個性、ブランド、
外観を吹き込んでください
マテリアルデザインには
タイポグラフィ、シェイプ、色という
パラメータシステムがあります
タイポグラフィ、シェイプ、色の
値を指定するだけで
アプリで幅広い表現が可能になり
強い個性でブランドを体現できます
先の３つだけで
アプリが驚くほど個性的になります
では使い方を見ていきましょう
まず色システムには
セマンティック名の付いた
変数がたくさんあります

Indonesian: 
Semangat! 
Baiklah. 
Mari lihat yang
apa yang bisa dibuat
setelah memahami
dan mengetahui
cara memanfaatkan
sistem tema sepenuhnya. 
Satu hal yang sangat saya sukai
adalah tema material. 
Jadi, tema material adalah
sebuah gagasan bahwa
Anda bisa lebih menonjolkan
merek dan kepribadian
dalam aplikasi Anda. 
Desain material memberikan
Anda rangkaian
widget yang sudah diuji, dirancang,
dan diteliti dengan baik,
tapi Anda juga perlu memunculkan
kepribadian, merek, tampilan,
dan nuansa Anda sendiri,
ke aplikasi. 
Jadi, untuk melakukannya,
tema ini menonjolkan tiga sistem
parameter ini,
tipografi, bentuk, dan warna. 
Hanya dengan memberikan nilai
tipografi, bentuk, dan warna,
Anda benar-benar dapat
mengekspresikan
diri sendiri di aplikasi
Anda
sehingga aplikasi tampak dan terasa
amat berbeda satu sama lain
dan mewakili merek
khas Anda sendiri. 
Cukup menakjubkan tingkat
kepribadian yang bisa didapat
hanya dengan
tiga jenis dimensi ini. 
Mari kita lihat cara
menggunakannya. 
Untuk memulainya,
sistem warna
dibuat dari berbagai variabel
bernama semantik. 

Japanese: 
どれもテーマ属性です
セマンティック名が付いた色のテーマ属性が
ライブラリにあり
それらに値を設定します
ライブラリの全ウィジェットが
このセマンティック名を参照し
設定した色を取得します
色システムには理解しておくべき色があります
colorPrimaryは
ブランドの主色で
そのコントラストが
colorSecondaryです
バリアントはそのまたコントラストで
隣に来る色です
セマンティック名はとても便利です
マテリアルではすべてサーフェスの上に
異なるエレベーションで配置され
サーフェスの色を取得できます
またセマンティック名なので
ハードコードでなく
? attr/colorErrorで
エラーカラーを参照できます
マテリアル色システムで気に入っているのが
このcolorOnで

Indonesian: 
Variabel bernama semantik,
saya sudah dengar, ya,
benar, semuanya atribut tema. 
Jadi, cara kerjanya,
library menampakkan atribut tema
untuk warna bernama semantik ini
yang Anda berikan nilainya. 
Lalu, di library,
semua widget yang dibuat
dengan merujuk ke item
bernama semantik ini,
titik pengalihan ini,
dan akan menarik warna
yang Anda tetapkan. 
Jadi, untuk sistem warna,
ada beberapa warna yang perlu
Anda ketahui dan pahami. 
Ada color primary, ada
color secondary,
jenis warna merek utama
dan warna kontras untuk warna utama,
serta varian,
yang sering digunakan
untuk mendapatkan kontras
dari warna-warna itu. 
Jadi, ini bisa digunakan
di sampingnya, misalnya. 
Memang, nama semantik
sangatlah bermanfaat. 
Seperti colorSurface,
saya rasa juga sangat berguna. 
Jadi, ini jenis 
[? immaterial.?] 
Semuanya ada di permukaan,
yang ada di tingkat elevasi yang berbeda. 
Dan memungkinkan Anda mengambil
warna permukaan. 
Serta item bernama semantik
seperti colorError. 
Jadi, daripada memiliki
error hardcode
[? warna?]  di mana-mana,
Rujuk saja ke tanda tanya
setelah colorError,
dan tarik warna error
dan hal semacamnya. 
Satu hal yang sangat saya sukai
dengan sistem warna material
adalah sistem ini juga
memberikannya di warna. 

Chinese: 
这些变量全都属于主题属性
它的运作原理是 
代码库展示与这些使用语义命名的颜色相关的主题属性
而你要为这些颜色提供数值
在代码库内 用来构建它的所有 widget
都指向这个使用语义命名的东西 这个间接点
并且加入你设置的颜色
对于颜色系统 有几种颜色是你需要了解的
colorPrimary 和 colorSecondary 
这些可以算是你的主要品牌颜色
还有一些颜色-种类对比
至于变量 我们经常使用变量来获取
这些颜色的对比色
比如 它可能会被用在它的旁边
按照语义命名的颜色一直都是很有用的
比如 colorSurface 我认为这个就很有用
这些都是在 material 系统里
所有东西都位于表面之上 
而表面位于另外的高度之上
这样你就可以获取表面的颜色了
按照语义命名的东西 比如 colorError 也是一样
你不必硬编码每个地方的每个颜色
而是可以 colorError 后加入这个问号
从而获取到对应的值
Material 颜色系统中我很喜欢的一点是
它也会给出这些 On 颜色

Portuguese: 
Já ouviram falar? 
Exato, são atributos de temas. 
A biblioteca expõe atributos de temas
para as cores nomeadas semanticamente
para que você forneça valores. 
Na biblioteca,
os widgets com os quais
ela é criada referenciam
o item nomeado semanticamente,
esse ponto de indireção, e buscam as cores
que você define. 
Para o sistema de cores, há
algumas que você precisa
conhecer e entender. 
Há "colorPrimary" e "colorSecondary",
que são a cor marca
e outra para contrastar com ela. 
Além de variações,
usadas para contraste com ambas. 
Podem ser usadas perto delas, por exemplo. 
A nomeação semântica é bem útil. 
"colorSurface" é muito bom. 
É meio "imaterial",
tudo fica na superfície,
em um nível de elevação diferente. 
Ela permite que você capture
a cor da superfície. 
Há também
itens nomeados semanticamente,
como "colorError". 
Em vez de ter erros fixos no código,
é possível conferir a interrogação
e buscar os erros. 
O que eu gosto no sistema
de cores do Material Design
são as cores "On". 

Korean: 
의미론적으로 명명된 변수는
모두 테마 속성입니다
따라서 색상 시스템의
작동 방식은 라이브러리에서
값이 제공된 의미론적으로
명명된 색상의 테마 속성을
표시하는 것이라고 할 수 있습니다
그러면 라이브러리에서
라이브러리를 만들 때 사용한
모든 위젯이 의미론적으로 명명된 것을
간접 참조로 참조하고
설정한 색상을 불러들입니다
색상 시스템의 경우
파악하고 이해해야 하는 색상이 있습니다
colorPrimary와 colorSecondary입니다
전자는 주요 브랜드
색상이고 하나는 이에 대비되는
색이죠
또한 가변형이 있는데요
두 색상에 어느 정도 대비
효과를 적용할 때 사용합니다
예를 들면 이렇게 사용될 수 있겠네요
의미론적 명명은 매우 유용합니다
colorSurface처럼 아주 유용한 것 같습니다
따라서
모든 것은 다른 높이 수준에 있는
표면에 위치합니다
이를 통해 표면의
색상을 얻을 수 있는 것이죠
하드코드 오류가 아닌
색상 오류처럼 의미론적으로 명명된 경우
색상 오류 뒤에 이 물음표를 참조하여
오류 색상을 가져오면
이렇게 됩니다
머리티얼 색상
시스템에서 제가 정말 좋아하는 점은
On color도 제공한다는 것입니다

English: 
heard of that-- yes, they're
all theme attributes. 
So the way this works is
the library exposes theme
attributes for these
semantically-named colors
which you provide values for. 
And then in the library,
all of the widgets
that it's build with refer to
this semantically-named thing,
this point of indirection,
and will pull in the colors
that you set. 
So for the color
system, right, there's
a few colors you need
to know and understand. 
There's color primary
and color secondary--
which is kind of your main
brand color and a color to kind
of contrast against that--
as well as variance,
which are often
used to get some contrast
against those colors. 
So it might be used
next to it, for example. 
As ever, semantically-named
are so useful. 
Like color surfaces, I find
very, very useful as well. 
So this is kind of
[?  immaterial. ?] 
Everything sits on
a surface, which is
at a different elevation level. 
And so this allows you to
grab the color of the surface. 
As well as
semantically-named things
like color error-- so rather
than having to kind of like
hardcode error
[?  colors ?]  everywhere
you can refer to this question
mark after a color error
and pull in error colors
and things like that. 
One of the things I really like
about the material color system
is it also gives these
on colors as well. 

Spanish: 
He escuchado mucho acerca de las variables 
con nombre semántico:
todas son atributos de temas. 
La biblioteca expone los atributos de tema
para esos colores con nombre semántico,
para los cuales ustedes proporcionan valores. 
En la biblioteca,
todos los widgets de compilación
refieren al elemento con nombre semántico
a este punto de indirección,
y muestran los colores que indicaron. 
En el sistema de color,
hay varios colores
que tienen que conocer y comprender. 
Está colorPrimary y colorSecondary,
que son el color principal de la marca
y un color que contrasta con ese,
además de una variante
que suele usarse para contrastar
con esos colores
y puede usarse junto a ellos. 
Los nombres semánticos son muy útiles. 
Igual que las superficies de colores,
que encuentro muy útiles. 
Esto es algo así como "inmaterial". 
Todo se establece en una superficie
que está en un nivel de elevación diferente. 
Eso les permite
tomar el color de la superficie. 
Al igual los elementos con nombre semántico,
como los errores de color,
en lugar de codificar
errores de color en cualquier lugar,
pueden hacer referencia
a este signo de pregunta
luego de un error y extraerlos. 
Algo que me gusta
del sistema de color de material
es que también permite hacer esto
con los colores. 

Portuguese: 
É uma cor com contraste garantido
em relação às nomeadas semanticamente. 
Por exemplo, "colorOnPrimary"
sempre contrastará com as primárias. 
Se você precisar colocar um
ícone para um botão de ação flutuante,
o botão provavelmente terá
a cor primária. 
Você pode usar "colorOnPrimary"
para tonalizar um ícone. 
Ele sempre terá esse contraste. 
Dois recursos bem úteis aqui:
"colorSurface" e "colorOnSurface". 
Forneça esses valores concretos mais novos
às variáveis nomeadas
semanticamente do tema. 
Quando eu defino
um tema azul, por exemplo,
estou definindo alguns desses
atributos de temas. 
Você não tem que definir todos eles. 
Se herdar de temas do Material Design
como "MaterialComponents. Light"
ou "MaterialComponents",
que é o tema escuro,
eles fornecerão padrões lógicos. 
Aqui, não estou
definindo uma superfície de cor. 
Vou apenas aceitar aquela que
vem da biblioteca
e mudar as que
eu realmente quero definir. 
Você pode e deve usar isso
nos seus layouts e estilos. 
Aqui vou consultar o
valor atual para "colorPrimary"

Spanish: 
Por lo que hay una garantía de color
en comparación
a los colores con nombres similares. 
En colorOnPrimary,
siempre tendremos un contraste
con el color primario. 
Supongamos que quieren poner un ícono
sobre un botón de acción flotante. 
El favorito probablemente
sea el color primario
y, luego, pueden usar colorOnPrimary
para ajustar el tono de un ícono. 
Siempre tendrá un contraste. 
Uno útil es colorSurface y colorOnSurface. 
Se hace lo siguiente. 
Proporcionan estos nuevos valores concretos
a estas variables con nombre semántico
en su tema. 
Cuando configuran un tema,
aquí configuro un tema azul,
establezco algunos
de estos atributos de tema. 
Noten que no tienen
que configurar todos. 
Si heredan de alguno
de los temas de material,
como componentes claros
o componentes de material,
que es un tema oscuro,
proporcionan valores predeterminados
sensibles. 
Aquí, por ejemplo,
no configuro la superficie de color. 
Solo acepto la que viene de la biblioteca
y cambio las que quiero configurar. 
Luego, pueden (y deberían)
usarlos en sus diseños y estilos. 
Aquí consulto cuál es el valor actual

English: 
So this is a color
guaranteed to contrast
against the
similarly-named ones. 
So colorOnPrimary, for
example, will always
contrast against primary. 
So say you need to put like
a icon on top of a floating
action button. 
The [?  fab ?]  is probably
going to be color primary. 
And then you can
use colorOnPrimary
to say tint an icon. 
And it will always
contrast against it. 
A really handy one
here is, again,
colorSurface and colorOnSurface. 
So you do this. 
So you provide these
newer concrete values
to these semantically-named
variables in your theme. 
So when you set up a theme--
so here I'm setting up a blue
theme--
I'm setting some of
these theme attributes. 
But note that you don't
have to set all of them. 
If you inherit from some
of the material themes--
so material components light,
or just material components,
which is a dark theme--
then they provide
sensible defaults. 
So here, for example, I'm
not setting a color surface. 
I'm just going to accept the
one that comes from the library
and just go in and change
the ones that I actually
want to set. 
And then you can
and should use these
in your layouts and styles. 
So here I am querying what is
the current value for color

Korean: 
유사한 이름을 가진 색상에 대해
대비 효과가 확실히 적용되는 색상이죠
colorOnPrimary를 예시로 들면
primary에 늘 대비됩니다
플로팅 액션 버튼
상단에 아이콘을 배치하려는
경우를 보겠습니다
color primary가 있으면
colorOnPrimary를 사용하여
아이콘에 색조를 입힙니다
그러면 늘 대비색이 적용됩니다
아주 간단한 방법은
colorSurface와 colorOnSurface입니다
이렇게 해보세요
구체적인 새 값을
테마에 있는 의미론적으로 명명된
변수에 제공하세요
예를 들어 이와 같이 파란색 테마
설정합니다
테마 속성을 설정합니다
하지만 전부 설정할 필요는 없습니다
머티리얼 테마에서 상속받는 경우
즉 MaterialComponents. Light나
어두운 테마인
MaterialComponents의 경우
유용한 기본값이 제공됩니다
그래서 여기에서는
색상 표면을 설정하지 않겠습니다
라이브러리에서 하나를 가져와
제가 설정하고 싶은 것으로
변경하겠습니다
이제 레이아웃과 스타일을
사용해야 합니다
color primary의
현재 값이 무엇인지 확인하고

Chinese: 
这种颜色保证会和拥有类似名称的颜色形成对比
例如 colorOnPrimary 永远会和 Primary 形成对比
所以你需要把图标放在悬浮操作按钮上面
悬浮操作按钮大概会采用 colorPrimary
然后 你可以使用 colorOnPrimary 来给图标上色
而它总是会和它形成对比
一个很方便的地方是
colorSurface 和 colorOnSurface
你在自己的主题里把这些较新的具体值
提供给这些按照语义命名的变量
所以 当你设置主题的时候
这里我设置一个蓝色的主题
我设置了一部分主题属性
不过请注意 你没必要设置所有主题属性
如果你继承了一些 Material 主题
比如 MaterialComponents. Light
或者是单纯的 MaterialComponents 也就是暗色主题
它们可以提供你需要的全套默认数值
比如说这里 我没有设置 colorSurface
我只需要接受来自代码库的 colorSurface
然后在里面更改那些我想要设置的东西
随后 你可以 并且应该在你的布局和样式中使用它们
这里 我在查询 colorPrimary 的当前值

Indonesian: 
Jadi, warna ini
dijamin akan terlihat kontras
dengan yang namanya
hampir sama. 
Jadi, colorOnPrimary,
misalnya, akan selalu
kontras dengan
warna primer. 
Misalkan Anda perlu meletakkan
ikon di atas tombol tindakan
yang mengambang. 
[? Fab?]  mungkin akan
menjadi colorPrimary. 
Lalu Anda bisa gunakan
colorOnPrimary
untuk memberi tint pada ikon. 
Dan ikon akan
kontras terhadapnya. 
Yang sangat berguna,
colorSurface dan colorOnSurface
Jadi lakukan ini. 
Anda berikan nilai
konkret terbaru ini
ke variabel bernama semantik ini
di tema Anda. 
Jadi, saat Anda siapkan tema,
saya menyiapkan tema biru--
saya akan mengatur beberapa
atribut tema ini. 
Ingat, Anda tak harus
menetapkannya semua. 
Jika dapat dari
beberapa tema material,
misal MaterialComponents. Light,
atau MaterialComponents,
yang merupakan tema gelap,
akan disiapkan default
yang masuk akal. 
Misalnya, saya tidak
mengatur colorSurface. 
Saya akan menerima yang
dari library,
dan melanjutkan serta mengubah
item-item yang ingin ditetapkan. 
Lalu, Anda dapat dan
sebaiknya menggunakannya
di tata letak dan gaya Anda. 
Jadi saya ajukan kueri tentang
nilai saat ini untuk colorPrimary

Japanese: 
「On」の文字がない色の
コントラストになります
たとえばcolorOnPrimaryと
colorPrimaryです
フローティング操作ボタンなら
ボタンはcolorPrimary
その上のアイコンは
colorOnPrimaryにします
特に便利なのはcolorSurfaceと
colorOnSurfaceです
新しい値を テーマの
セマンティック名の変数に代入します
ここでは青のテーマに
テーマ属性を設定しています
全部設定する必要はありません
たとえば
MaterialComponents. Light
を継承すれば
妥当な既定値が手に入ります
ここではcolorSurfaceは設定せず
ライブラリを受け入れ
望んだ設定に変更します
レイアウトやスタイルでは
これらを使用します
colorPrimaryの現在の値をクエリし

English: 
primary and setting it as the
background color onto a view. 
And a top tip for this is that
we can use this single item
color selector-- color state
list that Chris talked about--
with these colors
to great effect,
so that you don't actually
have to define tons and tons
of different colors. 
So for example, you
want to do a divider. 
Rather than having
to create a new color
called color divider
or something like that. 
You can just get this
color on surface--
which is guaranteed to kind
of like contrast against
the background color--
and use an alpha modulation--
so just 20% of it--
in order to get the right color. 
And the cool thing
about this is it will
respond to different themes. 
So, like, dark for example. 
So here I am in a
light theme where
this divider in the
middle of the screen
here is 20% of the
colorOnSurface, which
will be black in a light thing. 
But when you switch
to dark theme,
then automatically
colorOnSurface becomes white. 
And 20% of that gives
you the right kind
of shade of gray to contrast. 
So yeah-- using these
semantically-named colors
can be really
useful so you don't
have to define tons and
tons of different colors

Indonesian: 
dan mengaturnya sebagai
warna latar belakang tampilan. 
Dan tips teratasnya adalah
kita bisa gunakan
pemilih warna item tunggal ini,
daftar status warna yang dibahas Chris,
dengan warna ini
agar pengaruhnya hebat,
sehingga Anda tak perlu
menentukan banyak
warna yang berbeda. 
Misalnya, Anda mau
melakukan pemisahan. 
Daripada membuat
warna baru
yang disebut colorDivider
atau semacamnya. 
Dapatkan saja
colorOnSurface,
yang dijamin terlihat kontras
dengan warna latar belakang--
dan menggunakan modulasi alfa,
jadi hanya 20%-nya,
untuk memperoleh warna yang tepat. 
Yang keren adalah
kemampuannya merespons
tema yang berbeda. 
Jadi, misalnya tema gelap. 
Di sini saya gunakan tema terang,
dan pemisah ada di tengah layar,
adalah 20% colorOnSurface,
yang akan jadi gelap di item terang. 
Namun, saat beralih
ke tema gelap,
colorOnSurface otomatis
jadi putih. 
Dan 20%-nya akan memberikan
jenis nuansa abu-abu yang tepat
sebagai kontrasnya. 
Jadi, menggunakan warna
bernama semantik ini
bisa amat berguna,
Anda tak perlu
menentukan banyak
warna yang berbeda

Chinese: 
并将其作为背景颜色设定到视图上
最需要重视的小技巧是 
我们可以把 Chris 提到过的
单一项颜色选择器-颜色状态列表
和这些颜色结合在一起使用 达成很好的效果
这样你就不必定义许多不同的颜色了
比如 你想做一个分隔线
这时你就不用创建名为 colorDivider 的新颜色
你可以直接在表面上获取这个颜色
而这个颜色肯定会和背景色形成对比
使用 alpha 调整 只需20% 即可得到正确的颜色
有意思的是 它会响应不同的主题
比如暗色主题
这里有一个浅色主题 分隔线位于屏幕中间
这里是20%的 colorOnSurface
是一种黑中带白的颜色
但是 当你切换到暗色主题时
colorOnSurface 就会自动变成白色
这其中的20%会为你提供合适的灰度用来对比
这些按照语义命名的颜色是相当有用的

Spanish: 
para colorPrimary y lo configuro
como color de fondo en una vista. 
Como sugerencia, pueden usar
este elemento de selector de color,
listas de estado de color que mencionó Chris
con estos colores
para obtener un gran efecto
y no tener que definir miles y miles
de colores diferentes. 
Supongamos que quieren hacer un divisor. 
En lugar de tener que crear un nuevo color
llamado divisor de color o algo así,
pueden tomar este color en la superficie,
cuyo contraste con el color de fondo
está garantizado,
y usar una modulación alfa
solo el 20% de la misma
para obtener el color adecuado. 
Lo bueno de esto
es que responderá a diferentes temas. 
Por ejemplo, un color oscuro. 
Aquí tengo un tema claro,
con este divisor en el medio de la pantalla
que está al 20% de colorOnSurface,
que será negro sobre algo claro. 
Pero cuando cambio a un tema oscuro,
colorOnSurface automáticamente
se vuelve blanco. 
El 20% les da el tipo adecuado
de tono de gris para contrastar. 
Usar estos colores con nombre semántico
puede ser muy útil

Korean: 
뷰의 배경 색상으로 설정하려 합니다
여기에서 가장 중요한
팁은 크리스가 언급했던
color state list인
단일 항목 color selector를
색상과 함께 사용하면
큰 효과를 볼 수 있고
수많은 다양한 색상을
정의하지 않아도 된다는 것입니다
경계선을 만드는 경우를 봅시다
색상 경계선이라고 부르는 새로운 색상을
생성하는 대신
배경 색상에 대비되는 색상을 적용하는
colorOnSurface를 사용하고
알파 모듈레이션 20%를 사용하면
딱 맞는 색상을
얻을 수 있습니다
여기에서 좋은 점은
다양한 테마에 대응한다는 점입니다
어두운 테마를 예로 들겠습니다
경계선이 화면 중앙에 있는
밝은 테마가 있는데요
colorOnSurface 20%가 적용되어 있어
밝은 것에 있을 때는 검은색이 됩니다
하지만 어두운 테마로 전환하면
colorOnSurface가 자동으로 흰색이 됩니다
그리고 colorOnSurface 20%는
대비되는 회색 음영을 제공합니다
이렇게 의미론적으로
명명된 색상을 사용하면
매우 유용하고

Portuguese: 
e defini-lo como a cor de plano de
fundo em uma visualização. 
Uma dica importante é que
podemos usar esse seletor
de cor de item, a lista de estados
de que o Chris falou,
com essas cores com muita eficiência
para que não seja preciso
definir milhares de cores. 
Por exemplo, você quer criar um divisor. 
Em vez de criar uma nova cor,
chamada "divisor de cores" ou algo assim,
você pode ter essa cor na superfície,
que é uma garantia de contaste
na cor de plano de fundo,
e usar uma modulação Alfa,
apenas 20% dela,
para ter a cor certa. 
O legal aqui é que ela
responderá a temas diferentes,
tema escuro, por exemplo. 
Aqui vemos um tema claro com
um divisor no meio da tela. 
20% de "colorOnSurface",
que será preto em um item claro. 
Ao mudarmos para o tema escuro,
"colorOnSurface" se torna branco. 
E 20% disso dá a você
o tom de cinza exato para contraste. 
O uso dessas cores nomeadas semanticamente
pode ser útil
porque você não tem que definir

Japanese: 
ビューの背景色として設定しています
ここで
クリスが紹介した色セレクターである
ColorStateListを使えば
いろんな色をいくつも定義する必要はありません
たとえばデバイダーを使いたい場合は
新規作成する代わりに
colorOnSurfaceを使えば
背景色のコントラスト色を取得できます
alphaを20%に設定すれば
最適な色が得られます
さまざまなテーマに対応しているので便利です
たとえばこのダークとライトのテーマを
分けるデバイダーは
colorOnSurfaceの20%で
明るい黒になります
ダークに切り替えると
自動でcolorOnSurfaceは白になり
20%で望ましいグレーになります
セマンティック名の色を活用すれば

Chinese: 
你无需定义大量不同的颜色 就可以维护好应用
关于颜色的部分就讲到这里
下面来讲讲排版系统
Material 建议大家使用排版缩放
这是设计领域的术语 它的意思是
把为数不多的几个不起眼的文本样式
应用在你的应用内的各个地方
这样你就不会在不同的屏幕上都看到15个不同的文本尺寸了
只需要在一个为数不多的文本样式选项列表中间选择
为了保证一致性 你需要在应用中引用它们
它会给予它们语义名称
比如大标题1 大标题2 文本主体 副标题 按钮 等等
这些东西都是作为主题属性实现的
Material Design 部件将这些绿色的主题属性
定义为文本外观
在你的主题中 你可以在这里这样做
你可以设置主题属性 
再把它们指向你自己的文本外观
但你不必定制它们全部
你可以从 Material 主题中继承
这个主题会使用 Roboto 字体来完成设置
不过 你大概需要提供你自己的文本外观

Portuguese: 
milhares de tons de cores diferentes
para manter o app. 
Chega de falar de cores. 
Agora, o sistema de tipografia. 
O Material Design
recomenda uma escala de tipos,
uma maneira elegante de dizer:
"tenha um número pequeno e limitado
de estilos de texto
e aplique-os a todos os apps"
para não ter
15 tamanhos de texto diferentes
em telas distintas. 
Você tem esta pequena lista
de opções ou paleta de texturas,
que pode usar
no seu app para manter a consistência. 
Ela atribui nomes semânticos,
como título 1, título 2,
corpo, legenda, botão etc. 
Também são implementados como
atributos de temas. 
Os componentes do Material Design definem
estes atributos de temas verdes. 
Eles são definidos como
aparência de texto. 
No seu tema, você pode fazer isso. 
Pode definir os atributos de
temas e indicá-los
na aparência do seu texto,
mas não precisa personalizar todos eles. 
Pode herdar do tema
do Material Design,
que vai defini-los com Roboto. 
Mas é bom atribuir
aparências de texto próprias,

Japanese: 
いろんな色を定義して管理せずに済むので
便利です
以上が色です
次はタイポグラフィです
マテリアルはタイプスケールの
使用を推奨しています
これは少数のテキストスタイルを
アプリ全体に適用する手法です
画面ごとに数十種類のサイズを
定義せずに済みます
アプリに適用する
少数の選択肢のリストがあれば
一貫性を保てます
セマンティック名には
Headline1、Body
Caption、Buttonなどがあります
これらのセマンティック名は
テーマ属性として実装されます
マテリアルコンポーネントは
緑色のテーマ属性を
テキストの外観として定義します
アプリでは テーマでテーマ属性を設定し
テキストの外観を参照します
全部カスタマイズする必要はなく
マテリアルテーマから継承して
Robotoを使えます
独自のテキストの外観を用意すれば

Korean: 
애플리케이션에서 유지해야
하는 수많은 다양한 색상을
정의하지 않아도 됩니다
색상에 대한 내용이었습니다
다음은 글꼴 시스템입니다
머티리얼에서는 소수의
별개 텍스트 스타일이 있는
유형 스케일을 사용하고
앱에 적용할 것을 권장합니다
그래야 화면에서
글꼴 크기 15가지가 표시되는 경우를
막을 수 있죠
애플리케이션에서 일관성을 유지하기 위해
참조해야 하는 선택 목록 또는
질감 팔레트가 있습니다
그리고 여기에서 표제 1,
표제 2, 본문, 자막, 버튼 등
의미론적인 이름이
제공되죠
이들은 테마 속성으로 구현됩니다
머티리얼 디자인 구성요소는
녹색으로 표시된 테마 속성을 정의합니다
그리고 이들을 텍스트 표시로 정의합니다
따라서 테마에서 이 작업을 할 수 있습니다
테마 속성을 지정하고
자체 텍스트 표시를 가리키게 할 수 있죠
하지만 모든 것을
맞춤설정해야 하는 것은 아닙니다
머티리얼 테마에서 상속받을 수 있습니다
이때는 Roboto를 통해 설정하게 되죠
브랜드 폰트처럼,
사용하고 싶은 폰트를 설정하는
고유의 텍스트 표시를

Spanish: 
para no tener que definir
toneladas de colores diferentes
que luego tendrán que mantener en su app. 
Eso fue todo sobre el color. 
Lo siguiente es el sistema de tipografía. 
Material recomienda
usar una escala de escritura,
que es una forma elegante de decir
que hay que tener
una cantidad pequeña de estilos de texto
y aplicarlos en todas sus apps
para no terminar
con 15 tamaños de texto diferentes
en las diferentes pantallas. 
Tienen una pequeña lista
de opciones o paleta de estilos de texto
que pueden consultar
y usar en su aplicación
para mantener la coherencia. 
Se asignan nombres semánticos,
como encabezado 1, encabezado 2,
cuerpo, subtítulo, botón, etcétera. 
Nuevamente,
se implementan como atributos de temas. 
Los componentes de material design
definen estos atributos de tema verdes. 
Los define como apariencias de texto. 
En el tema, pueden tener esto de aquí. 
Pueden configurar atributos de temas
y apuntarlos a su propia apariencia de texto. 
Pero no tienen que personalizarlos todos. 
Pueden heredar del tema de material,
que los configurará mediante Roboto. 
Pero tal vez quieran proporcionar
sus propias apariencias de texto

English: 
that you then have to
maintain your application. 
So that was color. 
Next up-- the typography system. 
Material recommends you
use a type scale, which
is a fancy designery
way of saying,
have a small, discrete
number of text styles
and apply them
throughout your apps
so you don't end up with
15 different text sizes
across the different screens. 
You have this small list
of choice or palette
of textiles which
you should refer to
in your application
for consistency's sake. 
So it gives them
these semantic names
like headline one, headline two,
body, caption, button, and so
on and so forth. 
And again, these are
implemented as theme attributes. 
So material design
components defines
these green theme attributes. 
And it defines them
as text appearances. 
So in your theme,
you can this here. 
You can set the theme
attributes and point them
to your own text appearance. 
But you don't have to
customize all of them. 
You can, again, inherit from
the material theme, which will
set them up with using Roboto. 
But you probably want to provide
your own text appearances,
which set the
fonts that you want

Indonesian: 
dan Anda dapat memelihara
aplikasi Anda. 
Jadi itu tentang warna. 
Selanjutnya, sistem tipografi. 
Material menyarankan Anda
menggunakan skala jenis,
yang merupakan istilah keren
dari sejumlah kecil gaya teks,
dan menerapkannya
di seluruh aplikasi
Jadi Anda tak akan berakhir
dengan 15 ukuran teks berbeda
di layar yang berbeda. 
Anda memiliki daftar kecil pilihan
atau palet tekstil
yang harus Anda rujuk
dalam aplikasi demi konsistensi. 
Jadi, hal ini memberi
nama semantik ini
semacam judul satu, judul dua,
batang tubuh, teks, tombol,
dan sebagainya. 
Dan sekali lagi, hal ini diterapkan
sebagai atribut tema. 
Jadi, komponen desain
material menetapkan
atribut tema hijau ini. 
Dan menetapkannya
sebagai tampilan teks. 
Jadi, dalam tema,
Anda bisa melakukannya di sini. 
Anda dapat menetapkan atribut
tema dan menunjuknya
ke tampilan teks Anda sendiri. 
Anda tidak perlu
menyesuaikan semuanya. 
Anda bisa mendapatkannya
dari tema material,
yang akan menyiapkan
menggunakan Roboto. 
Jika Anda ingin menyediakan
tampilan teks Anda sendiri,
yang menetapkan font pilihan,

English: 
to use like your brand fonts. 
And then, again, you can then
refer to these theme attributes
in your application. 
So when you set a text
appearance on a text,
you use the question mark attr. 
And then pull in one of
these named text appearances. 
I'd go as far as to say that if
you're code reviewing and you
see someone setting a text
appearance which isn't a theme
attribute, you can almost
consider this a [?  code ?] 
[?  smell, ?]  because it
means you're not going to be
referring to this
small pallette. 
This is the whole idea
of restricting yourself
to a consistent
set of type styles. 
And for anyone who's seen
them using text appearance
and got a little bit worried--
because historically
text appearance
hasn't supported all of
the text configuration
that text view does. 
There's some things you can't
set in a text appearance--
material components,
just like AppCompact,
there's widget substitution. 
So when you declare a
text view in your layout,
what you actually get is
a material text view--
which was added recently--
and that adds some superpowers
to the text appearance. 
So you can actually set more
things in a material-themed app
than you can with a
regular text appearance. 
So in particular, it
supports line height. 

Chinese: 
这个外观会设定你想要的字体 就像是品牌字体一样
然后 你可以在你的应用中引用这些主题属性
所以 当你在文本中设置文本外观的时候
你就需要使用 ? attr
然后加入一个已经经过命名的文本外观
我甚至可以这么说 如果你正在进行代码审核的时候
看到有人把不属于主题属性的东西给设置成了文本外观
那么你就几乎可以断定相应的代码有问题
因为这意味着你无法从这个小小的选项列表中进行选择了
我们之所以建议你总是采用同一套排版样式 原因就在这里
如果有人见到有人使用文本外观 并感到担心的话
因为从历史上讲 文本外观没有像是文本视图那样支持所有文本配置
有些东西是无法在文本外观中设置的
Material 组件 正如 AppCompact 那样
是有相应的 widget 替代品的
你在布局中声明了一个文本视图 (TextView) 之后
你得到的其实是一个 Material 文本视图
这是最近才加入的
这项功能为文本外观带来了强大的能力
相较于常规的文本外观
你可以在 Material 主题应用中设置的东西要更多一些
特别是 它还支持行高度

Portuguese: 
definindo as fontes que quer
usar como as fontes da sua marca. 
Você também pode usar esses
atribtutos de temas no seu app. 
Ao definir uma aparência em um texto,
use o atributo de interrogação. 
Depois, busque uma
aparência de texto nomeada. 
Aqui, se você está revisando seu código
e vê uma aparência
de texto que não é um atributo de tema,
considere isso
um indício de erro,
porque isso significa
que você não vai
usar essa pequena paleta. 
Essa é a ideia global de limitar-se
a um conjunto de estilos
de fontes consistentes. 
Para qualquer pessoa que usa
aparência de texto
e fica preocupada porque,
historicamente, a aparência de texto
não era compatível
com a configuração de "TextView". 
Não é possível definir certas coisas
na aparência do texto. 
Componentes do Material Design, 
como AppCompat, substituição de widgets. 
Ao declarar "TextView" no seu layout,
ele vem Material Design. 
Isso foi adicionado recentemente
e melhora a aparência de texto. 
Mas você pode definir mais coisas
em um app com temas do Material Design
do que com texto comum. 
Há compatibilidade com altura de linha. 

Japanese: 
独自のブランドフォントを使えます
このテーマ属性をアプリで参照できます
テキストに外観を設定するには
? attrで テキストの外観を取得します
コードレビューでテキストの外観に
テーマ属性が設定されていない場合は
このリストを参照しないので
問題が起こるかもしれません
一貫性のある１つのタイプスタイルを使うのは
このためです
テキストの外観に関して
指摘されている点ですが
テキストビューのテキスト構成を
すべてはサポートしていません
AppCompactなどは
テキストの外観で設定できませんが
ウィジェットを代用できます
レイアウトでテキストビューを宣言すると
最近追加された
マテリアルテキストビューが作られます
マテリアルテーマのアプリでは
通常のテキストの外観よりも
細かく設定できます
たとえば行の高さを設定できます

Spanish: 
que establecen las fuentes
que quieren usar,
como fuentes para su marca. 
Luego, pueden consultar
estos atributos de tema en su app. 
Cuando configuran una apariencia de texto,
usan ? attr. 
Luego, agregan una
de estas apariencias de texto con nombre. 
Les diré que si están revisando código
y ven que alguien configura
una apariencia de texto
que no es un atributo de tema,
pueden considerar
que es una especie de código porque significa
que no podrán hacer referencia a esta paleta. 
Esta es toda la idea acerca de restringirse
a un conjunto de estilos coherente. 
Y si alguien que usa apariencia de texto
está preocupado porque la apariencia de texto
no era compatible 
con todas las configuraciones de texto,
esa vista de texto sí lo hace. 
Hay cosas que no pueden configurar
en una apariencia de texto,
componentes de material,
como AppCompat
y la sustitución de widgets. 
Cuando declaran una vista
de texto en su diseño,
lo que obtienen en realidad
es una vista de texto de material
que se incorporó hace poco,
y que agrega superpoderes
a la apariencia de texto. 
Así que pueden configurar
más elementos en una app con material
que lo que pueden hacer
con una apariencia de texto normal. 
En particular, admite altura de línea. 

Korean: 
제공하고 싶으실 텐데요
이때는 애플리케이션에서
테마 속성을 참조하시면 됩니다
텍스트에 텍스트 표시를 설정하는 경우
? attr를 사용하게 됩니다
그리고 명명된 텍스트
표시 중 하나를 가져옵니다
코드 리뷰를 하고
테마 속성이 아닌
텍스트 표시를 설정하는 경우
이것을 코드 스멜로 간주할 수 있습니다
이 경우 이 작은 팔레트를
참조하지 않을 것이기 때문입니다
지금까지 일관된 유형 스타일로
제한을 두는 것에 대해 말씀드렸습니다
텍스트 표시가 사용되는 경우
좀 우려하시는 분들도 있습니다
지금까지 텍스트 표시는
텍스트 뷰가 지원하는
모든 텍스트 구성을 전부
지원하지는 않았기 때문입니다
텍스트 표시에서는
설정할 수 없는 것이 있습니다
바로 AppCompact와 같은
머티리얼 구성요소입니다
여기에서는 위젯으로 대체할 수 있습니다
따라서 레이아웃에서
텍스트 뷰를 선언할 때
실제로 얻게 되는 것은
최근에 추가된 머티리얼 텍스트 뷰이고
이에 따라 텍스트 표시에
강력한 기능이 생깁니다
머티리얼 테마가 적용된
앱의 경우 일반 텍스트 표시에 비해
더 많은 것을 설정할 수 있습니다
특히 행의 높이가 지원되죠

Indonesian: 
Anda gunakan seperti font merek Anda. 
Lalu, lagi-lagi, Anda bisa merujuk
ke atribut tema ini
di aplikasi Anda. 
Jadi, saat menetapkan
tampilan teks di teks,
Anda gunakan attr tanda tanya. 
Lalu menarik salah satu
tampilan teks bernama ini. 
Saya akan ingatkan bahwa jika
Anda meninjau kode dan
melihat seseorang mengatur tampilan
teks yang bukan atribut tema,
Anda hampir bisa menganggapnya
sebagai [? kode?] 
[?  bau, ?]  karena artinya Anda tidak
akan merujuk ke
palet yang kecil ini. 
Idenya adalah membatasi
diri sendiri
terhadap rangkaian gaya jenis
yang konsisten. 
Dan bagi yang melihatnya
menggunakan tampilan teks
dan agak cemas,
karena sebelumnya
tampilan teks
belum mendukung semua
konfigurasi teks
yang didukung tampilan teks. 
Ada yang tak bisa
ditetapkan di tampilan teks,
komponen material,
seperti AppCompact,
ada substitusi widget. 
Saat Anda menyatakan
tampilan teks di tata letak,
yang Anda dapatkan
adalah tampilan teks material,
yang baru ditambahkan,
dan menambahkan
kemampuan super ke tampilan teks. 
Jadi Anda dapat menetapkan lebih
banyak hal di aplikasi bertema material
dibandingkan tampilan
teks reguler. 
Jadi, secara khusus,
tinggi baris didukung. 

Indonesian: 
Jika mencoba menetapkan
tinggi baris di tampilan teks
dan ternyata tidak bekerja,
ini karena tampilan teks di platform
tidak mendukungnya. 
Tapi jika menggunakan komponen
desain material, platform mendukungnya. 
Itulah tipografi. 
Pilar terakhir adalah bentuk. 
Jadi, material merekomendasikan
penggunaan bentuk bermakna
di aplikasi Anda untuk
menyampaikan makna
yang menjadi bagian merek Anda. 
Dan material tahu
kalau Anda mungkin
menggunakan jenis bentuk
berbeda bergantung pada
jenis widget yang dipakai. 
Jadi, ini terbagi ke dalam
jenis bentuk kecil, menengah,
dan besar--
karena ingin
menetapkan bentuk berbeda
untuk komponen besar
seperti sheet bawah
dibandingkan untuk komponen
yang amat kecil, seperti chip. 
Jadi sekali lagi, ini..
sebenarnya kami menetapkannya
menggunakan tampilan bentuk,
yang merupakan analogi
yang serupa dengan tampilan teks. 
Ini adalah jenis konfigurasi
untuk sistem bentuk. 
Dan terbuat dari
beberapa hal. 
Pertama, kelompok...
jadi kami mendukung pojok
bulat dan lancip, serta ukuran sudut,
seperti radius atau
pembulatan,
dan sudut mana yang harus
diterapkan,
misal, kiri atas, kanan bawah, dan
sebagainya. 
Dan sekali lagi, Anda dapat
melihatnya di tema

Portuguese: 
Se não consegue definir
a altura da linha na aparência
é porque o "TextView" da
plataforma não é compatível. 
Mas, se você usa componentes do
Material Design, ele é. 
Essa foi a parte de tipografia. 
Por último, a forma. 
O Material Design recomenda
usar as formas
no seu app para dar significado
como parte da sua marca. 
Ele reconhece que você pode
usar diferentes formas, dependendo dos
tipos de widget que você usa. 
Ele divide isso em tipos de formas
pequenas, médias e grandes. 
Você pode definir formas diferentes
para componentes grandes,
como uma página inferior
para um componente pequeno, como um ícone. 
Elas são definidas
usando algo chamado "aparência de formas",
que é semelhante
à aparência de texto. 
É um tipo de configuração
para o sistema de formas. 
Ela tem alguns componentes. 
Primeiro, a família. 
Há compatibilidade com cantos
arrendondados e cortados e com
tamanho de cantos, como o raio
ou o arredondamento. 
E ela define os cantos válidos,
superior esquerdo,
inferior direito etc. 

Chinese: 
如果你试过在文本外观中设置行高度
却发现无法运行 心中充满疑问的话
这是因为 平台上的文本视图无法支持它
但是 如果你使用 Material Design 组件 就可以支持了
排版问题就是这样
最后一个重要问题是形状
Material 推荐大家用有意义的方式来在应用中使用形状
来让你的品牌向用户传达意义
设计指南中有说明 开发者可能由于 widget 类型等因素
选择使用各种不同的形状
并将其分为小 中 大型形状类型
因为你想要为 Bottom Sheet 等大型组件设置的形状
可能就会和你想要为 chip 等小型组件设置的形状有所不同
我们是用一种名叫形状外观 (ShapeAppearance) 的东西来定义它们的
ShapeAppearance 和文本外观类似
是一种针对形状系统的配置
它是由几个组件组成的
首先是家族 
我们支持圆角和切角
至于转角尺寸 比如范围 圆度
要应用于哪个转角 比如左上 右下 等等
你可以在自己的主题中

English: 
So if you ever try to set a line
height in the text appearance
and wonder why it's
not working, it's
because text view on the
platform doesn't support it. 
But if you're using material
design components, it does. 
So that was typography. 
And the last pillar is shape. 
So material recommends
using shape meaningfully
in your application
to convey meaning
to be part of your brand. 
And it recognizes that
you might actually
use kind of different
shapes depending
on the types of
widget you're using. 
So it actually splits it into
small, medium, and large shape
types--
because you might want
to set a different shape
for large components
like a bottom sheet
than you might for a very
small component, like a chip. 
So again, these are--
well, actually, we defined them
using something called a shape
appearance, which is kind
of similar analogy to a text
appearance. 
It's a kind of a configuration
for the shape system. 
And it's made up
of a few things. 
First off is the family--
so we support rounded and cut
corners, as well as a corner
size-- like the radius
or the rounding--
and which corners to
apply it to-- like
the top left, bottom
right, and so on. 
And then once again, you can
figure this in your theme

Japanese: 
テキストの外観で行の高さを設定できないのは
プラットフォームのテキストビューが
未対応だからですが
マテリアルデザインは対応しています
以上がタイポグラフィです
最後はシェイプです
マテリアルはシェイプをブランドの一部として
意味ある形で使うことを推奨しています
使うウィジェットの種類に応じて
異なるシェイプを使えます
シェイプには小、中、大があります
大きなBottomSheetと
小さなチップでは
異なるシェイプを設定します
これはShapeAppearanceで
定義します
TextAppearanceに似ていて
シェイプシステムの構成といえます
最初のFamily要素には
roundedやcutがあります
Sizeは半径、左上、右下など
どの角に適用するかを指定します
これもテーマで

Spanish: 
Si intentan definir una altura de línea
en la apariencia de texto
y se preguntan por qué no funciona,
es porque la vista de texto
de la plataforma no lo admite. 
Pero si usan componentes de diseño
de material, sí lo admite. 
Eso fue todo sobre tipografía. 
El último pilar es la forma. 
Material recomienda usar las formas
de manera significativa
en su app, para agregarle un significado
y que este sea parte de su marca. 
Reconoce que tal vez puedan
usar diferentes tipos de formas
según los tipos de widget
que estén usando. 
Las formas se dividen en pequeñas,
medianas y grandes. 
Tal vez quieran
configurar una forma diferente
para componentes grandes
como una hoja inferior
o un componente pequeño,
como un chip. 
Así que...
las definimos con algo llamado
"apariencia de formas",
que es una analogía similar
a la apariencia de texto. 
Es un tipo de configuración
para el sistema de formas. 
Está compuesto por algunos elementos. 
Primero está la familia. 
Admitimos esquinas redondeadas o rectas. 
También se puede modificar su tamaño,
como el radio o el redondeo:
y a qué esquinas se aplica, 
la superior izquierda, derecha, etc. 

Korean: 
텍스트 표시에서
행 높이를 설정하려고 하는데
잘되지 않을 때는
플랫폼의 텍스트 뷰가
이를 지원하지 않기 때문입니다
머티리얼 디자인
구성요소를 사용하면 가능합니다
여기까지 글꼴이었습니다
마지막 부분은 모양입니다
머티리얼은 애플리케이션에서
모양을 의미 있게 사용하여
브랜드의 일부가 되도록 하는 것을
권장합니다
또한 사용하는 위젯 유형에 따라
서로 다른 모양을 사용할 수도 있다는 것을
인지합니다
머리티얼은 모양 유형을
소, 중, 대로 나눕니다
버튼 시트와 같은 큰 구성요소에는
칩과 같은 아주 작은
구성요소와는 다른 모양을
사용할 수도 있기 때문입니다
이전에 텍스트 표시와 유사한
모양 표시를 통해
이들을 정의한 바
있습니다
모양 시스템의 구성이라 보면 됩니다
몇 가지로 구성되어 있죠
먼저 family입니다
저희는 둥근 모서리, 잘린 모서리,
반지름이나 라운딩 같은 모서리 크기와
상단 왼쪽, 하단 오른쪽 등의 방식으로
적용되는 모서리를 지원합니다
이러한 테마 속성을 설정함으로써

Spanish: 
Pueden imaginarse esto en su tema
al establecer los atributos de temas. 
Apunten esta apariencia de forma,
pequeña, mediana y grande
a una de las apariencias de forma
que configuraron en su archivo shape.xml. 
El sistema de formas también es compatible
con la idea de superposiciones,
es decir que si tienen una pantalla
en particular,
por ejemplo, las tarjetas de esta pantalla
y quieren que se vean diferentes
a las que configuraron en el tema,
pueden usar esta idea de superposición
para cambiar el widget o la parte
de una apariencia de forma aplicada. 
Pero tengan cuidado,
ya que algunos de los widgets de material
definen su propia superposición
de apariencia de forma. 
Deben tenerlo en cuenta. 
Si miran, por ejemplo, 
la hoja inferior que proviene
de los componentes de material design,
pueden ver que define una apariencia
de forma que se hereda
del componente grande, m-style,
que configuraron en su tema,
pero define su propia superposición. 
Si miran esta superposición,
define los bordes inferiores
en un radio de cero. 
Dice que una hoja inferior
proviene de la parte de abajo,

English: 
by setting these
theme attributes. 
So you point this shape
appearance-- small, medium,
and large components-- to one of
these shape appearances, which
you've set up in your shape XML. 
The shape system also supports
this idea of overlays,
which means that if you
have a particular screen--
so say the cards on this screen
actually want to look different
than the theme overlay one,
the one you set in the theme--
you can use this idea of
an overlay to kind of just
go in and change the
particular widget or one
part of an applied
shape appearance. 
But be wary that some
of the material widgets
define their own
shape appearance
overlays-- something
you should be aware of. 
So if you take, for example,
a look at the bottom sheet--
which comes from material
design components--
you can see it sets a shape
appearance which inherits from
the large component
[?  m-style ?]  which you set
in your theme. 
But it sets an overlay itself. 
Basically, if you
look at this overlay,
it sets the bottom
corners to zero radius. 
It says a bottom sheet
comes from the bottom,

Korean: 
이 내용을 테마에서 확인할 수 있습니다
이 모양 표시
즉 소, 중, 대 구성요소는
shape XML에서 설정한
이러한 모양 표시 중 하나를
가리킵니다
모양 시스템은 오버레이라는
개념도 지원합니다
따라서 특정한 화면이 있는 경우
그리고 화면에 있는 카드를
테마에서 설정한 다른 테마
오버레이와 달라 보이게 만들려면
오버레이를 사용하여
특정 위젯 또는 적용된
모양 표시의
한 부분을 변경하면 됩니다
하지만 일부 머티리얼 위젯은
자체 모양 표시 오버레이를
정의한다는 점을 기억하세요
머티리얼 디자인 구성요소에서 온
하단 시트를 보겠습니다
테마에서 설정한
큰 구성요소에서 상속받은
모양 표시를 설정하는 것을
확인할 수 있습니다
오버레이 자체도 설정하죠
이 오버레이를 보면
하단 모서리를 반지름 0으로 설정합니다
하단 시트가
하단에서 오는 것으로 설정하기 때문에

Indonesian: 
dengan menetapkan atribut
tema ini. 
Anda tunjuk tampilan bentuk ini,
komponen kecil, menengah, dan besar,
ke salah satu tampilan
bentuk ini,
yang telah Anda siapkan di XML bentuk. 
Sistem bentuk juga mendukung
gagasan overlay ini,
yang artinya, jika Anda
memiliki layar tertentu,
misalkan kartu di layar ini
ingin terlihat berbeda
dibandingkan overlay tema satu,
yang Anda tetapkan di tema,
Anda bisa gunakan gagasan
overlay ini untuk masuk
dan mengubah widget tertentu
atau satu bagian
tampilan bentuk yang diterapkan. 
Namun berhati-hatilah karena
beberapa widget material
menentukan overlay tampilan
bentuknya sendiri,
sesuatu yang harus Anda
waspadai. 
Jadi, misalnya,
Anda melihat sheet bawah,
yang datang dari komponen
desain material,
Anda bisa melihatnya menetapkan
tampilan bentuk yang diturunkan dari
komponen besar [?  m-style ?] 
yang Anda tetapkan
di tema Anda. 
Namun, ini menetapkan overlay
sendiri. 
Pada dasarnya, jika Anda melihat
overlay ini,
ini menetapkan pojok bagian
bawah ke radius nol. 
Overlay ini mengatakan,
sheet bawah datang dari bawah,

Portuguese: 
As formas são configuradas
no tema por meio de atributos. 
Você indica o tamanho,
pequeno, médio ou grande,
a uma das aparências de formas
configuradas em shape.xml. 
O sistema de formas também
é compatível com sobreposições,
o que significa que, se você tem
uma tela específica...
por exemplo, se os cards nesta tela
precisam ser diferentes
da sobreposição definida no tema,
você pode usar
a sobreposição para
mudar o widget específico ou uma
parte de uma aparência de forma aplicada. 
Cuidado, alguns
widgets do Material Design
definem a própria
sobreposição de aparência de formas. 
Se você observar, por exemplo,
a página inferior,
que vem dos componentes do
Material Design,
verá que ela define uma aparência
de formas herdada do estilo
de componente grande
definido no seu tema. 
Mas ela define uma sobreposição. 
Basicamente, se você observar
essa sobreposição,
ela define os cantos inferiores
para raio zero. 
Diz que uma página inferior
vem de baixo. 

Chinese: 
通过设置主题属性的方式来配置它
你把这些形状外观 小 中 大组件
指向你在形状 XML 中设置的形状外观
形状系统还支持覆盖
也就是说 如果你的某个特定屏幕
比如说 本屏幕中的卡片的外观
和你在主题层叠中设置的卡片不同
这时你就可以使用覆盖来更改特定的 widget
或是应用形状外观的一部分
但是 请注意 部分 Material widget
会定义它们自己的形状外观覆盖
这是需要大家注意的
我们来看一下 Bottom Sheet
这个出自 Material Design 组件
它设置的形状外观继承了你设置在主题中的大型组件样式
但是 它自行设置了覆盖
基本上讲 这个覆盖将底部转角设置为零半径
代码表示 Bottom Sheet 位于画面底部

Japanese: 
テーマ属性を設定して構成します
shapeAppearanceSmall
Componentなどで
shape.xmlの
ShapeAppearanceを参照します
シェイプシステムは
オーバーレイもサポートします
つまり ある画面上のカードを
テーマのオーバーレイと異なる外観にするには
オーバーレイを使います
これにより ウィジェットや
適用したShapeAppearanceの
一部を変更できます
一部のウィジェットは
独自のシェイプ、外観、
オーバーレイなので注意が必要です
たとえばマテリアルデザインの
BottomSheetは
テーマで設定した
LargeComponentを継承する
shapeAppearanceになっていますが
オーバーレイは独自のもので
下の角の半径が０です
BottomSheetは下から表示するので

Korean: 
하단에 자른 부분이 없습니다
디자인과 느낌에 대한 강한 의견이
반영된 것이죠
하지만 아셔야 할 것은
하단 시트의 스타일을 정하고
큰 구성요소 모양 표시를
설정함으로써
이들을 설정한다면
여기에 있는 것들과 겹쳐 쓰고
오버레이하게 됩니다
따라서 일부 위젯은 이들을
설정한다는 사실에 유의하세요
텍스트 필드도 마찬가지입니다
유용한 팁을 드리자면
머티리얼 모양 시스템 전체는
머티리얼 모양 드로어블이라 부르는
이 드로어블 때문에 가능합니다
아주 멋지죠
모양 표시를
제공하여 하나를 구성하면
이전에 모양 표시 시스템에서
보았던 것처럼
코드 로딩에서 하게 됩니다
머티리얼 모양 드로어블에서
가장 마음에 드는 점은
interpolation이라는 속성입니다
모양 시스템 중 어느 정도를
드로어블에 적용해야 하는지와
관련된 속성입니다
interpolation을 0으로 설정하면
모양을 설정하는
시스템이 적용되지 않습니다
1로 설정하면 전부 적용됩니다
따라서 이 값을 다르게 하거나

Spanish: 
por lo que no debería tener cortes
de la parte inferior. 
La apariencia es algo personal. 
Pero tienen que tener en cuenta esto,
porque si intentan agregar estilo
a una hoja inferior
y tratan de establecer estos aspectos
al configurar el componente grande
de la apariencia de forma,
se sobrescribirá, se superpondrá
con esto de aquí. 
Algunos widgets y campos de texto 
establecen esto. 
Un dato es que todo el sistema
de formas de material
se basa en un elemento de diseño
llamado "elemento de diseño
de formas de material". 
Es genial. 
Se construye al asignarle
una apariencia de forma. 
Básicamente, tiene que hacerse
al subir el código que vimos
para el sistema de apariencias de formas. 
Uno de mis elementos favoritos
del elemento de diseño de forma de material
es que tiene una propiedad
llamada interpolación,
que es básicamente
cuánto del sistema de formas
debería aplicar al elemento de diseño. 
Si configuran la interpolación en cero,
no se aplicará nada del sistema de formas. 
Si la configuran en uno, se aplicará todo. 
Y pueden variar eso
o, conociéndome, animarlo. 

Japanese: 
下の角は丸くしない外観になっています
これは注意が必要です
BottomSheetのスタイルを
shapeAppearanceLarge
Componentで設定すると
オーバーレイが上書きされてしまいます
一部のウィジェットやテキストフィールドには
注意してください
MaterialShapeシステムの基盤は
MaterialShapeDrawableです
これを構築するには
ShapeAppearanceを使用します
MaterialShapeDrawableで
気に入っているのは
このinterpolationです
シェイプシステムをDrawableに
どのくらい適用するかを指定します
０ならシェイプシステムは適用しない
１なら完全に適用です
この値を変化させてアニメーションも作れます

Portuguese: 
Então não deve ter cortes
na parte inferior. 
É uma questão de opinião,
porque tem a ver com aparência. 
Cuidado com isso,
porque se você tenta definir o
estilo de uma página inferior e
define essa coisas configurando
a aparência da forma de
componentes grandes, vai substituir
ou sobrepor
estes elementos. 
Alguns widgets são assim. 
Campos de texto fazem o mesmo. 
Uma dica profissional é que todo o
sistema de formas do Material Design
é baseado
nesse drawable chamado
"MaterialShapeDrawable". 
É muito legal. 
Dê a ele uma aparência de forma,
que, basicamente, é o que fazemos
no carregamento de código,
o que observamos
no sistema de aparência de formas. 
Uma das coisas que gosto no
"MaterialShapeDrawable"
é que ele tem uma propriedade
chamada "interpolação",
que é o quanto do
sistema de formas
eu devo aplicar ao drawable. 
Se você define 0 para a interpolação,
nenhum item do sistema é aplicado. 
Se você define 1,
todos serão aplicados. 
E você pode variar isso...

English: 
so it shouldn't have
cut-outs from the bottom. 
So it is very opinionated in
the way it should look and feel. 
But you need to
be aware of this,
because if you're trying to
style a bottom sheet and trying
to set those things by setting
your large component shape
appearance, it's
going to overwrite--
it's going to overlay--
with these things here. 
So just be aware that
some widgets do set these. 
Text fields do the same as well. 
A pro tip is that all of
the material shapes system
is actually pretty much powered
by this one drawable called
the material shape drawable. 
And it's pretty cool, actually. 
So you construct one by
giving it a shape appearance--
which just, basically,
this [INAUDIBLE]
to do in code loading, what
we looked at for the shape
appearance system. 
But one of my favorite things
about the material shape
drawable is it has this property
called interpolation, which
is basically how much
of the shape system
should I apply to the drawable? 
So if you set zero
interpolation,
none of the shaping
system will be applied. 
If you set one, all
of it will be applied. 
And you can actually vary that--

Chinese: 
所以它的底部无需特殊的轮廓
所以 它对自己的观感处理是有独特逻辑的
不过你需要注意到这一点
因为 如果你尝试为 Bottom Sheet 制作样式
并尝试通过设置大型组件形状外观来设置它们的话
它会覆盖在这里展示的这些东西上面
所以 请注意 一些 widget 是可以设置这些东西的
TextView 也会做同样的事情
这里为大家提供一条专业小技巧 
所有 Material 形状系统
其实差不多都是被一个可绘制对象驱动的
它的名字是 MaterialShapeDrawable
它的功能挺强大的
它的构建方式是 你为它提供一个形状外观
其实我们在代码加载的过程中做的差不多就是这件事
我们在形状系统中想要找到的就是这个东西
MaterialShapeDrawable 中我最喜欢的一点是
它有一个名叫插值 (interpolation) 的属性
也就是 需要把形状系统中的多少东西给应用到可绘制对象上
如果你设置的插值是0
那么形状系统就完全不会应用到可绘制对象上
如果你设置的插值是1
那么形状系统就会完整地应用到可绘制对象上
你还可以进行调整
或者按我喜欢的做法的话 把它动画化

Indonesian: 
jadi tak seharusnya punya
potongan dari bagian bawah. 
Jadi, penampilan dan nuansanya
amat tergantung selera. 
Tapi Anda perlu hati-hati
dengan ini,
karena jika Anda membuat
gaya sheet bawah dan mencoba
menetapkannya dengan mengatur
tampilan bentuk komponen besar,
ini akan mengganti,
akan membuat hamparan,
dengan yang ada di sini. 
Hati-hatilah karena beberapa
widget menetapkannya. 
Bidang teks juga melakukannya. 
Tips profesionalnya adalah
semua sistem bentuk material
amat didukung oleh
satu drawable yang disebut
MaterialShapeDrawable ini. 
Sebenarnya ini cukup keren. 
Anda buat satu drawable,
memberinya tampilan bentuk,
hanya dengan, pada dasarnya,
[TIDAK TERDENGAR] ini
dilakukan di pemuatan kode,
yang kita lihat di sistem tampilan bentuk. 
Salah satu hal favorit saya
pada MaterialShapeDrawable
adalah dimilikinya properti
yang disebut interpolation,
yakni seberapa
banyak sistem bentuk
yang harus saya terapkan ke drawable? 
Jadi, jika Anda menetapkan
interpolation nol,
tak akan ada penerapan sistem
pembuatan bentuk. 
Jika menetapkan satu,
semua akan diterapkan. 
Dan Anda bisa mengubah-ubahnya,

Japanese: 
こちらではBottomSheetに
ShapeAppearanceを適用し
ドラッグに応じて変化させています
ご覧のように丸みを帯びた角ですが
拡張すると
もっと角張った形に変化します
以上がマテリアルデザインの３つの柱の
色、シェイプ、タイプです
これらをいじって
ウィジェットの振る舞いを理解できるツールが
GitHubにあります
テーマ属性に値を設定すると
どの構成要素がどのように表示されるかが分かる
カタログアプリのようなツールです
ダウンロードして試してみてください
テーマ属性を確認したり変更したりできます
テーマ属性をいくつか変更すると
このように外観が変化します
どれをどう変更すれば

Spanish: 
En este ejemplo, tengo una hoja inferior
a la que le aplico una apariencia de forma. 
Haré variaciones en la hoja
que se puede arrastrar de allí. 
Pueden ver que las esquinas redondeadas
pasan de este tipo de forma redondeada
a estar cuadradas cuando se expanden. 
Eso es genial. 
Esos son los tres pilares de material design. 
Color, forma y tipo. 
Para ayudar a probarlos
o comprender cómo interactúan
con los diferentes widgets configurados,
tenemos un proyecto genial en GitHub
llamado "compilador de temas de material". 
Es una especie de app de catálogo
que muestra todos los atributos de temas
y los valores que se configuran en ellos,
y muestra cómo resultarán
y en qué componentes aparecerán
para esos conjuntos de valores. 
La idea es que puedan descargarla
y hacer pruebas. 
En algún lugar,
pueden ver todos los atributos de temas
que están configurados y pueden variarlos. 
Aquí cambié algunos
de los atributos de temas. 
Pueden ver cómo resulta
en una apariencia totalmente diferente. 
Es como un proyecto de pasatiempo

Indonesian: 
atau, sebutan saya, menganimasikannya. 
Ini dia contoh tempat saya
mendapatkan sheet bawah
untuk menerapkan tampilan
bentuk. 
Dan saya mengubah-ubahnya sesuai
penyeretan sheet bawah di sini. 
Jadi, Anda bisa lihat bahwa
pembulatan sudut berubah
dari jenis pembentukan bulat
menjadi sudut kotak saat membesar. 
Cukup keren. 
Jadi, itulah tiga
pilar desain material. 
Warna, bentuk, dan jenis. 
Dan untuk membantu menggunakannya,
atau memahami interaksi ketiganya
dengan rangkaian widget lain,
kami punya project keren di GitHub,
Material Theme Builder. 
Pada dasarnya ini adalah sejenis
aplikasi katalog yang
menunjukkan semua atribut tema
dan nilai yang ditetapkan
ke atribut tema itu,
dan menunjukkan hasilnya,
di komponen mana yang akan
tampak untuk rangkaian nilai
yang sudah ditentukan. 
Ini di sini agar Anda bisa
mengunduh dan menggunakannya. 
Dan Anda bisa lihat semua atribut
tema yang ditetapkan. 
Dapat diubah-ubah. 
Jadi saya hanya mengubah
beberapa atribut tema. 
Dan Anda bisa lihat hasil berbeda
pada tampilan atau nuansanya. 
Jadi, ini seperti proyek hobi,

English: 
or, knowing me, animate it. 
So here's an example where
I've got a bottom sheet where
I'm applying a shape
appearance to it. 
And I'm varying that based
on the drag of a bottom sheet
here. 
So you can see that the
corner rounding goes
from this kind of
rounded shape up
to kind of a squared-off
corner as it expands. 
So it's kind of cool. 
So those are the three
pillars of material design. 
So it's color, shape, and type. 
And to help you play
with these, or understand
how they interact with
the different widget set,
we have this cool
project on GitHub
called material theme builder. 
So basically it's kind
of a catalog app which
shows you all of
these theme attributes
and the values that
are set to them
and shows how they will result
in what the components will
look like for these
given set of values. 
The idea being here that
you can download this
and you can just play. 
And it has somewhere where
you can see all the theme
attributes that are set. 
And you can vary them. 
So here I've just changed a
few of the theme attributes. 
And you can see how it results
in a completely different look
or feel. 
So it's kind of
like a hobby project

Chinese: 
这个例子中 我要在底部的表格这里应用形状外观
我还在基于底部表格的拖动来调整它
所以大家可以看到 这里的圆角
从顶部圆角 随扩展变为方形转角 效果不错
这就是 Material Design 的三大要素：
颜色 形状 类型
为了帮助大家理解和掌握这些要素
明白他们是如何与其他 widget set 交互的
我们在 GitHub 上建立了一个很酷的项目：
Material Theme Builder
大体上讲 它是一个目录应用
展示了所有主题属性和它们所拥有的设定值
并展示出它们会如何导致
各种组件在给定数值情况下的各种外观变化
我们的思路是 你可以下载它 然后直接播放
你可以看到所有被设定好的主题属性
而且你可以更改它们
这里我只是更改了几个主题属性
大家可以看到 它是如何导致观感出现巨大变化的
这个项目有点像是爱好者的个人作品
大家可以观看它 更改数值

Korean: 
움직일 수 있습니다
모양 표시를 적용한 하단 시트를
예시로 보겠습니다
하단 시트의 드래그를 바탕으로 값을
바꿉니다
모서리 라운딩이
이렇게 둥근 모양에서
확장되면서 사각형으로
바뀌는 것을 볼 수 있죠
아주 멋지네요
지금까지 머티리얼 디자인의
중심 사항 세 가지를 말씀드렸습니다
색상, 모양, 유형이었습니다
이 세 가지의 활용 방법과
이들이 다른 위젯 설정과
상호작용하는 방법을
이해하시는 데 도움이 되는
머티리얼 테마 빌더라는
GitHub 프로젝트가
있습니다
일종의 카탈로그 앱으로
테마 속성 전부와
속성에 설정된 값을 보여주고
어떤 구성요소에서 어떤 결과가 나오고
주어진 값에서 어떻게 보이는지 알려줍니다
다운로드 받으셔서
직접 해보실 수 있습니다
설정된 테마 속성 전제를
확인하실 수 있고
다양하게 설정하실 수도 있습니다
저는 여기에서 테마 속성을
일부 변경했습니다
완전히 다른 디자인과 느낌이
나게 되죠
간단한 프로젝트이기 때문에
한번 살펴보시고 여러 가지를 변경하시고

Portuguese: 
ou, como eu gosto, animar...
Aqui está um exemplo em que
tenho uma página inferior à qual
estou aplicando uma aparência de forma. 
Estou variando isso, arrastando
uma página inferior. 
Vejam que
o arrendondamento do canto muda
desse tipo de forma arredondada
para um tipo de canto reto
quando se expande. 
Isso é bem legal. 
Então, estes são os três pilares
do Material Design:
cor, forma e fontes. 
Para ajudar vocês a "brincar"
com eles ou entender
como eles interagem com os widgets,
temos um projeto no GitHub
chamado "Material Theme Builder". 
Basicamente, é um tipo de
app de catálogos que
mostra os atributos de temas
e os valores definidos para eles
e mostra a aparência dos componentes
dependendo do conjunto de valores. 
A ideia é fazer o download e testar. 
É onde você pode ver todos os atributos
de temas definidos. 
E você pode variar. 
Aqui eu mudei alguns dos
atributos de temas. 
Vejam que o resultado
é uma aparência diferente. 
É como um projeto de hobby

Korean: 
살펴보고 싶은 위젯 세트를
구현하기 위해
맞춤설정하고자 하는 부분을
알아보세요
그러고 나서 설정한 테마 속성을
애플리케이션에 적용하세요
그러면 확인해볼 수 있습니다
GitHub 저장소
머티리얼 디자인 구성요소나
여기 링크를 사용하세요
색상, 모양, 유형 테마 설정 사용 방법을
더 잘 이해하실 수 있도록
이번 주에만 오픈소스로
예시 두 가지를 제공하며
세 번째는 GitHub에서
제공될 예정입니다
머티리얼에는
머티리얼 디자인 적용 방법을
소개하는 머티리얼 연구가
있습니다
또한 적용 방법에 대한
추가 오픈소스 예시도
있습니다
이러한 내용을
머티리얼 디자인 예시 저장소에서
확인하세요
다음 차례입니다
감사합니다
강연의 마지막 주제는 어두운 테마입니다
어두운 테마는 Android 10에서
새로운 시스템 설정으로
공개되었습니다
실제로 어떻게 구현하는지에
대해 말씀드리겠습니다
쉬운 방법은 AppCompat를 사용하는 것입니다
여러 버전에서
AppCompat에 DayNight가 있었습니다

Indonesian: 
Anda bisa melihatnya,
dan mengubah-ubahnya,
mencari tahu yang perlu disesuaikan
agar memperoleh rangkaian widget
yang ingin Anda lihat,
lalu mengambil atribut
tema yang Anda
siapkan ini dan menggunakannya
di aplikasi Anda. 
Dan Anda bisa cek. 
Ini di repo GitHub komponen
desain material,
atau tautan pendek di sini. 
Selain itu, untuk membantu Anda
memahami cara menggunakan
tema warna, bentuk, dan jenis ini,
minggu ini saja kami sediakan open source
dari dua contoh ini,
yang ketiga akan segera hadir
di GitHub Anda. 
Jadi, kami telah membuat..
Material punya studi
material ini,
yang menunjukkan cara untuk
menerapkan desain material. 
Jadi kini ada contoh
open source lain
tentang cara melakukannya. 
Anda dapat melihatnya di repo
contoh desain material. 
Giliran Anda. 
Baiklah. 
Jadi, bagian akhir pembicaraan
ini adalah tentang tema gelap. 
Tema gelap ditambahkan di,
maksudnya dijadikan publik,
di Android 10
sebagai setelan sistem baru. 
Dan [TIDAK TERDENGAR] untuk
cara Anda bisa menerapkannya. 
Cara mudah melakukannya
adalah dengan AppCompat. 
Kami punya DayNight di AppCompat
untuk sejumlah rilis sekarang. 

Japanese: 
満足のいく見栄えのウィジェットになるか
確かめたら
設定したテーマ属性を
アプリに移植しましょう
このアプリはGitHubのリポジトリにあります
リンクはこちらです
また 色、シェイプ、タイプ、テーマの
理解を助ける２つのサンプルを
先日オープンソース化しました
３つ目も近くGitHubで公開します
これらのマテリアルスタディは
マテリアルデザインの応用方法を紹介するもので
オープンソースのサンプルを追加しています
こちらのリンクから入手できます
最後に取り上げるのはダークテーマです
ダークテーマはAndroid 10で
新しいシステム設定として公開されました
簡単なのはAppCompatで
DayNightがあるので

Chinese: 
探索定制方式 获取自己想看到的 widget set
然后就只需把这些设置好的主题属性放进你的应用
你可以在 Material Design 组件 GitHub repo 上查看它
或是访问这个短链接
此外 为了帮助大家理解如何使用颜色和形状主题
我们在本周开源了两个这方面的样例
第三个样例正在制作中 都在 GitHub 上
我们还创建了 Material 研究报告
为你展示如何应用 Material Design
现在有更多开源范例可供大家参考了
大家可以前往 Material Design 示例 repo 查阅
好 本次演讲的最后一个环节是 暗色主题
暗色主题是在 Android 10 中
作为新推出的系统设置被正式加入的
下面我们来谈谈如何实现它
简单的做法是 使用 AppCompact
我们在几个发布版本的 AppCompact 中都加入了 DayNight 
你可以告诉它 你要使用哪种夜间模式

Portuguese: 
em que você pode variar certos elementos,
ver o que personalizar
para ter o conjunto de widgets ideal. 
Depois, pegar esses atributos de temas
configurados e colocá-los no seu app. 
Confiram no repositório GitHub dos
componentes do Material Design
ou neste link. 
Também, para ajudar
vocês a usar esses temas
com cor, forma e fontes, nesta semana
disponibilizamos o código
de dois destes exemplos no GitHub,
e o terceiro chega em breve. 
Há estudos que mostram
como aplicar o Material Design. 
Há mais exemplos de código aberto
de como fazer isso. 
Confiram no repositório
de exemplos do Material Design. 
É você. 
Legal. 
A última seção desta conversa
é sobre tema escuro. 
O tema escuro foi
disponibilizado ao público no Android 10
como uma nova definição do sistema,
e vocês decidem como implementar. 
O jeito mais fácil é
usar o AppCompat. 
Temos DayNight no AppCompat
em várias versões agora. 

Spanish: 
que pueden ver
y usar para variar estos aspectos
para ver cómo funciona
lo que quieren personalizar
para un conjunto de widgets
que desean observar. 
Luego pueden tomar
esos atributos de temas configurados
y ponerlos en su app. 
Pueden echar un vistazo. 
Está en el repositorio de GitHub
de los componentes de material design
o en el vínculo que aparece aquí. 
También, para ayudarlos a comprender
cómo usar estos temas
de color, forma y escritura,
esta semana abrimos el código
de dos de estos ejemplos,
y pronto habrá un tercero en su GitHub. 
Material tiene estos estudios
que les muestran
cómo podrían aplicar material design. 
Ahora también hay algunos ejemplos
de código abierto acerca de cómo hacer eso. 
Pueden probar todo esto
en el repositorio de ejemplos 
de material design. 
Tu turno. 
Bien. 
La última sección de esta charla
es sobre el tema oscuro. 
El tema oscuro se agregó…
Bueno, se hizo público, en Android 10,
como una nueva configuración del sistema. 
Es una herramienta que pueden implementar. 
La forma más fácil de hacerlo
es mediante AppCompat. 
Tenemos DayNight en AppCompat
ya desde algunas versiones. 

English: 
where you can take a look at it,
and you can vary these things,
work out how to--
what you want to customize
to get a widget set
that you want to look at--
and then just take
these theme attributes
that you set up and put
them in your application. 
And you can check this out. 
It's on the material
design components GitHub
repo-- or the short link here. 
Also, to help you understand
how to use this color, shape,
type theming, just this week
we've open-sourced and two
of these examples-- the
third one is coming--
onto your GitHub. 
So we have created--
Material has these
material studies,
which are kind of
like showing how you
might apply material design. 
And so there's now some
more open source examples
of how to do that. 
So you can check these out on
the material design examples
repo. 
Over to you. 
CHRIS BANES: Cool. 
So the final section in this
talk is about dark theme. 
So dark theme was added in--
well, it was made
public-- in Android 10
as a new system setting. 
And [INAUDIBLE] for how
you actually implement it. 
So the easy way to do
this is using AppCompat. 
We've had DayNight in AppCompat
for a number of releases now. 

Indonesian: 
Anda bisa memintanya
memakai mode malam yang mana. 
Gunakan satu dari dua API ini,
minta untuk memakai mode yang mana,
ini akan mengubah
pengkualifikasi resource untuk Anda. 
Hal kedua yang perlu dilakukan,
yakni mengubah tema. 
Jadi, di sini kita menggunakan
Theme. MaterialComponents,
cara mudah melakukannya adalah
menggunakan varian DayNight. 
Itulah yang diberikan
komponen desain material. 
Varian itu akan otomatis
beralih
antara terang dan gelap,
bergantung pada kualitas
resource yang [? sedang?]  digunakan. 
Anda mungkin merasa
pekerjaan selesai. 
Kita telah selesaikan dua tugas. 
Sistem yang menangani sisanya. 
Sayangnya, bukan itu
yang terjadi. 
[TERTAWA]
Jadi di sini ada aplikasi terang. 
Kita punya konten gelap,
teks gelap,
di atas latar belakang putih. 
Lalu kita masuk ke
tema gelap,
kadang ini terjadi,
teks gelap
di latar belakang gelap. 
Tidak keren. 
Yang kita inginkan
adalah
teks latar depan terang. 
Biasanya ini terjadi
karena kita punya
warna yang di-hardcode dalam
gaya atau tata letak kita. 
Jadi, di sini kita punya hardcode
gelap. 
Jelas sekali tidak akan bekerja dengan
baik di tema gelap. 
Yang ingin kita
lakukan adalah selalu merujuk

Korean: 
이를 통해 어떤 야간 모드를 사용할지
설정할 수 있습니다
API 두 개 중 하나를 사용하여
어떤 모드를 사용할지 결정하면
이것이 반영되고
리소스 한정자가 변경됩니다
두 번째로는 테마를 변경해야 합니다
여기에서는 Theme. MaterialComponent를 사용합니다
DayNight 변이형을 사용하면 쉽습니다
이것이 바로 머티리얼 디자인
구성요소가 제공하는 것입니다
이렇게 하면 사용되는 리소스 한정자에 따라
밝은 테마와 어두운 테마가
자동으로 전환됩니다
아마 작업이 끝났다고 생각하실 텐데요
저희가 작업 두 가지를 완료했고
시스템에서 나머지를 처리합니다
그런데 사실 이렇게 되지 않죠
[웃음]
여기 밝은 테마의 앱이 있습니다
어두운 콘텐츠, 어두운 텍스트를
흰색 배경 위에 놓았습니다
이제 어두운 테마로 바꿀 건데요
종종 어두운 텍스트가
어두운 배경에 놓입니다
좋지 않죠
여기에서 원하는 것은
밝은 전경 텍스트입니다
이러한 경우가 발생하는 이유는
스타일 또는 레이아웃에서
하드코딩된 색상이 있을 것이기 때문입니다
여기에는 하드코딩된 검은색이 있습니다
어두운 테마에는 맞지 않죠
항상 테마 속성을 참조하는 것이

Portuguese: 
Vocês podem dizer
qual modo noturno usar. 
Você usa duas dessas APIs,
diz qual modo usar
e ela muda o qualificador de
recursos para você. 
A segunda tarefa é mudar o tema. 
Aqui estamos usando
Theme. MaterialComponents...
O jeito mais fácil é
usar as variações DayNight. 
É o que os componentes do 
Material Design oferecem. 
Isso alterna automaticamente
entre claro e escuro,
dependendo do recurso usado. 
Vocês podem achar que o trabalho acabou. 
Concluímos as duas tarefas. 
O sistema vai fazer o resto. 
Mas, infelizmente, não é bem assim. 
Aqui temos um app claro. 
Temos conteúdo e texto escuros
em um plano de fundo branco. 
Quando temos um tema escuro,
às vezes acontece de você ter texto escuro
em um fundo escuro. 
Isso não é bom. 
O ideal é que o texto fique claro. 
Isso geralmente acontece porque
temos cores fixas no código
nos nossos estilos ou layouts. 
Aqui temos um preto no código. 
Obviamente, não funcionará
bem em um tema escuro. 

Chinese: 
你可以使用这两个 API 告诉它们应该使用什么模式
然后它就会替你更改资源限定符
我们要做的第二件事是 更改我们的主题
这里我们使用 Theme. MaterialComponents
最容易的做法就是 使用 DayNight 变量
这是 Material Design 组件为你提供的一个功能
它会自动在浅色和深色主题之间进行切换
具体取决于正被使用的资源
到了这里 大家可能觉得 工作已经完成了 对吧？ 
我们完成了两个任务 其余都可以交给系统了
不幸的是 情况并非如此
这里是一个浅色调应用
深色内容和深色文本布置在浅色背景上
然后 在进入暗色主题后 有时就会出现这样的情况：
暗色背景下的暗色文字 显然这样是不行的
我们想要的其实是这样的效果 浅色前景文本
通常 这种异常情况发生的原因在于
我们的样式或布局中存在一些硬编码的颜色
这里就是一个硬编码的黑色
显然 这种颜色在暗色背景下的效果会很差
我们真正想做的是 总是引用主题属性

Spanish: 
Pueden indicar qué modo nocturno usar. 
Usan una de estas dos API,
indican qué modo usar, y listo. 
Cambiará el calificador
de recursos por ustedes. 
Luego, tienen que cambiar el tema. 
Aquí uso Theme. MaterialComponents. 
La forma más fácil de hacerlo
es usando variantes DayNight. 
Eso es lo que les brindan
los componentes de material design. 
Automáticamente, 
cambiará de claro a oscuro,
según el recurso que se está usando. 
Creerán que ya hicieron todo el trabajo,
¿verdad? 
Que completaron dos tareas
y el sistema se encargará del resto. 
Lamentablemente, este no es el caso. 
Aquí tenemos una app liviana. 
Hay contenido oscuro, 
texto oscuro sobre un fondo blanco. 
Cuando pasamos al tema oscuro,
a veces pasa que queda texto oscuro
en un fondo oscuro. 
Obviamente, eso no es bueno. 
En realidad, lo que queremos
es tener este texto claro en primer plano. 
Esto suele suceder
porque codificamos los colores
en nuestros estilos o diseños. 
Aquí codificamos el negro. 
Obviamente, no funcionará bien
en un tema oscuro. 

Japanese: 
ナイトモードを指定できます
いずれかのAPIでモードを指定すると
リソース修飾子が自動で変更されます
次はテーマの変更です
ここではTheme. MaterialComponentsを
使っていますが
DayNightが簡単です
マテリアルデザインの長所ですね
使用するリソースに応じて
ライトからダークに自動で切り替わります
２つ作業をしたので
あとはシステムが処理してくれると思いきや
残念ながらそうはいきません
このライトアプリは
ダークなコンテンツとテキスト
白の背景ですが
ダークテーマに入ると
暗いテキストに暗い背景で
文字が読めません
テキストは白が良いですね
こうなるのは
色をスタイルやレイアウトに
ハードコードしているからです
これは黒にハードコードしていて
ダークテーマでは使えません

English: 
And you can tell it
what night mode to use. 
So you use one of these two
APIs, tell it what mode to use,
and it will do--
it will change the
resource qualifier for you. 
Second thing we need to
do is change our theme. 
So here we're using
Theme. MaterialComponents--
easy way to do it is just to
use the DayNight variants. 
That's what material design
components gives you. 
And that will
automatically switch
between light and dark
dependent on the resource
qual that's [?  being ?]  used. 
So you might think
that's job done, right? 
We've done our two tasks. 
The system's going
to handle the rest. 
Well, unfortunately, that's not
actually the case what happens. 
[LAUGHTER]
So here we've got a light app. 
So we've got dark
content, dark text,
on top of a white background. 
And then when we
go into dark theme,
sometimes this happens,
where you'll get dark text
on dark background. 
Obviously not great. 
Really what we want is this--
light foreground text. 
Now, usually this
happens because we'll
have hardcoded colors in
our styles or our layouts. 
So here we've got
a hardcoded black. 
That's obviously not going to
work great in a dark theme. 
Really what we want do
is to always reference

Korean: 
정말 필요합니다
여러분이 사용하실 수
있는 색상 테마 속성이
보통 어딘가에 있습니다
이전에 말씀드렸듯이
테마는 알맞게 수정되어야 하죠
테마는 모든 스타일 설정의 정보 출처입니다
그래서 색상에 대한 테마 속성이 있는 거죠
테마는 실제 스타일 설정을 구성하므로
테마를 사용하세요
어두운 테마를 빠르게 살펴보겠습니다
여기 예시가 있습니다
colorPrimary 및 colorSecondary가 있습니다
색상 리소스 두 개를 가리킵니다
어두운 테마에 대한
머티리얼 가이드라인에 따르면
일반적으로 기본 색상은
중간 정도의 색조여야 합니다
여기에서는 500을 사용합니다
정확히 500은 없지만
이와 유사한 수치가 적용될 수 있습니다
하지만 머티리얼
가이드라인을 보면 어두운 테마에서
기본 색상을 낮은 채도의
밝은 버전으로 설정하여
대비가 많지 않도록
해야 한다는 내용이 있습니다
온라인에서 사용 가능한
머티리얼 색상 도구에서
이와 관련해 도움을 받으실 수 있습니다
이제 색상을 입력하고
어떤 기본 색상이 적용되어야 하는지
확인합니다
이제 DayNight 테마를 사용합니다

Japanese: 
そこで
必ずテーマ属性を参照します
使える色のテーマ属性が
どこかにあるはずです
先に触れたように
テーマは常に正義で
スタイルの基盤です
色のテーマ属性があるのでそれを使いましょう
スタイルを決めるのはテーマです
ダークテーマをさっと見ていきます
colorPrimaryと
colorSecondaryで
色リソースを参照しています
ダークテーマのマテリアルガイドラインでは
主色をミッドトーンにします
こちらは500トーンを使っています
さらに ガイドラインによれば
ダークテーマは彩度を落とした
明るい主色を使って
コントラストを抑えます
これに役立つオンラインツールがあります
色を入力して
主色はどんな色が良いか確認できます

Indonesian: 
pada atribut tema. 
Jadi biasanya akan ada atribut
tema warna di suatu tempat
yang dapat digunakan. 
Seperti yang sudah
disebutkan tadi,
tema seharusnya tepat. 
Tema-lah sumber ketepatan
bagi penentuan gaya. 
Jadi, ada atribut tema
untuk warna. 
Gunakanlah karena tema mengonfigurasi
penentuan gaya aktual Anda. 
Mari kita membahas tema
gelap saat ini dengan cepat. 
Di sini ada contohnya. 
Ada colorPrimary dan
colorSecondary. 
Keduanya menunjuk pada
dua resource warna. 
Jadi, panduan material
untuk tema gelap,
pada umumnya,
misalkan warna primer Anda,
harus memiliki corak sedang. 
Jadi kita gunakan
corak 500. 
Tak harus angka itu,
bisa sesuatu yang serupa. 
Panduan material juga menyebutkan
bahwa di tema gelap,
warna primer harus jadi
versi lebih terang dan di-desaturasi
sehingga tidak terlalu kontras. 
Alat warna material
yang tersedia online
dapat membantu
Anda melakukannya. 
Anda bisa memberi warna,
dan menyesuaikannya
dengan warna primer
yang seharusnya. 
Jadi, di sini ada tema kita,
kita gunakan DayNight. 

Portuguese: 
Precisamos sempre referenciar
atributos de temas. 
Geralmente, há um atributo
de temas de cores que você pode usar. 
Como já dissemos, os temas
são o que precisamos fazer certo. 
Eles são a fonte do seu estilo. 
Por isso, há um atributo
de tema para cores. 
Use-o, porque o tema é o que vai
definir seu estilo real. 
Vamos analisar o tema escuro atual. 
Temos um exemplo aqui. 
Temos uma cor primária e uma secundária. 
Elas apontam para dois recursos de cores. 
Pelas diretrizes do Material Design
gerais e para o tema escuro,
as cores primárias
precisam ser um meio tom. 
Aqui estamos usando o tom 500. 
Não precisa ser esse número. 
Ainda segundo essas diretrizes,
em temas escuros,
sua cor primária deve ser
uma versão não saturada,
mais leve, para não ter muito contraste. 
A ferramenta de cores
do Material Design
ajuda nessa tarefa. 
Você pode inserir cores e testar
qual poderia ser sua cor primária. 
Temos aqui nosso tema...
estamos usando DayNight. 

Chinese: 
通常 颜色主题属性总会在某个地方可供使用
我们之前提到过
主题是必须正确无误的
它是所有样式的根基
所以 请尽量使用颜色主题属性
因为真正配置你的样式的 是主题
下面我们来快速回顾一下目前的暗色主题
这里有一个例子
这里有 colorPrimary 和 colorSecondary
它们指向两个颜色资源
针对暗色主题的 Material 指南
总体上认为 你的主要颜色应该属于中间色调
这里我们使用 500 色调
不一定要用这个数字 也可以是近似值
Material 指南指出 在暗色主题中
你的主要颜色应该是一种较为清淡的低饱和度颜色
所以 这种颜色的对比度不宜太高
目前在线并可用的 Material 颜色工具
可以帮助你完成这项任务
你可以加入颜色 然后尝试确定自己的主要颜色
这里就是我们的主题 我们使用的是 DayNight

English: 
theme attributes. 
So usually there will be a
color theme attribute somewhere
that you can use. 
And as we mentioned
earlier, themes
are really the thing which
are supposed to be correct. 
They're your source of
truth for all styling. 
So there's a theme
attribute for a color. 
Use it, because the
theme is the thing which
configures your actual styling. 
So let's quickly go through
the current dark theme. 
So here we have an example. 
We've got a primary
and a color secondary. 
And they point to
two color resources. 
So the material guidelines
for dark theme--
well, for in general--
say your primary colors
should be like a mid-tone. 
So here we're
using the 500 tone. 
It doesn't have that number,
but could be somewhat similar. 
But material guidelines
also say that in dark theme,
your primary color should
be a desaturated, lighter
version so it doesn't
have so much contrast. 
The material color
tool available online
actually helps you
with this task. 
So you can put color
in and play around
with what your primary
color should be. 
So here we have our theme--
we're using DayNight. 

Spanish: 
En realidad, siempre debemos
hacer referencia a atributos de temas. 
Entonces, habrá un atributo
de tema de color que podrán usar. 
Como mencionamos antes,
los temas son
lo que se supone que es correcto. 
Son la fuente de confianza
para la creación de estilos. 
Si hay un atributo de tema
para un color, úsenlo. 
Porque el mismo tema
es lo que configurará el estilo real. 
Veamos rápidamente el tema oscuro actual. 
Aquí tenemos un ejemplo. 
Tenemos colorPrimary y colorSecondary. 
Apuntan a dos recursos de color. 
Los lineamientos generales para temas oscuros
dicen que deberían configurar
los colores primarios
para que tengan un tono medio. 
Aquí usamos el tono 500. 
No tiene que ser ese,
pueden usar uno similar. 
También dicen que, en un tema oscuro,
el color primario debe ser
una versión sin saturar, más clara,
para que no tenga demasiado contraste. 
La herramienta de color de material
que está disponible en línea
los ayuda con esta tarea. 
Entonces, pueden poner un color
y probar cuál podría ser el color primario. 
Aquí tenemos nuestro tema, usamos DayNight. 

Portuguese: 
Mas temos o atributo "colorPrimary". 
Temos duas cores:
uma para o tema claro
e uma para o escuro. 
Como podemos variar isso? 
Na verdade, para qual vamos apontar? 
Precisamos de algo para alternar
entre as duas cores. 
Poderíamos fazer algo assim...
onde temos um valor...
uma cor primária, um recurso de cor...
em valores e também um
em "values-night". 
Ele alterna entre as duas cores. 
Mas não é bom fazer isso. 
Demos significado semântico
para os valores de cores. 
Eu diria que a maneira mais fácil é esta. 
Vamos tentar extrair seus temas,
colocá-los em um tema básico
e adicionar uma camada. 
Depois, podemos variar o tema
nos valores e
"values-night", apontando
para as variações. 
Isso vale para muitos
dos atributos de temas
de que Nick falou nos
temas do Material Design...
"colorPrimary",
"coloOnPrimary", tudo isso. 
E há variações nos temas. 
Podemos definir as cores que precisarmos. 
Vou apontar para o indigo 500
no tema claro e 200 no escuro. 

Chinese: 
我们有了 colorPrimary 主题属性
但我们有两种颜色
一种用于浅色主题 一种用于深色主题
那么我们要如何让它多样化呢？ 
我们要指向哪一种颜色？ 
我们需要的是在这两种颜色之间设置命令别名
我们可以这样做
把 color_primary 颜色资源作为一个数值
把 value-night 颜色资源作为另一个数值
并在两种颜色之间设置命令别名
但是 我们说过 我们不想这么做
我们为颜色值赋予语义含义
我认为 最简单的做法是这样的
我们要提取主题
把它们放进基本主题 然后再在上面叠加一层
然后我们就可以用我们的数值和 value-night
把这个主题多样化 并指向任意发生改变的东西
通常 发生改变的会是 
Nick 在 Material 主题中提到过的大量的主题属性
colorPrimary colorOnPrimary 诸如此类
它们在不同的主题中会产生不同的变化
然后 我们还可以设置我们需要的任何颜色
这里我们要在浅色主题中指向 indigo_500 
在深色主题中指向 indigo_200

Japanese: 
このテーマはDayNightですが
テーマ属性はcolorPrimaryです
色は２つで
ライト用とダーク用です
どう使い分ければよいでしょうか? 
どちらを参照すればよいでしょう
２つの色のエイリアスを使います
このように
colorPrimaryと色リソースを
valuesとvalues-nightに
設定して色を使い分けます
しかし色の値が
セマンティック名になっていて
好ましくありません
一番簡単なのは
テーマを抽出してBase. Themeに格納し
その上にレイヤーを追加し
valuesとvalues-nightで
テーマを変更します
ニックが触れていたテーマ属性です
マテリアルテーマでは
colorPrimary
colorOnPrimaryなどが
テーマによって値が異なります
次に必要な色を設定します
ライトはindigo_500
ダークは200です

Spanish: 
Pero tenemos nuestro atributo
de tema de color primario. 
Tenemos dos colores,
uno para el tema claro
y otro para el tema oscuro. 
¿Cómo variaremos eso? 
De hecho, ¿a cuál apuntaremos? 
Lo que realmente necesitamos
es algo para unir esos dos colores. 
Podríamos hacer algo como esto,
donde tenemos un valor
un color primario, 
un recurso de color en valores,
y también uno con valores, como Night. 
Y cambia entre estos dos colores. 
Pero si lo recuerdan,
no es recomendable hacer esto. 
Estamos dando significado semántico
a valores de color. 
Diría que lo más fácil es lo siguiente:
vamos a intentar extraer los temas,
colocarlos en un tema base
y luego agregar una capa por encima. 
Luego, podemos variar ese tema
en nuestros valores y los valores Night
apuntando a lo que varíe. 
Por lo general, esto sería
muchos de los atributos de tema
que Nick explicó en los temas de material,
colorPrimary, colorOnPrimary, todos esos. 
Luego, variarán en los diferentes temas. 
Después, podemos establecer
cualquier color que necesitemos. 
Aquí apuntaremos a índigo 500
en nuestro color claro
y 200 en el oscuro. 

Indonesian: 
Tapi, kita punya atribut
tema colorPrimary. 
Dan ada dua warna. 
Satu warna untuk tema terang,
satu warna untuk tema gelap. 
Bagaimana kita akan
mengubahnya? 
Faktanya, yang mana yang
akan kita pilih? 
Jadi, yang kita perlukan
adalah sesuatu untuk menjadi alias
di antara kedua warna. 
Kita bisa lakukan hal seperti ini,
tempat kita memiliki nilai,
colorPrimary,
resource warna,
dalam nilai, dan juga satu lagi
dalam nilai [?  dash ?]  malam. 
Dan ini menjadi alias antara
dua warna itu. 
Jika Anda masih ingat,
kita tak perlu melakukannya. 
Kita memberikan makna
semantik pada nilai warna. 
Jadi, cara termudahnya
adalah melakukannya seperti ini. 
Kita akan mencoba
dan mengekstrak tema Anda,
meletakkannya ke dalam tema dasar,
lalu menambahkan lapisan di atasnya. 
Lalu kita bisa ubah tema itu
dalam nilai kita dan nilai
[?  dash ?]  malam, menunjuk ke
varian apa pun. 
Jadi, biasanya ini akan menghasilkan
banyak atribut tema
yang dibicarakan Nick dalam
pembuatan tema material,
colorPrimary, colorOnPrimary,
dan semua hal itu. 
Semuanya itu cenderung bervariasi
dalam tema yang berbeda. 
Dan kita sebenarnya dapat menetapkan
warna apa pun yang kita perlukan. 
Kita akan menunjuk ke
indigo 500 untuk terang
dan 200 untuk yang gelap. 

English: 
But we have our color
primary theme attribute. 
But we have two colors. 
We have one for our light
theme, one for our dark theme. 
How are we actually
going to vary that? 
In fact, which one we
going to actually point to? 
So what we really need
is something to alias
between the two colors. 
So we could do something like
this, where we have a value--
a color primary,
color resource--
in values, and then also one
in values [?  dash ?]  night. 
And it aliases between
the two colors. 
But if you remember back,
we don't want to do this. 
We're giving semantic
meaning to color values. 
So I'd say the easiest way
to do is something like this. 
So we're going to try
and extract your themes,
put them into a base theme,
and then add a layer on top. 
Then we can vary that theme
in our values and values
[?  dash ?]  night, pointing
to whatever varies. 
So usually this would be a
lot of the theme attributes
that Nick was talking about
in the material theming--
color primary, color
on primary, all those. 
And they will tend to vary
in the different themes. 
And then we can actually
set whichever color we need. 
Here we're going to point
to indigo 500 and our light
and 200 in our dark. 

Korean: 
하지만 colorPrimary 테마
속성도 있죠
색상이 두 가지 있습니다
하나는 밝은 테마용이고
하나는 어두운 테마용입니다
변화를 주려면 어떻게 해야 할까요? 
둘 중 어떤 것을 지정해야 할까요? 
여기에서 두 색상 사이에
별칭을 설정할 대상이 필요합니다
보시는 것처럼 값에 색상 리소스인
color_primary가 있고요
values와 values-night도 있습니다
두 색상 사이에서 별칭을 설정합니다
하지만 이러한 방법을 선호하지는 않습니다
대신 색상 값에 의미론적인 의미를 부여하죠
가장 쉬운 방법은 이렇습니다
테마를 추출하여 기본 테마에 넣고
최상위에 레이어를 추가합니다
이렇게 하면 values와 values-night에서
테마에 변화를 주어
변경되는 사항을 지정하게 됩니다
이는 닉이 colorPrimary,
colorOnPrimary 등
머티리얼 테마 설정에서 언급했던
많은 테마 속성이 될 수 있습니다
테마 속성은 각기 다른 테마에서
다르게 나타나는 경향이 있습니다
그러면 우리는 원하는
색상으로 설정할 수 있게 되죠
밝은 테마에서는 인디고 500을
어두운 테마에서는 200을 지정합니다

Chinese: 
接下来我们要谈的是 主要颜色的使用
这是 Nick 提到过的那个 Owl 示例
它使用了非常明亮的蓝色作为主要的表面颜色
当我们进入暗色模式时 
这个亮蓝色就显得太亮了
因为人们通常会在夜间使用暗色模式
所以它和深色主题的对象不协调 它太亮了
Material 其实针对这种情况发布过指导意见：
不应大面积使用亮色 
因为它们会向用户展示出过量的亮度
你真正想要的是这样的效果
更加深暗的色调
这也和用户选择采用深色主题的初衷相一致
我们在这里的做法是
在浅色主题中切换至 colorPrimary
而在深色主题中则切换至 colorSurface
幸运的是 Android 代码库中的 Material Design 组件
内建了对这个功能的支持
它拥有一个名为 colorPrimarySurface 的新属性
这个功能会代你设置好别名
它还内建了多种样式
ActionBar 以及这里列出的所有样式

Portuguese: 
Agora, vamos falar sobre
o uso de cores primárias. 
Esta é a amostra sobre a qual Nick
falou antes, que usa
uma cor primária realmente brilhante
para as superfícies. 
Quando vamos para o modo escuro,
o azul-claro é muito brilhante. 
Ele acaba com o propósito do tema escuro,
normalmente usado à noite. 
Ele é um pouco brilhante demais. 
O Material Design tem
orientações para isso. 
Não use cores brilhantes
para superfícies grandes, porque
elas emitem muito brilho
para o usuário. 
Com cores muito escuras,
não há motivo para usar o tema escuro. 
O que fazemos aqui
é alternar entre uma cor primária
para nosso tema claro e a superfície
de cor para o tema escuro. 
Os componentes do Material
Design para a biblioteca do Android
têm suporte incorporado para isso. 
Há um novo atributo chamado
"colorPrimarySurface",
que faz essa alternância. 
Há também vários estilos incorporados,
como "ActionBar" e os listados aqui. 

Japanese: 
次は主色の使用です
これはニックが話していたサンプルで
主色は明るい青を使っています
ダークモードに入ると
青が少し明るすぎて
ダークとは言えません
夜に使うにしてはちょっと明るすぎます
マテリアルのガイドラインによれば
大きなサーフェスは明るくなりすぎるので
明るい色は避けるのが無難です
理想はこのように
ずっとダークで落ち着いた色調です
ダークテーマを使う目的に合っています
実際には ライトのcolorPrimaryと
ダークのcolorSurfaceを切り替えます
Androidライブラリの
マテリアルデザインコンポーネントが
標準でサポートしています
colorPrimarySurfaceという
新しい属性がエイリアスの役目をします
またビルトインのスタイルがいくつかあり
ActionBarなどを使うと

Spanish: 
Ahora hablaremos
sobre el uso de colores primarios. 
Este es el ejemplo de OWL
que Nick mostró antes,
que usa un color primario azul brillante
para sus superficies. 
Cuando pasamos al modo oscuro,
ese azul brillante es demasiado brillante. 
Desafía al objetivo de usar un tema oscuro,
ya que suele usarse de noche. 
Es demasiado brillante. 
Material tiene lineamientos al respecto. 
Dice que no deberían usar
colores demasiado brillantes
para superficies grandes,
porque emiten mucho brillo para el usuario. 
Lo que en realidad deben hacer
es usar un tono de color mucho más oscuro
que, de hecho, hace que no tenga sentido
usar un tema oscuro. 
Lo que hacemos aquí
es cambiar entre un color primario
para el tema claro y una superficie de color
para el tema oscuro. 
Por suerte, 
los componentes de material design
para la biblioteca de Android
tienen compatibilidad con esto. 
Tiene un atributo nuevo
llamado colorPrimarySurface,
que hace esto por ustedes. 
También tiene varios estilos integrados,
ActionBar y todos los que aparecen aquí,

Korean: 
다음은 기본 색상 사용에 대해
말씀드리겠습니다
이것은 닉이
이야기한 Owl 샘플입니다
표면의 경우 밝은 파랑을 기본 색상으로
사용하죠
이제 어두운 모드로 들어가면
이 밝은 파랑은 너무 밝게 보입니다
어두운 모드는 주로 야간에 사용되기 때문에
어두운 테마의 객체에는 맞지 않습니다
너무 밝죠
머티리얼은 이에 대한
가이드라인을 제공합니다
넓은 표면에는 너무 밝은
색상을 사용하지 말라는 것입니다
불빛이 너무 밝아 사용자가 불편하기
때문입니다
여러분이 원하는 것은
어두운 테마로 변경하려는
사용자의 목적에 부합하지 않는
훨씬 어둡고 눈이 부시지 않는
색조입니다
여기에서 저희가 하려는 것은
밝은 테마의 colorPrimary와
어두운 테마의 colorSurface 사이를
전환하는 것입니다
Android 라이브러리용
머티리얼 디자인 구성요소는
이를 기본으로 지원합니다
별칭을 대신 설정해주는
colorPrimarySurface라는
새로운 속성이 있습니다
ActionBar 등 많은 스타일이
기본으로 제공되며
이러한 스타일을 사용하면 자동으로

English: 
So the next thing we're
going to talk about
is the use of primary colors. 
So this is the Owl
sample that Nick
was talking to
earlier, which uses
a really bright blue primary
color for its surfaces. 
Now when we go into dark
mode, that bright blue
is a little bit too bright. 
It kind of defeats the
object of a dark theme
because they're
typically used at night. 
It's a little bit too bright. 
So material actually
has guidelines on this. 
It says that you shouldn't
use really bright colors
for large surfaces because
they emit too much brightness
for the user. 
Really, what you
want is something
like this-- a much more dark,
muted color tone, which kind of
actually hasn't matched the
purpose of the user going
to a dark theme. 
Now, really what
we're doing here
is switching between
a color primary
for our light theme and color
surface for our dark theme. 
And luckily, the material design
components for Android library
has built-in support for this. 
It has a new attribute called
colorPrimarySurface, which
does the aliasing for you. 
It also has a number of
styles which are built
in-- so ActionBar, all
the ones listed here--

Indonesian: 
Selanjutnya, kita akan membicarakan
penggunaan warna primer. 
Ini adalah contoh Owl yang
disebutkan Nick,
yang menggunakan
warna primer biru amat terang
untuk permukaannya. 
Sekarang, saat masuk ke mode gelap,
biru terang itu
agak terlalu terang. 
Semacam mengalahkan
objek tema gelap
karena biasanya digunakan
malam hari. 
Agak terlalu terang. 
Jadi, material sebenarnya
punya panduan tentang hal ini. 
Disebutkan agar tidak menggunakan
warna yang begitu terang
untuk permukaan besar karena
terlalu terang bagi pengguna. 
Yang Anda inginkan adalah
yang seperti ini,
nuansa warna yang lebih gelap
dan redup, yang sebenarnya
tidak sesuai dengan tujuan
pengguna masuk ke tema gelap. 
Sekarang, yang akan
kita lakukan di sini
adalah beralih antara colorPrimary
untuk tema terang
dan colorSurface untuk tema gelap. 
Untungnya, komponen desain
material untuk library Android
punya dukungan bawaan untuk hal ini. 
Ada atribut baru bernama
colorPrimarySurface, yang
melakukan pembuatan alias untuk Anda. 
Juga ada sejumlah gaya bawaan,
ActionBar,
semua yang dicantumkan di sini,

Chinese: 
你可以使用它们 它们会自动为你设置别名
我们可以使用默认视图样式属性
这里我们可以设定它 
这样以来 所有的底部导航视图
都会使用主要表面版本
然后 就会得到这样的结果
无论是浅色还是暗色版本
我们都能得到我们想要的样式
再来深入讲一些关于暗色背景的内容
这里大家可以看到有多个表面
这里有两个表面 一个是卡片 一个是底部导航视图
它们的颜色略有不同
但是 如果我们深入挖掘这些样式 就会发现
它们其实使用的是同样的颜色表面属性
这是为什么呢？ 
归根结底 这是因为升高覆盖
在浅色主题中 阴影落在了浅色上
这样你才能看到阴影
但是在暗色背景下 你是看不到阴影的
至少是看不清楚 因为整个背景都是暗的
Material 采用了一个新方式来解决这个问题
也就是升高覆盖
暗色表面在更靠近假想光源的时候会变亮
这就是升高的作用
很多 widget 材质和组件 比如这些 都支持升高覆盖

Spanish: 
que pueden usar
y que harán ese cambio por ustedes. 
Podemos usar un atributo
de estilo de vista personalizado. 
Aquí lo configuraremos
para que la navegación
en las vistas inferiores
usen la versión de superficie primaria. 
Luego, obtenemos algo como esto. 
Ya sea en el tema oscuro o claro,
obtenemos el estilo que realmente queremos. 
Profundizando un poco más en el tema oscuro,
pueden ver que hay varias superficies. 
Aquí tenemos dos superficies:
una tarjeta 
y una vista de navegación inferior
y tienen colores algo diferentes. 
Pero, cuando profundizo en los estilos,
usan el mismo atributo
de superficie de color. 
¿Por qué? 
Se trata de las superposiciones
de elevación. 
En el tema claro,
la sombra corta la ausencia de luz
para que puedan ver el cuadro. 
En el tema oscuro,
no pueden ver la sombra
o no pueden verla tan bien,
porque está oscuro. 
Material tiene una nueva solución para eso:
las superposiciones de elevación. 
Cuando una superficie oscura se vuelve clara,
se pone más brillante. 
Ese es el efecto de elevación. 
Varios Widgets, elementos de material
y componentes, como estos,

Japanese: 
自動的にこのようになります
既定のビュースタイル属性を使えます
BottomNavigationViewで
必ずPrimarySurfaceを使うように設定すると
ライトでもダークでも
望み通りのスタイルになります
ダークテーマを詳しく見ると
実は複数のサーフェスがあります
カードと
BottomNavigationViewの２つがあり
色が若干異なりますが
共にcolorSurfaceを使っています
これがElevation Overlayです
ライトテーマは明るいので影が見えますが
ダークテーマは暗いので影はよく見えません
解決策としてマテリアルには
Elevation Overlayがあります
このように
ダークなサーフェスが明るくなります
これらがElevation Overlayを

Korean: 
별칭을 설정해줍니다
그리고 기본 뷰 스타일
속성을 사용할 수 있습니다
이제 하단 탐색 뷰에서
primary surface 버전을
사용하도록 설정하겠습니다
그러면 이렇게 됩니다
밝은 테마든 어두운 테마든 상관없이
원하는 실제 스타일을 찾을 수 있습니다
어두운 테마를 자세히 살펴보면
실제로 많은 표면이
있다는 것을 확인할 수 있습니다
이제 표면 두 가지가 있는데요
하나는 카드이고
하나는 하단 탐색 뷰입니다
색상이 조금 다르죠
하지만 스타일을 자세히 보면
동일한 색상 표면 속성을
사용하고 있음을 알 수 있습니다
왜 그럴까요? 
바로 높이 오버레이 때문입니다
밝은 테마에서는 그림자를 통해
밝은 부분을 볼 수 있습니다
어두운 테마는 어둡기 때문에
그림자를 볼 수 없습니다
그래서 머티리얼은
새로운 해결책을 적용했습니다
바로 높이 오버레이죠
어두운 표면에 빛이 생기면서 밝아집니다
높이의 효과입니다

Indonesian: 
Anda bisa gunakan gaya ini
dan semua akan dilakukan
otomatis untuk Anda. 
Kita dapat menggunakan atribut
gaya tampilan default. 
Jadi, kita akan menetapkannya
agar semua tampilan navigasi bawah
menggunakan versi permukaan primer. 
Lalu hasilnya seperti ini. 
Terlepas dari apakah
dalam mode terang atau gelap,
kita akan memperoleh gaya aktual
yang kita mau. 
Mari kita gali tema gelap lebih dalam,
Anda bisa lihat di sini bahwa
ada beberapa permukaan. 
[TIDAK TERDENGAR]
Di sini ada dua permukaan,
satu adalah kartu,
satunya tampilan navigasi bawah,
dan warnanya sedikit berbeda. 
Tapi, saat kita amati gayanya,
keduanya memakai atribut
colorSurface sama. 
Kenapa? 
Itu karena overlay elevasi. 
Jadi, di tema terang,
bayangan sebenarnya
menghilangkan ketiadaan cahaya
sehingga dapat dilihat. 
Di tema gelap, Anda tidak
dapat melihat bayangan,
Anda tidak dapat melihat bayangan
dengan cukup jelas karena gelap. 
Jadi, material punya cara baru,
solusi baru untuk mengatasinya,
yaitu overlay elevasi. 
Saat permukaan gelap memperoleh cahaya,
overlay elevasi mencerahkannya. 
Itulah efek elevasi. 
Sejumlah widget, material,
dan komponen

English: 
you can use these styles
and they'll automatically
do this for you. 
And we can use a default
view style attribute. 
So here we're going to set it
so all of our bottom navigation
views are going to use the
primary surface version. 
And then we get
something like this. 
So regardless of whether
in light or dark,
we get the actual style we want. 
Digging into that dark
theme a little bit,
you can see here that there's
actually multiple surfaces. 
[INAUDIBLE]
So here we have two
surfaces-- one a card,
one a bottom navigation view--
and they're slightly different
colors. 
But when we actually
dig into the styles,
they're actually using the
same color surface attribute. 
So why is that? 
So that comes down to
elevation overlays. 
So in light theme,
shadow actually
cut the absence of
light so you see them. 
In a dark theme, you
can't see a shadow-- well,
you can't see a shadow so
well because it's dark. 
So material has a new way to--
a new solution for that,
which is elevation overlays. 
So as a dark surface comes
to light, it brightens it. 
And that's the
effect of elevation. 
A number of widgets,
materials, and components

Portuguese: 
Você pode usá-los, e eles
fazem isso automaticamente. 
Podemos usar um atributo de estilo
de visualização padrão. 
Vamos defini-lo para que todas
as visualizações de navegação
inferiores usem a versão
de superfície primária. 
Ficamos com algo assim. 
Independentemente de ser claro ou escuro,
temos o estilo real que queremos. 
Analisando mais o tema escuro,
vocês podem ver aqui que há
várias superfícies. 
Temos duas superfícies: um card e uma
visualização de navegação inferior. 
As cores são diferentes. 
Ao analisar os estilos, vemos
que eles usam o mesmo
atributo "colorSurface". 
Por quê? 
Isso nos leva às
sobreposições de elevação. 
No tema claro, as sombras
cortam a falta de luz para
que você possa vê-las. 
No tema escuro, você não vê uma sombra. 
Na verdade, não a vê tão bem,
porque está escuro. 
O Material Design tem um nova solução:
sobreposições de elevações. 
Quando uma superfície escura
fica clara, ele a destaca. 
Esse é o efeito de elevação. 
Vários widgets, materiais e componentes

Korean: 
많은 위젯, 머티리얼, 구성요소는
여기에 있는 것들과 마찬가지로
이 높이 오버레이를 지원합니다
이제 시간이 없기 때문에
이 부분은 생략하겠습니다
나중에 살펴보시기 바랍니다
이 내용은 Github에 게시할 테니
확인해보시기 바랍니다
높이 오버레이를 사용하는
맞춤설정 뷰에 대한 내용이 있습니다
밝은 테마와 어두운 테마의
밝기 차이가 매우 작을 때
참고할 만한 내용을
확인하실 수 있습니다
속성 7가지가 있는 샘플도 있습니다
이러한 것들을 잘 활용하시면
큰 도움이 될 것입니다
시간이 없기 때문에
개요는 생략하겠습니다
[웃음]
여기도 건너뛰어야겠네요
[웃음]
감사합니다
[환호 및 박수]
[음악 재생]

Indonesian: 
mendukung overlay elevasi,
seperti yang satu ini. 
Dan kita akan melewatinya
karena tak ada waktu lagi. 
Tapi, Anda bisa lihat nanti. 
Kami akan memposting
[TIDAK TERDENGAR] ini di GitHub
agar Anda bisa membacanya,
tampilan kustom
untuk overlay elevasi. 
Dan tujuannya adalah saat
Anda memiliki tema,
tujuannya agar
tema yang bervariasi antara
terang dan gelap sangatlah kecil. 
Kita sudah punya sampel
tujuh atribut. 
Anda melakukan
hal yang benar
jika mendapatkan sesuatu seperti ini. 
Dan kita akan lewati
bagian ringkasan
karena tak ada waktu lagi. 
[TERTAWA]
Kita juga akan melewati ini. 
[TERTAWA]
Terima kasih. 
[BERSORAK, TEPUK TANGAN]
[MUSIK DIPUTAR]

Japanese: 
サポートしています
時間がないのでこれは飛ばします
Githubに掲載しておきます
Elevation Overlayを使った
カスタムビューです
ライトとダークで変化するテーマが
とてもコンパクトになります
このサンプルには属性が７つあります
こういう風にできていれば大丈夫です
時間がないのでまとめは飛ばします
これも飛ばします
ありがとうございました

Chinese: 
这里我们跳过去 因为时间不够了
不过大家可以之后再慢慢看
我们会把相关材料发布在 GitHub 供大家查阅
它会打印定制视图来使用升高覆盖
我们这样做的目标是 
让浅色和深色背景切换时的主题变动变得很小
在这个例子中 我们可以看到7个属性
如果你看到了类似的东西 那么你就知道你走对路了
我们跳过总览 因为时间不够了
这个我们也要跳过
多谢大家

English: 
have support for elevation
overlays like these ones here. 
And we'll skip through this
because we are out of time. 
But you can look at this later. 
We'll post this [INAUDIBLE] on
Github so you can actually read
this--
this print a custom view
to use elevation overlays. 
And the goal here is that
when you have your theme--
the goal is that your--
the theme that varies between
light and dark is very small. 
So here we've gotten a sample
which is seven attributes. 
You know you're on a
good path if you've
got something like this. 
And we're going to
skip the overview
because we don't have time. 
[LAUGHTER]
And we're going
to skip this, too. 
[LAUGHTER]
Thank you very much. 
[CHEERING, APPLAUSE]
[MUSIC PLAYING]

Portuguese: 
são compatíveis com sobreposições
de elevações, como estes aqui. 
Vou pular isso porque estamos
sem tempo. 
Vocês podem ver isso depois. 
Postaremos no GitHub
para vocês darem uma olhada. 
Isso cria uma visualização
para usar sobreposições de elevação. 
Quando você tem seu tema,
o objetivo é que a variação nele
seja pequena
ao mudar do claro para escuro. 
Temos uma amostra de sete atributos. 
Você sabe que está
no caminho certo quando tem algo assim. 
Vamos pular a visão geral
porque não temos tempo. 
Vamos pular isso também. 
Muito obrigado. 

Spanish: 
son compatibles 
con la superposición de elevación. 
Omitiremos esto
porque nos quedamos sin tiempo. 
Pero pueden verlo más tarde. 
Lo publicaremos en GitHub
para que puedan leerlo. 
Es una vista personalizada
para usar superposiciones de elevación. 
El objetivo, cuando tienen un tema,
es que el tema que varía
entre claro y oscuro sea muy pequeño. 
Aquí tenemos un ejemplo con siete atributos. 
Saben que van por buen camino
si tienen algo como esto. 
Omitiremos el resumen
porque no tenemos tiempo. 
Y esto también. 
Muchas gracias.