1page.title=Duy trì Tính tương thích
2
3@jd:body
4
5<div id="tb-wrapper">
6<div id="tb">
7<h2>Bài học này hướng dẫn bạn cách</h2>
8<ol>
9  <li><a href="#Theme">Định nghĩa Kiểu Thay thế</a></li>
10  <li><a href="#Layouts">Cung cấp Bố trí Thay thế</a></li>
11  <li><a href="#SupportLib">Sử dụng Thư viện Hỗ trợ</a></li>
12  <li><a href="#CheckVersion">Kiểm tra Phiên bản Hệ thống</a></li>
13</ol>
14<h2>Bạn cũng nên đọc</h2>
15<ul>
16  <li><a href="http://www.google.com/design/spec">Đặc tả phong cách Material Design</a></li>
17  <li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
18</ul>
19</div>
20</div>
21
22
23<p>Một số tính năng của Material Design như chủ đề Material và chuyển tiếp hoạt động tùy chỉnh
24chỉ sẵn có trên Android 5.0 (API mức 21) trở lên. Tuy nhiên, bạn có thể thiết kế ứng dụng của mình để tận dụng
25những tính năng này khi chạy trên thiết bị hỗ trợ material design mà vẫn tương thích
26với thiết bị đang chạy các bản phát hành Android trước đây.</p>
27
28
29<h2 id="Theme">Định nghĩa Kiểu Thay thế</h2>
30
31<p>Bạn có thể cấu hình ứng dụng của mình để sử dụng chủ đề material trên những thiết bị hỗ trợ và chuyển về
32chủ đề cũ hơn trên những thiết bị đang chạy phiên bản Android cũ hơn:</p>
33
34<ol>
35<li>Định nghĩa một chủ đề kế thừa từ một chủ đề cũ hơn (như Holo) trong
36    <code>res/values/styles.xml</code>.</li>
37<li>Định nghĩa một chủ đề với cùng tên và kế thừa chủ đề material trong
38    <code>res/values-v21/styles.xml</code>.</li>
39<li>Đặt chủ đề này làm chủ đề cho ứng dụng của bạn trong tệp bản kê khai.</li>
40</ol>
41
42<p class="note"><strong>Lưu ý:</strong>
43Nếu ứng dụng của bạn sử dụng chủ đề material nhưng không cung cấp chủ đề thay thế bằng cách này,
44ứng dụng của bạn sẽ không chạy trên phiên bản Android trước 5.0.
45</p>
46
47
48<h2 id="Layouts">Cung cấp Bố trí Thay thế</h2>
49
50<p>Nếu những bố trí mà bạn thiết kế theo hướng dẫn về material design không sử dụng bất cứ
51thuộc tính XML mới nào được giới thiệu trong Android 5.0 (API mức 21), chúng sẽ hoạt động trên các phiên bản
52Android trước đó. Nếu không, bạn có thể cung cấp bố trí thay thế. Bạn cũng có thể cung cấp
53bố trí thay thế để tùy chỉnh diện mạo ứng dụng của mình trên các phiên bản Android cũ hơn.</p>
54
55<p>Tạo tệp bố trí của bạn cho Android 5.0 (API mức 21) bên trong <code>res/layout-v21/</code> và
56tệp bố trí thay thế của bạn cho các phiên bản Android cũ hơn trong <code>res/layout/</code>.
57Ví dụ, <code>res/layout/my_activity.xml</code> là một bố trí thay thế cho
58<code>res/layout-v21/my_activity.xml</code>.</p>
59
60<p>Để tránh lặp mã, hãy định nghĩa kiểu của bạn bên trong <code>res/values/</code>, sửa đổi
61các kiểu trong <code>res/values-v21/</code> cho các API mới và sử dụng kế thừa kiểu, định nghĩa
62kiểu cơ bản trong <code>res/values/</code> và kế thừa từ những kiểu trong <code>res/values-v21/</code>.</p>
63
64
65<h2 id="SupportLib">Sử dụng Thư viện Hỗ trợ</h2>
66
67<p><a href="{@docRoot}tools/support-library/features.html#v7">Thư viện Hỗ trợ v7</a>
68r21 và cao hơn gồm những tính năng material design sau:</p>
69
70<ul>
71<li><a href="{@docRoot}training/material/theme.html">Các kiểu mang phong cách material design</a> cho một số widget
72    hệ thống khi bạn áp dụng một trong các chủ đề <code>Theme.AppCompat</code>.</li>
73<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Thuộc tính chủ đề bảng màu</a>
74   trong các chủ đề <code>Theme.AppCompat</code>.</li>
75<li>Widget {@link android.support.v7.widget.RecyclerView} để <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">hiển thị các bộ sưu tập
76    dữ liệu</a>.</li>
77<li>Widget {@link android.support.v7.widget.CardView} để <a href="{@docRoot}training/material/lists-cards.html#CardView">tạo thẻ</a>.</li>
78<li>Lớp {@link android.support.v7.graphics.Palette} để <a href="{@docRoot}training/material/drawables.html#ColorExtract">trích xuất màu nổi bật từ
79    hình ảnh</a>.</li>
80</ul>
81
82<h3>Widget hệ thống</h3>
83
84<p>Chủ đề <code>Theme.AppCompat</code> cung cấp các kiểu phong cách material design cho những widget này:</p>
85
86<ul>
87  <li>{@link android.widget.EditText}</li>
88  <li>{@link android.widget.Spinner}</li>
89  <li>{@link android.widget.CheckBox}</li>
90  <li>{@link android.widget.RadioButton}</li>
91  <li>{@link android.support.v7.widget.SwitchCompat}</li>
92  <li>{@link android.widget.CheckedTextView}</li>
93</ul>
94
95<h3>Bảng màu</h3>
96
97<p>Để có được các kiểu phong cách material design và tùy chỉnh bảng màu bằng Thư viện Hỗ trợ v7
98của Android, hãy áp dụng một trong các chủ đề <code>Theme.AppCompat</code>:</p>
99
100<pre>
101&lt;!-- extend one of the Theme.AppCompat themes -->
102&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
103    &lt;!-- customize the color palette -->
104    &lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
105    &lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
106    &lt;item name="colorAccent">@color/material_green_A200&lt;/item>
107&lt;/style>
108</pre>
109
110<h3>Danh sách và Thẻ</h3>
111
112<p>Widget {@link android.support.v7.widget.RecyclerView} và {@link
113android.support.v7.widget.CardView} sẵn có trong các phiên bản Android cũ hơn thông qua
114Thư viện Hỗ trợ v7 của Android với những hạn chế sau:</p>
115<ul>
116<li>{@link android.support.v7.widget.CardView} quay lại triển khai đổ bóng theo lập trình
117    bằng cách sử dụng phần đệm bổ sung.</li>
118<li>{@link android.support.v7.widget.CardView} không cắt hình những dạng xem con của nó có giao cắt với
119    các góc bo tròn.</li>
120</ul>
121
122
123<h3>Phụ thuộc</h3>
124
125<p>Để sử dụng những tính năng này trong các phiên bản Android trước 5.0 (API mức 21), hãy thêm
126Thư viện Hỗ trợ v7 của Android vào dự án của bạn như một <a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Phần phụ thuộc Gradle</a>:</p>
127
128<pre>
129dependencies {
130    compile 'com.android.support:appcompat-v7:21.0.+'
131    compile 'com.android.support:cardview-v7:21.0.+'
132    compile 'com.android.support:recyclerview-v7:21.0.+'
133}
134</pre>
135
136
137<h2 id="CheckVersion">Kiểm tra Phiên bản Hệ thống</h2>
138
139<p>Những tính năng sau chỉ sẵn có trong Android 5.0 (API mức 21) trở lên:</p>
140
141<ul>
142<li>Chuyển tiếp hoạt động</li>
143<li>Phản hồi chạm</li>
144<li>Lộ ra hoạt hình</li>
145<li>Hoạt hình dựa trên đường dẫn</li>
146<li>Nội dung vẽ được véc-tơ</li>
147<li>Nhuộm màu nội dung vẽ được</li>
148</ul>
149
150<p>Để duy trì tính tương thích với các phiên bản Android cũ hơn, hãy kiểm tra {@link
151android.os.Build.VERSION#SDK_INT version} vào thời gian chạy trước khi bạn gọi ra API cho bất cứ tính năng nào
152sau đây:</p>
153
154<pre>
155// Check if we're running on Android 5.0 or higher
156if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
157    // Call some material design APIs here
158} else {
159    // Implement this feature without material design
160}
161</pre>
162
163<p class="note"><strong>Lưu ý:</strong> Để quy định ứng dụng của bạn hỗ trợ những phiên bản Android nào,
164hãy sử dụng thuộc tính <code>android:minSdkVersion</code> và <code>android:targetSdkVersion</code>
165trong tệp bản kê khai của bạn. Để sử dụng các tính năng của material design trong Android 5.0, hãy đặt
166thuộc tính <code>android:targetSdkVersion</code> thành <code>21</code>. Để biết thêm thông tin, hãy xem hướng dẫn
167 <a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt; API
168</a>.</p>
169