blob: e19a745dd9b9819742c86cbdb81c7048be399f32 [file] [log] [blame]
page.title=Duy trì Tính tương thích
@jd:body
<div id="tb-wrapper">
<div id="tb">
<h2>Bài hc này hướng dn bn cách</h2>
<ol>
<li><a href="#Theme">Định nghĩa Kiu Thay thế</a></li>
<li><a href="#Layouts">Cung cp B trí Thay thế</a></li>
<li><a href="#SupportLib">S dng Thư vin H trợ</a></li>
<li><a href="#CheckVersion">Kim tra Phiên bn H thng</a></li>
</ol>
<h2>Bn cũng nên đọc</h2>
<ul>
<li><a href="http://www.google.com/design/spec">Đặc t phong cách Material Design</a></li>
<li><a href="{@docRoot}design/material/index.html">Material Design trên Android</a></li>
</ul>
</div>
</div>
<p>Mt s tính năng ca Material Design như ch đề Material và chuyn tiếp hot động tùy chnh
ch sn có trên Android 5.0 (API mc 21) tr lên. Tuy nhiên, bn có th thiết kế ng dng ca mình để tn dng
nhng tính năng này khi chy trên thiết b h tr material design mà vn tương thích
vi thiết b đang chy các bn phát hành Android trước đây.</p>
<h2 id="Theme">Định nghĩa Kiu Thay thế</h2>
<p>Bn có th cu hình ng dng ca mình để s dng ch đề material trên nhng thiết b h tr và chuyn v
ch đề cũ hơn trên nhng thiết b đang chy phiên bn Android cũ hơn:</p>
<ol>
<li>Định nghĩa mt ch đề kế tha t mt ch đề cũ hơn (như Holo) trong
<code>res/values/styles.xml</code>.</li>
<li>Định nghĩa mt ch đề vi cùng tên và kế tha ch đề material trong
<code>res/values-v21/styles.xml</code>.</li>
<li>Đặt ch đề này làm ch đề cho ng dng ca bn trong tp bn kê khai.</li>
</ol>
<p class="note"><strong>Lưu ý:</strong>
Nếu ng dng ca bn s dng ch đề material nhưng không cung cp ch đề thay thế bng cách này,
ng dng ca bn s không chy trên phiên bn Android trước 5.0.
</p>
<h2 id="Layouts">Cung cp B trí Thay thế</h2>
<p>Nếu nhng b trí mà bn thiết kế theo hướng dn v material design không s dng bt c
thuc tính XML mi nào được gii thiu trong Android 5.0 (API mc 21), chúng s hot động trên các phiên bn
Android trước đó. Nếu không, bn có th cung cp b trí thay thế. Bn cũng có th cung cp
b trí thay thế để tùy chnh din mo ng dng ca mình trên các phiên bn Android cũ hơn.</p>
<p>To tp b trí ca bn cho Android 5.0 (API mc 21) bên trong <code>res/layout-v21/</code> và
tp b trí thay thế ca bn cho các phiên bn Android cũ hơn trong <code>res/layout/</code>.
Ví dụ, <code>res/layout/my_activity.xml</code> là mt b trí thay thế cho
<code>res/layout-v21/my_activity.xml</code>.</p>
<p>Để tránh lp mã, hãy định nghĩa kiu ca bn bên trong <code>res/values/</code>, sa đổi
các kiu trong <code>res/values-v21/</code> cho các API mi và s dng kế tha kiu, định nghĩa
kiu cơ bn trong <code>res/values/</code> và kế thừa từ những kiểu trong <code>res/values-v21/</code>.</p>
<h2 id="SupportLib">S dng Thư vin H trợ</h2>
<p><a href="{@docRoot}tools/support-library/features.html#v7">Thư vin H tr v7</a>
r21 và cao hơn gm nhng tính năng material design sau:</p>
<ul>
<li><a href="{@docRoot}training/material/theme.html">Các kiu mang phong cách material design</a> cho mt s widget
h thng khi bn áp dng mt trong các ch đề <code>Theme.AppCompat</code>.</li>
<li><a href="{@docRoot}training/material/theme.html#ColorPalette">Thuc tính ch đề bng màu</a>
trong các ch đề <code>Theme.AppCompat</code>.</li>
<li>Widget {@link android.support.v7.widget.RecyclerView} để <a href="{@docRoot}training/material/lists-cards.html#RecyclerView">hin th các b sưu tp
d liu</a>.</li>
<li>Widget {@link android.support.v7.widget.CardView} để <a href="{@docRoot}training/material/lists-cards.html#CardView">to thẻ</a>.</li>
<li>Lp {@link android.support.v7.graphics.Palette} để <a href="{@docRoot}training/material/drawables.html#ColorExtract">trích xut màu ni bt t
hình nh</a>.</li>
</ul>
<h3>Widget h thng</h3>
<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>
<ul>
<li>{@link android.widget.EditText}</li>
<li>{@link android.widget.Spinner}</li>
<li>{@link android.widget.CheckBox}</li>
<li>{@link android.widget.RadioButton}</li>
<li>{@link android.support.v7.widget.SwitchCompat}</li>
<li>{@link android.widget.CheckedTextView}</li>
</ul>
<h3>Bng màu</h3>
<p>Để có được các kiu phong cách material design và tùy chnh bng màu bng Thư vin H tr v7
ca Android, hãy áp dng mt trong các ch đề <code>Theme.AppCompat</code>:</p>
<pre>
&lt;!-- extend one of the Theme.AppCompat themes -->
&lt;style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
&lt;!-- customize the color palette -->
&lt;item name="colorPrimary">@color/material_blue_500&lt;/item>
&lt;item name="colorPrimaryDark">@color/material_blue_700&lt;/item>
&lt;item name="colorAccent">@color/material_green_A200&lt;/item>
&lt;/style>
</pre>
<h3>Danh sách và Thẻ</h3>
<p>Widget {@link android.support.v7.widget.RecyclerView} và {@link
android.support.v7.widget.CardView} sn có trong các phiên bn Android cũ hơn thông qua
Thư vin H tr v7 ca Android vi nhng hn chế sau:</p>
<ul>
<li>{@link android.support.v7.widget.CardView} quay li trin khai đổ bóng theo lp trình
bng cách s dng phn đệm b sung.</li>
<li>{@link android.support.v7.widget.CardView} không ct hình nhng dng xem con ca nó có giao ct vi
các góc bo tròn.</li>
</ul>
<h3>Ph thuc</h3>
<p>Để s dng nhng tính năng này trong các phiên bn Android trước 5.0 (API mc 21), hãy thêm
Thư vin H tr v7 ca Android vào d án ca bn như mt <a href="{@docRoot}sdk/installing/studio-build.html#dependencies">Phn ph thuc Gradle</a>:</p>
<pre>
dependencies {
compile 'com.android.support:appcompat-v7:21.0.+'
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
}
</pre>
<h2 id="CheckVersion">Kim tra Phiên bn H thng</h2>
<p>Nhng tính năng sau ch sn có trong Android 5.0 (API mc 21) tr lên:</p>
<ul>
<li>Chuyn tiếp hot động</li>
<li>Phn hi chm</li>
<li>L ra hot hình</li>
<li>Hot hình da trên đường dn</li>
<li>Ni dung v được véc-tơ</li>
<li>Nhum màu ni dung v được</li>
</ul>
<p>Để duy trì tính tương thích vi các phiên bn Android cũ hơn, hãy kim tra {@link
android.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
sau đây:</p>
<pre>
// Check if we're running on Android 5.0 or higher
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// Call some material design APIs here
} else {
// Implement this feature without material design
}
</pre>
<p class="note"><strong>Lưu ý:</strong> Để quy định ng dng ca bn h tr nhng phiên bn Android nào,
hãy s dng thuc tính <code>android:minSdkVersion</code> và <code>android:targetSdkVersion</code>
trong tp bn kê khai ca bn. Để s dng các tính năng ca material design trong Android 5.0, hãy đặt
thuc tính <code>android:targetSdkVersion</code> thành <code>21</code>. Để biết thêm thông tin, hãy xem hướng dn
<a href="{@docRoot}guide/topics/manifest/uses-sdk-element.html">&lt;uses-sdk&gt; API
</a>.</p>