blob: f4ce4025963f4e0e20adc796e482a7cd686264a4 [file] [log] [blame]
page.title=Định nghĩa Đổ bóng và Dng xem Ct hình
@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="#Elevation">Gán Độ cao cho Dng xem ca Bn</a></li>
<li><a href="#Shadows">Tùy chnh Đổ bóng và Vin ca Dng xem</a></li>
<li><a href="#Clip">Dng xem Ct hình</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>Material design gii thiu độ cao cho phn t UI. Độ cao giúp người dùng hiu được
tm quan trng tương đối ca tng phn t và tp chung s chú ý ca h vào tác v hin có.</p>
<p>Độ cao ca mt dng xem, được biu din bng thuc tính Z, s xác định din mo trc quan ca
bóng đổ: dng xem có giá tr Z cao hơn s đổ bóng ln hơn, mm hơn. Dng xem có giá tr Z cao hơn s che khut dng xem
có giá tr Z thp hơn; tuy nhiên, giá tr Z ca mt dng xem không nh hưởng ti kích c ca dng xem.</p>
<p>Đổ bóng được v bi dng xem m ca dng xem cao hơn, do vy nó ph thuc vào tiêu chun ct dng xem,
được ct bi dng xem m theo mc định.</p>
<p>Độ cao cũng hu ích trong vic to hot hình nơi widget tm thi dâng cao hơn
mt phng dng xem khi thc hin mt hành động nào đó.</p>
<p>Để biết thêm thông tin v độ cao trong material design, hãy xem
<a href="http://www.google.com/design/spec/what-is-material/objects-in-3d-space.html">Đối tượng
trong không gian 3D</a>.</p>
<h2 id="Elevation">Gán Độ cao cho Dng xem ca Bn</h2>
<p>Giá tr Z ca mt dng xem có hai thành phn:
<ul>
<li>Độ cao: Thành phn tĩnh.</li>
<li>Độ dch: Thành phn động được s dng cho hot hình.</li>
</ul>
<p><code>Z = elevation + translationZ</code></p>
<img src="{@docRoot}training/material/images/shadows-depth.png" width="580" height="261" alt="" />
<p class="img-caption"><strong>Hình 1</strong> - Đổ bóng cho các độ cao dạng xem khác nhau.</p>
<p>Để đặt độ cao ca dng xem trong mt định nghĩa b trí, hãy s dng thuc tính <code>android:elevation</code>
. Để đặt độ cao ca dng xem trong mã ca mt hot động, hãy s dng phương thc
{@link android.view.View#setElevation View.setElevation()}.</p>
<p>Để đặt độ dch ca dng xem, hãy s dng phương thc {@link android.view.View#setTranslationZ
View.setTranslationZ()}.</p>
<p>Các phương thc {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} và {@link
android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} mới cho phép
bn d dàng to hiu ng hot hình cho độ cao ca dng xem. Để biết thêm thông tin, hãy xem tài liu tham kho API cho
{@link android.view.ViewPropertyAnimator} và hướng dn cho nhà phát trin v <a href="{@docRoot}guide/topics/graphics/prop-animation.html">Hot hình Thuc tính</a>
.</p>
<p>Bn cũng có th s dng {@link android.animation.StateListAnimator} để
quy định nhng hot hình này bng cách khai báo. Điu này đặc bit hu ích đối vi trường hp các thay đổi
trng thái s kích hot hot hình như khi người dùng nhn mt nút. Để biết thêm thông tin, hãy xem phn
<a href="{@docRoot}training/material/animations.html#ViewState">To Hiu ng Hot hình Thay đổi Trng thái Xem</a>.</p>
<p>Giá tr Z được đo bng dp im nh độc lp vi mt độ).</p>
<h2 id="Shadows">Tùy chnh Đổ bóng và Vin ca Dng xem</h2>
<p>Các gii hn ni dung v được ca nn dng xem s xác định hình dng mc định ca bóng.
<strong>Vin</strong> biu th hình dng ngoài ca mt đối tượng đồ ha và định nghĩa vùng
gn sóng cho phn hi chm.</p>
<p>Hãy cân nhc dng xem sau được định nghĩa vi ni dung v được làm nn:</p>
<pre>
&lt;TextView
android:id="@+id/myview"
...
android:elevation="2dp"
android:background="@drawable/myrect" />
</pre>
<p>Ni dung v được làm nn được định nghĩa là mt hình ch nht vi góc bo tròn:</p>
<pre>
&lt;!-- res/drawable/myrect.xml -->
&lt;shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
&lt;solid android:color="#42000000" />
&lt;corners android:radius="5dp" />
&lt;/shape>
</pre>
<p>Dng xem s to đổ bóng có góc bo tròn do ni dung v được làm nn s định nghĩa
vin ca dng xem. Khi cung cp vin tùy chnh, nó ghi đè hình dng mc định ca bóng đổ dng xem.</p>
<p>Để định nghĩa vin tùy chnh cho mt dng xem trong mã ca bn:<p>
<ol>
<li>M rng lp {@link android.view.ViewOutlineProvider}.</li>
<li>Ghi đè phương thc {@link android.view.ViewOutlineProvider#getOutline getOutline()}.</li>
<li>Gán trình cung cp vin mi cho dng xem ca bn bng phương thc {@link
android.view.View#setOutlineProvider View.setOutlineProvider()}.</li>
</ol>
<p>Bn có th to vin hình bu dc và hình ch nht có góc bo tròn bng cách s dng các phương thc trong lp
{@link android.graphics.Outline}. Trình cung cp vin mc định cho dng xem s ly vin
t nn ca dng xem. Để ngăn dng xem đổ bóng, hãy đặt trình cung cp vin ca nó
thành <code>null</code>.</p>
<h2 id="Clip">Dng xem Ct hình</h2>
<p>Dng xem ct hình cho phép bn d dàng thay đổi hình dng ca mt dng xem. Bn có th ct hình dng xem để
nht quán vi các phn t thiết kế khác hoc để thay đổi hình dng ca mt dng xem để đáp ng li thông tin đầu vào ca người dùng.
Bn có th ct mt dng xem thành vùng vin ca nó bng cách s dng phương thc {@link android.view.View#setClipToOutline
View.setClipToOutline()} hoc thuc tính <code>android:clipToOutline</code>. Ch
vin là hình ch nht, hình tròn và hình ch nht bo tròn mi h tr ct hình như được xác định bi phương thc
{@link android.graphics.Outline#canClip Outline.canClip()}.</p>
<p>Để ct dng xem thành hình dng ca mt ni dung v được, hãy đặt ni dung v được làm nn ca dng xem
(như minh ha bên trên) và gi phương thc {@link android.view.View#setClipToOutline View.setClipToOutline()}
.</p>
<p>Ct dng xem là mt thao tác tn kém, vì vy đừng to hiu ng hot hình cho hình dng bn s dng để
ct dng xem. Để đạt được hiu ng này, hãy s dng hot hình <a href="{@docRoot}training/material/animations.html#Reveal">Hiu ng L ra</a>.</p>