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<!-- extend one of the Theme.AppCompat themes --> 102<style name="Theme.MyTheme" parent="Theme.AppCompat.Light"> 103 <!-- customize the color palette --> 104 <item name="colorPrimary">@color/material_blue_500</item> 105 <item name="colorPrimaryDark">@color/material_blue_700</item> 106 <item name="colorAccent">@color/material_green_A200</item> 107</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"><uses-sdk> API 168</a>.</p> 169