diff --git a/docs/html-intl/intl/in/design/material/index.jd b/docs/html-intl/intl/in/design/material/index.jd
new file mode 100644
index 0000000000000..3ba418727b036
--- /dev/null
+++ b/docs/html-intl/intl/in/design/material/index.jd
@@ -0,0 +1,185 @@
+page.title=Desain Bahan untuk Android
+page.tags=Material,design
+page.image=images/cards/design-material-for-android_2x.jpg
+
+@jd:body
+
+
+
+ Membuat Aplikasi dengan Desain Bahan Pengantar Desain Bahan Kertas dan Tinta: Bahan Penting Desain Bahan di Aplikasi Google I/ODokumen Pengembang
+ Video
+ Video
+ Video
+
Desain bahan adalah panduan komprehensif untuk desain visual, gerak, dan +interaksi lintas platform dan perangkat. Android kini menyertakan dukungan untuk +aplikasi desain bahan. Untuk menggunakan desain bahan di aplikasi Android, ikuti panduan yang didefinisikan +dalam spesifikasi desain bahan dan gunakan +komponen dan fungsionalitas baru yang tersedia di Android 5.0 (API level 21) ke atas.
+ +Android menyediakan elemen berikut untuk membangun aplikasi desain bahan:
+ +Untuk informasi selengkapnya tentang mengimplementasikan desain bahan pada Android, lihat +Membuat Aplikasi dengan Desain Bahan.
+ + +Tema bahan menyediakan gaya baru untuk aplikasi Anda, widget sistem yang memungkinkan Anda mengatur +palet warnanya, dan animasi default untuk umpan balik sentuh dan transisi aktivitas.
+ + +
+ Tema bahan gelap
+
+ Tema bahan terang
+Untuk informasi selengkapnya, lihat Menggunakan Tema +Bahan.
+ + +Android menyediakan dua widget baru untuk menampilkan kartu dan daftar dengan gaya desain bahan +dan animasi:
+ + +
+ Widget RecyclerView baru adalah versi ListView
+ yang lebih mudah dimasukkan dan mendukung beragam tipe layout serta memberikan peningkatan kinerja.
+ Widget CardView baru memungkinkan Anda menampilkan potongan informasi penting dalam
+ kartu yang memiliki tampilan dan cara kerja yang konsisten.
Untuk informasi selengkapnya, lihat Membuat Daftar +dan Kartu.
+ + +Selain properti X dan Y, tampilan di Android kini memiliki +properti Z. Properti baru ini mewakili ketinggian tampilan, yang menentukan:
+ +Untuk informasi selengkapnya, lihat Mendefinisikan +Bayangan dan Memangkas Tampilan.
+ + +API animasi baru memungkinkan Anda membuat animasi custom untuk umpan balik sentuh dalam kontrol UI, +perubahan status tampilan, dan transisi aktivitas.
+ +API ini memungkinkan Anda:
+ +Animasi umpan balik sentuh dimasukkan ke dalam beberapa tampilan standar, misalnya tombol. API baru +ini memungkinkan Anda menyesuaikan animasi ini dan menambahkannya ke tampilan custom Anda.
+ +Untuk informasi selengkapnya, lihat Mendefinisikan Animasi +Custom.
+ + +Kemampuan baru untuk drawable ini membantu Anda mengimplementasikan aplikasi desain bahan:
+ +Untuk informasi selengkapnya, lihat Bekerja dengan +Drawable.
diff --git a/docs/html-intl/intl/in/training/material/animations.jd b/docs/html-intl/intl/in/training/material/animations.jd new file mode 100644 index 0000000000000..e57a03f166c88 --- /dev/null +++ b/docs/html-intl/intl/in/training/material/animations.jd @@ -0,0 +1,550 @@ +page.title=Mendefinisikan Animasi Custom + +@jd:body + +Animasi dalam desain bahan memberi pengguna umpan balik tentang tindakannya dan menyediakan +kesinambungan visual saat pengguna berinteraksi dengan aplikasi Anda. Tema bahan menyediakan beberapa animasi default +untuk tombol dan transisi aktivitas, dan Android 5.0 (API level 21) ke atas memungkinkan Anda menyesuaikan +animasi ini dan membuat yang baru:
+ +Umpan balik sentuh dalam desain bahan menyediakan konfirmasi visual seketika pada +titik kontak bila pengguna berinteraksi dengan elemen UI. Animasi umpan balik sentuh default +untuk tombol menggunakan kelas {@link android.graphics.drawable.RippleDrawable} baru, yang bertransisi +di antara berbagai status dengan efek riak.
+ +Di sebagian besar kasus, Anda harus menerapkan fungsionalitas ini dalam XML tampilan dengan menetapkan +latar belakang tampilan sebagai:
+ +?android:attr/selectableItemBackground untuk riak berbatas.?android:attr/selectableItemBackgroundBorderless untuk riak yang meluas ke luar
+tampilan. Latar belakang ini akan digambar di atas, dan dibatasi oleh, induk tampilan terdekat dengan
+latar belakang non-null.Catatan: selectableItemBackgroundBorderless adalah
+atribut baru yang diperkenalkan di API level 21.
Atau, Anda bisa mendefinisikan {@link android.graphics.drawable.RippleDrawable}
+sebagai sumber daya XML dengan menggunakan elemen ripple.
Anda bisa menetapkan warna ke objek-objek {@link android.graphics.drawable.RippleDrawable}. Untuk mengubah
+warna default umpan balik sentuh, gunakan atribut android:colorControlHighlight
+tema.
Untuk informasi selengkapnya, lihat referensi API bagi kelas {@link +android.graphics.drawable.RippleDrawable}.
+ + +Animasi singkap memberi pengguna kesinambungan visual saat menampilkan atau menyembunyikan sekelompok +elemen UI. Metode {@link android.view.ViewAnimationUtils#createCircularReveal +ViewAnimationUtils.createCircularReveal()} memungkinkan Anda menganimasikan lingkaran terpangkas +untuk memperlihatkan atau menyembunyikan tampilan.
+ +Untuk memperlihatkan tampilan yang sebelumnya tidak terlihat dengan menggunakan efek ini:
+ ++// previously invisible view +View myView = findViewById(R.id.my_view); + +// get the center for the clipping circle +int cx = (myView.getLeft() + myView.getRight()) / 2; +int cy = (myView.getTop() + myView.getBottom()) / 2; + +// get the final radius for the clipping circle +int finalRadius = Math.max(myView.getWidth(), myView.getHeight()); + +// create the animator for this view (the start radius is zero) +Animator anim = + ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius); + +// make the view visible and start the animation +myView.setVisibility(View.VISIBLE); +anim.start(); ++ +
Untuk menyembunyikan sebuah tampilan yang sebelumnya terlihat dengan menggunakan efek ini:
+ +
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+ ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ super.onAnimationEnd(animation);
+ myView.setVisibility(View.INVISIBLE);
+ }
+});
+
+// start the animation
+anim.start();
+
+
+
+Gambar 1 - Transisi + dengan elemen bersama.
+ Untuk memutar ulang film, klik layar perangkat +Transisi aktivitas dalam aplikasi desain bahan memberikan koneksi visual antar berbagai status +melalui gerakan dan transformasi di antara elemen umum. Anda bisa menetapkan animasi custom untuk +masuk ke dan keluar dari transisi dan untuk transisi elemen bersama di antara aktivitas.
+ +Android 5.0 (API level 21) mendukung transisi masuk dan transisi keluar ini:
+ +Transisi apa pun yang memperluas kelas {@link android.transition.Visibility} didukung +sebagai transisi masuk atau transisi keluar. Untuk informasi selengkapnya, lihat referensi API untuk kelas +{@link android.transition.Transition}.
+ +Android 5.0 (API level 21) juga mendukung transisi elemen bersama ini:
+ +Bila Anda mengaktifkan transisi aktivitas dalam aplikasi, transisi memudar-silang default akan +diaktifkan di antara aktivitas masuk dan aktivitas keluar.
+ +
++ Gambar 2 - Transisi babak dengan satu elemen bersama. +
+ +Pertama, aktifkan transisi konten jendela dengan atribut android:windowContentTransitions
+bila Anda mendefinisikan gaya yang mewarisi tema bahan. Anda juga bisa menetapkan
+transisi-transisi masuk, keluar, dan elemen bersama dalam definisi gaya:
+<style name="BaseAppTheme" parent="android:Theme.Material"> + <!-- enable window content transitions --> + <item name="android:windowContentTransitions">true</item> + + <!-- specify enter and exit transitions --> + <item name="android:windowEnterTransition">@transition/explode</item> + <item name="android:windowExitTransition">@transition/explode</item> + + <!-- specify shared element transitions --> + <item name="android:windowSharedElementEnterTransition"> + @transition/change_image_transform</item> + <item name="android:windowSharedElementExitTransition"> + @transition/change_image_transform</item> +</style> ++ +
Transisi change_image_transform dalam contoh ini didefinisikan sebagai berikut:
+<!-- res/transition/change_image_transform.xml --> +<!-- (see also Shared Transitions below) --> +<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> + <changeImageTransform/> +</transitionSet> ++ +
Elemen changeImageTransform menunjukkan
+kelas {@link android.transition.ChangeImageTransform}. Untuk informasi selengkapnya, lihat referensi
+API untuk {@link android.transition.Transition}.
Sebaliknya, untuk mengaktifkan transisi konten jendela dalam kode Anda, panggil +metode {@link android.view.Window#requestFeature Window.requestFeature()}:
+ ++// inside your activity (if you did not enable transitions in your theme) +getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); + +// set an exit transition +getWindow().setExitTransition(new Explode()); ++ +
Untuk menetapkan transisi dalam kode Anda, panggil metode-metode ini dengan objek {@link +android.transition.Transition}:
+ +Metode {@link android.view.Window#setExitTransition setExitTransition()} dan {@link +android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} mendefinisikan +transisi keluar untuk aktivitas yang memanggil. Metode {@link android.view.Window#setEnterTransition +setEnterTransition()} dan {@link android.view.Window#setSharedElementEnterTransition +setSharedElementEnterTransition()} mendefinisikan transisi masuk untuk aktivitas yang dipanggil.
+ +Untuk mendapatkan efek penuh sebuah transisi, Anda harus mengaktifkan transisi konten jendela pada +aktivitas yang memanggil maupun aktivitas yang dipanggil. Jika tidak, aktivitas yang memanggil akan memulai transisi keluar, +namun kemudian Anda akan melihat transisi jendela (seperti mengelupas atau memudar).
+ +Untuk memulai transisi masuk sesegera mungkin, gunakan metode +{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} +pada aktivitas yang dipanggil. Ini memungkinkan Anda mendapatkan transisi masuk yang lebih dramatis.
+ +Jika Anda mengaktifkan transisi dan mengatur transisi keluar untuk aktivitas, transisi itu akan diaktifkan +bila Anda menjalankan aktivitas lain sebagai berikut:
+ ++startActivity(intent, + ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); ++ +
Jika Anda telah mengatur transisi masuk untuk aktivitas kedua, transisi juga akan diaktifkan
+bila aktivitas dimulai. Untuk menonaktifkan transisi bila Anda memulai aktivitas lain, sediakan
+bundel opsi null.
Untuk membuat animasi transisi layar di antara dua aktivitas yang memiliki satu elemen bersama:
+ +android:transitionName.
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(this, Activity2.class);
+ // create the transition animation - the images in the layouts
+ // of both activities are defined with android:transitionName="robot"
+ ActivityOptions options = ActivityOptions
+ .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+ // start the new activity
+ startActivity(intent, options.toBundle());
+ }
+});
+
+
+Untuk tampilan dinamis bersama yang Anda hasilkan dalam kode, gunakan +metode {@link android.view.View#setTransitionName View.setTransitionName()} untuk menetapkan +nama elemen umum di kedua aktivitas.
+ +Untuk membalik animasi transisi babak bila Anda menyelesaikan aktivitas kedua, panggil metode +{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} +sebagai ganti {@link android.app.Activity#finish Activity.finish()}.
+ +Untuk membuat animasi transisi babak antara dua aktivitas yang memiliki lebih dari satu
+elemen bersama, definisikan elemen bersama di kedua layout dengan atribut android:transitionName
+ (atau gunakan metode {@link android.view.View#setTransitionName View.setTransitionName()}
+di kedua aktivitas), dan buat sebuah objek {@link android.app.ActivityOptions} sebagai berikut:
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, + Pair.create(view1, "agreedName1"), + Pair.create(view2, "agreedName2")); ++ + +
Animasi dalam desain bahan mengandalkan kurva untuk pola interpolasi waktu dan +gerakan spasial. Dengan Android 5.0 (API level 21) ke atas, Anda bisa mendefinisikan kurva pewaktuan custom dan +pola gerakan melengkung untuk animasi.
+ +Kelas {@link android.view.animation.PathInterpolator} adalah interpolator baru berdasarkan sebuah +kurva Bézier atau objek {@link android.graphics.Path}. Interpolator ini menetapkan kurva gerakan +dalam bujur sangkar 1x1, dengan titik-titik jangkar di (0,0) dan (1,1) dan titik-titik kontrol sebagaimana ditetapkan menggunakan +argumen konstruktor. Anda juga bisa mendefinisikan interpolator path sebagai sumber daya XML:
+ ++<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:controlX1="0.4" + android:controlY1="0" + android:controlX2="1" + android:controlY2="1"/> ++ +
Sistem menyediakan sumber daya XML untuk tiga kurva dasar dalam +spesifikasi desain bahan:
+ +@interpolator/fast_out_linear_in.xml@interpolator/fast_out_slow_in.xml@interpolator/linear_out_slow_in.xmlAnda bisa meneruskan objek {@link android.view.animation.PathInterpolator} ke metode {@link +android.animation.Animator#setInterpolator Animator.setInterpolator()}.
+ +Kelas {@link android.animation.ObjectAnimator} memiliki konstruktor-konstruktor baru yang memungkinkan Anda menganimasikan +koordinat bersama sebuah path dengan menggunakan dua atau beberapa properti sekaligus. Misalnya, animator berikut +menggunakan objek {@link android.graphics.Path} untuk menganimasikan properti X dan Y sebuah tampilan:
+ ++ObjectAnimator mAnimator; +mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path); +... +mAnimator.start(); ++ + +
Kelas {@link android.animation.StateListAnimator} memungkinkan Anda mendefinisikan animator yang berjalan bila +status tampilan berubah. Contoh berikut menampilkan cara mendefinisikan {@link +android.animation.StateListAnimator} sebagai sumber daya XML:
+ ++<!-- animate the translationZ property of a view when pressed --> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true"> + <set> + <objectAnimator android:propertyName="translationZ" + android:duration="@android:integer/config_shortAnimTime" + android:valueTo="2dp" + android:valueType="floatType"/> + <!-- you could have other objectAnimator elements + here for "x" and "y", or other properties --> + </set> + </item> + <item android:state_enabled="true" + android:state_pressed="false" + android:state_focused="true"> + <set> + <objectAnimator android:propertyName="translationZ" + android:duration="100" + android:valueTo="0" + android:valueType="floatType"/> + </set> + </item> +</selector> ++ +
Untuk menyertakan animasi status tampilan custom ke tampilan, definisikan animator menggunakan
+elemen selector dalam sumber daya file XML sebagaimana dalam contoh ini, dan tetapkan ke
+tampilan Anda dengan atribut android:stateListAnimator. Untuk menetapkan animator daftar status
+ke sebuah tampilan dalam kode Anda, gunakan metode {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()}, dan tetapkan animator ke tampilan dengan
+metode {@link android.view.View#setStateListAnimator View.setStateListAnimator()}.
Bila tema Anda memperluas tema bahan, tombol-tombol akan memiliki animasi Z secara default. Untuk menghindari
+perilaku ini di tombol Anda, aturlah atribut android:stateListAnimator ke
+@null.
Kelas {@link android.graphics.drawable.AnimatedStateListDrawable} memungkinkan Anda membuat drawable +yang menampilkan animasi di antara perubahan status tampilan terkait. Sebagian widget sistem di +Android 5.0 menggunakan animasi ini secara default. Contoh berikut menampilkan cara +mendefinisikan {@link android.graphics.drawable.AnimatedStateListDrawable} sebagai sumber daya XML:
+ ++<!-- res/drawable/myanimstatedrawable.xml --> +<animated-selector + xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- provide a different drawable for each state--> + <item android:id="@+id/pressed" android:drawable="@drawable/drawableP" + android:state_pressed="true"/> + <item android:id="@+id/focused" android:drawable="@drawable/drawableF" + android:state_focused="true"/> + <item android:id="@id/default" + android:drawable="@drawable/drawableD"/> + + <!-- specify a transition --> + <transition android:fromId="@+id/default" android:toId="@+id/pressed"> + <animation-list> + <item android:duration="15" android:drawable="@drawable/dt1"/> + <item android:duration="15" android:drawable="@drawable/dt2"/> + ... + </animation-list> + </transition> + ... +</animated-selector> ++ + +
Drawable Vektor +bisa diubah skalanya tanpa kehilangan definisi. Kelas {@link android.graphics.drawable.AnimatedVectorDrawable} +memungkinkan Anda menganimasikan properti drawable vektor.
+ +Anda biasanya mendefinisikan drawable vektor yang dianimasikan dalam tiga file XML:
+ +<vector> dalam
+res/drawable/<animated-vector> dalam
+res/drawable/<objectAnimator> dalam
+res/anim/Drawable vektor yang dianimasikan bisa menganimasikan atribut elemen <group> dan
+<path>. Elemen <group> mendefinisikan satu set
+path atau subgrup, dan elemen <path> mendefinisikan path yang harus digambar.
Bila Anda mendefinisikan drawable vektor yang ingin dianimasikan, gunakan atribut android:name
+untuk menetapkan nama unik ke grup dan path, sehingga Anda bisa merujuknya dari
+definisi animator Anda. Misalnya:
+<!-- res/drawable/vectordrawable.xml --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="64dp" + android:width="64dp" + android:viewportHeight="600" + android:viewportWidth="600"> + <group + android:name="rotationGroup" + android:pivotX="300.0" + android:pivotY="300.0" + android:rotation="45.0" > + <path + android:name="v" + android:fillColor="#000000" + android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> + </group> +</vector> ++ +
Definisi drawable vektor yang dianimasikan merujuk pada grup dan path dalam drawable vektor +berdasarkan namanya:
+ ++<!-- res/drawable/animvectordrawable.xml --> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/vectordrawable" > + <target + android:name="rotationGroup" + android:animation="@anim/rotation" /> + <target + android:name="v" + android:animation="@anim/path_morph" /> +</animated-vector> ++ +
Definisi animasi menyatakan objek {@link android.animation.ObjectAnimator} atau {@link +android.animation.AnimatorSet}. Animator pertama dalam contoh ini memutar +grup target sebanyak 360 derajat:
+ ++<!-- res/anim/rotation.xml --> +<objectAnimator + android:duration="6000" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="360" /> ++ +
Animator kedua dalam contoh ini perlahan-lahan mengubah bentuk path drawable vektor dari satu bentuk ke +bentuk yang lain. Kedua path harus kompatibel untuk morphing: keduanya harus memiliki jumlah perintah yang sama +dan jumlah parameter yang sama untuk setiap perintah.
+ ++<!-- res/anim/path_morph.xml --> +<set xmlns:android="http://schemas.android.com/apk/res/android"> + <objectAnimator + android:duration="3000" + android:propertyName="pathData" + android:valueFrom="M300,70 l 0,-70 70,70 0,0 -70,70z" + android:valueTo="M300,70 l 0,-70 70,0 0,140 -70,0 z" + android:valueType="pathType" /> +</set> ++ +
Untuk informasi selengkapnya, lihat referensi API bagi {@link +android.graphics.drawable.AnimatedVectorDrawable}.
diff --git a/docs/html-intl/intl/in/training/material/compatibility.jd b/docs/html-intl/intl/in/training/material/compatibility.jd new file mode 100644 index 0000000000000..d57c7bef18102 --- /dev/null +++ b/docs/html-intl/intl/in/training/material/compatibility.jd @@ -0,0 +1,168 @@ +page.title=Mempertahankan Kompatibilitas + +@jd:body + +Sebagian fitur desain bahan seperti tema bahan dan transisi aktivitas custom +hanya tersedia pada Android 5.0 (API level 21) ke atas. Akan tetapi, Anda bisa mendesain aplikasi untuk menggunakan +fitur-fitur ini saat dijalankan pada perangkat yang mendukung desain bahan dan tetap kompatibel +dengan perangkat yang menjalankan rilis Android sebelumnya.
+ + +Anda bisa mengonfigurasi aplikasi untuk menggunakan tema bahan pada perangkat yang mendukungnya dan mengembalikan +ke tema lama pada perangkat yang menjalankan versi Android terdahulu:
+ +res/values/styles.xml.res/values-v21/styles.xml.Catatan: +Jika aplikasi Anda menggunakan tema bahan namun tidak menyediakan tema alternatif dengan cara ini, +aplikasi itu tidak akan berjalan pada versi Android sebelum 5.0. +
+ + +Jika layout yang Anda desain sesuai dengan panduan desain bahan tidak menggunakan salah satu +atribut XML baru yang diperkenalkan di Android 5.0 (API level 21), layout itu akan berfungsi pada +versi Android sebelumnya. Jika tidak, Anda bisa menyediakan layout alternatif. Anda juga bisa menyediakan +layout alternatif untuk menyesuaikan cara aplikasi ditampilkan pada versi Android terdahulu.
+ +Buatlah file layout untuk Android 5.0 (API level 21) dalam res/layout-v21/ dan
+file layout alternatif untuk versi Android terdahulu dalam res/layout/.
+Misalnya, res/layout/my_activity.xml adalah layout alternatif untuk
+res/layout-v21/my_activity.xml.
Untuk menghindari duplikasi kode, definisikan gaya dalam res/values/, modifikasi
+gaya di res/values-v21/ untuk API baru, dan gunakan pewarisan gaya, dengan mendefinisikan
+gaya dasar di res/values/ dan mewarisi gaya di res/values-v21/.
v7 Support Library +r21 ke atas menyertakan fitur desain bahan berikut:
+ +Theme.AppCompat.Theme.AppCompat.Tema-tema Theme.AppCompat menyediakan gaya desain bahan untuk widget ini:
Untuk memperoleh gaya desain bahan dan menyesuaikan palet warna dengan Android v7 Support
+Library, terapkan salah satu tema Theme.AppCompat:
+<!-- extend one of the Theme.AppCompat themes --> +<style name="Theme.MyTheme" parent="Theme.AppCompat.Light"> + <!-- customize the color palette --> + <item name="colorPrimary">@color/material_blue_500</item> + <item name="colorPrimaryDark">@color/material_blue_700</item> + <item name="colorAccent">@color/material_green_A200</item> +</style> ++ +
Widget {@link android.support.v7.widget.RecyclerView} dan {@link +android.support.v7.widget.CardView} tersedia di versi Android terdahulu melalui +Android v7 Support Library dengan pembatasan ini:
+Untuk menggunakan fitur-fitur ini di versi Android sebelum 5.0 (API level 21), sertakan +Android v7 Support Library dalam proyek Anda sebagai dependensi Gradle:
+ +
+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.+'
+}
+
+
+
+Fitur berikut hanya tersedia di Android 5.0 (API level 21) ke atas:
+ +Untuk menjaga kompatibilitas dengan versi Android terdahulu, periksa {@link +android.os.Build.VERSION#SDK_INT version} sistem saat runtime sebelum Anda memanggil API untuk salah satu +fitur ini:
+ +
+// 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
+}
+
+
+Catatan: Untuk menetapkan versi Android yang didukung aplikasi Anda,
+gunakan atribut android:minSdkVersion dan android:targetSdkVersion
+dalam file manifes. Untuk menggunakan fitur desain bahan di Android 5.0, atur
+atribut android:targetSdkVersion ke 21. Untuk informasi selengkapnya, lihat
+panduan API
+<uses-sdk>.
Kemampuan berikut untuk drawable membantu Anda mengimplementasikan desain bahan dalam aplikasi Anda:
+ +Pelajaran ini menampilkan cara menggunakan fitur-fitur ini dalam aplikasi Anda.
+ + +Dengan Android 5.0 (API level 21) ke atas, Anda bisa mewarnai bitmap dan sembilan-tambalan yang didefinisikan sebagai
+alpha-mask. Anda bisa mewarnainya dengan sumber daya warna atau atribut tema yang mencocokkan ke
+sumber daya warna (misalnya, ?android:attr/colorPrimary). Biasanya, Anda membuat aset ini
+hanya sekali dan mewarnainya secara otomatis agar cocok dengan tema Anda.
Anda bisa menerapkan warna ke objek {@link android.graphics.drawable.BitmapDrawable} atau {@link
+android.graphics.drawable.NinePatchDrawable} dengan metode {@code setTint()}. Anda juga bisa
+mengatur warna dan mode dalam layout dengan atribut android:tint dan
+android:tintMode.
Android Support Library r21 ke atas menyertakan kelas {@link +android.support.v7.graphics.Palette}, yang memungkinkan Anda mengekstrak warna mencolok dari gambar. +Kelas ini mengekstrak warna mencolok berikut:
+ +Untuk mengekstrak warna-warna ini, teruskan objek {@link android.graphics.Bitmap} ke +metode statis {@link android.support.v7.graphics.Palette#generate Palette.generate()} dalam +thread latar belakang tempat Anda memuat gambar. Jika Anda tidak bisa menggunakan thread itu, panggil metode +{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} dan +sediakan listener sebagai gantinya.
+ +Anda bisa mengambil warna mencolok dari gambar dengan metode getter di kelas
+Palette, misalnya Palette.getVibrantColor.
Untuk menggunakan kelas {@link android.support.v7.graphics.Palette} dalam proyek Anda, tambahkan +dependensi Gradle berikut ke +modul aplikasi Anda:
+ +
+dependencies {
+ ...
+ compile 'com.android.support:palette-v7:21.0.0'
+}
+
+
+Untuk informasi selengkapnya, lihat referensi API untuk kelas {@link android.support.v7.graphics.Palette}. +
+ + +Grafis Vektor Android
+Di Android 5.0 (API Level 21) ke atas, Anda bisa mendefinisikan drawable vektor, yang berubah skala tanpa
+kehilangan definisi. Anda hanya memerlukan satu file aset per gambar vektor, bukan file aset untuk
+setiap densitas layar seperti pada gambar bitmap. Untuk membuat gambar vektor, Anda mendefinisikan detail
+bentuknya dalam sebuah elemen XML <vector>.
Contoh berikut mendefinisikan gambar vektor berbentuk hati:
+ ++<!-- res/drawable/heart.xml --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + <!-- intrinsic size of the drawable --> + android:height="256dp" + android:width="256dp" + <!-- size of the virtual canvas --> + android:viewportWidth="32" + android:viewportHeight="32"> + + <!-- draw a path --> + <path android:fillColor="#8fff" + android:pathData="M20.5,9.5 + c-1.955,0,-3.83,1.268,-4.5,3 + c-0.67,-1.732,-2.547,-3,-4.5,-3 + C8.957,9.5,7,11.432,7,14 + c0,3.53,3.793,6.257,9,11.5 + c5.207,-5.242,9,-7.97,9,-11.5 + C25,11.432,23.043,9.5,20.5,9.5z" /> +</vector> ++ +
Gambar vektor direpresentasikan di Android sebagai objek {@link android.graphics.drawable.VectorDrawable}.
+ Untuk informasi selengkapnya tentang sintaks pathData, lihat Referensi Path SVG. Untuk informasi selengkapnya
+tentang menganimasikan properti drawable vektor, lihat
+Menganimasikan Drawable Vektor.
Untuk membuat aplikasi dengan desain bahan:
+ +Anda bisa menambahkan banyak fitur desain bahan ke aplikasi sekaligus mempertahankan kompatibilitas dengan +versi Android sebelum 5.0. Untuk informasi selengkapnya, lihat +Mempertahankan Kompatibilitas.
+ +Untuk memperbarui aplikasi yang ada guna memasukkan desain bahan, perbarui layout Anda dengan mengikuti +panduan desain bahan. Juga pastikan memasukkan kedalaman, umpan balik sentuh, dan +animasi.
+ +Jika Anda sedang membuat aplikasi baru dengan fitur desain bahan, panduan desain bahan akan memberi Anda +kerangka kerja desain yang kohesif. Ikuti panduan itu dan gunakan fungsionalitas baru di +kerangka kerja Android untuk mendesain dan mengembangkan aplikasi Anda.
+ + +Untuk menerapkan tema bahan dalam aplikasi Anda, tetapkan gaya yang mewarisi
+android:Theme.Material:
+<!-- res/values/styles.xml --> +<resources> + <!-- your theme inherits from the material theme --> + <style name="AppTheme" parent="android:Theme.Material"> + <!-- theme customizations --> + </style> +</resources> ++ +
Tema bahan menyediakan widget sistem terbaru yang memungkinkan Anda mengatur palet warnanya dan +animasi default untuk umpan balik sentuh dan transisi aktivitas. Untuk detail selengkapnya, lihat +Menggunakan Tema Bahan.
+ + +Selain menerapkan dan menyesuaikan tema bahan, layout Anda harus mematuhi +panduan desain bahan. Bila Anda mendesain +layout, berikan perhatian khusus pada hal-hal berikut:
+ +Tampilan bisa menghasilkan bayangan, dan nilai ketinggian tampilan
+menentukan ukuran bayangan dan urutan penggambarannya. Untuk mengatur ketinggian tampilan, gunakan
+atribut android:elevation dalam layout:
+<TextView + android:id="@+id/my_textview" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/next" + android:background="@color/white" + android:elevation="5dp" /> ++ +
Properti translationZ baru memungkinkan Anda membuat animasi yang mencerminkan
+perubahan sementara pada ketinggian tampilan. Perubahan ketinggian bisa berguna saat
+merespons
+gerakan sentuh.
Untuk detail selengkapnya, lihat Mendefinisikan +Bayangan dan Memangkas Tampilan.
+ + +{@link android.support.v7.widget.RecyclerView} adalah versi {@link +android.widget.ListView} yang lebih mudah dimasukkan dan mendukung beragam tipe layout serta memberikan peningkatan kinerja. +{@link android.support.v7.widget.CardView} memungkinkan Anda menampilkan potongan informasi dalam kartu dengan +tampilan konsisten di seluruh aplikasi. Contoh kode berikut memperagakan cara menyertakan +{@link android.support.v7.widget.CardView} dalam layout Anda:
+ ++<android.support.v7.widget.CardView + android:id="@+id/card_view" + android:layout_width="200dp" + android:layout_height="200dp" + card_view:cardCornerRadius="3dp"> + ... +</android.support.v7.widget.CardView> ++ +
Untuk informasi selengkapnya, lihat Membuat Daftar +dan Kartu.
+ + +Android 5.0 (API level 21) menyertakan API baru untuk membuat animasi custom di aplikasi Anda. +Misalnya, Anda bisa mengaktifkan transisi aktivitas dan mendefinisikan transisi keluar di +aktivitas:
+ +
+public class MyActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // enable transitions
+ getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+ setContentView(R.layout.activity_my);
+ }
+
+ public void onSomeButtonClicked(View view) {
+ getWindow().setExitTransition(new Explode());
+ Intent intent = new Intent(this, MyOtherActivity.class);
+ startActivity(intent,
+ ActivityOptions
+ .makeSceneTransitionAnimation(this).toBundle());
+ }
+}
+
+
+Bila Anda memulai aktivitas lain dari aktivitas ini, transisi keluar akan diaktifkan.
+ +Untuk mengetahui selengkapnya tentang API animasi yang baru, lihat Mendefinisikan Animasi Custom.
diff --git a/docs/html-intl/intl/in/training/material/index.jd b/docs/html-intl/intl/in/training/material/index.jd new file mode 100644 index 0000000000000..625f02d9b7f5f --- /dev/null +++ b/docs/html-intl/intl/in/training/material/index.jd @@ -0,0 +1,61 @@ +page.title=Desain Bahan untuk Pengembang +page.type=desain +page.image=gambar/kartu/material_2x.png +page.metaDescription=Pelajari cara menerapkan desain bahan pada aplikasi Anda. + + +@jd:body + +Desain bahan adalah panduan komprehensif untuk desain visual, gerak, dan interaksi di +berbagai platform dan perangkat. Untuk menggunakan desain bahan di aplikasi Android, ikuti panduan +yang dijelaskan dalam +spesifikasi desain bahan + dan gunakan komponen serta fungsionalitas baru yang tersedia di Android 5.0 +(API level 21).
+ +Kelas ini menampilkan kepada Anda cara membuat aplikasi desain bahan dengan elemen-elemen berikut:
+ +Kelas ini juga mengajarkan cara mempertahankan kompatibilitas dengan versi Android sebelum +5.0 (API level 21) bila Anda menggunakan fitur desain bahan dalam aplikasi.
+ +Untuk membuat daftar dan kartu yang kompleks dengan gaya desain bahan di aplikasi, Anda bisa menggunakan widget +{@link android.support.v7.widget.RecyclerView} dan {@link android.support.v7.widget.CardView}. +
+ + +Widget {@link android.support.v7.widget.RecyclerView} adalah +versi {@link android.widget.ListView} yang lebih maju dan fleksibel. Widget ini adalah kontainer untuk menampilkan set data +besar yang bisa digulir secara sangat efisien dengan mempertahankan tampilan dalam jumlah terbatas. Gunakan +widget {@link android.support.v7.widget.RecyclerView} bila Anda memiliki kumpulan data dengan elemen +yang berubah saat runtime berdasarkan tindakan pengguna atau kejadian jaringan.
+ +Kelas {@link android.support.v7.widget.RecyclerView} menyederhanakan penampilan dan penanganan +set data yang besar dengan menyediakan:
+ +Anda juga memiliki keluwesan untuk mendefinisikan pengelola layout custom dan animasi untuk widget {@link +android.support.v7.widget.RecyclerView}.
+ +
+
+Gambar 1. Widget RecyclerView.
+
Untuk menggunakan widget {@link android.support.v7.widget.RecyclerView}, Anda harus menetapkan +adaptor dan pengelola layout. Untuk membuat adaptor, perluas kelas {@link +android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Detail +implementasi bergantung pada detail set data Anda dan tipe tampilan. Untuk informasi selengkapnya, + lihat contoh-contoh di bawah.
+ +
+
+Gambar 2 - Daftar berisi RecyclerView.
+
Pengelola layout memosisikan tampilan item dalam {@link +android.support.v7.widget.RecyclerView} dan menentukan waktu untuk menggunakan ulang tampilan item yang tidak +lagi terlihat oleh pengguna. Untuk menggunakan ulang (atau mendaur ulang) tampilan, pengelola layout bisa meminta +adaptor untuk mengganti konten tampilan dengan elemen lain dalam dataset. Mendaur ulang +tampilan dengan cara ini akan meningkatkan kinerja karena menghindari pembuatan tampilan yang tidak diperlukan atau +melakukan pencarian {@link android.app.Activity#findViewById findViewById()} yang mahal.
+ +{@link android.support.v7.widget.RecyclerView} menyediakan semua pengelola layout bawaan ini:
+ +Untuk membuat pengelola layout custom, perluas kelas {@link +android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.
+ +Animasi untuk menambahkan dan menghapus item diaktifkan secara default di {@link +android.support.v7.widget.RecyclerView}. Untuk menyesuaikan animasi ini, perluas kelas +{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator}dan gunakan +metode {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}. +
+ +Contoh kode berikut memperagakan cara menambahkan +{@link android.support.v7.widget.RecyclerView} ke layout:
+ ++<!-- A RecyclerView with some commonly used attributes --> +<android.support.v7.widget.RecyclerView + android:id="@+id/my_recycler_view" + android:scrollbars="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"/> ++ +
Begitu Anda menambahkan widget {@link android.support.v7.widget.RecyclerView} ke layout, +dapatkan pengatur atau handle objek itu, hubungkan dengan pengelola layout, dan sertakan adaptor untuk data +yang akan ditampilkan:
+ +
+public class MyActivity extends Activity {
+ private RecyclerView mRecyclerView;
+ private RecyclerView.Adapter mAdapter;
+ private RecyclerView.LayoutManager mLayoutManager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.my_activity);
+ mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+ // use this setting to improve performance if you know that changes
+ // in content do not change the layout size of the RecyclerView
+ mRecyclerView.setHasFixedSize(true);
+
+ // use a linear layout manager
+ mLayoutManager = new LinearLayoutManager(this);
+ mRecyclerView.setLayoutManager(mLayoutManager);
+
+ // specify an adapter (see also next example)
+ mAdapter = new MyAdapter(myDataset);
+ mRecyclerView.setAdapter(mAdapter);
+ }
+ ...
+}
+
+
+Adaptor menyediakan akses ke item dataset Anda, membuat tampilan untuk item, dan +mengganti konten sebagian tampilan dengan item data baru bila item semula tidak lagi +terlihat. Contoh kode berikut menampilkan implementasi sederhana untuk sebuah dataset yang terdiri dari +larik string yang ditampilkan dengan menggunakan widget {@link android.widget.TextView}:
+ +
+public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
+ private String[] mDataset;
+
+ // Provide a reference to the views for each data item
+ // Complex data items may need more than one view per item, and
+ // you provide access to all the views for a data item in a view holder
+ public static class ViewHolder extends RecyclerView.ViewHolder {
+ // each data item is just a string in this case
+ public TextView mTextView;
+ public ViewHolder(TextView v) {
+ super(v);
+ mTextView = v;
+ }
+ }
+
+ // Provide a suitable constructor (depends on the kind of dataset)
+ public MyAdapter(String[] myDataset) {
+ mDataset = myDataset;
+ }
+
+ // Create new views (invoked by the layout manager)
+ @Override
+ public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+ int viewType) {
+ // create a new view
+ View v = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.my_text_view, parent, false);
+ // set the view's size, margins, paddings and layout parameters
+ ...
+ ViewHolder vh = new ViewHolder(v);
+ return vh;
+ }
+
+ // Replace the contents of a view (invoked by the layout manager)
+ @Override
+ public void onBindViewHolder(ViewHolder holder, int position) {
+ // - get element from your dataset at this position
+ // - replace the contents of the view with that element
+ holder.mTextView.setText(mDataset[position]);
+
+ }
+
+ // Return the size of your dataset (invoked by the layout manager)
+ @Override
+ public int getItemCount() {
+ return mDataset.length;
+ }
+}
+
+
+
+
++Gambar 3. Contoh kartu. +
+{@link android.support.v7.widget.CardView} memperluas kelas {@link android.widget.FrameLayout} +dan memungkinkan Anda menampilkan informasi dalam kartu yang memiliki tampilan konsisten lintas platform. Widget {@link +android.support.v7.widget.CardView} bisa memiliki bayangan dan sudut membulat.
+ +Untuk membuat kartu dengan bayangan, gunakan atribut card_view:cardElevation.
+{@link android.support.v7.widget.CardView} menggunakan elevasi nyata dan bayangan dinamis pada Android 5.0
+(API level 21) ke atas dan memundurkan ke implementasi bayangan terprogram pada versi terdahulu.
+Untuk informasi selengkapnya, lihat Mempertahankan
+Kompatibilitas.
Gunakan properti-properti ini untuk menyesuaikan penampilan +widget {@link android.support.v7.widget.CardView}:
+ +card_view:cardCornerRadius.
+CardView.setRadius.card_view:cardBackgroundColor.
+Contoh kode berikut menampilkan cara menyertakan widget {@link android.support.v7.widget.CardView} +dalam layout:
+ ++<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + xmlns:card_view="http://schemas.android.com/apk/res-auto" + ... > + <!-- A CardView that contains a TextView --> + <android.support.v7.widget.CardView + xmlns:card_view="http://schemas.android.com/apk/res-auto" + android:id="@+id/card_view" + android:layout_gravity="center" + android:layout_width="200dp" + android:layout_height="200dp" + card_view:cardCornerRadius="4dp"> + + <TextView + android:id="@+id/info_text" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + </android.support.v7.widget.CardView> +</LinearLayout> ++ +
Untuk informasi selengkapnya, lihat referensi API untuk {@link android.support.v7.widget.CardView}.
+ + +Widget {@link android.support.v7.widget.RecyclerView} dan {@link android.support.v7.widget.CardView} +adalah bagian dari v7 Support +Library. Untuk menggunakan widget dalam proyek Anda, tambahkan +dependensi Gradle ini ke +modul aplikasi Anda:
+ +
+dependencies {
+ ...
+ compile 'com.android.support:cardview-v7:21.0.+'
+ compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+
diff --git a/docs/html-intl/intl/in/training/material/shadows-clipping.jd b/docs/html-intl/intl/in/training/material/shadows-clipping.jd
new file mode 100644
index 0000000000000..5431926721593
--- /dev/null
+++ b/docs/html-intl/intl/in/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=Mendefinisikan Bayangan dan Memangkas Tampilan
+
+@jd:body
+
+Desain bahan memperkenalkan elevasi untuk elemen-elemen UI. Elevasi membantu pengguna memahami +arti penting relatif masing-masing elemen dan memfokuskan perhatian pada tugas yang ada.
+ +Elevasi tampilan, yang dinyatakan dengan properti Z, menentukan tampilan visual +bayangannya: tampilan dengan nilai Z lebih tinggi menghasilkan bayangan lebih besar dan lebih halus. Tampilan dengan nilai Z lebih tinggi menutupi +tampilan dengan nilai Z lebih rendah; akan tetapi, nilai Z tampilan tidak memengaruhi ukuran tampilan.
+ +Bayangan digambar oleh induk tampilan yang dinaikkan, sehingga terkena pemangkasan standar tampilan, +yang dipangkas oleh induk secara default.
+ +Elevasi juga berguna untuk membuat animasi tempat memunculkan widget untuk sementara di atas +bidang tampilan saat melakukan beberapa tindakan.
+ +Untuk informasi selengkapnya tentang elevasi dalam desain bahan, lihat +Objek +di ruang 3D.
+ + +Nilai Z untuk tampilan memiliki dua komponen: + +
Z = elevation + translationZ
+Gambar 1 - Bayangan untuk berbagai elevasi tampilan.
+ +Untuk mengatur elevasi tampilan dalam definisi layout, gunakan atribut android:elevation.
+ Untuk mengatur elevasi tampilan dalam kode aktivitas, gunakan
+metode {@link android.view.View#setElevation View.setElevation()}.
Untuk mengatur transformasi tampilan, gunakan metode {@link android.view.View#setTranslationZ +View.setTranslationZ()}.
+ +Metode {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} dan {@link +android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} yang baru memudahkan +Anda menganimasikan elevasi tampilan. Untuk informasi selengkapnya, lihat referensi API untuk +{@link android.view.ViewPropertyAnimator} dan panduan pengembang Animasi Properti. +
+ +Anda juga bisa menggunakan {@link android.animation.StateListAnimator} +untuk menetapkan animasi ini secara deklaratif. Ini khususnya berguna bila +perubahan status memicu animasi, seperti saat seorang pengguna menekan tombol. Untuk informasi selengkapnya, lihat +Menganimasikan Perubahan Status Tampilan.
+ +Nilai Z diukur dengan satuan dp (density-independent pixel).
+ + +Batas-batas drawable latar belakang tampilan menentukan bentuk default bayangannya. +Garis luar menyatakan bentuk luar objek grafis dan mendefinisikan +bidang riak untuk umpan balik sentuh.
+ +Perhatikan tampilan ini, yang didefinisikan dengan drawable latar belakang:
+ ++<TextView + android:id="@+id/myview" + ... + android:elevation="2dp" + android:background="@drawable/myrect" /> ++ +
Drawable latar belakang didefinisikan sebagai persegi panjang dengan sudut membulat:
+ ++<!-- res/drawable/myrect.xml --> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid android:color="#42000000" /> + <corners android:radius="5dp" /> +</shape> ++ +
Tampilan ini menghasilkan bayangan dengan sudut membulat, karena drawable latar belakang mendefinisikan +garis luar tampilan. Memberikan garis luar custom akan mengesampingkan bentuk default bayangan tampilan.
+ +Untuk mendefinisikan garis luar custom suatu tampilan dalam kode Anda:
+ +
Anda bisa membuat garis luar lonjong dan persegi panjang yang bersudut membulat dengan menggunakan metode dalam
+kelas {@link android.graphics.Outline}. Penyedia garis luar default untuk tampilan memperoleh garis luar
+dari latar belakang tampilan. Untuk mencegah tampilan menghasilkan bayangan, atur penyedia garis luarnya
+ke null.
Memangkas tampilan memudahkan Anda mengubah bentuk tampilan. Anda bisa memangkas tampilan agar
+konsistensi dengan elemen desain lainnya atau mengubah bentuk tampilan untuk merespons input pengguna.
+Anda bisa memangkas tampilan hingga area garis luarnya dengan menggunakan metode {@link android.view.View#setClipToOutline
+View.setClipToOutline()} atau atribut android:clipToOutline. Hanya
+garis-garis luar persegi panjang, lingkaran, dan persegi panjang bersudut bulat yang mendukung pemangkasan, seperti yang ditentukan oleh
+metode {@link android.graphics.Outline#canClip Outline.canClip()}.
Untuk memangkas tampilan ke bentuk drawable, atur drawable sebagai latar belakang tampilan +(seperti yang ditampilkan di atas) dan panggil metode {@link android.view.View#setClipToOutline View.setClipToOutline()}. +
+ +Memangkas tampilan adalah operasi yang mahal; jadi, jangan animasikan bentuk yang Anda gunakan +untuk memangkas tampilan. Untuk memperoleh efek ini, gunakan animasi Reveal Effect.
diff --git a/docs/html-intl/intl/in/training/material/theme.jd b/docs/html-intl/intl/in/training/material/theme.jd new file mode 100644 index 0000000000000..5acdcd2d0692c --- /dev/null +++ b/docs/html-intl/intl/in/training/material/theme.jd @@ -0,0 +1,131 @@ +page.title=Menggunakan Tema Bahan + +@jd:body + +Tema bahan yang baru menyediakan:
+ +Anda bisa menyesuaikan tampilan tema bahan +sesuai dengan identitas merek Anda dengan palet warna yang Anda kontrol. Anda bisa mewarnai action-bar dan +baris status dengan menggunakan atribut tema, seperti yang ditampilkan dalam Gambar 3.
+ +Widget sistem memiliki desain baru dan animasi umpan balik sentuh. Anda bisa menyesuaikan +palet warna, animasi umpan balik sentuh, dan transisi aktivitas untuk aplikasi.
+ +Tema bahan didefinisikan sebagai:
+ +@android:style/Theme.Material (versi gelap)@android:style/Theme.Material.Light (versi terang)@android:style/Theme.Material.Light.DarkActionBarUntuk daftar gaya bahan yang bisa Anda gunakan, lihat referensi API untuk +{@link android.R.style R.style}.
+ + +
+ Gambar 1. Tema bahan gelap
+
+ Gambar 2. Tema bahan terang
++Catatan: Tema bahan hanya tersedia di Android 5.0 (API level 21) +ke atas. v7 Support Library +menyediakan tema dengan gaya desain bahan untuk beberapa widget dan dukungan untuk menyesuaikan +palet warna. Untuk informasi selengkapnya, lihat +Mempertahankan Kompatibilitas. +
+ + +Untuk menyesuaikan warna dasar tema agar cocok dengan merek Anda, definisikan +warna custom menggunakan atribut tema saat Anda mewariskan dari tema bahan:
+ ++<resources> + <!-- inherit from the material theme --> + <style name="AppTheme" parent="android:Theme.Material"> + <!-- Main theme colors --> + <!-- your app branding color for the app bar --> + <item name="android:colorPrimary">@color/primary</item> + <!-- darker variant for the status bar and contextual app bars --> + <item name="android:colorPrimaryDark">@color/primary_dark</item> + <!-- theme UI controls like checkboxes and text fields --> + <item name="android:colorAccent">@color/accent</item> + </style> +</resources> ++ +
++Gambar 3. Menyesuaikan tema bahan.
+Tema bahan memungkinkan Anda menyesuaikan baris status dengan mudah; jadi Anda bisa menetapkan
+warna yang cocok dengan merek Anda dan memberikan kontras yang cukup untuk menampilkan ikon status putih. Untuk
+mengatur warna custom bagi baris status, gunakan atribut android:statusBarColor bila
+Anda memperluas tema bahan. Secara default, android:statusBarColor mewarisi
+nilai android:colorPrimaryDark.
Anda juga bisa menggambar sendiri di belakang baris status. Misalnya, jika Anda ingin menampilkan
+baris status secara transparan di atas foto, dengan gradasi gelap yang halus untuk memastikan
+ikon status putih tetap terlihat. Caranya, atur atribut android:statusBarColor ke
+@android:color/transparent dan sesuaikan flag jendela seperti yang diperlukan. Anda juga bisa
+menggunakan metode {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} untuk
+animasi atau pemudaran.
+Catatan: Baris status harus selalu memiliki delineasi yang jelas dari +toolbar utama, kecuali bila Anda menampilkan gambar detail atau konten media tepi-ke-tepi di belakang +baris ini dan bila Anda menggunakan gradasi untuk memastikan ikon tetap terlihat. +
+ +Bila Anda menyesuaikan baris navigasi dan baris status, jadikan keduanya transparan atau modifikasi +baris status saja. Baris navigasi harus tetap hitam di semua kasus lainnya.
+ + +Elemen dalam definisi layout XML bisa menetapkan atribut android:theme,
+yang merujuk sumber daya tema. Atribut ini memodifikasi tema untuk elemen itu dan setiap
+elemen anak, yang berguna untuk mengubah palet warna tema dalam porsi tertentu
+pada antarmuka.
머티어리얼 디자인으로 앱 생성
+머티리얼 디자인으로 앱 생성
머티어리얼 디자인 소개
+머티리얼 디자인 소개
종이와 잉크: 중요한 머티어리얼
+종이와 잉크: 중요한 머티리얼
Google I/O 앱 내 머티어리얼 디자인
+Google I/O 앱 내 머티리얼 디자인
머티어리얼 디자인은 플랫폼 및 기기 전반의 표현 방식, 모션 및 +
머티리얼 디자인은 플랫폼 및 기기 전반의 표현 방식, 모션 및 상호 작용 디자인에 대한 종합적인 지침입니다. Android에는 이제 -머티어리얼 디자인 앱에 대한 지원이 포함되었습니다. Android 앱에서 머티어리얼 디자인을 사용하려면 머티어리얼 디자인 사양에 +머티리얼 디자인 앱에 대한 지원이 포함되었습니다. Android 앱에서 머티리얼 디자인을 사용하려면 머티리얼 디자인 사양에 규정되어 있는 지침을 따르세요. 또한 Android 5.0(API 레벨 21) 이상에서 제공하는 새 구성 요소 및 기능을 사용하세요.
-Android는 머티어리얼 디자인 앱을 구축하는 데 사용할 수 있는 다음 요소를 제공합니다.
+Android는 머티리얼 디자인 앱을 구축하는 데 사용할 수 있는 다음 요소를 제공합니다.
Android에서 머티어리얼 디자인을 구현하는 방법에 대한 자세한 내용은 -머티어리얼 디자인으로 앱 생성을 참조하세요.
+Android에서 머티리얼 디자인을 구현하는 방법에 대한 자세한 내용은 +머티리얼 디자인으로 앱 생성을 참조하세요.
-머티어리얼 테마는 앱에 사용할 수 있는 새로운 스타일, 색상표를 +
머티리얼 테마는 앱에 사용할 수 있는 새로운 스타일, 색상표를 설정할 수 있는 시스템 위젯, 그리고 터치 피드백 및 액티비티 전환을 위한 기본 애니메이션을 제공합니다.
@@ -67,25 +66,25 @@ page.image=design/material/images/MaterialLight.png
어두운 머티어리얼 테마
+어두운 머티리얼 테마
밝은 머티어리얼 테마
+밝은 머티리얼 테마
자세한 내용은 머티어리얼
+ 자세한 내용은 머티리얼
테마 사용을 참조하세요. Android는 머티어리얼 디자인 스타일
+ Android는 머티리얼 디자인 스타일
및 애니메이션으로 카드 및 목록을 표시하는 데 사용할 수 있는 두 개의 새로운 위젯을 제공합니다. 드로어블에 대한 다음과 같은 새 기능을 통해 머티어리얼 디자인 앱을 쉽게 구현할 수 있습니다. 드로어블에 대한 다음과 같은 새 기능을 통해 머티리얼 디자인 앱을 쉽게 구현할 수 있습니다. 자세한 내용은 Drawable
+ 자세한 내용은 드로어블
사용을 참조하세요. 머티어리얼 디자인에서 애니메이션은 동작에 대한 사용자 피드백을 제공하며, 사용자가 앱과 상호작용할 때 시각적 연속성을 제공합니다. 머티어리얼 테마는 버튼 및 액티비티 전환을 위한 몇 가지 기본 애니메이션을 제공합니다. Android 5.0(API 레벨 21) 이상에서는 다음과 같은 애니메이션을 사용자지정하거나 새로운 애니메이션을 만들 수 있도록 지원합니다. 머티리얼 디자인에서 애니메이션은 사용자에게 자신의 동작에 대한 피드백을 제공하고, 앱과 상호작용할 때 시각적 연속성을 제공합니다.
+ 머티리얼 테마는 버튼 및 액티비티 전환을 위한 몇 가지 기본 애니메이션을 제공합니다. Android 5.0(API 레벨 21) 이상에서는 이러한 애니메이션을 사용자가 지정하거나 새로운 애니메이션을 만들 수 있습니다.
+
+ 머티어리얼 디자인의 터치 피드백은 사용자가 UI 요소와 상호작용하는 시점에서 즉시 시각적으로 확인할 수 있습니다. 버튼의 기본 터치 피드백 애니메이션은 물결 효과를 통해 서로 다른 상태 간에 전환하는 새 {@link android.graphics.drawable.RippleDrawable} 클래스를 사용합니다. 머티리얼 디자인의 터치 피드백은 사용자가 UI 요소와 상호작용하는 시점에서 즉시 시각적으로 확인할 수 있습니다.
+ 버튼의 기본 터치 피드백 애니메이션은 물결 효과를 통해 서로 다른 상태 간에 전환하는 새 {@link android.graphics.drawable.RippleDrawable} 클래스를 사용합니다.
- 대부분의 경우, 다음과 같이 뷰 배경을 지정하는 방식으로 뷰 XML에서 이 기능을 적용해야 합니다. 대부분의 경우, 다음과 같이 뷰 배경을 지정하는 방식으로 뷰 XML에서 이 기능을 적용해야 합니다.
+ 참고: 참고: 또는 또는 {@link android.graphics.drawable.RippleDrawable} 개체에 색상을 지정할 수 있습니다. 기본 터치 피드백 색상을 변경하려면 테마의 {@link android.graphics.drawable.RippleDrawable} 객체에 색상을 지정할 수 있습니다. 기본 터치 피드백 색상을 변경하려면 테마의 자세한 내용은 {@link android.graphics.drawable.RippleDrawable} 클래스의 API 레퍼런스를 참조하세요. 자세한 내용은 {@link
+android.graphics.drawable.RippleDrawable} 클래스의 API 레퍼런스를 참조하세요. Reveal 애니메이션은 UI 요소 그룹을 표시하거나 숨길 때 사용자에게 시각적 연속성을 제공합니다. {@link android.view.ViewAnimationUtils#createCircularReveal ViewAnimationUtils.createCircularReveal()} 메서드를 사용하면 클리핑 서클을 애니메이트하여 뷰를 표시하거나 숨길 수 있습니다. 표시 애니메이션은 UI 요소 그룹을 표시하거나 숨길 때 사용자에게 시각적 연속성을 제공합니다.
+ {@link android.view.ViewAnimationUtils#createCircularReveal
+ViewAnimationUtils.createCircularReveal()} 메서드를 사용하면 클리핑 서클을 애니메이트하여 뷰를 표시하거나 숨길 수 있습니다.
+ 이전에 보이지 않았던 뷰를 표시하려면 아래의 효과를 사용합니다. 이 효과를 사용하여 이전에 보이지 않았던 뷰를 표시하려면: 이전에 보였던 뷰를 숨기려면 아래의 효과를 사용합니다. 이 효과를 사용하여 이전에 보였던 뷰를 숨기려면: 그림 1 - 공유 요소를 이용한 전환. 그림 1 -
+ 공유 요소를 이용한 전환. 머티어리얼 디자인 앱의 액티비티 전환은 공통 요소 간의 모션 및 변환을 통해 서로 다른 상태 간에 시각적 연결을 제공합니다. 들어가기 및 나가기 전환과 액티비티 간 공유 요소의 전환을 위한 사용자지정 애니메이션을 지정할 수 있습니다. 머티리얼 디자인 앱의 액티비티 전환은 공통 요소 간의 모션 및 변환을 통해 서로 다른 상태 간에 시각적 연결을 제공합니다.
+ 들어가기 및 나가기 전환과 액티비티 간 공유 요소의 전환을 위한 사용자지정 애니메이션을 지정할 수 있습니다.
+ Android 5.0(API 레벨 21)은 다음 들어가기 및 나가기 전환을 지원합니다. {@link android.transition.Visibility} 클래스를 확장하는 모든 전환은 들어가기 또는 나가기 전환으로 지원됩니다. 자세한 내용은 {@link android.transition.Transition} 클래스의 API 레퍼런스를 참조하세요. {@link android.transition.Visibility} 클래스를 확장하는 모든 전환은 들어가기 또는 나가기 전환으로 지원됩니다.
+ 자세한 내용은
+{@link android.transition.Transition} 클래스의 API 레퍼런스를 참조하세요. Android 5.0(API 레벨 21)은 다음의 공유 요소 전환도 지원합니다. 앱에서 액티비티 전환을 활성화할 경우, 들어가기 및 나가기 액티비티 간에 기본 크로스페이딩(cross-fading) 전환이 활성화됩니다. 앱에서 액티비티 전환을 활성화할 경우, 들어가기 및 나가기 액티비티 간에 기본 크로스페이딩(cross-fading) 전환이 활성화됩니다.
+
@@ -165,7 +195,9 @@ anim.start();
먼저 머티어리얼 테마에서 상속한 스타일을 정의할 때, 먼저 머티리얼 테마에서 상속하는 스타일을 정의할 때, 코드에서 창 콘텐츠 전환을 활성화할 경우,{@link android.view.Window#requestFeature Window.requestFeature()} 메서드를 호출합니다. 코드에서 창 콘텐츠 전환을 활성화하려면
+{@link android.view.Window#requestFeature Window.requestFeature()} 메서드를 호출합니다. 코드에서 전환을 지정하려면, {@link android.transition.Transition} 개체를 사용하여 다음과 같은 메서드를 호출합니다. 코드에서 전환을 지정하려면 {@link
+android.transition.Transition} 객체를 사용하여 다음과 같은 메서드를 호출합니다. {@link android.view.Window#setExitTransition setExitTransition()} 및 {@link android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 메서드는 호출하는 액티비티의 나가기 전환을 정의합니다. {@link android.view.Window#setEnterTransition setEnterTransition()} 및 {@link android.view.Window#setSharedElementEnterTransition setSharedElementEnterTransition()} 메서드는 호출되는 액티비티의 들어가기 전환을 정의합니다. {@link android.view.Window#setExitTransition setExitTransition()} 및 {@link
+android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 메서드는 호출하는 액티비티의 나가기 전환을 정의합니다.
+ {@link android.view.Window#setEnterTransition
+setEnterTransition()} 및 {@link android.view.Window#setSharedElementEnterTransition
+setSharedElementEnterTransition()} 메서드는 호출되는 액티비티의 들어가기 전환을 정의합니다. 전환 효과를 극대화하려면 호출하는 액티비티와 호출되는 액티비티 모두에서 창 콘텐츠 전환을 활성화해야 합니다. 그렇지 않으면 호출하는 액티비티가 나가기 전환을 시작하지만, 배율 또는 페이드와 같은 창 전환이 나타납니다. 전환 효과를 극대화하려면 호출하는 액티비티와 호출되는 액티비티 모두에서 창 콘텐츠 전환을 활성화해야 합니다.
+ 그렇지 않으면 호출하는 액티비티가 나가기 전환을 시작하지만, 배율 또는 페이드와 같은 창 전환이 나타납니다.
+ 들어가기 전환을 최대한 빨리 시작하려면 호출되는 액티비티에서 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} 메서드를 사용하세요. 그러면 더욱 인상적인 들어가기 전환이 가능합니다. 들어가기 전환을 최대한 빨리 시작하려면 호출되는 액티비티에서
+{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}
+ 메서드를 사용하세요. 그러면 더욱 인상적인 들어가기 전환이 가능합니다. 전환을 활성화하고 액티비티에 대해 나가기 전환을 설정한 경우, 다음과 같이 다른 액티비티를 시작하면 전환이 활성화됩니다. 전환을 활성화하고 액티비티에 대해 나가기 전환을 설정한 경우, 다음과 같이 다른 액티비티를 시작하면 전환이 활성화됩니다.
+ 두 번째 액티비티에 대해 들어가기 전환을 설정한 경우, 액티비티가 시작되면 전환도 활성화됩니다. 다른 액티비티를 시작할 때 전환을 비활성화하려면 두 번째 액티비티에 대해 들어가기 전환을 설정한 경우, 액티비티가 시작되면 전환도 활성화됩니다.
+ 다른 액티비티를 시작할 때 전환을 비활성화하려면 공유 요소를 가진 두 액티비티 간에 화면 전환 애니메이션을 만들려면: 코드에서 생성하는 공유된 동적 뷰의 경우, {@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여 두 액티비티의 공통 요소 이름을 지정합니다. 코드에서 생성하는 공유된 동적 뷰의 경우,
+{@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여 두 액티비티의 공통 요소 이름을 지정합니다.
+ 두 번째 액티비티 종료 시, 장면 전환 애니메이션을 되돌리려면 {@link android.app.Activity#finish Activity.finish()} 대신 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} 메서드를 호출합니다. 두 번째 액티비티 종료 시, 장면 전환 애니메이션을 되돌리려면 {@link android.app.Activity#finish Activity.finish()} 대신
+{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}
+ 메서드를 호출합니다. 2개 이상의 공유 요소를 가진 두 액티비티 간에 적용할 장면 전환 애니메이션을 만들려면 2개 이상의 공유 요소를 가진 두 액티비티 간에 적용할 장면 전환 애니메이션을 만들려면 머티어리얼 디자인의 애니메이션은 시간 보간 및 공간 이동 패턴에서 커브를 사용합니다. Android 5.0(API 레벨 21) 이상에서 애니메이션의 사용자지정 타이밍 커브 및 커브 모션 패턴을 정의할 수 있습니다. 머티리얼 디자인의 애니메이션은 시간 보간 및 공간 이동 패턴에서 커브를 사용합니다.
+ Android 5.0(API 레벨 21) 이상에서 애니메이션의 사용자지정 타이밍 커브 및 커브 모션 패턴을 정의할 수 있습니다.
+ {@link android.view.animation.PathInterpolator} 클래스는 베지어 커브나 {@link android.graphics.Path} 개체를 기반으로 하는 새 보간기(interpolator)입니다. 보간기는 생성자 인수를 사용하여 지정된 기준점 (0,0) 및 (1,1)과 제어점으로 모션 커브를 1x1 정사각형 안에 지정합니다. 또한 경로 보간기를 XML 리소스로 정의할 수도 있습니다. {@link android.view.animation.PathInterpolator} 클래스는 베지어 곡선 또는 {@link android.graphics.Path} 개체를 기반으로 하는 새 보간기입니다.
+ 이 보간기는 생성자 인수를 사용하여 지정된 기준점 (0,0) 및 (1,1)과 제어점으로 모션 커브를 1x1 정사각형 안에 지정합니다.
+
+ 또한 경로 보간기를 XML 리소스로 정의할 수도 있습니다. 시스템은 머티어리얼 디자인 사양에서 세 가지 기본 커브에 대한 XML 리소스를 제공합니다. 시스템은 머티리얼 디자인 사양에서 세 가지 기본 커브에 대한 XML 리소스를 제공합니다.
+ {@link android.view.animation.PathInterpolator} 개체를 {@link android.animation.Animator#setInterpolator Animator.setInterpolator()} 메서드에 전달할 수 있습니다. {@link android.view.animation.PathInterpolator} 객체를 {@link
+android.animation.Animator#setInterpolator Animator.setInterpolator()} 메서드에 전달할 수 있습니다. {@link android.animation.ObjectAnimator} 클래스에는 한 번에 2개 이상의 속성을 사용하여 경로를 따라 좌표를 애니메이트할 수 있는 새 생성자가 있습니다. 예를 들어 다음 애니메이터는 뷰의 X 및 Y 속성을 애니메이트하기 위해 {@link android.graphics.Path} 개체를 사용합니다. {@link android.animation.ObjectAnimator} 클래스에는 한 번에 2개 이상의 속성을 사용하여 경로를 따라 좌표를 애니메이트할 수 있는 새 생성자가 있습니다.
+ 예를 들어 다음 애니메이터는 뷰의 X 및 Y 속성을 애니메이트하기 위해 {@link android.graphics.Path} 객체를 사용합니다.
+ {@link android.animation.StateListAnimator} 클래스를 사용하면 뷰의 상태가 변경될 때 실행되는 애니메이터를 정의할 수 있습니다. 다음 예는 {@link android.animation.StateListAnimator}를 XML 리소스로 정의하는 방법을 보여줍니다. {@link android.animation.StateListAnimator} 클래스를 사용하면 뷰의 상태가 변경될 때 실행되는 애니메이터를 정의할 수 있습니다.
+ 다음 예는 {@link
+android.animation.StateListAnimator}를 XML 리소스로 정의하는 방법을 보여줍니다. 사용자지정 뷰 상태 애니메이션을 뷰에 첨부하려면 이 예와 같이 XML 리소스 파일의 사용자지정 뷰 상태 애니메이션을 뷰에 첨부하려면 이 예와 같이 XML 리소스 파일의
+ 머티어리얼 테마를 확장하는 테마의 경우, 버튼은 기본적으로 Z 애니메이션을 가집니다. 버튼에서 이러한 동작을 피하려면 머티리얼 테마를 확장하는 테마의 경우, 버튼은 기본적으로 Z 애니메이션을 가집니다. 버튼에서 이러한 동작을 피하려면 {@link android.graphics.drawable.AnimatedStateListDrawable} 클래스를 사용하면 연관된 뷰의 상태 변경 사이에 애니메이션을 보여주는 Drawable을 생성할 수 있습니다. Android 5.0의 일부 시스템 위젯은 이러한 애니메이션을 기본적으로 사용합니다. 다음 예는 {@link android.graphics.drawable.AnimatedStateListDrawable}을 XML 리소스로 정의하는 방법을 보여줍니다. {@link android.graphics.drawable.AnimatedStateListDrawable} 클래스를 사용하면 연관된 뷰의 상태 변경 사이에 애니메이션을 보여주는 Drawable을 생성할 수 있습니다.
+ Android 5.0의 일부 시스템 위젯은 이러한 애니메이션을 기본적으로 사용합니다.
+ 다음 예는 {@link android.graphics.drawable.AnimatedStateListDrawable}를 XML 리소스로 정의하는 방법을 보여줍니다.
+ Vector Drawable은 정의를 잃지 않고 확대할 수 있습니다. {@link android.graphics.drawable.AnimatedVectorDrawable} 클래스를 사용하면 Vector Drawable의 속성을 애니메이트할 수 있습니다. 벡터 드로어블은 정의를 잃지 않고 확대할 수 있습니다.
+ {@link android.graphics.drawable.AnimatedVectorDrawable}
+클래스를 사용하면 Vector Drawable의 속성을 애니메이트할 수 있습니다. 일반적으로 애니메이트된 Vector Drawable은 다음 3개의 XML 파일에서 정의합니다. 일반적으로 애니메이트된 벡터 드로어블은 다음 3개의 XML 파일에서 정의합니다. 애니메이트된 Vector Drawable은 애니메이트된 벡터 드로어블은 애니메이트할 Vector Drawable을 정의하는 경우, 애니메이터 정의에서 참조할 수 있도록 애니메이트할 벡터 드로어블을 정의하는 경우, 애니메이터 정의에서 참조할 수 있도록 애니메이트된 Vector Drawable 정의는 Vector Drawable의 그룹 및 경로를 이름으로 참조합니다. 애니메이트된 벡터 드로어블 정의는 벡터 드로어블의 그룹 및 경로를 이름으로 참조합니다.
+ 애니메이션 정의는 {@link android.animation.ObjectAnimator} 또는 {@link android.animation.AnimatorSet} 개체를 나타냅니다. 이 예의 첫 번째 애니메이터는 대상 그룹을 360도 회전합니다. 애니메이션 정의는 {@link android.animation.ObjectAnimator} 또는 {@link
+android.animation.AnimatorSet} 객체를 나타냅니다. 이 예의 첫 번째 애니메이터는 대상 그룹을 360도 회전합니다.
+ 두 번째 애니메이터는 Vector Drawable의 경로를 다른 모양으로 모핑합니다. 두 경로 모두 모핑이 가능해야 하며, 같은 수의 명령어와 각 명령어에 대해 같은 수의 매개변수가 있어야 합니다. 두 번째 애니메이터는 벡터 드로어블의 경로를 다른 모양으로 모핑합니다.
+ 두 경로 모두 모핑이 가능해야 하며, 같은 수의 명령어와 각 명령어에 대해 같은 수의 매개변수가 있어야 합니다.
+ 자세한 내용은 {@link android.graphics.drawable.AnimatedVectorDrawable}의 API 레퍼런스를 참조하세요. 자세한 내용은 {@link
+android.graphics.drawable.AnimatedVectorDrawable}의 API 레퍼런스를 참조하세요. 머티어리얼 테마 및 사용자지정 액티비티 전환과 같은 일부 머티어리얼 디자인 기능은 Android 5.0(API 레벨 21) 이상에서만 이용할 수 있습니다. 그러나 머티어리얼 디자인을 지원하는 기기에서 실행할 경우 이러한 기능을 사용하면서도 이전 버전의 Android를 실행하는 기기와도 호환되도록 앱을 디자인할 수 있습니다. 머티리얼 테마 및 사용자지정 액티비티 전환과 같은 일부 머티리얼 디자인 기능은 Android 5.0(API 레벨 21) 이상에서만 이용할 수 있습니다.
+ 그러나 머티리얼 디자인을 지원하는 기기에서 실행할 경우 이러한 기능을 사용하면서도 이전 버전의 Android를 실행하는 기기와도 호환되도록 앱을 디자인할 수 있습니다.
+
+ 머티어리얼 테마를 지원하는 기기에서 해당 테마를 사용하고, 이전 버전의 Android를 실행하는 기기에서 구버전의 테마로 되돌리도록 앱을 구성할 수 있습니다. 머티리얼 테마를 지원하는 기기에서 해당 테마를 사용하고, 이전 버전의 Android를 실행하는 기기에서 구버전의 테마로 되돌리도록 앱을 구성할 수 있습니다.
+ 참고: 앱이 머티어리얼 테마를 사용하지만 이러한 방식으로 대체 테마를 제공하지 않으면 Android 5.0 이전 버전에서는 앱이 실행되지 않습니다.
+ 참고:
+앱이 머티리얼 테마를 사용하지만 이러한 방식으로 대체 테마를 제공하지 않으면 Android 5.0 이전 버전에서는 앱이 실행되지 않습니다.
+
머티어리얼 디자인 지침에 따라 디자인한 레이아웃이 Android 5.0(API 레벨 21)에서 새로 도입된 XML 특성을 사용하지 않는 경우, 해당 레이아웃은 이전 버전의 Android에서 실행됩니다. 그렇지 않은 경우 대체 레이아웃을 제공할 수 있습니다. 또한 이전 버전의 Android에서 앱이 표시되는 방식을 사용자지정할 수 있는 대체 레이아웃을 제공할 수도 있습니다. 머티리얼 디자인 지침에 따라 디자인한 레이아웃이 Android 5.0(API 레벨 21)에서 새로 도입된 XML 특성을 사용하지 않는 경우, 해당 레이아웃은 이전 버전의 Android에서 실행됩니다.
- 목록 및 카드
-드로어블
-
-이 과정에서 다루는 내용
-
필독 항목
-터치 피드백 사용자지정
+사용자지정 터치 피드백
-
-?android:attr/selectableItemBackground?android:attr/selectableItemBackgroundBorderless?android:attr/selectableItemBackgroundBorderless
+ 이 경우 물결이 null이 아닌 배경을 가진 뷰의 가장 가까운 상위 요소 위에 그려지고 해당 상위 요소까지로 제한됩니다.
+selectableItemBackgroundBorderless는 API 레벨 21에서 새로 도입된 특성입니다.selectableItemBackgroundBorderless는 API 레벨 21에서 새로 도입된 특성입니다.
+ripple 요소를 사용하여 {@link android.graphics.drawable.RippleDrawable}을 XML 리소스로 정의할 수 있습니다.ripple 요소를 사용하여 {@link android.graphics.drawable.RippleDrawable}
+을 XML 리소스로 정의할 수 있습니다.android:colorControlHighlight 특성을 사용합니다.android:colorControlHighlight
+특성을 사용합니다.
+Reveal Effect 사용
+표시 효과 사용
-
// previously invisible view
@@ -79,7 +96,7 @@ myView.setVisibility(View.VISIBLE);
anim.start();
-
// previously visible view
@@ -110,7 +127,7 @@ anim.start();
-액티비티 전환 사용자지정
+사용자지정 액티비티 전환
-
사용자지정 전환 지정
-android:windowContentTransitions 특성을 통해 창 콘텐츠 전환을 활성화합니다. 들어가기, 나가기 및 공유 요소 전환도 스타일 정의에서 지정할 수 있습니다.android:windowContentTransitions
+특성을 통해 창 콘텐츠 전환을 활성화합니다. 들어가기, 나가기 및 공유 요소 전환도 스타일 정의에서 지정할 수 있습니다.
+
<style name="BaseAppTheme" parent="android:Theme.Material">
@@ -194,9 +226,12 @@ anim.start();
</transitionSet>
-changeImageTransform 요소는 {@link android.transition.ChangeImageTransform} 클래스에 해당합니다. 자세한 내용은 {@link android.transition.Transition}의 API 레퍼런스를 참조하세요.changeImageTransform 요소는
+{@link android.transition.ChangeImageTransform} 클래스에 해당합니다. 자세한 내용은 {@link android.transition.Transition}의 API 레퍼런스를 참조하세요.
+
// inside your activity (if you did not enable transitions in your theme)
@@ -206,33 +241,47 @@ getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setExitTransition(new Explode());
-
-전환을 사용하여 액티비티 시작
-
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
-null 옵션 번들을 제공하세요.null 옵션 번들을 제공하십시오.
+공유 요소가 있는 액티비티 시작
+공유 요소를 가진 액티비티 시작
android:transitionName 특성을 사용하여 두 레이아웃의 공유 요소에 공통 이름을 지정합니다.android:transitionName 특성을 사용하여 두 레이아웃의 공유 요소에 공통 이름을 지정합니다.
@@ -266,13 +317,20 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
});
-여러 공유 요소를 가진 액티비티 시작
-android:transitionName 특성으로(또는 두 액티비티에서 {@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여) 두 레이아웃의 공유 요소를 정의하고 다음과 같이 {@link android.app.ActivityOptions} 개체를 생성합니다.android:transitionName
+특성으로 (또는 두 액티비티에서{@link android.view.View#setTransitionName View.setTransitionName()} 메서드를 사용하여) 두 레이아웃의 공유 요소를 정의하고 다음과 같이 {@link android.app.ActivityOptions} 개체를 생성합니다.
+
+
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
@@ -283,9 +341,14 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
커브 모션 사용
-
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
@@ -295,7 +358,8 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
android:controlY2="1"/>
-
-@interpolator/fast_out_linear_in.xml@interpolator/linear_out_slow_in.xml
ObjectAnimator mAnimator;
@@ -317,7 +384,9 @@ mAnimator.start();
뷰 상태 변경 애니메이트
-
<!-- animate the translationZ property of a view when pressed -->
@@ -345,11 +414,21 @@ mAnimator.start();
</selector>
-selector 요소를 사용하여 애니메이터를 정의한 후에 android:stateListAnimator 특성을 통해 뷰에 할당합니다. 코드에서 뷰에 상태 목록 애니메이터를 할당하려면 {@link android.animation.AnimatorInflater#loadStateListAnimator AnimationInflater.loadStateListAnimator()} 메서드를 사용하고, {@link android.view.View#setStateListAnimator View.setStateListAnimator()} 메서드로 애니메이터를 뷰에 할당합니다.selector 요소를 사용하여 애니메이터를 정의한 후에 android:stateListAnimator 특성을 통해 뷰에 할당합니다.
+ 코드에서 뷰에 상태 목록 애니메이터를 할당하려면 {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} 메서드를 사용하고,
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()} 메서드로 애니메이터를 뷰에 할당합니다.
+android:stateListAnimator 특성을 @null로 설정합니다.android:stateListAnimator 특성을
+@null로 설정합니다.
+
<!-- res/drawable/myanimstatedrawable.xml -->
@@ -377,21 +456,30 @@ mAnimator.start();
-Vector Drawable 애니메이트
+벡터 드로어블 애니메이트
-
-
-res/drawable/의 <vector> 요소를 가진 Vector Drawableres/drawable/의 <animated-vector> 요소를 가진 애니메이트된 Vector Drawableres/anim/의 <objectAnimator> 요소를 가진 하나 이상의 개체 애니메이터res/drawable/의 <vector> 요소를 가진 벡터 드로어블res/drawable/의 <animated-vector> 요소를 가진 애니메이트된 벡터 드로어블res/anim/의 <objectAnimator> 요소를 가진 하나 이상의 객체 애니메이터<group> 및 <path> 요소의 특성을 애니메이트할 수 있습니다. <group> 요소는 경로 또는 하위 그룹 집합을 정의하며, <path> 요소는 그릴 경로를 정의합니다.<group> 및
+<path> 요소의 특성을 애니메이트할 수 있습니다. <group> 요소는 경로 또는 하위 그룹 집합을 정의하며, <path> 요소는 그릴 경로를 정의합니다.
+android:name 특성을 사용하여 그룹 및 경로에 고유한 이름을 할당합니다. 예:android:name
+특성을 사용하여 그룹 및 경로에 고유한 이름을 할당합니다.
+ 예:
<!-- res/drawable/vectordrawable.xml -->
@@ -413,7 +501,8 @@ mAnimator.start();
</vector>
-
<!-- res/drawable/animvectordrawable.xml -->
@@ -428,7 +517,9 @@ mAnimator.start();
</animated-vector>
-
<!-- res/anim/rotation.xml -->
@@ -439,7 +530,9 @@ mAnimator.start();
android:valueTo="360" />
-
<!-- res/anim/path_morph.xml -->
@@ -453,4 +546,5 @@ mAnimator.start();
</set>
-필독 항목
-대체 스타일 정의
-
-
-res/values/styles.xml에서 구버전의 테마에서 상속된 테마(Holo 등)를 정의합니다.res/values-v21/styles.xml에서 머티어리얼 테마에서 상속된 같은 이름을 가진 테마를 정의합니다.res/values/styles.xml에서 구버전의 테마에서 상속된 테마(Holo 등)를 정의합니다.res/values-v21/styles.xml에서 머티리얼 테마에서 상속된, 같은 이름을 가진 테마를 정의합니다.대체 레이아웃 제공
-res/layout-v21/ 안에서 Android 5.0(API 레벨 21)의 레이아웃 파일을 생성하고, res/layout/ 안에서 이전 버전의 Android를 위한 대체 레이아웃 파일을 생성합니다. 예를 들어, res/layout/my_activity.xml은 res/layout-v21/my_activity.xml의 대체 레이아웃입니다.
코드의 중복을 피하기 위해 res/values/ 안에서 스타일을 정의하고, 새 API에 대해 res/values-v21/에서 스타일을 수정하고, 스타일 상속을 사용하여 res/values/에서 기본 스타일을 정의하고 res/values-v21/에서 해당 스타일로부터 상속합니다.
res/layout-v21/ 안에서 Android 5.0(API 레벨 21)의 레이아웃 파일을 생성하고, res/layout/ 안에서 이전 버전의 Android를 위한 대체 레이아웃 파일을 생성합니다.
+예를 들어, res/layout/my_activity.xml은
+res/layout-v21/my_activity.xml의 대체 레이아웃입니다.
+
코드의 중복을 피하기 위해 res/values/ 안에서 스타일을 정의하고, 새 API에 대해 res/values-v21/에서 스타일을 수정하고, 스타일 상속을 사용하여 res/values/에서 기본 스타일을 정의하고 res/values-v21/에서 해당 스타일로부터 상속합니다.
+
+
v7 Support Libraries r21 이상에는 다음과 같은 머티어리얼 디자인 기능이 포함되어 있습니다.
+v7 Support Libraries + r21 이상에는 다음과 같은 머티리얼 디자인 기능이 포함되어 있습니다.
Theme.AppCompat 테마 중 하나를 적용할 때 일부 시스템 위젯에 대한 머티어리얼 디자인 스타일Theme.AppCompat 테마의 색상표 테마 특성Theme.AppCompat 테마 중 하나를 적용할 때 일부 시스템 위젯에
+대한 머티리얼 디자인 스타일Theme.AppCompat 테마의 색상표 테마 특성
+Theme.AppCompat 테마는 다음 위젯에 대한 머티어리얼 디자인 스타일을 제공합니다.
Theme.AppCompat 테마는 다음 위젯에 대한 머티리얼 디자인 스타일을 제공합니다.
Android v7 Support Library에서 머티어리얼 디자인 스타일을 가져와서 색상표를 사용자지정하려면 Theme.AppCompat 테마 중 하나를 적용합니다.
Android v7 지원 라이브러리에서 머티리얼 디자인 스타일을 가져와서 색상표를 사용자지정하려면 Theme.AppCompat 테마 중 하나를 적용합니다.
+
<!-- extend one of the Theme.AppCompat themes --> @@ -87,16 +109,21 @@ page.title=호환성 유지목록 및 카드
-{@link android.support.v7.widget.RecyclerView} 및 {@link android.support.v7.widget.CardView} 위젯은 Android v7 Support Library를 통해 이전 버전의 Android에서 사용할 수 있지만, 다음과 같은 제약이 있습니다.
+{@link android.support.v7.widget.RecyclerView} 및 {@link +android.support.v7.widget.CardView} 위젯은 Android v7 지원 라이브러리를 통해 이전 버전의 Android에서 사용할 수 있지만, 다음과 같은 제약이 있습니다. +
Android 5.0(API 레벨 21) 이전 버전에서 다음 기능을 사용하려면 프로젝트에 Android v7 Support Library를 Gradle 종속관계로 포함하세요.
+Android 5.0(API 레벨 21) 이전 버전에서 이러한 기능을 사용하려면 프로젝트에 Android v7 지원 라이브러리를 Gradle 종속 사항으로 포함합니다. +
dependencies {
@@ -116,11 +143,13 @@ dependencies {
이전 버전 Android와 호환성을 유지하려면, 이러한 기능을 위한 API를 호출하기 전에 런타임에 시스템 {@link android.os.Build.VERSION#SDK_INT version}을 확인하세요.
+이전 버전 Android와 호환성을 유지하려면, 이러한 기능을 위한 API를 호출하기 전에 런타임에 시스템 {@link +android.os.Build.VERSION#SDK_INT version}을 확인하세요. +
// Check if we're running on Android 5.0 or higher
@@ -131,4 +160,9 @@ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
}
-참고: 앱에서 어떤 버전의 Android를 지원할지 지정하려면 매니페스트 파일에서 android:minSdkVersion 및 android:targetSdkVersion 특성을 사용하세요. Android 5.0에서 머티어리얼 디자인 기능을 사용하려면 android:targetSdkVersion 특성을 21로 설정하세요. 자세한 내용은 <uses-sdk> API 가이드를 참조하세요.
참고: 앱에서 어떤 버전의 Android를 지원할지 지정하려면 매니페스트 파일에서 android:minSdkVersion 및 android:targetSdkVersion
+특성을 사용하세요.
+ Android 5.0에서 머티어리얼 디자인 기능을 사용하려면 android:targetSdkVersion 특성을 21로 설정하세요.
+ 자세한 내용은 <uses-sdk> API 가이드를 참조하세요.
+
+
Drawable의 다음 기능은 앱에서 머티어리얼 디자인을 구현하는 데 도움이 됩니다.
+드로어블의 다음 기능은 앱에서 머티리얼 디자인을 구현하는 데 도움이 됩니다.
이 과정은 앱에서 이러한 기능을 사용하는 방법을 보여줍니다.
-Android 5.0(API 레벨 21) 이상에서는 알파 마스크로 정의된 비트맵 및 나인패치에 색조를 적용할 수 있습니다. 색상 리소스 또는 색상 리소스로 변환되는 테마 특성(예: ?android:attr/colorPrimary)을 사용하여 색조를 적용할 수 있습니다. 일반적으로 이러한 에셋은 한 번만 생성하며 자동으로 채색되어 테마와 일치하게 됩니다.
Android 5.0(API 레벨 21) 이상에서는 알파 마스크로 정의된 비트맵 및 나인패치에 색조를 적용할 수 있습니다.
+ 색상 리소스 또는 색상 리소스로 변환되는 테마 특성(예: ?android:attr/colorPrimary)을 사용하여 색조를 적용할 수 있습니다.
+ 일반적으로 이러한 자산은 한 번만 생성하며 자동으로 채색되어 테마와 일치하게 됩니다.
+
{@code setTint()} 메서드를 사용하여 {@link android.graphics.drawable.BitmapDrawable} 또는 {@link android.graphics.drawable.NinePatchDrawable} 개체에 색조를 적용할 수 있습니다. 또한 android:tint 및 android:tintMode 특성으로 레이아웃에 색조 색상과 모드를 설정할 수 있습니다.
{@code setTint()} 메서드를 사용하여 {@link android.graphics.drawable.BitmapDrawable} 또는 {@link
+android.graphics.drawable.NinePatchDrawable} 객체에 색조를 적용할 수 있습니다. 또한
+android:tint 및 android:tintMode 특성으로 레이아웃에 색조 색상과 모드를 설정할 수 있습니다.
+
Android Support Library r21 이상에는 이미지에서 주요 색상을 추출할 수 있는 {@link android.support.v7.graphics.Palette} 클래스가 있습니다. 이 클래스는 다음과 같은 주요 색상을 추출합니다.
+Android 지원 라이브러리 r21 이상에는 이미지에서 주요 색상을 추출할 수 있는 {@link +android.support.v7.graphics.Palette} 클래스가 있습니다. 이 클래스는 다음과 같은 주요 색상을 추출합니다. +
이러한 색상을 추출하려면, 이미지를 불러올 배경 스레드에서 {@link android.support.v7.graphics.Palette#generate Palette.generate()} 정적 메서드로 {@link android.graphics.Bitmap} 개체를 전달합니다. 스레드를 사용할 수 없는 경우, 대신 {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 메서드를 호출하고 Listener를 제공합니다.
+이러한 색상을 추출하려면, 이미지를 불러올 배경 스레드에서 +{@link android.support.v7.graphics.Palette#generate Palette.generate()} 정적 메서드로 {@link android.graphics.Bitmap} 객체를 전달합니다. + 스레드를 사용할 수 없는 경우, 대신 +{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 메서드를 호출하고 Listener를 제공합니다. +
-Palette.getVibrantColor와 같은 Palette 클래스의 getter 메서드를 사용하여 이미지에서 주요 색상을 추출할 수 있습니다.
Palette.getVibrantColor와 같은
+Palette 클래스의 getter 메서드를 사용하여 이미지에서 주요 색상을 추출할 수 있습니다.
프로젝트에서 {@link android.support.v7.graphics.Palette} 클래스를 사용하려면 다음 Gradle 종속관계를 앱의 모듈에 추가합니다.
+프로젝트에서 {@link android.support.v7.graphics.Palette} 클래스를 사용하려면 다음 +Gradle 종속 사항을를 앱의 모듈에 추가합니다. +
dependencies {
...
- compile 'com.android.support:palette-v7:21.0.+'
+ compile 'com.android.support:palette-v7:21.0.0'
}
-자세한 내용은 {@link android.support.v7.graphics.Palette} 클래스의 API 레퍼런스를 참조하세요.
+자세한 내용은 {@link android.support.v7.graphics.Palette} +클래스의 API 레퍼런스를 참조하세요.
-Android Vector Graphics
+Android 벡터 그래픽
Android 5.0(API 레벨 21) 이상에서는 정의를 잃지 않고 배율을 조정하는 Vector Drawable을 정의할 수 있습니다. 비트맵 이미지의 경우 각 화면 밀도마다 에셋 파일이 필요한 반면, 벡터 이미지의 경우에는 하나의 에셋 파일만 필요로 합니다. 벡터 이미지를 생성하려면 <vector> XML 요소 안에 모양의 세부정보를 정의합니다.
Android 5.0(API 레벨 21) 이상에서는 정의를 잃지 않고 배율을 조정하는 벡터 드로어블을 정의할 수 있습니다.
+ 비트맵 이미지의 경우 각 화면 밀도마다 자산 파일이 필요한 반면, 벡터 이미지의 경우에는 하나의 자산 파일만 필요합니다.
+ 벡터 이미지를 생성하려면 <vector> XML 요소 안에 모양의 세부정보를 정의합니다.
+
다음 예에서는 하트 모양을 가진 벡터 이미지를 정의합니다.
@@ -102,4 +120,7 @@ href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px"> </vector> -벡터 이미지는 Android에서 {@link android.graphics.drawable.VectorDrawable} 개체로 나타납니다. pathData 구문에 대한 자세한 내용은 SVG 경로 레퍼런스를 참조하세요. Vector Drawable의 속성 애니메이트에 대한 자세한 내용은 Vector Drawable 애니메이트를 참조하세요.
벡터 이미지는 Android에서 {@link android.graphics.drawable.VectorDrawable}
+객체로 나타납니다. pathData 구문에 대한 자세한 내용은 SVG Path reference를 참조하세요. 벡터 드로어블의 속성 애니메이트에 대한 자세한 내용은
+벡터 드로어블 애니메이트를 참조하세요.
+
머티어리얼 디자인으로 앱을 생성하려면:
+머티리얼 디자인으로 앱을 생성하려면:
Android 5.0 이전 버전과의 호환성을 유지하면서 다양한 머티어리얼 디자인 기능을 앱에 추가할 수 있습니다. 자세한 내용은 호환성 유지를 참조하세요.
+Android 5.0 이전 버전과의 호환성을 유지하면서 다양한 머티리얼 디자인 기능을 앱에 추가할 수 있습니다. + 자세한 내용은 +호환성 유지를 참조하세요.
-머티어리얼 디자인을 통합하기 위해 기존 앱을 업데이트하려면 머티어리얼 디자인 지침에 따라 레이아웃을 업데이트하세요. 또한 깊이, 터치 피드백, 애니메이션도 통합하세요.
+머티리얼 디자인을 통합하기 위해 기존 앱을 업데이트하려면 머티리얼 디자인 지침에 따라 레이아웃을 업데이트하세요. + 또한 깊이, 터치 피드백, 애니메이션도 통합하세요. +
-머티어리얼 디자인 기능으로 새 앱을 생성하는 경우, 머티어리얼 디자인 지침은 효율적인 디자인 프레임워크를 제공합니다. 앱 디자인 및 개발 시 이 지침을 따르고 Android 프레임워크의 새로운 기능을 사용하세요.
+머티리얼 디자인 기능으로 새 앱을 생성하는 경우, 머티리얼 디자인 지침은 효율적인 디자인 프레임워크를 제공합니다. + 앱 디자인 및 개발 시 이 지침을 따르고 Android 프레임워크의 새로운 기능을 사용하세요. +
-머티어리얼 테마를 앱에 적용하려면 android:Theme.Material에서 상속하는 스타일을 지정하세요.
머티리얼 테마를 앱에 적용하려면
+android:Theme.Material에서 상속하는 스타일을 지정합니다.
<!-- res/values/styles.xml --> @@ -65,12 +72,16 @@ page.title=시작하기 </resources>-
머티어리얼 테마는 터치 피드백 및 액티비티 전환을 위한 색상표 및 기본 애니메이션을 설정할 수 있는 업데이트된 시스템 위젯을 제공합니다. 자세한 내용은머티어리얼 테마 사용을 참조하세요.
+머티리얼 테마는 터치 피드백 및 액티비티 전환을 위한 색상표 및 기본 애니메이션을 설정할 수 있는 업데이트된 시스템 위젯을 제공합니다. + 자세한 내용은 +머티리얼 테마 사용을 참조하세요.
머티어리얼 테마를 적용하고 사용자지정하는 것과 더불어, 레이아웃이 머티어리얼 디자인 지침을 따라야 합니다. 레이아웃 디자인 시 다음 사항에 특히 주의하세요.
+머티리얼 테마를 적용하고 사용자지정하는 것과 더불어, 레이아웃이 머티리얼 디자인 지침을 따라야 합니다. + 레이아웃 디자인 시 다음 사항에 특히 주의하세요. +
뷰는 그림자를 드리울 수 있으며 뷰의 엘리베이션 값은 그림자 크기 및 그리는 순서를 결정합니다. 뷰의 엘리베이션을 설정하려면 레이아웃에서 android:elevation 특성을 사용하세요.
뷰는 그림자를 드리울 수 있으며 뷰의 엘리베이션 값은 그림자 크기 및 그리는 순서를 결정합니다.
+ 뷰의 엘리베이션을 설정하려면 레이아웃에서
+android:elevation 특성을 사용하세요.
<TextView
@@ -95,14 +108,22 @@ page.title=시작하기
android:elevation="5dp" />
-새 translationZ 속성을 사용하여 뷰 엘리베이션의 일시적 변경을 반영하는 애니메이션을 생성할 수 있습니다. 엘리베이션 변경은 터치 제스처에 반응할 때 유용합니다.
새 translationZ 속성을 사용하여 뷰 엘리베이션의 일시적 변경을 반영하는 애니메이션을 생성할 수 있습니다.
+ 엘리베이션 변경은
+터치
+제스처에 반응할 때 유용하게 쓰일 수 있습니다.
자세한 내용은 그림자 정의 및 뷰 클리핑을 참조하세요.
+자세한 내용은 그림자 정의 및 뷰 클리핑을 참조하세요. +
{@link android.support.v7.widget.RecyclerView}는 {@link android.widget.ListView}의 플러그 기능이 개선된 버전으로, 다양한 레이아웃 유형을 지원하고 향상된 성능을 제공합니다. {@link android.support.v7.widget.CardView}를 사용하면 모든 앱에서 일관된 모습으로 카드 안의 정보를 표시할 수 있습니다. 다음 코드 예는 {@link android.support.v7.widget.CardView}를 레이아웃에 포함시키는 방법을 보여줍니다.
+{@link android.support.v7.widget.RecyclerView}는 {@link +android.widget.ListView}의 플러그 기능이 개선된 버전으로, 다양한 레이아웃 유형을 지원하고 향상된 성능을 제공합니다. +{@link android.support.v7.widget.CardView}를 사용하면 모든 앱에서 일관된 모습으로 카드 안의 정보를 표시할 수 있습니다. + 다음 코드 예는 {@link android.support.v7.widget.CardView}를 레이아웃에 +포함시키는 방법을 보여줍니다.
<android.support.v7.widget.CardView @@ -114,12 +135,15 @@ page.title=시작하기 </android.support.v7.widget.CardView>-
자세한 내용은 목록 및 카드 생성을 참조하세요.
+자세한 내용은 목록 및 카드 생성을 참조하세요. +
Android 5.0(API 레벨 21)은 앱에서 사용자지정 애니메이션 생성을 위한 새 API가 포함되어 있습니다. 예를 들어, 액티비티 전환을 활성화하고 액티비티 내부에서 나가기 전환을 정의할 수 있습니다.
+Android 5.0(API 레벨 21)에는 앱에서 사용자지정 애니메이션 생성을 위한 새 API가 포함되어 있습니다. 예를 들어, 액티비티 전환을 활성화하고 액티비티 내부에서 나가기 전환을 정의할 수 있습니다. + +
public class MyActivity extends Activity {
@@ -144,4 +168,4 @@ public class MyActivity extends Activity {
이 액티비티에서 다른 액티비티를 시작하면 나가기 전환이 활성화됩니다.
-새 애니메이션 API에 대한 자세한 내용은 사용자지정 애니메이션 정의를 참조하세요.
\ No newline at end of file
+새 애니메이션 API에 대한 자세한 내용은 사용자지정 애니메이션 정의를 참조하세요.
diff --git a/docs/html-intl/intl/ko/training/material/index.jd b/docs/html-intl/intl/ko/training/material/index.jd
index 7ce1631d5e821..3dfb5140cb66d 100644
--- a/docs/html-intl/intl/ko/training/material/index.jd
+++ b/docs/html-intl/intl/ko/training/material/index.jd
@@ -1,42 +1,48 @@
-page.title=머티어리얼 디자인으로 앱 생성
+page.title=개발자를 위한 머티리얼 디자인
page.type=design
-page.image=images/material.png
-page.metaDescription=앱에 머티어리얼 디자인을 적용하는 방법을 배웁니다.
+page.image=images/cards/material_2x.png
+page.metaDescription=Learn how to apply material design to your apps.
+
@jd:body
- 종속관계 및 전제조건
+ 종속 사항 및 전제조건
- Android 5.0(API 레벨 21)
- - Android Studio 0.8
-머티어리얼 디자인은 플랫폼 및 기기 전반의 표현 방식, 모션 및 상호작용 디자인에 대한 종합적인 지침입니다. Android 앱에서 머티어리얼 디자인을 사용하려면 머티어리얼 디자인 사양에 설명된 지침을 따르세요. 또한 Android 5.0 (API 레벨 21)에 있는 새 구성요소 및 기능을 사용하세요.
+머티리얼 디자인은 플랫폼 및 기기 전반의 표현 방식, 모션 및 상호 작용 디자인에 대한 종합적인 지침입니다.
+ Android 앱에서 머티리얼 디자인을 사용하려면
+머티리얼 디자인 사양에 설명된 지침을 따르고 Android 5.0(API 레벨 21)에서 제공되는 새 구성 요소 및 기능들을 활용하세요.
-
이 클래스에서는 다음 요소를 사용하여 머티어리얼 디자인 앱을 만드는 방법을 보여줍니다.
+
+
+
+이 클래스에서는 다음 요소를 사용하여 머티리얼 디자인 앱을 만드는 방법을 보여줍니다.
또한 이 클래스에서는 앱에서 머티어리얼 디자인 기능을 사용할 때 Android 5.0(API 레벨 21) 이전 버전과의 호환성을 유지하는 방법도 배웁니다.
+또한 이 클래스에서는 앱에서 머티리얼 디자인 기능을 사용할 때 +Android 5.0(API 레벨 21) 이전 버전과의 호환성을 유지하는 방법도 배웁니다.
앱에서 머티어리얼 디자인 스타일로 복잡한 목록과 카드를 생성하려면 {@link android.support.v7.widget.RecyclerView} 및 {@link android.support.v7.widget.CardView} 위젯을 사용하세요.
+앱에서 머티리얼 디자인 스타일로 복잡한 목록과 카드를 생성하려면 +{@link android.support.v7.widget.RecyclerView} 및 {@link android.support.v7.widget.CardView} +위젯을 사용하세요.
{@link android.support.v7.widget.RecyclerView} 위젯은 {@link android.widget.ListView}의 더욱 향상되고 유연해진 버전입니다. 이 위젯은 한정된 수의 뷰를 유지함으로써 매우 효율적으로 스크롤할 수 있는 큰 데이터 집합을 표시하기 위한 컨테이너입니다. 사용자 작업 또는 네트워크 이벤트를 기반으로 런타임에 요소가 변경되는 데이터 컬렉션이 있는 경우 {@link android.support.v7.widget.RecyclerView} 위젯을 사용하세요.
+{@link android.support.v7.widget.RecyclerView} 위젯은 {@link android.widget.ListView}의 더욱 향상되고 유연해진 버전입니다. + 이 위젯은 한정된 수의 뷰를 유지함으로써 매우 효율적으로 스크롤할 수 있는 큰 데이터 집합을 표시하기 위한 컨테이너입니다. + 사용자 작업 또는 네트워크 이벤트에 따라 런타임에 요소가 변경되는 데이터 컬렉션이 있는 경우 +{@link android.support.v7.widget.RecyclerView} 위젯을 사용하세요. +
-{@link android.support.v7.widget.RecyclerView} 클래스는 다음 기능을 제공하여 큰 데이터 집합의 표시 및 취급 작업을 단순화합니다.
+{@link android.support.v7.widget.RecyclerView} 클래스는 다음 기능을 제공하여 큰 데이터 집합의 표시 및 취급 작업을 단순화합니다. +
또한 필요에 따라 {@link android.support.v7.widget.RecyclerView} 위젯을 위한 사용자지정 레이아웃 관리자 및 애니메이션을 정의할 수도 있습니다.
+또한 필요에 따라 {@link +android.support.v7.widget.RecyclerView} 위젯을 위한 사용자지정 레이아웃 관리자 및 애니메이션을 정의할 수도 있습니다.
그림 1. RecyclerView 위젯.
{@link android.support.v7.widget.RecyclerView} 위젯을 사용하려면 어댑터와 레이아웃 관리자를 지정해야 합니다. 어댑터를 생성하려면 {@link android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 클래스를 확장하세요. 구현 세부사항은 데이터 집합의 사양 및 뷰 유형에 의해 결정됩니다. 자세한 내용은 아래의 예를 참조하세요.
+{@link android.support.v7.widget.RecyclerView} 위젯을 사용하려면 어댑터와 레이아웃 관리자를 지정해야 합니다. + 어댑터를 생성하려면 {@link +android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 클래스를 확장하세요. 구현 세부사항은 데이터 집합의 사양 및 뷰 유형에 의해 결정됩니다. + 자세한 내용은 아래의 예를 참조하세요. +
@@ -49,25 +61,37 @@ page.title=목록 및 카드 생성
레이아웃 관리자는 항목 뷰를 {@link android.support.v7.widget.RecyclerView} 내에 배치하고 사용자에게 더 이상 보이지 않는 항목 뷰를 언제 재사용할지 결정합니다. 뷰를 재사용(또는 재활용)하기 위해, 레이아웃 관리자는 어댑터에게 뷰의 콘텐츠를 데이터 집합의 다른 요소로 교체하도록 요청할 수 있습니다. 이런 방식으로 뷰를 재활용하면 불필요한 뷰 생성이나 리소스를 많이 소모하는 {@link android.app.Activity#findViewById findViewById()} 룩업을 수행하지 않아도 되므로 성능이 개선됩니다.
+레이아웃 관리자는 항목 뷰를 {@link +android.support.v7.widget.RecyclerView}내에 배치하고, 사용자에게는 더 이상 보이지 않는 항목 뷰를 언제 재사용할지 결정합니다. + 뷰를 재사용 (또는 재활용)하기 위해, 레이아웃 관리자는 어댑터에게 뷰의 콘텐츠를 데이터 집합의 다른 요소로 교체하도록 요청할 수 있습니다. + 이런 방식으로 뷰를 재활용하면 불필요한 뷰 생성이나 리소스를 많이 소모하는 {@link android.app.Activity#findViewById findViewById()} 조회를 수행하지 않아도 되므로 성능이 개선됩니다. + +
{@link android.support.v7.widget.RecyclerView}는 다음과 같은 내장 레이아웃 관리자를 제공합니다.
사용자지정 레이아웃 관리자를 생성하려면 {@link android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 클래스를 확장하세요.
+사용자지정 레이아웃 관리자를 생성하려면 {@link +android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 클래스를 확장하십시오.
항목 추가 및 제거를 위한 애니메이션은 {@link android.support.v7.widget.RecyclerView}에서 기본적으로 활성화됩니다. 이러한 애니메이션을 사용자지정하려면 {@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 클래스를 확장하고 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} 메서드를 사용하세요.
+항목 추가 및 제거를 위한 애니메이션은 {@link +android.support.v7.widget.RecyclerView}에서 기본적으로 활성화됩니다. 이러한 애니메이션을 사용자지정하려면 +{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 클래스를 +확장하고 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} +메서드를 사용하세요.
-다음 코드 예는 {@link android.support.v7.widget.RecyclerView}를 레이아웃에 추가하는 방법을 보여줍니다.
+다음 코드 예는 +{@link android.support.v7.widget.RecyclerView}를 레이아웃에 추가하는 방법을 보여줍니다.
<!-- A RecyclerView with some commonly used attributes -->
@@ -78,7 +102,9 @@ page.title=목록 및 카드 생성
android:layout_height="match_parent"/>
-{@link android.support.v7.widget.RecyclerView} 위젯을 레이아웃에 추가한 후, 개체 핸들을 얻어 레이아웃 관리자에 연결하고, 표시할 데이터의 어댑터를 첨부합니다.
+{@link android.support.v7.widget.RecyclerView} 위젯을 레이아웃에 추가한 후, 객체 핸들을 얻어 레이아웃 관리자에 연결하고, 표시할 데이터의 어댑터를 첨부합니다. + +
public class MyActivity extends Activity {
@@ -108,7 +134,10 @@ public class MyActivity extends Activity {
}
-어댑터는 데이터 집합의 항목에 액세스할 수 있게 해주며, 항목 뷰를 생성하고, 원래의 항목이 더 이상 보이지 않을 경우 일부 뷰의 콘텐츠를 새 데이터 항목으로 교체합니다. 다음 코드 예는 {@link android.widget.TextView} 위젯을 사용하여 표시된 문자열 배열로 이루어진 데이터 집합의 간단한 구현을 보여줍니다.
+어댑터는 데이터 집합의 항목에 액세스할 수 있게 해주며, 항목 뷰를 생성하고, 원래의 항목이 더 이상 보이지 않을 경우 일부 뷰의 콘텐츠를 새 데이터 항목으로 교체합니다. + + 다음 코드 예는 {@link android.widget.TextView} 위젯을 사용하여 표시된 문자열 배열로 이루어진 데이터 집합의 간단한 구현을 보여줍니다. +
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@@ -171,19 +200,29 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
카드 생성
-{@link android.support.v7.widget.CardView}는 {@link android.widget.FrameLayout} 클래스를 확장하고 카드 내의 정보를 플랫폼에서 일관된 모습으로 표시할 수 있도록 합니다. {@link android.support.v7.widget.CardView} 위젯은 그림자와 둥근 모서리를 가질 수 있습니다.
+{@link android.support.v7.widget.CardView}는 {@link android.widget.FrameLayout} 클래스를
+확장하고 카드 내의 정보를 플랫폼에서 일관된 모습으로 표시할 수 있도록 합니다. {@link
+android.support.v7.widget.CardView} 위젯은 그림자와 둥근 모서리를 가질 수 있습니다.
-그림자가 있는 카드를 생성하려면 card_view:cardElevation 특성을 사용합니다. {@link android.support.v7.widget.CardView}는 Android 5.0(API 레벨 21) 이상에서 실제 엘리베이션 및 동적 그림자를 사용하며, 이전 버전에서는 이전의 프로그래밍 방식의 그림자 구현으로 환원됩니다. 자세한 내용은 호환성 유지를 참조하세요.
+그림자가 있는 카드를 생성하려면 card_view:cardElevation 특성을 사용합니다.
+{@link android.support.v7.widget.CardView}는 Android 5.0(API 레벨 21) 이상에서 실제 엘리베이션 및 동적 그림자를 사용하며, 이전 버전에서는 이전의 프로그래밍 방식의 그림자 구현으로 환원됩니다. 자세한 내용은 호환성 유지를 참조하세요.
-
이러한 속성을 사용하여 {@link android.support.v7.widget.CardView} 위젯의 모습을 사용자지정합니다.
+
+
+
+이러한 속성을 사용하여
+{@link android.support.v7.widget.CardView} 위젯의 모습을 사용자지정합니다.
card_view:cardCornerRadius 특성을 사용합니다.card_view:cardCornerRadius
+특성을 사용합니다.CardView.setRadius 메서드를 사용합니다.card_view:cardBackgroundColor 특성을 사용합니다.card_view:cardBackgroundColor
+특성을 사용합니다.다음 코드 예는 {@link android.support.v7.widget.CardView} 위젯을 레이아웃에 포함시키는 방법을 보여줍니다.
+다음 코드 예는 {@link android.support.v7.widget.CardView} +위젯을 레이아웃에 포함시키는 방법을 보여줍니다.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -210,9 +249,13 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
자세한 내용은 {@link android.support.v7.widget.CardView}의 API 레퍼런스를 참조하세요.
-종속관계 추가
+종속 사항 추가
-{@link android.support.v7.widget.RecyclerView} 및 {@link android.support.v7.widget.CardView} 위젯은 v7 Support Libraries의 일부입니다. 이러한 위젯을 프로젝트에서 사용하려면 다음 Gradle 종속관계를 앱 모듈에 추가하세요.
+{@link android.support.v7.widget.RecyclerView} 및 {@link android.support.v7.widget.CardView}
+위젯은 v7 지원 라이브러리의 일부입니다.
+ 이러한 위젯을 프로젝트에서 사용하려면 다음
+Gradle 종속 사항을 앱의 모듈에 추가하세요.
+
dependencies {
@@ -220,4 +263,4 @@ dependencies {
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
}
-
\ No newline at end of file
+
diff --git a/docs/html-intl/intl/ko/training/material/shadows-clipping.jd b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
index fc56891329b93..e04d0c5244530 100644
--- a/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/ko/training/material/shadows-clipping.jd
@@ -12,26 +12,35 @@ page.title=그림자 정의 및 뷰 클리핑
머티어리얼 디자인은 UI 요소에 엘리베이션을 도입합니다. 엘리베이션은 사용자가 각 요소의 상대적 중요성을 이해하고 현재 직면한 작업에 집중할 수 있도록 도와줍니다.
+머티어리얼 디자인은 UI 요소에 엘리베이션을 도입합니다. 엘리베이션은 사용자가 각 요소의 상대적 중요성을 이해하고 현재 직면한 작업에 집중할 수 있도록 도와줍니다. +
-Z 속성으로 표현되는 뷰의 엘리베이션은 그림자의 시각적인 모양을 결정합니다. 예를 들어, 더 높은 Z값을 가진 뷰는 더 크고 부드러운 그림자를 드리웁니다. 높은 Z값을 가진 뷰는 낮은 Z값을 가진 뷰를 가립니다. 하지만 뷰의 Z값이 뷰의 크기에 영향을 주지는 않습니다.
+Z 속성으로 표현되는 뷰의 엘리베이션은 그림자의 시각적인 모양을 결정합니다. 예를 들어, 더 높은 Z값을 가진 뷰는 더 크고 부드러운 그림자를 드리웁니다. + 높은 Z값을 가진 뷰는 낮은 Z값을 가진 뷰를 가립니다. 하지만 뷰의 Z값이 뷰의 크기에 영향을 주지는 않습니다. +
-그림자는 엘리베이트된 뷰의 상위 요소에 의해 그려지며, 따라서 기본적으로 상위 요소에 의해 클리핑되는 표준 뷰 클리핑이 적용됩니다.
+그림자는 엘리베이트된 뷰의 상위 요소에 의해 그려지며, 따라서 기본적으로 상위 요소에 의해 클리핑되는 표준 뷰 클리핑이 적용됩니다. +
-엘리베이션은 특정 작업 수행 시 위젯이 일시적으로 뷰 평면 위로 올라오는 애니메이션을 생성하는 경우에도 유용합니다.
+엘리베이션은 특정 작업 수행 시 위젯이 일시적으로 뷰 평면 위로 올라오는 애니메이션을 생성하는 경우에도 유용합니다. +
-머티어리얼 디자인의 엘리베이션에 대한 자세한 내용은 3D 공간의 개체를 참조하세요.
+머티리얼 디자인의 엘리베이션에 대한 자세한 내용은 +3D 공간의 개체를 참조하세요. +
뷰의 Z 값은 2개의 구성요소를 가집니다.
뷰의 Z 값은 2개의 구성요소를 가집니다. + +
그림 1 - 서로 다른 뷰 엘리베이션의 그림자.
-레이아웃 정의에서 뷰의 엘리베이션을 설정하려면 android:elevation 특성을 사용하세요. 액티비티의 코드에서 뷰의 엘리베이션을 설정하려면 {@link android.view.View#setElevation View.setElevation()} 메서드를 사용하세요.
레이아웃 정의에서 뷰의 엘리베이션을 설정하려면 android:elevation
+특성을 사용합니다. 액티비티의 코드에서 뷰의 엘리베이션을 설정하려면
+{@link android.view.View#setElevation View.setElevation()} 메서드를 사용합니다.
뷰의 변환을 설정하려면 {@link android.view.View#setTranslationZ View.setTranslationZ()} 메서드를 사용하세요.
+뷰의 변환을 설정하려면 {@link android.view.View#setTranslationZ +View.setTranslationZ()} 메서드를 사용합니다.
-새 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 및 {@link android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 메서드를 사용하면 뷰의 엘리베이션을 손쉽게 애니메이트할 수 있습니다. 자세한 내용은 {@link android.view.ViewPropertyAnimator}의 API 레퍼런스와 속성 애니메이션 개발자 가이드를 참조하세요.
+새 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 및 {@link +android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 메서드를 사용하면 뷰의 엘리베이션을 손쉽게 애니메이트할 수 있습니다. + 자세한 내용은 +{@link android.view.ViewPropertyAnimator}의 API 레퍼런스와 속성 애니메이션 개발자 가이드를 참조하세요. +
-{@link android.animation.StateListAnimator}를 사용해서 이러한 애니메이션을 선언적 방식으로 지정할 수도 있습니다. 이는 사용자가 버튼을 누를 때와 같이 상태 변경이 애니메이션을 트리거하는 경우에 특히 유용합니다. 자세한 내용은 뷰 상태 변경 애니메이트를 참조하세요.
+{@link android.animation.StateListAnimator}를 사용해서 이러한 애니메이션을 선언적 방식으로 지정할 수도 있습니다. + 이는 사용자가 버튼을 누를 때와 같이 상태 변경이 애니메이션을 트리거하는 경우에 특히 유용합니다. + 자세한 내용은 +뷰 상태 변경 애니메이트를 참조하세요.
-Z 값은 dp(밀도-독립 화소)로 측정됩니다.
+Z 값은 dp(밀도 독립적 픽셀)로 측정됩니다.
뷰의 배경 Drawable의 경계는 그림자의 기본 모양을 결정합니다. 윤곽선은 그래픽 개체의 바깥쪽 모양을 나타내고 터치 피드백의 물결 영역을 정의합니다.
+뷰의 배경 드로어블의 경계는 해당 그림자의 기본 모양을 결정합니다. +윤곽선은 그래픽 객체의 바깥쪽 모양을 나타내고 터치 피드백의 물결 영역을 정의합니다. +
-배경 Drawable을 사용하여 정의된 다음 뷰를 살펴봅시다.
+배경 드로어블을 사용하여 정의된 다음 뷰를 살펴봅시다.
<TextView
@@ -66,7 +87,7 @@ page.title=그림자 정의 및 뷰 클리핑
android:background="@drawable/myrect" />
-배경 Drawable은 둥근 모서리를 가진 직사각형으로 정의됩니다.
+배경 드로어블은 둥근 모서리를 가진 직사각형으로 정의됩니다.
<!-- res/drawable/myrect.xml --> @@ -77,23 +98,36 @@ page.title=그림자 정의 및 뷰 클리핑 </shape>-
배경 Drawable이 뷰의 윤곽선을 정의하기 때문에 뷰는 둥근 모서리를 가진 그림자를 드리웁니다. 사용자지정 윤곽선을 제공하면 뷰 그림자의 기본 모양이 재정의됩니다.
+배경 드로어블이 뷰의 윤곽선을 정의하기 때문에 뷰는 둥근 모서리를 가진 그림자를 드리웁니다. + 사용자지정 윤곽선을 제공하면 뷰 그림자의 기본 모양이 재정의됩니다.
코드에서 뷰의 사용자지정 윤곽선을 정의하려면:
{@link android.graphics.Outline} 클래스의 메서드를 사용해서 둥근 모서리를 가진 타원형 및 직사각형 윤곽선을 생성할 수 있습니다. 뷰의 기본 윤곽선 공급자는 뷰의 배경에서 윤곽선을 가져옵니다. 뷰에 그림자가 드리우는 것을 원치 않으면 뷰의 윤곽선 공급자를 null로 설정합니다.
{@link android.graphics.Outline} 클래스의 메서드를 사용하여 둥근 모서리를 가진 타원형 및 직사각형 윤곽선을 생성할 수 있습니다.
+ 뷰의 기본 윤곽선 공급자는 뷰의 배경에서 윤곽선을 가져옵니다.
+ 뷰에 그림자가 드리우는 것을 원치 않으면 뷰의 윤곽선 공급자를 null로 설정하세요.
+
뷰를 클리핑하면 뷰의 모양을 손쉽게 바꿀 수 있습니다. 다른 디자인 요소와의 일관성을 위해, 또는 사용자 입력에 응답하여 뷰의 모양을 바꾸기 위해 뷰를 클리핑할 수 있습니다. {@link android.view.View#setClipToOutline View.setClipToOutline()} 메서드 또는 android:clipToOutline 특성을 사용하여 윤곽선 영역으로 뷰를 클리핑할 수 있습니다. {@link android.graphics.Outline#canClip Outline.canClip()} 메서드에서 결정된 대로 정사각형, 원형 그리고 둥근 사각형의 윤곽선만 클리핑을 지원합니다.
뷰를 클리핑하면 뷰의 모양을 손쉽게 바꿀 수 있습니다. 다른 디자인 요소와의 일관성을 위해, 또는 사용자 입력에 응답하여 뷰의 모양을 바꾸기 위해 뷰를 클리핑할 수 있습니다. {@link android.view.View#setClipToOutline
+View.setClipToOutline()} 메서드나 android:clipToOutline 특성을 사용하여 뷰를 해당 윤곽선 영역까지 클리핑할 수 있습니다.
-
Drawable 모양으로 뷰를 클리핑하려면 위와 같이 Drawable을 뷰의 배경으로 설정하고 {@link android.view.View#setClipToOutline View.setClipToOutline()} 메서드를 호출합니다.
+ +{@link android.graphics.Outline#canClip Outline.canClip()} 메서드에서 결정된 대로 사각형, 원형 및 둥근 사각형의 윤곽선만 클리핑을 지원합니다. + -뷰 클리핑은 리소스 소모가 많은 작업이므로, 뷰를 클리핑하는 데 사용하는 모양을 애니메이트하지 마십시오. 이 효과를 얻으려면 Reveal Effect 애니메이션을 사용하세요.
\ No newline at end of file +드로어블 모양으로 뷰를 클리핑하려면 위와 같이 드로어블을 뷰의 배경으로 +설정하고 {@link android.view.View#setClipToOutline View.setClipToOutline()} +메서드를 호출합니다.
+ +뷰 클리핑은 리소스 소모가 많은 작업이므로,뷰를 클리핑하는 데 사용하는 모양을 애니메이트하지 마세요. + 이 효과를 얻으려면 표시 효과 애니메이션을 사용하세요.
diff --git a/docs/html-intl/intl/ko/training/material/theme.jd b/docs/html-intl/intl/ko/training/material/theme.jd index 0e80a20b96ef4..ef4ff5847f1d4 100644 --- a/docs/html-intl/intl/ko/training/material/theme.jd +++ b/docs/html-intl/intl/ko/training/material/theme.jd @@ -1,4 +1,4 @@ -page.title=머티어리얼 테마 사용 +page.title=머티리얼 테마 사용 @jd:body @@ -12,14 +12,14 @@ page.title=머티어리얼 테마 사용새 머티어리얼 테마는 다음과 같은 기능을 제공합니다.
+새 머티리얼 테마는 다음과 같은 기능을 제공합니다.
제어 중인 색상표로 브랜드 ID에 따라 머티어리얼 테마의 모습을 사용자지정할 수 있습니다. 그림 3과 같이 테마 특성을 사용하여 작업 표시줄 및 상태 표시줄에 색조를 적용할 수 있습니다.
+제어 중인 색상표로 브랜드 ID에 따라 머티리얼 테마의 모습을 사용자지정할 수 있습니다. + 그림 3과 같이 테마 특성을 사용하여 작업 표시줄 및 상태 표시줄에 색조를 적용할 수 있습니다. +
-시스템 위젯에는 새 디자인 및 터치 피드백 애니메이션이 있습니다. 앱에서 색상표, 터치 피드백 애니메이션, 액티비티 전환을 사용자지정할 수 있습니다.
+시스템 위젯에는 새 디자인 및 터치 피드백 애니메이션이 있습니다. 앱에서 색상표, 터치 피드백 애니메이션, 액티비티 전환을 사용자지정할 수 있습니다. +
-머티어리얼 테마는 다음과 같이 정의됩니다.
+머티리얼 테마는 다음과 같이 정의됩니다.
@android:style/Theme.Material (어두운 버전)@android:style/Theme.Material.Light.DarkActionBar사용가능한 머티어리얼 스타일 목록은 {@link android.R.style R.style}의 API 레퍼런스를 참조하세요.
+사용가능한 머티리얼 스타일 목록은 +{@link android.R.style R.style}의 API 레퍼런스를 참조하세요.
그림 1. 어두운 머티어리얼 테마
+그림 1. 어두운 머티리얼 테마
그림 2. 밝은 머티어리얼 테마
+그림 2. 밝은 머티리얼 테마
-참고: 머티어리얼 테마는 Android 5.0(API 레벨 21) 이상에서만 사용할 수 있습니다. v7 Support Libraries는 일부 위젯에 머티어리얼 디자인 스타일의 테마를 제공하고 색상표 사용자지정을 지원합니다. 자세한 내용은 호환성 유지를 참조하세요. +참고: 머티리얼 테마는 Android 5.0(API 레벨 21) 이상에서만 사용할 수 있습니다. + v7 지원 라이브러리 +는 일부 위젯에 머티리얼 디자인 스타일의 테마를 제공하고 색상표 사용자지정을 지원합니다. + 자세한 내용은 +호환성 유지를 참조하세요.
테마의 기본 색상을 브랜드에 맞게 사용자지정하려면 머티어리얼 테마에서 상속 시 테마 특성을 사용하여 사용자지정 색상을 정의하세요.
+테마의 기본 색상을 브랜드에 맞게 사용자지정하려면 머티리얼 테마에서 상속 시 테마 특성을 사용하여 사용자지정 색상을 정의합니다. +
<resources> @@ -85,23 +94,38 @@ page.title=머티어리얼 테마 사용-![]()
-그림 3. 머티어리얼 테마 사용자자정
+그림 3. 머티리얼 테마 사용자자정상태 표시줄 사용자지정
-머티어리얼 테마를 사용하면 손쉽게 상태 표시줄을 사용자지정할 수 있습니다. 따라서 브랜드에 맞는 색상을 지정하고 흰색 상태 아이콘이 보이도록 충분한 대비를 제공할 수 있습니다. 상태 표시줄의 사용자지정 색상을 설정하려면 머티어리얼 테마를 확장할 때
+android:statusBarColor특성을 사용합니다. 기본적으로android:statusBarColor는android:colorPrimaryDark의 값을 상속합니다.머티리얼 테마를 사용하면 손쉽게 상태 표시줄을 사용자지정할 수 있습니다. 따라서 브랜드에 맞는 색상을 지정하고 흰색 상태 아이콘이 보이도록 충분한 대비를 제공할 수 있습니다. + 상태 표시줄의 사용자지정 색상을 설정하려면 머티리얼 테마를 확장할 때
android:statusBarColor특성을 사용합니다. -직접 상태 표시줄 뒤에 그릴 수도 있습니다. 예를 들어 사진 위에 상태 표시줄이 투명하게 표시되도록 하려면, 희미하게 어두운 그라데이션으로 흰색 상태 아이콘이 보이게 합니다. 그러기 위해서는
+ 기본적으로android:statusBarColor특성을@android:color/transparent에 설정하고 필요한 만큼 창 플래그를 조정합니다. 또한 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 메서드를 사용하여 애니메이션 또는 페이드 효과를 줄 수도 있습니다.android:statusBarColor는android:colorPrimaryDark의 값을 상속합니다. + + +직접 상태 표시줄 뒤에 그릴 수도 있습니다. 예를 들어 사진 위에 상태 표시줄이 투명하게 표시되도록 하려면, 희미하게 어두운 그라데이션으로 흰색 상태 아이콘이 보이게 합니다. + + 그렇게 하려면
android:statusBarColor특성을 +@android:color/transparent로 설정하고 필요한 경우 창 플래그를 조정합니다. 또한 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 메서드를 사용하여 애니메이션 또는 페이드 효과를 줄 수도 있습니다. + +참고: 상태 표시줄은 거의 언제나 기본 도구모음과 경계가 분명히 식별되어야 합니다. 단, 이러한 표시줄 뒤에 다채로운 가장자리 이미지 또는 미디어 콘텐츠를 표시하는 경우나 아이콘이 계속 보이도록 그라데이션을 사용하는 경우는 제외됩니다. + +
-탐색 표시줄과 상태 표시줄을 사용자지정하는 경우, 둘 다 투명하게 만들거나 상태 표시줄만 수정합니다. 그 밖의 경우 탐색 표시줄은 항상 검은색을 유지합니다.
+탐색 표시줄과 상태 표시줄을 사용자지정하는 경우, 둘 다 투명하게 만들거나 상태 표시줄만 수정합니다. + 그 밖의 경우 탐색 표시줄은 항상 검은색을 유지해야 합니다.
개별 뷰의 테마 지정 -
XML 레이아웃 정의에 있는 요소는 테마 리소스를 참조하는
\ No newline at end of file +android:theme특성을 지정할 수 있습니다. 이 특성은 요소와 모든 하위 요소의 테마를 수정하며, 인터페이스의 특정 부분에서 테마 색상표를 바꿀 때 유용합니다.XML 레이아웃 정의에 있는 요소는 테마 리소스를 참조하는
diff --git a/docs/html-intl/intl/pt-br/design/material/index.jd b/docs/html-intl/intl/pt-br/design/material/index.jd index fc9610c145c15..ee027290f763c 100644 --- a/docs/html-intl/intl/pt-br/design/material/index.jd +++ b/docs/html-intl/intl/pt-br/design/material/index.jd @@ -1,7 +1,6 @@ -page.title=Material Design +page.title=Material Design para Android page.tags=Material,design -page.type=design -page.image=design/material/images/MaterialLight.png +page.image=images/cards/design-material-for-android_2x.jpg @jd:body @@ -39,10 +38,10 @@ page.image=design/material/images/MaterialLight.png -android:theme특성을 지정할 수 있습니다. + 이 특성은 요소와 모든 하위 요소의 테마를 수정하며, 인터페이스의 특정 부분에서 테마 색상표를 바꿀 때 유용합니다. + +O Material Design é um guia abrangente para design visual, de movimento e de +
O Material Design é um guia abrangente para design visual, de movimento e de interação para diversas plataformas e dispositivos. O Android agora é compatível com -aplicativos do Material Design. Para usar o Material Design nos aplicativos Android, siga as orientações definidas -nas especificações do Material Design e use os novos +aplicativos do Material Design. Para usar o Material Design nos aplicativos Android, siga as orientações definidas +nas especificações do Material Design e use os novos componentes e funcionalidades disponíveis no Android 5.0 (API de nível 21) e em posteriores.
O Android fornece os seguintes elementos para criar aplicativos do Material Design:
@@ -59,7 +58,7 @@ componentes e funcionalidades disponíveis no Android 5.0 (API de nível 21) e eTema do Material
-O tema do Material fornece um novo estilo para o seu aplicativo, widgets de sistema que permitem +
O tema do Material fornece um novo estilo para o seu aplicativo, widgets de sistema que permitem definir a paleta de cores e as animações padrão para feedback de toque e transições de atividades.
@@ -79,13 +78,13 @@ definir a paleta de cores e as animações padrão para feedback de toque e tran
-Para obter mais informações, consulte Como usar o tema +
Para obter mais informações, consulte Como usar o tema do Material.
Listas e cartões
-O Android fornece dois novos widgets para exibir cartões e listas com estilos e animações do +
O Android fornece dois novos widgets para exibir cartões e listas com estilos e animações do Material Design:
@@ -97,19 +96,19 @@ Material Design:-
O novo widget
CardViewpermite exibir informações importantes dentro de +O novo widget
CardViewpermite exibir informações importantes dentro de cartões que têm aparência consistente.
-Para obter mais informações, consulte Como criar +
-Para obter mais informações, consulte Como criar listas e cartões.
Sombras de vistas
-Além das propriedades X e Y, vistas no Android agora têm uma propriedade +
Além das propriedades X e Y, vistas no Android agora têm uma propriedade Z. Essa nova propriedade representa a elevação de uma vista, que determina:
@@ -130,7 +129,7 @@ Z. Essa nova propriedade representa a elevação de uma vista, que determina:
Para obter mais informações, consulte Como +
Para obter mais informações, consulte Como definir sombras e recortar visualizações.
@@ -162,10 +161,10 @@ Exibir animações em desenháveis da lista de estado entre mud -Animações de feedback de toque são integradas em várias vistas padrões, como botões. As novas APIs +
Animações de feedback de toque são integradas em várias vistas padrão, como botões. As novas APIs permitem personalizar essas animações e adicioná-las às vistas personalizadas.
-Para obter mais informações, consulte Como definir +
Para obter mais informações, consulte Como definir animações personalizadas.
@@ -182,5 +181,5 @@ uma cor em tempo de execução. imagem de mapa de bits. -Para obter mais informações, consulte Como trabalhar +
Para obter mais informações, consulte Como trabalhar com desenháveis.
diff --git a/docs/html-intl/intl/pt-br/training/material/animations.jd b/docs/html-intl/intl/pt-br/training/material/animations.jd index ca722e80e09e3..6597db63e135f 100644 --- a/docs/html-intl/intl/pt-br/training/material/animations.jd +++ b/docs/html-intl/intl/pt-br/training/material/animations.jd @@ -1,4 +1,4 @@ -page.title=Como definir animações personalizadas +page.title=Como definir animações personalizadas @jd:body @@ -21,7 +21,10 @@ page.title=Como definir animações personalizadas -As animações no Material Design dão feedback aos usuários sobre as ações deles e fornecem continuidade visual à medida que interagem com o seu aplicativo. O tema do Material fornece algumas animações padrão para botões e transições de atividades e o Android 5.0 (API de nível 21) e posteriores permitem a personalização dessas animações e a criação de novas:
+As animações no Material Design dão feedback aos usuários sobre as ações deles e fornecem +continuidade visual à medida que interagem com o seu aplicativo. O tema do Material fornece algumas animações padrão para +botões e transições de atividades e o Android 5.0 (API de nível 21) e posteriores permitem a personalização +dessas animações e a criação de novas:
-
- Feedback de toque
@@ -34,28 +37,42 @@ page.title=Como definir animações personalizadasPersonalizar feedback de toque
-Os feedbacks de toque no Material Design fornecem confirmação visual instantânea no ponto de contato quando os usuários interagem com elementos da IU. As animações de feedback de toque padrão para botões usam a nova classe {@link android.graphics.drawable.RippleDrawable}, que passa por transições entre diferentes estados com um efeito de ondulação.
+Os feedbacks de toque no Material Design fornecem confirmação visual instantânea no +ponto de contato quando os usuários interagem com elementos da interface do usuário. As animações de feedback de toque padrão +para botões usam a nova classe {@link android.graphics.drawable.RippleDrawable}, que passa por transições +entre diferentes estados com um efeito de ondulação.
-Na maioria dos casos, você deve aplicar essa funcionalidade no XML de visualização especificando o plano de fundo da visualização como:
+Na maioria dos casos, você deve aplicar essa funcionalidade no XML de visualização especificando o segundo plano da +visualização como:
-
-- -
?android:attr/selectableItemBackgroundpara uma ondulação delimitada- +
?android:attr/selectableItemBackgroundBorderlesspara uma ondulação que se estenda além da visualização- +
?android:attr/selectableItemBackgroundpara uma ondulação delimitada.?android:attr/selectableItemBackgroundBorderlesspara uma ondulação que se estenda além +da visualização. Ele será desenhado sobre e delimitado pelo pai mais próximo da visualização com um segundo plano +não nulo.Observação:
+selectableItemBackgroundBorderlessé um novo atributo inserido na API de nível 21.Observação:
-selectableItemBackgroundBorderlessé um novo +atributo introduzido na API de nível 21.Alternativamente, você pode definir um {@link android.graphics.drawable.RippleDrawable} como um recurso XML usando o elemento
+ripple.Alternativamente, você pode definir um {@link android.graphics.drawable.RippleDrawable} +como um recurso XML usando o elemento
-ripple.Você pode atribuir uma cor para objetos {@link android.graphics.drawable.RippleDrawable}. Para alterar a cor do feedback de toque padrão, use o atributo
+android:colorControlHighlightdo tema.Você pode atribuir uma cor para objetos {@link android.graphics.drawable.RippleDrawable}. Para alterar +a cor do feedback de toque padrão, use o atributo
-android:colorControlHighlight+do tema.Para obter mais informações, consulte a referência de API para a classe {@link android.graphics.drawable.RippleDrawable}.
+Para obter mais informações, consulte a referência de API para a classe {@link +android.graphics.drawable.RippleDrawable}.
Usar o efeito de revelação
-Revelar animações fornece continuidade visual aos usuários ao exibir ou esconder um grupo de elementos da IU. O método {@link android.view.ViewAnimationUtils#createCircularReveal ViewAnimationUtils.createCircularReveal()} permite animar um círculo de recorte para revelar ou esconder uma visualização.
+Revelar animações fornece continuidade visual aos usuários ao exibir ou esconder um grupo +de elementos da interface do usuário. O método {@link android.view.ViewAnimationUtils#createCircularReveal +ViewAnimationUtils.createCircularReveal()} permite animar um círculo de recorte para +revelar ou ocultar uma visualização.
Para revelar uma visualização anteriormente invisível usando esse efeito:
@@ -122,19 +139,29 @@ anim.start();--Figura 1 - uma transição com elementos compartilhados.
+Figura 1 - uma + transição com elementos compartilhados.
Para reproduzir o filme, clique na tela do dispositivoAs transições de atividades em aplicativos com Material Design fornecem conexões visuais entre estados diferentes por meio de movimentos e transformações entre elementos comuns. Você pode especificar animações personalizadas para transições de entrada e de saída e para transições de elementos compartilhados entre atividades.
+As transições de atividades em aplicativos com Material Design fornecem conexões visuais +entre estados diferentes por meio de movimentos e transformações entre elementos comuns. Você pode especificar animações personalizadas para +transições de entrada e de saída e para transições de elementos compartilhados entre atividades.
-
- Uma transição de entrada determina como as visualizações em uma atividade entram em cena. Por exemplo, na transição de entrada explodir, as visualizações entram em cena por fora e voam em direção ao centro da tela.
+- Uma transição de entrada determina como as visualizações em uma atividade entram em cena. +Por exemplo, na transição de entrada explodir, as visualizações entram em cena por fora +e voam em direção ao centro da tela.
-- Uma transição de saída determina como as visualizações em uma atividade saem de cena. Por exemplo, na transição de saída explodir, as visualizações saem de cena a partir do centro.
+- Uma transição de saída determina como as visualizações em uma atividade saem de cena. Por + exemplo, na transição de saída explodir, as visualizações saem de cena a partir do +centro.
-- Uma transição de elementos compartilhados determina como as visualizações compartilhadas entre duas atividades fazem transição entre essas atividades. Por exemplo, se duas atividades têm a mesma imagem em posições e tamanhos diferentes, a transição de elemento compartilhado changeImageTransform movimenta e dimensiona a imagem suavemente entre essas atividades.
+- Uma transição de elementos compartilhados determina como as visualizações compartilhadas +entre duas atividades fazem transição entre essas atividades. Por exemplo, se duas atividades têm a mesma +imagem em posições e tamanhos diferentes, a transição de elemento compartilhado changeImageTransform converte +e dimensiona a imagem suavemente entre essas atividades.
O Android 5.0 (API de nível 21) é compatível com estas transições de entrada e de saída:
@@ -145,7 +172,9 @@ anim.start();- esmaecer - adiciona ou remove uma visualização de uma cena alterando a opacidade.
Qualquer transição que amplie a classe {@link android.transition.Visibility} é compatibilizada como uma transição de entrada ou de saída. Para obter mais informações, consulte a referência de API para a classe {@link android.transition.Transition}.
+Qualquer transição que amplie a classe {@link android.transition.Visibility} é suportada +como uma transição de entrada ou de saída. Para obter mais informações, consulte a referência de API para a classe +{@link android.transition.Transition}.
O Android 5.0 (API de nível 21) também é compatível com estas transições de elementos compartilhados:
@@ -156,7 +185,8 @@ anim.start();changeImageTransform - anima as mudanças das imagens desejadas em tamanho e escala. -Ao habilitar as transições de atividade no seu aplicativo, a transição de esmaecimento cruzado padrão é ativada entre as atividades de entrada e saída.
+Ao habilitar as transições de atividades no seu aplicativo, a transição de esmaecimento cruzado padrão é +ativada entre as atividades de entrada e saída.
![]()
@@ -165,7 +195,9 @@ anim.start();
Especificar transições de atividades
-Primeiramente, habilite as transições de conteúdo da janela com o atributo
+android:windowContentTransitionsao definir um estilo herdado do tema do Material. Você também pode especificar transições de entrada, saída e elemento compartilhado na definição de estilo:Primeiro, habilite as transições de conteúdo da janela com o atributo
android:windowContentTransitions+ao definir um estilo herdado do tema do Material. Você também pode especificar +transições de entrada, saída e elemento compartilhado na definição de estilo:<style name="BaseAppTheme" parent="android:Theme.Material"> @@ -194,9 +226,12 @@ anim.start(); </transitionSet>-O elemento
+changeImageTransformcorresponde à classe {@link android.transition.ChangeImageTransform}. Para obter mais informações, consulte a referência de API para {@link android.transition.Transition}.O elemento
-changeImageTransformcorresponde à classe +{@link android.transition.ChangeImageTransform}. Para obter mais informações, consulte a referência de +API para {@link android.transition.Transition}.Para habilitar transições de conteúdo da janela no código como alternativa, chame o método {@link android.view.Window#requestFeature Window.requestFeature()}:
+Para habilitar transições de conteúdo da janela no código como alternativa, chame o método +{@link android.view.Window#requestFeature Window.requestFeature()}:
// inside your activity (if you did not enable transitions in your theme) @@ -206,31 +241,45 @@ getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); getWindow().setExitTransition(new Explode());-Para especificar transições no código, chame os métodos a seguir com um objeto {@link android.transition.Transition}:
+Para especificar transições no código, chame os métodos a seguir com um objeto {@link +android.transition.Transition}:
-
- {@link android.view.Window#setEnterTransition Window.setEnterTransition()}
- {@link android.view.Window#setExitTransition Window.setExitTransition()}
-- {@link android.view.Window#setSharedElementEnterTransition Window.setSharedElementEnterTransition()}
-- {@link android.view.Window#setSharedElementExitTransition Window.setSharedElementExitTransition()}
+- {@link android.view.Window#setSharedElementEnterTransition + Window.setSharedElementEnterTransition()}
+- {@link android.view.Window#setSharedElementExitTransition + Window.setSharedElementExitTransition()}
Os métodos {@link android.view.Window#setExitTransition setExitTransition()} e {@link android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} definem a transição de saída para a atividade de chamada. Os métodos {@link android.view.Window#setEnterTransition setEnterTransition()} e {@link android.view.Window#setSharedElementEnterTransition setSharedElementEnterTransition()} definem a transição de entrada para a atividade chamada.
+Os métodos {@link android.view.Window#setExitTransition setExitTransition()} e {@link +android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} definem +a transição de saída para a atividade de chamada. Os métodos {@link android.view.Window#setEnterTransition +setEnterTransition()} e {@link android.view.Window#setSharedElementEnterTransition +setSharedElementEnterTransition()} definem a transição de entrada para a atividade chamada.
-Para obter o efeito completo de uma transição, você deve habilitar as transições de conteúdo da janela tanto na atividade chamada quanto na atividade de chamada. Caso contrário, a atividade de chamada acionará a transição de saída, mas você verá uma transição de janela (como dimensionamento ou esmaecimento).
+Para obter o efeito completo de uma transição, você deve habilitar as transições de conteúdo da janela tanto na atividade +chamada quanto na atividade de chamada. Caso contrário, a atividade de chamada acionará a transição de saída, +mas você verá uma transição de janela (como dimensionamento ou esmaecimento).
-Para iniciar uma transição de entrada o mais cedo possível, use o método {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} na atividade chamada. Isso faz com que haja transições de entrada mais dramáticas.
+Para iniciar uma transição de entrada o mais cedo possível, use o método +{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} +na atividade chamada. Isso faz com que haja transições de entrada mais dramáticas.
Iniciar uma atividade usando transições
-Se você habilita as transições e define uma transição de saída para uma atividade, a transição será ativada ao iniciar outra atividade, como a seguir:
+Se você habilita as transições e define uma transição de saída para uma atividade, a transição +será ativada ao iniciar outra atividade, como a seguir:
startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this).toBundle());-Se você configurou uma transição de entrada para a segunda atividade, a transição também será ativada quando a atividade for iniciada. Para desabilitar as transições ao iniciar outra atividade, forneça um pacote de opções
+null.Se você configurou uma transição de entrada para a segunda atividade, a transição também +será ativada quando a atividade for iniciada. Para desabilitar as transições ao iniciar outra atividade, forneça um pacote de +opções
null.Iniciar uma atividade com um elemento compartilhado
@@ -240,8 +289,10 @@ startActivity(intent,Habilite transições de conteúdo da janela no tema. Especifique uma transição de elementos compartilhados no estilo. Defina a transição como um recurso XML. -Atribua um nome comum aos elementos compartilhados em ambos os layouts com o atributo -android:transitionName.Use o método {@link android.app.ActivityOptions#makeSceneTransitionAnimation ActivityOptions.makeSceneTransitionAnimation()}. +Atribua um nome comum aos elementos compartilhados em ambos os layouts com o atributo + +android:transitionName.Use o método {@link android.app.ActivityOptions#makeSceneTransitionAnimation +ActivityOptions.makeSceneTransitionAnimation()}. @@ -266,13 +317,20 @@ imgContainerView.setOnClickListener(new View.OnClickListener() { });-Para obter visualizações dinâmicas compartilhadas geradas no código, use o método {@link android.view.View#setTransitionName View.setTransitionName()} para especificar um nome de elemento comum em ambas as atividades.
+Para obter visualizações dinâmicas compartilhadas geradas no código, use o método +{@link android.view.View#setTransitionName View.setTransitionName()} para especificar um nome de +elemento comum em ambas as atividades.
-Para reverter a animação de transição de cena ao finalizar a segunda atividade, chame o método {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} em vez de {@link android.app.Activity#finish Activity.finish()}.
+Para reverter a animação de transição de cena ao finalizar a segunda atividade, chame o método +{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} +em vez de {@link android.app.Activity#finish Activity.finish()}.
Iniciar uma atividade com diversos elementos compartilhados
-Para criar uma animação de transição de cena entre duas atividades que têm mais de um elemento compartilhado, defina os elementos compartilhados em ambos os layouts com o atributo
+android:transitionName(ou use o método {@link android.view.View#setTransitionName View.setTransitionName()} em ambas as atividades), e crie um objeto {@link android.app.ActivityOptions}, como a seguir:Para criar uma animação de transição de cena entre duas atividades que têm mais de um elemento +compartilhado, defina os elementos compartilhados em ambos os layouts com o atributo
android:transitionName+(ou use o método {@link android.view.View#setTransitionName View.setTransitionName()} em ambas +as atividades) e crie um objeto {@link android.app.ActivityOptions}, como a seguir:ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, @@ -283,9 +341,14 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,Usar movimento curvado
-As animações no Material Design dependem das curvas para obter padrões de interpolação de tempo e de movimentos espaciais. Com o Android 5.0 (API de nível 21) e posteriores, você pode definir padrões de curvas de temporização personalizada e de movimentos curvados para animações.
+As animações no Material Design dependem das curvas para obter padrões de interpolação +de tempo e de movimentos espaciais. Com o Android 5.0 (API de nível 21) e posteriores, você pode definir padrões de curvas de +temporização personalizada e de movimentos curvados para animações.
-A classe {@link android.view.animation.PathInterpolator} é um novo interpolador baseado em uma curve Bézier ou em um objeto {@link android.graphics.Path}. Esse interpolador especifica uma curva de movimento em um quadrado de 1x1, com pontos de ancoragem em (0,0) e (1,1) e pontos de controle conforme o especificado, usando os argumentos do construtor. Você também pode definir um interpolador de caminho como um recurso XML:
+A classe {@link android.view.animation.PathInterpolator} é um novo interpolador baseado em uma +curva Bézier ou em um objeto {@link android.graphics.Path}. Esse interpolador especifica uma curva de movimento em +um quadrado de 1x1, com pontos de ancoragem em (0,0) e (1,1) e pontos de controle conforme especificado usando +os argumentos do construtor. Você também pode definir um interpolador de caminho como um recurso XML:
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" @@ -295,7 +358,8 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, android:controlY2="1"/>-O sistema fornece recursos XML para três curvas básicas na especificação do Material Design:
+O sistema fornece recursos XML para três curvas básicas na especificação do +Material Design:
-
- @@ -303,9 +367,12 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,
@interpolator/fast_out_linear_in.xml@interpolator/linear_out_slow_in.xmlVocê pode passar um objeto {@link android.view.animation.PathInterpolator} ao método {@link android.animation.Animator#setInterpolator Animator.setInterpolator()}.
+Você pode passar um objeto {@link android.view.animation.PathInterpolator} para o método {@link +android.animation.Animator#setInterpolator Animator.setInterpolator()}.
-A classe {@link android.animation.ObjectAnimator} tem novos construtores que habilitam a animação de coordenadas ao longo de um caminho usando duas ou mais propriedades simultaneamente. Por exemplo, o animador a seguir usa um objeto {@link android.graphics.Path} para animar as propriedades X e Y de uma visualização:
+A classe {@link android.animation.ObjectAnimator} tem novos construtores que permitem a animação de +coordenadas ao longo de um caminho usando duas ou mais propriedades simultaneamente. Por exemplo, o animador a seguir usa um +objeto {@link android.graphics.Path} para animar as propriedades X e Y de uma visualização:
ObjectAnimator mAnimator; @@ -317,7 +384,9 @@ mAnimator.start();Animar mudança de estado da visualização
-A classe {@link android.animation.StateListAnimator} permite a definição de animadores que são executados quando o estado de uma visualização muda. O exemplo a seguir mostra como definir uma {@link android.animation.StateListAnimator} como um recurso XML:
+A classe {@link android.animation.StateListAnimator} permite a definição de animadores que são executados +quando o estado de uma visualização muda. O exemplo a seguir mostra como definir um {@link +android.animation.StateListAnimator} como um recurso XML:
<!-- animate the translationZ property of a view when pressed --> @@ -345,11 +414,21 @@ mAnimator.start(); </selector>-Para anexar animações de estado de visualização personalizadas a uma visualização, defina um animador usando o elemento
+selectorem um arquivo de recurso XML, como nesse exemplo, e atribua-o à visualização com o atributoandroid:stateListAnimator. Para atribuir um animador de lista de estado a uma visualização no código, use o método {@link android.animation.AnimatorInflater#loadStateListAnimator AnimationInflater.loadStateListAnimator()} e atribua o animador à visualização com o método {@link android.view.View#setStateListAnimator View.setStateListAnimator()}.Para anexar animações de estado de visualização personalizadas a uma visualização, defina um animador usando o elemento +
-selectorem um arquivo de recurso XML, como nesse exemplo, e +atribua-o à visualização com o atributoandroid:stateListAnimator. Para atribuir um animador de lista de estado +a uma visualização no código, use o método {@link android.animation.AnimatorInflater#loadStateListAnimator +AnimationInflater.loadStateListAnimator()} e atribua o animador à visualização com o método +{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.Quando o tema amplia o tema do Material, os botões têm uma animação Z por padrão. Para evitar esse comportamento nos botões, defina o atributo
+android:stateListAnimatorcomo@null.Quando o tema amplia o tema do Material, os botões têm uma animação Z por padrão. Para evitar esse +comportamento nos botões, defina o atributo
-android:stateListAnimatorcomo +@null.A classe {@link android.graphics.drawable.AnimatedStateListDrawable} permite a criação de desenháveis que exibem animações entre mudanças de estado da visualização associada. Alguns dos widgets de sistema no Android 5.0 usam essas animações por padrão. O exemplo a seguir mostra como definir uma {@link android.graphics.drawable.AnimatedStateListDrawable} como um recurso XML:
+A classe {@link android.graphics.drawable.AnimatedStateListDrawable} permite a criação de +desenháveis que exibem animações entre mudanças de estado da visualização associada. Alguns dos widgets de sistema no +Android 5.0 usam essas animações por padrão. O exemplo a seguir mostra como +definir um {@link android.graphics.drawable.AnimatedStateListDrawable} como um recurso XML:
<!-- res/drawable/myanimstatedrawable.xml --> @@ -379,19 +458,28 @@ mAnimator.start();Animar desenháveis de vetor
-Desenháveis de vetor são dimensionáveis sem perder definição. A classe {@link android.graphics.drawable.AnimatedVectorDrawable} permite a animação de propriedades de um desenhável de vetor.
+Desenháveis de vetor são +dimensionáveis sem perder definição. A classe {@link android.graphics.drawable.AnimatedVectorDrawable} +permite a animação de propriedades de um desenhável de vetor.
Você normalmente define desenháveis de vetor animados em três arquivos XML:
-
-- Um desenhável de vetor com o elemento
-<vector>emres/drawable/- Um desenhável de vetor animado com o elemento
-<animated-vector>emres/drawable/- Um ou mais animadores de objeto com o elemento
+<objectAnimator>emres/anim/- Um desenhável de vetor com o elemento
+<vector>em +res/drawable/- Um desenhável de vetor animado com o elemento
+<animated-vector>em +res/drawable/- Um ou mais animadores de objeto com o elemento
<objectAnimator>em +res/anim/Desenháveis de vetor animados podem animar os atributos dos elementos
+<group>e<path>. Os elementos<group>definem um conjunto de caminhos ou subgrupos e o elemento<path>define caminhos a serem desenhados.Desenháveis de vetor animados podem animar os atributos dos elementos
-<group>e +<path>. Os elementos<group>definem um conjunto de +caminhos ou subgrupos e o elemento<path>define caminhos a serem desenhados.Ao definir um desenhável de vetor que você queira animar, use o atributo
+android:namepara atribuir um nome único a grupos e caminhos para poder referenciá-los nas definições do animador. Por exemplo:Ao definir um desenhável de vetor que você queira animar, use o atributo
android:name+para atribuir um nome único a grupos e caminhos para poder referenciá-los nas definições +do animador. Por exemplo:<!-- res/drawable/vectordrawable.xml --> @@ -413,7 +501,8 @@ mAnimator.start(); </vector>-O desenhável de vetor animado refere-se a grupos e caminhos no desenhável de vetor pelos respectivos nomes:
+A definição de desenhável de vetor animado se refere a grupos e caminhos no desenhável de vetor +pelos respectivos nomes:
<!-- res/drawable/animvectordrawable.xml --> @@ -428,7 +517,9 @@ mAnimator.start(); </animated-vector>-As definições da animação representam os objetos {@link android.animation.ObjectAnimator} ou {@link android.animation.AnimatorSet}. O primeiro animador nesse exemplo gira o grupo desejado em 360º:
+As definições de animação representam objetos {@link android.animation.ObjectAnimator} ou {@link +android.animation.AnimatorSet}. O primeiro animador nesse exemplo gira o grupo +desejado em 360º:
<!-- res/anim/rotation.xml --> @@ -439,7 +530,9 @@ mAnimator.start(); android:valueTo="360" />-O segundo animador nesse exemplo transforma a forma do caminho do desenhável de vetor. Ambos os caminhos devem ser compatíveis com a transformação: eles precisam ter o mesmo número de comandos e de parâmetros para cada comando.
+O segundo animador nesse exemplo transforma a forma do caminho do desenhável +de vetor. Ambos os caminhos devem ser compatíveis com a transformação: eles precisam ter o mesmo +número de comandos e de parâmetros para cada comando.
<!-- res/anim/path_morph.xml --> @@ -453,4 +546,5 @@ mAnimator.start(); </set>-Para obter mais informações, consulte a referência de API para {@link android.graphics.drawable.AnimatedVectorDrawable}.
\ No newline at end of file +Para obter mais informações, consulte a referência de API para {@link +android.graphics.drawable.AnimatedVectorDrawable}.
diff --git a/docs/html-intl/intl/pt-br/training/material/compatibility.jd b/docs/html-intl/intl/pt-br/training/material/compatibility.jd index e04d22cf3a395..2540df118aeb6 100644 --- a/docs/html-intl/intl/pt-br/training/material/compatibility.jd +++ b/docs/html-intl/intl/pt-br/training/material/compatibility.jd @@ -1,4 +1,4 @@ -page.title=Como manter a compatibilidade +page.title=Como manter a compatibilidade @jd:body @@ -20,42 +20,63 @@ page.title=Como manter a compatibilidade -Alguns recursos do Material Design, como o tema do Material e transições personalizadas de atividades, estão disponíveis apenas no Android 5.0 (API de nível 21) e em posteriores. Contudo, você pode projetar os aplicativos para usar esses recursos ao executá-los em dispositivos compatíveis com o Material Design e ainda mantê-los compatíveis com dispositivos que funcionam com versões anteriores do Android.
+Alguns recursos do Material Design, como o tema do Material e transições personalizadas de atividades, estão +disponíveis apenas no Android 5.0 (API de nível 21) e posteriores. Contudo, você pode projetar os aplicativos +para usar esses recursos ao executá-los em dispositivos compatíveis com o Material Design e ainda mantê-los +compatíveis com dispositivos executando versões anteriores do Android.
Definir estilos alternativos
-Você pode configurar o aplicativo para usar o tema do Material em dispositivos compatíveis com ele e regressar a um tema antigo em dispositivos que funcionam com versões anteriores do Android:
+Você pode configurar o aplicativo para usar o tema do Material em dispositivos compatíveis +com ele e reverter para um tema antigo em dispositivos que executem versões anteriores do Android:
-
-- Defina um tema herdado de um tema antigo (como Holo) em
-res/values/styles.xml.- Defina um tema com o mesmo nome herdado do tema do Material em
+res/values-v21/styles.xml.- Defina um tema herdado de um tema antigo (como Holo) em +
+res/values/styles.xml.- Defina um tema com o mesmo nome herdado do tema do Material em +
res/values-v21/styles.xml.- Defina esse tema como o tema do seu aplicativo no arquivo de manifesto.
Observação: Se o seu aplicativo usa o tema do Material mas não fornece um tema alternativo dessa maneira, o aplicativo não rodará em verões mais antigas do que o Android 5.0. +
Observação: +se o seu aplicativo usa o tema do Material mas não fornece um tema alternativo dessa maneira, +o aplicativo não rodará em versões mais antigas do que o Android 5.0.
Fornecer layouts alternativos
-Se os layouts que você projetou de acordo com as orientações do Material Design não usarem quaisquer dos novos atributos XML introduzidos no Android 5.0 (API de nível 21), funcionarão em versões antigas do Android. Caso contrário, você pode fornecer layouts alternativos. Você também pode fornecer layouts alternativos para personalizar a aparência do seu aplicativo em versões anteriores do Android.
+Se os layouts que você projetou de acordo com as orientações do Material Design não usarem +quaisquer dos novos atributos XML introduzidos no Android 5.0 (API de nível 21), eles funcionarão em +versões antigas do Android. Caso contrário, você pode fornecer layouts alternativos. Você também pode fornecer +layouts alternativos para personalizar a aparência do seu aplicativo em versões anteriores do Android.
-Crie arquivos de layout para Android 5.0 (API de nível 21) dentro de
+res/layout-v21/e arquivos de layout alternativo para versões anteriores do Android dentro deres/layout/. Por exemplo,res/layout/my_activity.xmlé um layout alternativo parares/layout-v21/my_activity.xml.Crie arquivos de layout para Android 5.0 (API de nível 21) dentro de
-res/layout-v21/e arquivos de +layout alternativo para versões anteriores do Android dentro deres/layout/. +Por exemplo,res/layout/my_activity.xmlé um layout alternativo de +res/layout-v21/my_activity.xml.Para evitar duplicação do código, defina os estilos dentro de
+res/values/, modifique-os emres/values-v21/para as novas APIs e use herança de estilo, definindo estilos de base emres/values/e herdando daqueles emres/values-v21/.Para evitar duplicação do código, defina os estilos dentro de
res/values/, modifique-os +emres/values-v21/para as novas APIs e use herança de estilo, definindo +estilos de base emres/values/e herdando daqueles emres/values-v21/.Usar a Biblioteca de Suporte
-A v7 da Biblioteca de Suporte r21 e posteriores incluem os seguintes recursos do Material Design:
+A v7 da Biblioteca de Suporte +r21 e posteriores incluem os seguintes recursos do Material Design:
-
- Estilos do Material Design para alguns widgets do sistema quando se aplica um dos temas
-Theme.AppCompat.- Atributos de tema da paleta de cores nos temas
-Theme.AppCompat.- O widget {@link android.support.v7.widget.RecyclerView} para coletar dados do visor.
+- Estilos do Material Design para alguns widgets do +sistema quando se aplica um dos temas
+Theme.AppCompat.- Atributos de tema da paleta de cores + nos temas
+Theme.AppCompat.- O widget {@link android.support.v7.widget.RecyclerView} para exibir coleções + de dados.
- O widget {@link android.support.v7.widget.CardView} para criar cartões.
-- A classe {@link android.support.v7.graphics.Palette} para extrair cores proeminentes de imagens.
+- A classe {@link android.support.v7.graphics.Palette} para extrair cores proeminentes de + imagens.
Widgets de sistema
@@ -73,7 +94,8 @@ page.title=Como manter a compatibilidadePaleta de cores
-Para obter estilos do Material Design e personalizar a paleta de cores com a v7 da Biblioteca de Suporte do Android, aplique um dos temas
+Theme.AppCompat:Para obter estilos do Material Design e personalizar a paleta de cores com a v7 da Biblioteca de Suporte +do Android, aplique um dos temas
Theme.AppCompat:<!-- extend one of the Theme.AppCompat themes --> @@ -87,16 +109,21 @@ page.title=Como manter a compatibilidadeListas e cartões
-Os widgets {@link android.support.v7.widget.RecyclerView} e {@link android.support.v7.widget.CardView} estão disponíveis em versões anteriores do Android na Biblioteca de Suporte v7 do Android com as seguintes limitações:
+Os widgets {@link android.support.v7.widget.RecyclerView} e {@link +android.support.v7.widget.CardView} estão disponíveis em versões anteriores do Android na +Biblioteca de Suporte v7 do Android com as seguintes limitações:
-
- {@link android.support.v7.widget.CardView} volta a uma implementação de sombra programática usando preenchimento adicional.
-- {@link android.support.v7.widget.CardView} não recorta as visualizações filhas que cortam as bordas arredondadas.
+- {@link android.support.v7.widget.CardView} volta a uma implementação de sombra programática + usando preenchimento adicional.
+- {@link android.support.v7.widget.CardView} não recorta as visualizações filhas que cortam + as bordas arredondadas.
Dependências
-Para usar esses recursos em versões anteriores ao Android 5.0 (API de nível 21), inclua a Biblioteca de Suporte v7 do Android no projeto como uma dependência de Gradle:
+Para usar esses recursos em versões anteriores ao Android 5.0 (API de nível 21), inclua a +Biblioteca de Suporte v7 do Android no projeto como uma dependência de Gradle:
dependencies { @@ -117,10 +144,12 @@ dependencies {Animações de revelação Animações com base em caminhos Desenháveis de vetor -Tingimento desenhável. +Tingimento desenhável -Para preservar a compatibilidade com versões anteriores do Android, verifique a {@link android.os.Build.VERSION#SDK_INT version} do sistema em execução que chama as APIs para quaisquer destes recursos:
+Para preservar a compatibilidade com versões anteriores do Android, verifique a {@link +android.os.Build.VERSION#SDK_INT version} do sistema em tempo de execução antes de chamar as APIs para quaisquer +destes recursos:
// Check if we're running on Android 5.0 or higher @@ -131,4 +160,9 @@ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { }-Observação: Para especificar quais versões do Android são compatíveis com o seu aplicativo, use os atributos
\ No newline at end of file +android:minSdkVersioneandroid:targetSdkVersionno arquivo de manifesto. Para usar os recursos do Material Design no Android 5.0, defina o atributoandroid:targetSdkVersioncomo21. Para obter mais informações, consulte o guia de API <uses-sdk>.Observação: Para especificar quais versões do Android são compatíveis com o seu aplicativo, +use os atributos
diff --git a/docs/html-intl/intl/pt-br/training/material/drawables.jd b/docs/html-intl/intl/pt-br/training/material/drawables.jd index 190d6bfa2eb85..4eb9f3602037e 100644 --- a/docs/html-intl/intl/pt-br/training/material/drawables.jd +++ b/docs/html-intl/intl/pt-br/training/material/drawables.jd @@ -1,4 +1,4 @@ -page.title=Como trabalhar com desenháveis +page.title=Como trabalhar com desenháveis @jd:body @@ -23,7 +23,7 @@ page.title=Como trabalhar com desenháveisandroid:minSdkVersioneandroid:targetSdkVersion+no arquivo de manifesto. Para usar os recursos do Material Design no Android 5.0, defina o +atributoandroid:targetSdkVersioncomo21. Para obter mais informações, consulte +o guia de API +<uses-sdk>.
- Tingimento desenhável
- Extração de cor proeminente
-- Desenháveis de vetor.
+- Desenháveis de vetor
Esta lição mostra como usar esses recursos no seu aplicativo.
@@ -31,14 +31,22 @@ page.title=Como trabalhar com desenháveisColorir recursos desenháveis
-Com o Android 5.0 (API de nível 21) e posteriores, você pode colorir bitmaps e nine-patches definidos como máscaras alfa. Você pode colori-los com recursos de cor ou atributos de tema que determinam os recursos de cor (por exemplo,
+?android:attr/colorPrimary). Normalmente, você cria esses ativos somente uma vez e colore-os automaticamente para combinar com seu tema.Com o Android 5.0 (API de nível 21) e posteriores, você pode colorir bitmaps e nine-patches definidos como +máscaras alfa. Você pode colori-los com recursos de cor ou atributos de tema que determinam os recursos +de cor (por exemplo,
-?android:attr/colorPrimary). Normalmente, você cria esses ativos +somente uma vez e colore-os automaticamente para combinar com seu tema.Você pode aplicar um tingimento aos objetos {@link android.graphics.drawable.BitmapDrawable} ou {@link android.graphics.drawable.NinePatchDrawable} com o método {@code setTint()}. Você também pode configurar a cor do tingimento e modelar os layouts com os atributos
+android:tinteandroid:tintMode.Você pode aplicar um tingimento aos objetos {@link android.graphics.drawable.BitmapDrawable} ou {@link +android.graphics.drawable.NinePatchDrawable} com o método {@code setTint()}. Você também +pode configurar a cor e o modo do tingimento nos layouts com os atributos
android:tinte +android:tintMode.Extrair cores proeminentes de uma imagem
-A Biblioteca de Suporte r21 do Android e posteriores incluem a classe {@link android.support.v7.graphics.Palette}, que permite a extração de cores proeminentes de uma imagem. Essa classe extrai as seguintes cores proeminentes:
+A Biblioteca de Suporte r21 do Android e posteriores incluem a classe {@link +android.support.v7.graphics.Palette}, que permite a extração de cores proeminentes de uma imagem. +Essa classe extrai as seguintes cores proeminentes:
-
- Vibrante
@@ -49,34 +57,44 @@ page.title=Como trabalhar com desenháveis- Claro suave
Para extrair essas cores, passe um objeto {@link android.graphics.Bitmap} para o método estático {@link android.support.v7.graphics.Palette#generate Palette.generate()} na linha do segundo plano em que você carrega as imagens. Se você não puder usar aquela linha, chame o método {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} e forneça um ouvinte como alternativa.
+Para extrair essas cores, passe um objeto {@link android.graphics.Bitmap} para o método estático +{@link android.support.v7.graphics.Palette#generate Palette.generate()} no encadeamento do segundo +plano em que você carrega as imagens. Se você não puder usar aquele encadeamento, chame o método +{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} e forneça um escutador +como alternativa.
-Você pode recuperar as cores proeminentes da imagem usando métodos de obtenção na classe
+Palette, comoPalette.getVibrantColor.Você pode recuperar as cores proeminentes da imagem usando métodos de obtenção na classe +
-Palette, comoPalette.getVibrantColor.Para usar a classe {@link android.support.v7.graphics.Palette} no projeto, adicione a seguinte dependência do Gradle ao módulo do aplicativo:
+Para usar a classe {@link android.support.v7.graphics.Palette} no projeto, adicione a seguinte +dependência do Gradle ao +módulo do aplicativo:
dependencies { ... - compile 'com.android.support:palette-v7:21.0.+' + compile 'com.android.support:palette-v7:21.0.0' }-Para obter mais informações, consulte a referência de API para a classe {@link android.support.v7.graphics.Palette}.
+Para obter mais informações, consulte a referência de API para a classe {@link android.support.v7.graphics.Palette} +.
Criar desenháveis de vetor
- +-Vídeos
Gráficos de vetor do Android
No Android 5.0 (API de nível 21) e em posteriores, você pode definir desenháveis de vetor que são dimensionáveis sem perder definição. Você precisa somente de um arquivo de ativo para uma imagem de vetor, em vez de um arquivo de ativos para cada densidade de tela no caso de imagens de bitmap. Para criar uma imagem de vetor, defina os detalhes da forma dentro de um elemento XML
+<vector>.No Android 5.0 (API de nível 21) e posteriores, você pode definir desenháveis de vetor que são dimensionáveis +sem perder definição. Você precisa apenas de um arquivo de ativos para uma imagem de vetor, em vez de um arquivo de ativos +para cada densidade de tela no caso de imagens de bitmap. Para criar uma imagem de vetor, defina os detalhes +da forma dentro de um elemento XML
<vector>.O exemplo a seguir define uma imagem de vetor com a forma de um coração:
@@ -102,4 +120,7 @@ href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px"> </vector>
Imagens de vetor são representadas no Android por objetos {@link android.graphics.drawable.VectorDrawable}. Para obter mais informações sobre a sintaxe pathData, consulte a Referência do caminho SVG. Para obter informações sobre animação de propriedades de desenháveis de vetor, consulte Animar desenháveis de vetor.
Imagens de vetor são representadas no Android como objetos {@link android.graphics.drawable.VectorDrawable}
+. Para obter mais informações sobre a sintaxe pathData, consulte a Referência do caminho SVG. Para obter informações sobre
+como animar propriedades de desenháveis de vetor, consulte
+Animar desenháveis de vetor.
Você pode adicionar muitos recursos do Material Design ao aplicativo e, ao mesmo tempo, manter a compatibilidade com versões anteriores ao Android 5.0. Para obter mais informações, consulte Como manter a compatibilidade.
+Você pode adicionar muitos recursos do Material Design ao aplicativo e, ao mesmo tempo, manter +a compatibilidade com versões anteriores ao Android 5.0. Para obter mais informações, consulte +Como manter a compatibilidade.
Para atualizar um aplicativo existente para incorporar o Material Design, atualize os layouts de acordo com as orientações do Material Design. Certifique-se também de incorporar profundidade, feedbacks de toque e animações.
+Para atualizar um aplicativo existente para incorporar o Material Design, atualize os layouts +de acordo com as orientações do Material Design. Certifique-se também de incorporar profundidade, feedbacks de toque e +animações.
Se você está criando um novo aplicativo com recursos do Material Design, as orientações do Material Design fornecem uma estrutura de projeto coesa. Siga tais orientações e use a nova funcionalidade na estrutura do Android para projetar e desenvolver o aplicativo.
+Se você está criando um novo aplicativo com recursos do Material Design, as orientações do Material Design fornecem uma +estrutura de projeto coesa. Siga tais orientações e use a nova funcionalidade na estrutura do Android para +projetar e desenvolver o aplicativo.
Para aplicar o tema do Material no aplicativo, especifique um estilo herdado de android:Theme.Material:
Para aplicar o tema do Material no aplicativo, especifique um estilo herdado de
+android:Theme.Material:
<!-- res/values/styles.xml --> @@ -65,12 +72,16 @@ page.title=Fundamentos </resources>-
O tema do Material fornece widgets do sistema atualizados que permitem definir a paleta de cores e as animações padrão para feedback de toque e transições de atividades. Para obter mais detalhes, consulte Como usar o tema do Material.
+O tema do Material fornece widgets do sistema atualizados que permitem definir a paleta de cores e as animações +padrão para feedback de toque e transições de atividades. Para obter mais detalhes, consulte +Como usar o tema do Material.
Além de aplicar e personalizar o tema do Material, os layouts devem estar em conformidade com as orientações do Material Design. Ao projetar os layouts, dê atenção especial ao seguinte:
+Além de aplicar e personalizar o tema do Material, os layouts devem estar em conformidade +com as orientações do Material Design. Ao projetar os +layouts, dê atenção especial ao seguinte:
As visualizações podem lançar sombras e o valor da elevação delas determina o tamanho da sombra e da ordem dos desenhos. Para definir a elevação de uma visualização, use o atributo android:elevation nos layouts:
As visualizações podem lançar sombras e o valor da elevação delas
+determina o tamanho da sombra e a ordem dos desenhos. Para definir a elevação de uma visualização, use o atributo
+android:elevation nos layouts:
<TextView
@@ -95,14 +108,22 @@ page.title=Fundamentos
android:elevation="5dp" />
-A nova propriedade translationZ permite a criação de animações que refletem mudanças temporárias na elevação de uma visualização. As mudanças de elevação podem ser úteis ao responder a gestos de toque.
A nova propriedade translationZ permite a criação de animações que refletem mudanças
+temporárias na elevação de uma visualização. As mudanças de elevação podem ser úteis ao
+responder a gestos
+de toque.
Para obter mais detalhes, consulte Como definir sombras e recortar visualizações.
+Para obter mais detalhes, consulte Como definir +sombras e recortar visualizações.
{@link android.support.v7.widget.RecyclerView} é uma versão mais completa de {@link android.widget.ListView} compatível com diferentes tipos de layout e que fornece melhor desempenho. {@link android.support.v7.widget.CardView} permite a exibição de informações dentro dos cartões com uma aparência consistente nos aplicativos. O exemplo de código a seguir mostra como incluir um {@link android.support.v7.widget.CardView} no layout:
+{@link android.support.v7.widget.RecyclerView} é uma versão mais completa de {@link +android.widget.ListView} compatível com diferentes tipos de layout e que fornece melhor desempenho. +{@link android.support.v7.widget.CardView} permite a exibição de informações dentro dos cartões com uma +aparência consistente nos aplicativos. O exemplo de código a seguir mostra como incluir um +{@link android.support.v7.widget.CardView} no layout:
<android.support.v7.widget.CardView @@ -114,12 +135,15 @@ page.title=Fundamentos </android.support.v7.widget.CardView>-
Para obter mais informações, consulte Como criar listas e cartões.
+Para obter mais informações, consulte Como criar +listas e cartões.
O Android 5.0 (API de nível 21) inclui novas APIs para criar animações personalizadas no aplicativo. Por exemplo, você pode habilitar transições de atividades e definir uma transição de saída dentro de uma atividade:
+O Android 5.0 (API de nível 21) inclui novas APIs para criar animações personalizadas no aplicativo. +Por exemplo, você pode habilitar transições de atividades e definir uma transição de saída dentro +de uma atividade:
public class MyActivity extends Activity {
@@ -144,4 +168,4 @@ public class MyActivity extends Activity {
Ao iniciar outra atividade a partir desta, a transição de saída é ativada.
-Para saber mais sobre as novas APIs de animação, consulte Como definir animações personalizadas.
\ No newline at end of file
+Para saber mais sobre as novas APIs de animação, consulte Como definir animações personalizadas.
diff --git a/docs/html-intl/intl/pt-br/training/material/index.jd b/docs/html-intl/intl/pt-br/training/material/index.jd
index f51fd71377ca6..76580c83005c4 100644
--- a/docs/html-intl/intl/pt-br/training/material/index.jd
+++ b/docs/html-intl/intl/pt-br/training/material/index.jd
@@ -1,7 +1,8 @@
-page.title=Como criar aplicativos com o Material Design
+page.title=Material Design para desenvolvedores
page.type=design
-page.image=images/material.png
-page.metaDescription=Saiba como aplicar o Material Design aos seus aplicativos.
+page.image=images/cards/material_2x.png
+page.metaDescription=Saiba como aplicar o Material Design em seus aplicativos.
+
@jd:body
@@ -10,12 +11,16 @@ page.metaDescription=Saiba como aplicar o Material Design aos seus aplicativos.
Dependências e pré-requisitos
O Material Design é um guia abrangente para design visual, de movimento e de interação para diversas plataformas e dispositivos. Para usar o Material Design nos aplicativos Android, siga as orientações descritas nas especificações do Material Design e use os novos componentes e funcionalidades disponíveis no Android 5.0 (API de nível 21).
+O Material Design é um guia abrangente para design visual, de movimento e de interação para +diversas plataformas e dispositivos. Para usar o Material Design nos aplicativos Android, siga as orientações +descritas nas +especificações do +Material Design e use os novos componentes e funcionalidades disponíveis no Android 5.0 +(API de nível 21).
Essa lição mostra como criar aplicativos do Material Design com os seguintes elementos:
@@ -27,7 +32,8 @@ page.metaDescription=Saiba como aplicar o Material Design aos seus aplicativos.Essa lição também ensina a manter a compatibilidade com versões anteriores ao Android 5.0 (API de nível 21) ao usar recursos do Material Design no aplicativo.
+Esta lição também ensina a manter a compatibilidade com versões anteriores ao Android +5.0 (API de nível 21) ao usar recursos do Material Design no aplicativo.
Para criar listas e cartões complexos com estilos do Material Design no seu aplicativo, você pode usar os widgets {@link android.support.v7.widget.RecyclerView} e {@link android.support.v7.widget.CardView}.
+Para criar listas e cartões complexos com estilos do Material Design no seu aplicativo, você pode usar os widgets +{@link android.support.v7.widget.RecyclerView} e {@link android.support.v7.widget.CardView} +.
O widget {@link android.support.v7.widget.RecyclerView} é uma versão mais avançada e flexível do {@link android.widget.ListView}. Essa widget é um contêiner para exibir grandes conjuntos de dados que podem ser rolados com muita eficiência ao manter um número limitado de visualizações. Use o widget {@link android.support.v7.widget.RecyclerView} quando tiver coletas de dados cujos elementos mudam durante a execução baseados na ação do usuário ou em eventos de rede.
+O widget {@link android.support.v7.widget.RecyclerView} é uma versão mais avançada e flexível +do {@link android.widget.ListView}. Esse widget é um contêiner para exibir grandes conjuntos +de dados que podem ser rolados com muita eficiência ao manter um número limitado de visualizações. Use o widget +{@link android.support.v7.widget.RecyclerView} quando tiver coletas de dados cujos elementos mudam +durante a execução baseados na ação do usuário ou em eventos de rede.
-A classe {@link android.support.v7.widget.RecyclerView} simplifica a exibição e o tratamento de grandes conjuntos de dados oferecendo:
+A classe {@link android.support.v7.widget.RecyclerView} simplifica a exibição e o tratamento de +grandes conjuntos de dados oferecendo:
Você também tem a flexibilidade de definir gerenciadores de layout e animações personalizadas para widgets {@link android.support.v7.widget.RecyclerView}.
+Você também tem a flexibilidade de definir gerenciadores de layout e animações personalizadas para widgets {@link +android.support.v7.widget.RecyclerView}.
Figura 1. O widget RecyclerView.
Para usar o widget {@link android.support.v7.widget.RecyclerView}, você deve especificar um adaptador e um gerenciador de layout. Para criar um adaptador, amplie a classe {@link android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Os detalhes da implementação dependem das especificações do conjunto de dados e do tipo de visualizações. Para obter mais informações, veja os exemplos abaixo.
+Para usar o widget {@link android.support.v7.widget.RecyclerView}, você deve especificar um +adaptador e um gerenciador de layout. Para criar um adaptador, amplie a classe {@link +android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Os detalhes +da implementação dependem das especificações do conjunto de dados e do tipo de visualização. Para obter +mais informações, veja os exemplos abaixo.
@@ -49,25 +61,37 @@ page.title=Como criar listas e cartões
Um gerenciador de layout posiciona as visualizações de item dentro de um {@link android.support.v7.widget.RecyclerView} e determina quando reutilizar visualizações de item que não estão mais visíveis ao usuário. Para reutilizar (ou reciclar) uma visualização, o gerenciador de layout pode solicitar ao adaptador a substituição do conteúdo da visualização com um elemento diferente do conjunto de dados. Visualizações recicladas dessa maneira aprimoram o desempenho ao evitar a criação de visualizações desnecessárias ou a realização de pesquisas {@link android.app.Activity#findViewById findViewById()} dispendiosas.
+Um gerenciador de layout posiciona as visualizações de item dentro de um {@link +android.support.v7.widget.RecyclerView} e determina quando reutilizar visualizações de item que não +estão mais visíveis ao usuário. Para reutilizar (ou reciclar) uma visualização, um gerenciador de layout pode solicitar +ao adaptador a substituição do conteúdo da visualização com um elemento diferente do conjunto de dados. Visualizações +recicladas dessa maneira aprimoram o desempenho ao evitar a criação de visualizações desnecessárias ou a +realização de pesquisas {@link android.app.Activity#findViewById findViewById()} caras.
{@link android.support.v7.widget.RecyclerView} fornece esses gerenciadores de layout embutidos:
Para criar um gerenciador de layout personalizado, amplie a classe {@link android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.
+Para criar um gerenciador de layout personalizado, amplie a classe {@link +android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.
As animações para a adição e remoção de itens são habilitadas, por padrão, em {@link android.support.v7.widget.RecyclerView}. Para personalizá-las, amplie a classe {@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} e use o método {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}.
+As animações para a adição e a remoção de itens são habilitadas, por padrão, em {@link +android.support.v7.widget.RecyclerView}. Para personalizá-las, amplie a classe +{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} e use o +método {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} +.
O exemplo de código a seguir demonstra como adicionar o {@link android.support.v7.widget.RecyclerView} a um layout:
+O exemplo de código a seguir demonstra como adicionar o +{@link android.support.v7.widget.RecyclerView} a um layout:
<!-- A RecyclerView with some commonly used attributes -->
@@ -78,7 +102,9 @@ page.title=Como criar listas e cartões
android:layout_height="match_parent"/>
-Ao adicionar um widget {@link android.support.v7.widget.RecyclerView} ao seu layout, obtenha um identificador para o objeto, conecte-o em um gerenciador de layout e anexe um adaptador aos dados que serão exibidos:
+Depois de adicionar um widget {@link android.support.v7.widget.RecyclerView} ao seu layout, +obtenha um identificador para o objeto, conecte-o a um gerenciador de layout e anexe um adaptador para que os +dados sejam exibidos:
public class MyActivity extends Activity {
@@ -108,7 +134,10 @@ public class MyActivity extends Activity {
}
-O adaptador dá acesso aos itens no conjunto de dados, cria visualizações para os itens e substitui o conteúdo de algumas das visualizações por novos itens de dados quando o item original não está mais visível. O exemplo de código a seguir mostra uma implementação simples para um conjunto de dados que consiste em uma matriz de strings exibidas usando widgets {@link android.widget.TextView}:
+O adaptador dá acesso aos itens no conjunto de dados, cria visualizações para os itens e +substitui o conteúdo de algumas das visualizações por novos itens de dados quando o item original não está +mais visível. O exemplo de código a seguir mostra uma implementação simples para um conjunto de dados +que consiste em uma matriz de strings exibidas usando widgets {@link android.widget.TextView}:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@@ -171,19 +200,29 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
Criar cartões
-{@link android.support.v7.widget.CardView} amplia a classe {@link android.widget.FrameLayout} e permite que você exiba informações dentro dos cartões, que têm uma aparência consistente nas diversas plataformas. Os widgets {@link android.support.v7.widget.CardView} podem ter sombras e bordas arredondadas.
+{@link android.support.v7.widget.CardView} amplia a classe {@link android.widget.FrameLayout} e
+permite que você exiba informações dentro dos cartões que têm uma aparência consistente em toda a plataforma. Os widgets {@link
+android.support.v7.widget.CardView} podem ter sombras e bordas arredondadas.
-Para criar um cartão com sombra, use o atributo card_view:cardElevation. {@link android.support.v7.widget.CardView} usa elevação real e sombras dinâmicas no Android 5.0 (API de nível 21) e em posteriores e volta para uma implementação de sombra programática em versões anteriores. Para obter mais informações, consulte Como manter a compatibilidade.
+Para criar um cartão com sombra, use o atributo card_view:cardElevation.
+{@link android.support.v7.widget.CardView} usa elevação real e sombras dinâmicas no Android 5.0
+(API de nível 21) e posteriores e volta para uma implementação de sombra programática em versões anteriores.
+Para obter mais informações, consulte Como manter
+a compatibilidade.
-Use essas propriedades para personalizar a aparência do widget {@link android.support.v7.widget.CardView}:
+Use estas propriedades para personalizar a aparência do widget
+{@link android.support.v7.widget.CardView}:
card_view:cardCornerRadius.card_view:cardCornerRadius
+.CardView.setRadius.card_view:cardBackgroundColor.card_view:cardBackgroundColor
+.O exemplo de código a seguir mostra como incluir um widget {@link android.support.v7.widget.CardView} no layout:
+O exemplo de código a seguir mostra como incluir um widget {@link android.support.v7.widget.CardView} +no layout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -212,7 +251,11 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
Adicionar dependências
-Os widgets {@link android.support.v7.widget.RecyclerView} e {@link android.support.v7.widget.CardView} são parte da Biblioteca de Suporte v7. Para usar esses widgets no projeto, adicione essas dependências do Gradle ao módulo do aplicativo:
+Os widgets {@link android.support.v7.widget.RecyclerView} e {@link android.support.v7.widget.CardView}
+são parte da Biblioteca de
+Suporte v7. Para usar esses widgets no projeto, adicione estas
+dependências do Gradle ao módulo
+do aplicativo:
dependencies {
@@ -220,4 +263,4 @@ dependencies {
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
}
-
\ No newline at end of file
+
diff --git a/docs/html-intl/intl/pt-br/training/material/shadows-clipping.jd b/docs/html-intl/intl/pt-br/training/material/shadows-clipping.jd
index 9cdb89469d622..4c4f1549f0193 100644
--- a/docs/html-intl/intl/pt-br/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/pt-br/training/material/shadows-clipping.jd
@@ -1,4 +1,4 @@
-page.title=Como definir sombras e recortar visualizações
+page.title=Como definir sombras e recortar visualizações
@jd:body
@@ -18,20 +18,29 @@ page.title=Como definir sombras e recortar visualizações
-O Material Design introduz a elevação em elementos da IU. A elevação ajuda os usuários a entender a importância relativa de cada elemento e concentra a atenção deles nas tarefas à mão.
+O Material Design introduz a elevação em elementos da interface do usuário. A elevação ajuda os usuários a entender +a importância relativa de cada elemento e concentrar a atenção deles nas tarefas à mão.
-A elevação de uma visualização, representada pela propriedade Z, determina a aparência visual das sombras: visualizações com valores de Z mais altos lançam sombras maiores e mais suaves. Visualizações com valores de Z mais altos ocultam visualizações com valores de Z mais baixos, contudo, o valor de Z de uma visualização não afeta o tamanho dela.
+A elevação de uma visualização, representada pela propriedade Z, determina a aparência visual das +sombras: visualizações com valores de Z mais altos lançam sombras maiores e mais suaves. Visualizações com valores de Z mais altos ocultam +visualizações com valores de Z mais baixos, mas o valor de Z de uma visualização não afeta o tamanho dela.
-As sombras são desenhadas pelo parente da visualização elevada e, por isso, estão sujeitas a recortes padrão de visualização, recortadas pelo parente por padrão.
+As sombras são desenhadas pelo pai da visualização elevada e, por isso, estão sujeitas a recortes padrão de +visualização, recortadas pelo pai por padrão.
-A elevação também é útil para criar animações em que os widgets se elevam temporariamente sobre o plano da visualização ao realizar alguma ação.
+A elevação também é útil para criar animações em que os widgets se elevam temporariamente +sobre o plano de visualização ao realizar alguma ação.
-Para obter mais informações sobre elevação no Material Design, consulte Objetos em espaço 3D.
+Para obter mais informações sobre elevação no Material Design, consulte +Objetos +no espaço 3D.
O valor de Z para uma visualização tem dois componentes:
O valor de Z para uma visualização tem dois componentes: + +
Figura 1 - sombras para diferentes elevações de visualização.
-Para definir a elevação de uma visualização em uma definição de layout, use o atributo android:elevation. Para definir a elevação de uma visualização no código de uma atividade, use o método {@link android.view.View#setElevation View.setElevation()}.
Para definir a elevação de uma visualização em uma definição de layout, use o atributo android:elevation
+. Para definir a elevação de uma visualização no código de uma atividade, use o método
+{@link android.view.View#setElevation View.setElevation()}.
Para definir a movimentação de uma visualização, use o método {@link android.view.View#setTranslationZ View.setTranslationZ()}.
+Para definir a conversão de uma visualização, use o método {@link android.view.View#setTranslationZ +View.setTranslationZ()}.
-Os novos métodos {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} e {@link android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} permitem animar facilmente a elevação de visualizações. Para obter mais informações, consulte a referência de API para {@link android.view.ViewPropertyAnimator} e o guia do desenvolvedor Animação de propriedade.
+Os novos métodos {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} e {@link +android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} permitem +animar facilmente a elevação de visualizações. Para obter mais informações, consulte a referência de API para +{@link android.view.ViewPropertyAnimator} e o guia do desenvolvedor Animação de +propriedade.
-Você também pode usar um {@link android.animation.StateListAnimator} para especificar essas animações de um modo declarativo, o que é especialmente útil para casos em que o estado muda as animações de acionamento, como quando um usuário pressiona um botão. Para obter mais informações, consulte Mudanças de estado de visualização da animação.
+Você também pode usar um {@link android.animation.StateListAnimator} para +especificar essas animações de um modo declarativo, o que é especialmente útil para casos em que o estado muda +as animações de acionamento, como quando um usuário pressiona um botão. Para obter mais informações, consulte +Mudanças de estado de visualização da animação.
Os valores de Z são medidos em dp (pixels independentes de densidade).
Os limites de um desenhável do plano de fundo da visualização determinam a forma padrão da sombra. Contornos representam a forma externa de um objeto gráfico e definem a área de ondulação para o feedback de toque.
+Os limites de um desenhável do segundo plano da visualização determinam a forma padrão da sombra. +Contornos representam a forma externa de um objeto gráfico e definem a área +de ondulação para o feedback de toque.
-Analise esta visualização, definida com um desenhável de plano de fundo:
+Analise esta visualização, definida com um desenhável de segundo plano:
<TextView
@@ -66,7 +87,7 @@ page.title=Como definir sombras e recortar visualizações
android:background="@drawable/myrect" />
-O desenhável do plano de fundo é definido como um retângulo com bordas arredondadas:
+O desenhável do segundo plano é definido como um retângulo com bordas arredondadas:
<!-- res/drawable/myrect.xml --> @@ -77,23 +98,36 @@ page.title=Como definir sombras e recortar visualizações </shape>-
A visualização lança uma sombra com bordas arredondadas, uma vez que o desenhável de plano de fundo define o contorno da visualização. Fornecer um contorno personalizado neutraliza a forma padrão de uma sombra da visualização.
+A visualização lança uma sombra com bordas arredondadas, uma vez que o desenhável de segundo plano +define o contorno da visualização. Fornecer um contorno personalizado neutraliza a forma padrão de uma sombra da visualização.
Para definir um contorno personalizado para uma visualização no seu código:
Você pode criar contornos ovais e retangulares com bordas arredondadas usando os métodos na classe {@link android.graphics.Outline}. O fornecedor de contorno padrão para visualizações obtém o contorno a partir do plano de fundo da visualização. Para evitar que uma visualização lance uma sombra, defina o fornecedor de contorno dela como null.
Você pode criar contornos ovais e retangulares com bordas arredondadas usando os métodos na classe
+{@link android.graphics.Outline}. O fornecedor de contorno padrão para visualizações obtém o contorno
+do segundo plano da visualização. Para evitar que uma visualização lance uma sombra, defina o fornecedor de contorno
+dela como null.
Recortar visualizações permite mudar facilmente a forma de uma visualização. Você pode recortar visualizações para obter consistência com outros elementos de design ou para mudar a forma de uma visualização em resposta à interação do usuário. Você pode recortar uma visualização na área do contorno usando o método {@link android.view.View#setClipToOutline View.setClipToOutline()} ou o atributo android:clipToOutline. Somente contornos retangulares, circulares e retangulares redondos são compatíveis com recorte, conforme determinado pelo método {@link android.graphics.Outline#canClip Outline.canClip()}.
Recortar visualizações permite mudar facilmente a forma de uma visualização. Você pode recortar visualizações
+para obter consistência com outros elementos de design ou para mudar a forma de uma visualização em resposta à interação do usuário.
+É possível recortar uma visualização na área do contorno usando o método {@link android.view.View#setClipToOutline
+View.setClipToOutline()} ou o atributo android:clipToOutline. Somente
+contornos retangulares, circulares e retangulares redondos são compatíveis com recorte, conforme determinado pelo método
+{@link android.graphics.Outline#canClip Outline.canClip()}.
Para recortar uma visualização na forma de um desenhável, defina o desenhável como o plano de fundo da visualização (conforme exibido acima) e chame o método {@link android.view.View#setClipToOutline View.setClipToOutline()}.
+Para recortar uma visualização na forma de um desenhável, defina o desenhável como o segundo plano da visualização +(conforme exibido acima) e chame o método {@link android.view.View#setClipToOutline View.setClipToOutline()} +.
-O recorte de visualizações é uma operação dispendiosa, por isso, não anime a forma que você usa para recortar uma visualização. Para atingir esse efeito, use a animação de Efeito de Revelação.
\ No newline at end of file +O recorte de visualizações é uma operação cara, por isso, não anime a forma que você +usa para recortar uma visualização. Para atingir esse efeito, use a animação Efeito de Revelação.
diff --git a/docs/html-intl/intl/pt-br/training/material/theme.jd b/docs/html-intl/intl/pt-br/training/material/theme.jd index 21ba759b932a7..df0e1ce661e0e 100644 --- a/docs/html-intl/intl/pt-br/training/material/theme.jd +++ b/docs/html-intl/intl/pt-br/training/material/theme.jd @@ -1,4 +1,4 @@ -page.title=Como usar o tema do Material +page.title=Como usar o tema do Material @jd:body @@ -27,9 +27,12 @@ page.title=Como usar o tema do MaterialÉ possível personalizar a aparência do tema do Material com uma paleta de cores que você controla, de acordo com a identidade da sua marca. Você pode atribuir cor à barra de ações e à barra de status usando atributos de tema, conforme exibido na Figura 3.
+É possível personalizar a aparência do tema do Material com +uma paleta de cores que você controla, de acordo com a identidade da sua marca. Você pode atribuir cor à barra de ações e +à barra de status usando atributos de tema, conforme exibido na Figura 3.
-Os widgets de sistema têm um novo design e animações de feedback de toque. Você pode personalizar a paleta de cores, as animações de feedback de toque e as transições de atividades do aplicativo.
+Os widgets de sistema têm um novo design e animações de feedback de toque. Você pode personalizar a +paleta de cores, as animações de feedback de toque e as transições de atividades do aplicativo.
O tema do Material é definido como:
@@ -39,7 +42,8 @@ page.title=Como usar o tema do Material@android:style/Theme.Material.Light.DarkActionBarPara obter uma lista de estilos do Material que podem ser usados, consulte a referência de API para {@link android.R.style R.style}.
+Para obter uma lista de estilos do Material que podem ser usados, consulte a referência de API para +{@link android.R.style R.style}.
-Observação: O tema do Material só está disponível no Android 5.0 (API de nível 21) e em posteriores. A Biblioteca de Suporte v7 fornece temas com estilos do Material Design para alguns widgets e compatibilidade com a personalização da paleta de cores. Para obter mais informações, consulte Como manter a compatibilidade. +Observação: o tema do Material só está disponível no Android 5.0 (API de nível 21) e +posteriores. A Biblioteca de Suporte v7 +fornece temas com estilos do Material Design para alguns widgets e compatibilidade com a personalização da +paleta de cores. Para obter mais informações, consulte +Como manter a compatibilidade.
Para personalizar as cores de base do tema para adequá-lo a sua marca, defina as cores personalizadas usando os atributos de tema ao herdar do tema do Material:
+Para personalizar as cores de base do tema para adequá-lo à sua marca, defina +as cores personalizadas usando os atributos de tema ao herdar do tema do Material:
<resources> @@ -91,17 +100,32 @@ page.title=Como usar o tema do MaterialPersonalizar a barra de status
-O tema do Material permite a fácil personalização da barra de status, para você poder especificar uma cor adequada a sua marca, e fornece contraste suficiente para exibir os ícones de status brancos. Para definir uma cor personalizada para a barra de status, use o atributo
+android:statusBarColorao ampliar o tema do Material. Por padrão,android:statusBarColorherda o valor deandroid:colorPrimaryDark.O tema do Material permite a fácil personalização da barra de status, para você poder +especificar uma cor adequada à sua marca, e fornece contraste suficiente para exibir os ícones de status brancos. Para +definir uma cor personalizada para a barra de status, use o atributo
-android:statusBarColorao +ampliar o tema do Material. Por padrão,android:statusBarColorherda o +valor deandroid:colorPrimaryDark.Você também pode personalizar a parte de trás da barra de status. Por exemplo, se você quiser mostrar uma barra de status transparente sobre uma foto, com um degradê escuro sutil, para garantir que os ícones de status brancos sejam visíveis, defina o atributo
+android:statusBarColorcomo@android:color/transparente ajuste os marcadores de janela conforme o necessário. Você também pode usar o método {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} para animações ou esmaecimento.Você também pode personalizar a parte de trás da barra de status. Por exemplo, se você quiser mostrar +uma barra de status transparente sobre uma foto, com um degradê escuro sutil, para garantir que os ícones de status +brancos sejam visíveis, defina o atributo
android:statusBarColorcomo +@android:color/transparente ajuste os marcadores de janela conforme necessário. Você também +pode usar o método {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} para +animações ou esmaecimento.-Observação: A barra de status deve ter, quase sempre, um traçado distante da barra de ferramentas principal, exceto em casos em que haja imagens ricas de ponta a ponta, conteúdo de mídia por trás dessas barras e quando se usa degradê, para garantir que os ícones continuem visíveis. +Observação: a barra de status deve ter, quase sempre, um traçado distante da barra de ferramentas +principal, exceto em casos em que haja imagens ricas de ponta a ponta, conteúdo de mídia por trás +dessas barras e quando se usa degradê, para garantir que os ícones continuem visíveis.
-Ao personalizar as barras de navegação e de status, deixe-as transparentes ou modifique somente a barra de status. A barra de navegação deve permanecer preta em todos os outros casos.
+Ao personalizar as barras de navegação e de status, deixe-as transparentes ou modifique +somente a barra de status. A barra de navegação deve permanecer preta em todos os outros casos.
Atribuir tema a visualizações individuais -
Elementos nas definições do layout XML podem especificar o atributo
\ No newline at end of file +android:theme, que referencia um recurso do tema. Essa atributo modifica o tema do elemento e quaisquer elementos-filho, o que é útil para alterar as paletas de cores do tema em uma parte específica da interface.Elementos nas definições do layout XML podem especificar o atributo
diff --git a/docs/html-intl/intl/ru/design/material/index.jd b/docs/html-intl/intl/ru/design/material/index.jd index 224dde0df6ac5..d1f7de2e688bb 100644 --- a/docs/html-intl/intl/ru/design/material/index.jd +++ b/docs/html-intl/intl/ru/design/material/index.jd @@ -1,7 +1,6 @@ -page.title=Material Design -page.tags=Material Design -page.type=design -page.image=design/material/images/MaterialLight.png +page.title=Material Design для Android +page.tags=Material,design +page.image=images/cards/design-material-for-android_2x.jpg @jd:body @@ -92,7 +91,7 @@ Material Design.android:theme, +que referencia um recurso do tema. Esse atributo modifica o tema do elemento e quaisquer +elementos-filho, o que é útil para alterar as paletas de cores do tema em uma parte específica +de uma interface.-
Виджет
RecyclerViewПредставляет собой более гибкую версиюListView, +Виджет
RecyclerViewпредставляет собой более гибкую версиюListView, которая поддерживает различные типы макетов и способствует повышению производительности.@@ -137,9 +136,9 @@ Z. Это новое свойство показывает, насколько-Анимация
Новые API-интерфейсы анимации позволяют создавать нестандартную анимацию для реакции на касание в элементах пользовательского интерфейса, -изменения состояниия представления и переходов между действиями.
+изменения состояния представления и переходов между действиями. -Эти API-интерфейсы позволяют
+Эти API-интерфейсы позволяют:
-
- @@ -149,7 +148,7 @@ Z. Это новое свойство показывает, насколько скрывать и отображать представление с помощью анимации для кругового появления;
- -переключаться меду действиями с помощью настраиваемой анимации для переходов между действиями; +переключаться между действиями с помощью настраиваемой анимации для переходов между действиями;
- создавать более естественное движение с помощью анимации для перемещения по кривой; @@ -158,14 +157,14 @@ Z. Это новое свойство показывает, насколько анимировать изменение одного или нескольких свойств представления с помощью анимации для изменения состояния представления;
- -отображать анимацию в графических элементах списков состояний в помежутке между изменением состояний представления. +отображать анимацию в графических элементах списков состояний в промежутке между изменением состояний представления.
Анимация для реакции на касание встроена а некоторые стандартные представления, например, кнопки. Новые API-интерфейсы +
Анимация для реакции на касание встроена в некоторые стандартные представления, например кнопки. Новые API-интерфейсы позволяют разработчику настраивать эти анимации и добавлять их в свои нестандартные представления.
-Дополнительные сведения, см. в разделе Определение настраиваемой +
Дополнительные сведения см. в разделе Определение настраиваемой анимации.
@@ -182,5 +181,5 @@ Z. Это новое свойство показывает, насколько растровых изображений. -Дополнительные сведения см. в разделе Работа с +
Дополнительные сведения см. в разделе Работа с элементами дизайна.
diff --git a/docs/html-intl/intl/ru/training/material/animations.jd b/docs/html-intl/intl/ru/training/material/animations.jd index 3068c71cda651..9808a9fc7af1c 100644 --- a/docs/html-intl/intl/ru/training/material/animations.jd +++ b/docs/html-intl/intl/ru/training/material/animations.jd @@ -21,7 +21,10 @@ page.title=Определение настраиваемой анимацииБлагодаря анимации в Material Design пользователи получают реакцию на выполняемые действия. Кроме того, анимация обеспечивает визуальную связанность при взаимодействии с приложением. Тема Material Design содержит ряд анимаций по умолчанию для кнопок и переходов, а в Android 5.0 (уровень API 21) и более поздних версиях можно настраивать эти анимации и создавать новые:
+Благодаря анимациям в Material Design пользователи получают отклик на выполняемые +действия. Кроме того, анимации обеспечивают зрительную связь при взаимодействии с приложением. Тема Material Design содержит ряд анимаций +по умолчанию для кнопок и переходов, а в Android 5.0 (уровень API 21) и более поздних версиях можно настраивать эти анимации +и создавать новые:
- реакция на касание;
@@ -34,30 +37,44 @@ page.title=Определение настраиваемой анимацииНастройка реакции на касание
-Реакция на касание в Material Design обеспечивает моментальное визуальное подтверждение взаимодействия пользователя с элементами интерфейса в точке касания. В анимации по умолчанию для реакции на нажатие кнопок используется новый класс {@link android.graphics.drawable.RippleDrawable}, обеспечивающий переход между разными состояниями с созданием эффекта ряби.
+Реакция на касание в Material Design обеспечивает моментальное визуальное подтверждение взаимодействия пользователя с элементами интерфейса в точке касания. + В стандартной анимации +для реакции на нажатие кнопок используется новый класс {@link android.graphics.drawable.RippleDrawable}, обеспечивающий переход между разными состояниями с созданием эффекта ряби. +
-В большинстве случаев эту возможность следует применять в XML-файле представления, указав фон представления следующим образом:
+В большинстве случаев эту возможность следует применять в XML-файле представления, указав фон представления следующим образом: +
-
- -
?android:attr/selectableItemBackgroundдля ограниченной области ряби;- +
?android:attr/selectableItemBackgroundBorderlessдля ряби, распространяемой за границы представления.?android:attr/selectableItemBackgroundBorderlessдля ряби, распространяемой за границы представления. + При отрисовке она будет ограничиваться ближайшим родительским элементом представления со значением фона, отличным от null. +Примечание.
+selectableItemBackgroundBorderless– это новый атрибут, представленный в уровне API 21.Примечание.
-selectableItemBackgroundBorderless— это новый атрибут, представленный в уровне API 21. +Также можно определить {@link android.graphics.drawable.RippleDrawable} в качестве XML-ресурса с помощью элемента
+ripple.Также можно определить {@link android.graphics.drawable.RippleDrawable} + в качестве XML-ресурса с помощью элемента
-ripple.Можно назначить цвет для объектов {@link android.graphics.drawable.RippleDrawable}. Чтобы изменить цвет реакции на касание, который используется по умолчанию, воспользуйтесь атрибутом темы
+android:colorControlHighlight.Можно назначить цвет для объектов {@link android.graphics.drawable.RippleDrawable}. Чтобы +изменить стандартный цвет отклика на касание, воспользуйтесь атрибутом темы
-android:colorControlHighlight+.Дополнительные сведения представлены в справке по API для класса {@link android.graphics.drawable.RippleDrawable}.
+Дополнительные сведения представлены в справке по API для класса {@link +android.graphics.drawable.RippleDrawable}.
Применение эффекта появления
-Анимация эффекта появления обеспечивает визуальную связанность в действиях пользователя, когда отображается или скрывается группа элементов интерфейса. С помощью метода {@link android.view.ViewAnimationUtils#createCircularReveal ViewAnimationUtils.createCircularReveal()} можно анимировать ограничивающий круг для скрытия или отображения представления.
+Анимация эффекта появления обеспечивает зрительную связь с действиями пользователя, когда отображается или скрывается группа элементов интерфейса. + С помощью метода {@link android.view.ViewAnimationUtils#createCircularReveal +ViewAnimationUtils.createCircularReveal()} можно анимировать ограничивающий круг, чтобы отобразить или скрыть с экрана представление. +
-Отображение ранее скрытого представления с помощью этого эффекта:
+Как отобразить ранее скрытое представление с помощью этого эффекта:
// previously invisible view @@ -79,7 +96,7 @@ myView.setVisibility(View.VISIBLE); anim.start();-Скрытие ранее отображавшегося представления с помощью этого эффекта:
+Как скрыть ранее отображавшееся представление с помощью этого эффекта:
// previously visible view @@ -122,50 +139,65 @@ anim.start();--Рисунок 1. Переход с общими элементами.
- Чтобы заново воспроизвести ролик, коснитесь экрана мобильного устройства +Рисунок 1. Переход с общими элементами. +
+ Для воспроизведения фильма нажмите экран устройстваПереходы в приложениях Material Design обеспечивают визуальные связи между различными состояниями путем движения элементов и преобразований между общими элементами. Можно выбрать настраиваемые анимации для начальных и конечных переходов, а также для переходов общих элементов между операциями.
+Переходы в приложениях Material Design обеспечивают зрительные связи между различными состояниями путем движения элементов и преобразований между общими элементами. + Можно выбрать настраиваемые анимации для начальных и конечных переходов, а также для переходов общих элементов между операциями. +
В Android 5.0 (уровень API 21) поддерживаются следующие начальные и конечные переходы:
Любой переход, являющийся расширением класса {@link android.transition.Visibility}, поддерживается как начальный или конечный переход. Дополнительные сведения представлены в справке по API для класса {@link android.transition.Transition}.
+Любой переход, являющийся наследованием класса {@link android.transition.Visibility}, поддерживается как начальный или конечный переход. + Дополнительные сведения представлены в справке по API для класса +{@link android.transition.Transition}.
В Android 5.0 (уровень API 21) также поддерживаются следующие переходы общих элементов:
Если активировать переходы в приложении, то между начальной и конечной операциями активируется переход «Угасание», используемый по умолчанию.
+Если активировать переходы в приложении, то между начальной и конечной операциями активируется стандартный переход методом плавной замены. +
Рисунок 2. Переход с одним общим элементом.
-Сначала необходимо активировать переходы содержимого окна с помощью атрибута android:windowContentTransitions при определении стиля, наследуемого из темы Material Design. В определении стиля можно указать начальный и конечный переходы, а также переходы общих элементов:
Сначала необходимо активировать переходы содержимого окна с помощью атрибута android:windowContentTransitions
+при определении стиля, наследуемого из темы Material Design. В определении стиля можно указать начальный и конечный переходы, а также переходы общих элементов:
+
<style name="BaseAppTheme" parent="android:Theme.Material"> @@ -194,9 +226,12 @@ anim.start(); </transitionSet>-
Элемент changeImageTransform соответствует классу {@link android.transition.ChangeImageTransform}. Дополнительные сведения представлены в справке по API для {@link android.transition.Transition}.
Элемент changeImageTransform соответствует классу
+{@link android.transition.ChangeImageTransform}. Дополнительные сведения представлены в справке по API для {@link android.transition.Transition}.
+
Чтобы активировать в своем коде переходы содержимого окна, вызовите метод {@link android.view.Window#requestFeature Window.requestFeature()}:
+Чтобы активировать в своем коде переходы содержимого окна, вызовите метод +{@link android.view.Window#requestFeature Window.requestFeature()}:
// inside your activity (if you did not enable transitions in your theme) @@ -206,31 +241,45 @@ getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); getWindow().setExitTransition(new Explode());-
Чтобы задать переходы в своем коде, вызовите следующие методы с использованием объекта {@link android.transition.Transition}:
+Чтобы задать переходы в своем коде, вызовите следующие методы с использованием объекта {@link +android.transition.Transition}:
Методы {@link android.view.Window#setExitTransition setExitTransition()} и {@link android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} задают конечный переход для вызывающей операции. Методы {@link android.view.Window#setEnterTransition setEnterTransition()} и {@link android.view.Window#setSharedElementEnterTransition setSharedElementEnterTransition()} задают начальный переход для вызываемой операции.
+Методы {@link android.view.Window#setExitTransition setExitTransition()} и {@link +android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} задают конечный переход для вызывающей операции. + Методы {@link android.view.Window#setEnterTransition +setEnterTransition()} и {@link android.view.Window#setSharedElementEnterTransition +setSharedElementEnterTransition()} задают начальный переход для вызываемой операции.
-Чтобы в полной мере использовать переход, необходимо активировать переходы содержимого окна как в вызывающей, так и в вызываемой операции. В противном случае вызывающая операция запустит конечный переход, однако будет выполнен переход окна (например, масштабирование или затемнение).
+Чтобы в полной мере реализовать возможности перехода, необходимо активировать переходы содержимого окна как в вызывающей, так и в вызываемой операции. + В противном случае вызывающая операция запустит конечный переход, однако будет выполнен переход окна (например, масштабирование или затемнение). +
-Чтобы запустить начальный переход как можно раньше, используйте в вызываемой операции метод {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()}. Это позволит сделать начальные переходы более эффектными.
+Чтобы запустить начальный переход как можно раньше, используйте в вызываемой операции метод +{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} +. Это позволит сделать начальные переходы более эффектными.
Если в приложении активированы переходы и для операции задан конечный переход, переход активируется при запуске другой операции следующим образом:
+Если в приложении разрешены переходы и для операции задан конечный переход, переход активируется при запуске другой операции следующим образом: +
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
-Если для второй операции задан начальный переход, переход также активируется при запуске операции. Чтобы отключить переходы при запуске другой операции, укажите набор параметров null.
Если для второй операции задан начальный переход, он также активируется при запуске операции.
+ Чтобы отключить переходы при запуске другой операции, укажите
+значение null для набора параметров.
android:transitionName.android:transitionName.
@@ -266,13 +317,20 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
});
-Для общих динамических представлений, сгенерированных в коде, используйте метод{@link android.view.View#setTransitionName View.setTransitionName()} для задания общего имени элемента в обеих операциях.
+Для общих динамических представлений, создаваемых в коде, используйте метод +{@link android.view.View#setTransitionName View.setTransitionName()} для определения одинакового имени элемента в обеих операциях. +
-Чтобы обратить анимацию перехода по завершении второй операции, вместо {@link android.app.Activity#finish Activity.finish()} вызовите метод {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()}.
+Чтобы выполнить анимацию обратного перехода по завершении второй операции, вызовите метод +{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} + вместо{@link android.app.Activity#finish Activity.finish()}.
Чтобы создать анимацию перехода на экране между двумя операциями с несколькими общими элементами, определите общие элементы в обоих макетах с помощью атрибута android:transitionName (или воспользуйтесь методом {@link android.view.View#setTransitionName View.setTransitionName()} в обеих операциях), а затем создайте объект {@link android.app.ActivityOptions}, как указано ниже.
Чтобы создать анимацию перехода на экране между двумя операциями с несколькими общими
+элементами, определите общие элементы в обоих макетах с помощью атрибута android:transitionName
+ (или воспользуйтесь методом {@link android.view.View#setTransitionName View.setTransitionName()} в обеих
+операциях), а затем создайте объект {@link android.app.ActivityOptions}, как указано ниже.
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, @@ -283,9 +341,14 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,Использование перемещения по кривой
-При анимации в Material Design используются кривые для интерполяции по времени и схемы перемещения в пространстве. В Android 5.0 (уровень API 21) и более поздних версиях имеется возможность определить для анимаций настраиваемые кривые синхронизации и схемы перемещения по кривой.
+При анимации в Material Design используются кривые для интерполяции по времени и создания схем перемещения в пространстве. + В Android 5.0 (уровень API 21) и более поздних версиях имеется возможность определить для анимаций настраиваемые кривые синхронизации и схемы перемещения по кривой. +
-Класс {@link android.view.animation.PathInterpolator} – это новый интерполятор на основе кривой Безье или объекта {@link android.graphics.Path}. Данный интерполятор определяет перемещение по кривой в квадрате 1 x 1 с привязкой в точках (0,0) и (1,1), а также с контрольными точками, задаваемыми с помощью аргументов конструктора. Также можно определить интерполятор траектории в качестве XML-ресурса:
+Класс {@link android.view.animation.PathInterpolator} — это новый интерполятор на +основе кривой Безье или объекта {@link android.graphics.Path}. Данный интерполятор определяет перемещение по кривой в квадрате 1 x 1 с привязкой в точках (0,0) и (1,1), а также с контрольными точками, задаваемыми с помощью аргументов конструктора. + + Также можно определить интерполятор траектории в качестве XML-ресурса:
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" @@ -295,17 +358,21 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, android:controlY2="1"/>-В системе имеются XML-ресурсы для трех основных кривых в спецификации Material Design:
+В системе имеются XML-ресурсы для трех основных кривых в спецификации Material Design: +
@interpolator/fast_out_linear_in.xml@interpolator/fast_out_slow_in.xml@interpolator/linear_out_slow_in.xml@interpolator/fast_out_linear_in.xml;@interpolator/fast_out_slow_in.xml;@interpolator/linear_out_slow_in.xml.Можно передать объект {@link android.view.animation.PathInterpolator} в метод {@link android.animation.Animator#setInterpolator Animator.setInterpolator()}.
+Можно передать объект {@link android.view.animation.PathInterpolator} в метод {@link +android.animation.Animator#setInterpolator Animator.setInterpolator()}.
-Класс {@link android.animation.ObjectAnimator} имеет новые конструкторы, с помощью которых можно анимировать координаты вдоль траектории перемещения, используя для этого сразу два или более свойств. Например, следующий аниматор использует объект {@link android.graphics.Path} для анимации свойств представления по осям X и Y:
+Класс {@link android.animation.ObjectAnimator} имеет новые конструкторы, с помощью которых можно анимировать координаты вдоль траектории перемещения, используя для этого не менее двух свойств. + Например, следующий аниматор +использует объект {@link android.graphics.Path} для анимации свойств представления по осям X и Y:
ObjectAnimator mAnimator; @@ -317,7 +384,9 @@ mAnimator.start();Анимация изменений состояния представления
-С помощью класса {@link android.animation.StateListAnimator} можно определить аниматоры, которые запускаются при изменении состояния представления. В примере ниже показан порядок определения {@link android.animation.StateListAnimator} в качестве XML-ресурса:
+С помощью класса {@link android.animation.StateListAnimator} можно определить аниматоры, которые запускаются при изменении состояния представления. + В следующем примере показан порядок определения {@link +android.animation.StateListAnimator} в качестве XML-ресурса:
<!-- animate the translationZ property of a view when pressed --> @@ -345,11 +414,21 @@ mAnimator.start(); </selector>-Чтобы присоединить к представлению настраиваемые анимации состояния представления, определите аниматор, используя элемент
+selectorв файле XML-ресурса (как в этом примере), а затем назначьте его своему представлению с помощью атрибутаandroid:stateListAnimator. Чтобы в своем коде назначить представлению аниматор списка состояний, используйте метод {@link android.animation.AnimatorInflater#loadStateListAnimator AnimationInflater.loadStateListAnimator()}, а затем назначьте аниматор своему представлению с помощью метода {@link android.view.View#setStateListAnimator View.setStateListAnimator()}.Чтобы присоединить к представлению настраиваемые анимации состояния представления, определите аниматор, используя элемент +
-selectorв файле XML-ресурса (как в этом примере), а затем назначьте его своему представлению +с помощью атрибутаandroid:stateListAnimator. Чтобы в своем коде назначить представлению аниматор + списка состояний, используйте метод {@link android.animation.AnimatorInflater#loadStateListAnimator +AnimationInflater.loadStateListAnimator()}, а затем назначьте аниматор своему представлению с помощью метода +{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.Когда ваша тема является расширением темы Material Design, по умолчанию у кнопок имеется возможность анимации по оси Z. Чтобы отключить такое поведение для кнопок, задайте для атрибута
+android:stateListAnimatorзначение@null.Если ваша тема является расширением темы Material Design, по умолчанию у кнопок имеется возможность анимации по оси Z. Чтобы отключить +такое поведение кнопок, задайте для атрибута
-android:stateListAnimatorзначение +@null.С помощью класса {@link android.graphics.drawable.AnimatedStateListDrawable} можно создавать элементы, которые служат для отображения анимации между изменениями состояния связанного представления. В Android 5.0 в некоторых системных виджетах такая анимация используется по умолчанию. В примере ниже показан порядок определения {@link android.graphics.drawable.AnimatedStateListDrawable} в качестве XML-ресурса:
+С помощью класса {@link android.graphics.drawable.AnimatedStateListDrawable} можно создавать элементы, которые служат для отображения анимации между изменениями состояния связанного представления. + В Android 5.0 в некоторых системных виджетах такая анимация используется по умолчанию. + В следующем примере показан порядок +определения {@link android.graphics.drawable.AnimatedStateListDrawable} в качестве XML-ресурса:
<!-- res/drawable/myanimstatedrawable.xml --> @@ -379,19 +458,28 @@ mAnimator.start();Анимация векторных элементов
-Векторные элементы можно масштабировать без ущерба четкости. Класс {@link android.graphics.drawable.AnimatedVectorDrawable} позволяет анимировать свойства векторного элемента.
+Векторные элементы можно масштабировать без ущерба четкости. + Класс {@link android.graphics.drawable.AnimatedVectorDrawable} +позволяет анимировать свойства векторного элемента.
Анимированные векторные элементы обычно определяются в трех XML-файлах:
<vector> в res/drawable/;<animated-vector> в res/drawable/;<objectAnimator> в res/anim/.<vector> в
+res/drawable/;<animated-vector> в
+res/drawable/;<objectAnimator> в
+res/anim/.С помощью анимированных векторных элементов можно анимировать атрибуты элементов <group> и <path>. Элемент<group> определяет набор траекторий или подгрупп, а элемент <path> – траектории для создания.
С помощью анимированных векторных элементов можно анимировать атрибуты элементов <group> и
+<path>. Элемент<group> определяет набор траекторий
+или подгрупп, а элемент <path> — траектории для прорисовки.
При определении векторного элемента, который требуется анимировать, используйте атрибут android:name для назначения уникальных имен группам или траекториям, чтобы на них можно было сослаться в определениях аниматора. Пример:
При определении векторного элемента, который требуется анимировать, используйте атрибут android:name
+для назначения уникальных имен группам или траекториям, чтобы на них можно было сослаться в определениях аниматора.
+ Например:
<!-- res/drawable/vectordrawable.xml --> @@ -413,7 +501,8 @@ mAnimator.start(); </vector>-
Определение анимированного векторного элемента ссылается на группы и траектории в векторном элементе, используя их имена:
+Определение анимированного векторного элемента ссылается на группы и траектории в векторном элементе, используя их имена: +
<!-- res/drawable/animvectordrawable.xml --> @@ -428,7 +517,9 @@ mAnimator.start(); </animated-vector>-
Определения анимации представляют объекты {@link android.animation.ObjectAnimator} или {@link android.animation.AnimatorSet}. Первый аниматор в этом примере поворачивает целевую группу на 360 градусов:
+Определения анимации представляются объектами {@link android.animation.ObjectAnimator} или {@link +android.animation.AnimatorSet}. Первый аниматор в этом примере поворачивает целевую группу на 360 градусов: +
<!-- res/anim/rotation.xml -->
@@ -439,7 +530,9 @@ mAnimator.start();
android:valueTo="360" />
-Второй аниматор в этом примере преобразует траекторию векторного элемента из одной формы в другую. Для преобразования траектории должны быть совместимы: они должны содержать одинаковое количество команд, а также одинаковое количество параметров для каждой команды.
+Второй аниматор в этом примере преобразует траекторию векторного элемента из одной формы в другую. + Для преобразования обе траектории должны быть совместимы: они должны содержать одинаковое количество команд, а также одинаковое количество параметров для каждой команды. +
<!-- res/anim/path_morph.xml --> @@ -453,4 +546,5 @@ mAnimator.start(); </set>-
Дополнительные сведения представлены в справке по API для {@link android.graphics.drawable.AnimatedVectorDrawable}.
\ No newline at end of file +Дополнительные сведения представлены в справке по API для {@link +android.graphics.drawable.AnimatedVectorDrawable}.
diff --git a/docs/html-intl/intl/ru/training/material/compatibility.jd b/docs/html-intl/intl/ru/training/material/compatibility.jd index 167f2aa362c9e..b7ca338045fa9 100644 --- a/docs/html-intl/intl/ru/training/material/compatibility.jd +++ b/docs/html-intl/intl/ru/training/material/compatibility.jd @@ -20,42 +20,63 @@ page.title=Обеспечение совместимости -Некоторые возможности Material Design, такие как тема Material Design и настраиваемые переходы, доступны только в Android 5.0 (уровень API 21) и более поздних версиях. Однако приложения можно разработать таким образом, чтобы эти функции были доступны при запуске на устройствах, поддерживающих Material Design, сохранив при этом совместимость приложений с устройствами под управлением более ранних выпусков Android.
+Некоторые возможности Material Design, такие как "материальные" темы и настраиваемые переходы между операциями, + доступны только в Android 5.0 (уровень API 21) и более поздних версиях. Однако приложения можно разработать таким образом, +чтобы эти функции были доступны при запуске на устройствах, поддерживающих Material Design, сохранив при этом +совместимость приложений с устройствами под управлением более ранних выпусков Android.
Приложение можно настроить на использование темы Material Design на поддерживающих ее устройствах, а также на переключение на более старую тему при запуске этого приложения на устройствах под управлением более ранних версий ОС Android. Ниже описан порядок такой настройки.
+Приложение можно настроить так, чтобы тема Material Design использовалась при работе на поддерживающих эту технологию устройствах, +а при запуске приложения на устройствах с более ранними версиями Android происходило переключение на старые варианты тем. Ниже описан порядок такой настройки.
res/values/styles.xml определите тему, наследующую более старую тему (например, Holo).res/values-v21/styles.xml определите тему с таким же именем, наследующую тему Material Design.res/values/styles.xml определите тему, наследующую более старой теме (например, Holo).res/values-v21/styles.xml определите тему с таким же именем, наследующую теме Material Design.Примечание. Если в приложении используется тема Material Design, однако в нем отсутствует альтернативная тема, как предлагается выше, ваше приложение не будет запускаться на устройствах под управлением версий Android, предшествующих 5.0. +
Примечание. +Если в приложении используется тема Material Design, но отсутствует определенная описанным способом альтернативная тема, +это приложение не будет запускаться на устройствах под управлением версий Android, предшествующих 5.0.
Если в создаваемых согласно рекомендациям Material Design макетах отсутствуют новые атрибуты XML, представленные в Android 5.0 (уровень API 21), такие макеты поддерживаются в предыдущих версиях ОС Android. В противном случае необходимо предоставить альтернативные макеты. Можно также предоставить альтернативные макеты для настройки внешнего вида приложения в более ранних версиях Android.
+Если в создаваемых согласно рекомендациям Material Design макетах отсутствуют новые +атрибуты XML, представленные в Android 5.0 (уровень API 21), +такие макеты поддерживаются в предыдущих версиях ОС Android. В противном случае необходимо предоставить альтернативные макеты. Можно также предоставить +альтернативные макеты для настройки внешнего вида приложения в более ранних версиях Android.
-Создайте файлы макета для Android 5.0 (уровень API 21) в res/layout-v21/, а также файлы альтернативного макета для более ранних версий Android (в res/layout/). Например, res/layout/my_activity.xml – это альтернативный макет для res/layout-v21/my_activity.xml.
Создайте файлы макета для Android 5.0 (уровень API 21) в res/layout-v21/,
+а также файлы альтернативного макета для более ранних версий Android (в res/layout/).
+Например, res/layout/my_activity.xml — это альтернативный макет для
+res/layout-v21/my_activity.xml.
Чтобы сделать код более компактным, определите стили в res/values/, измените стили в res/values-v21/ для новых API, а также используйте наследование стилей, определив основные стили в res/values/ и задав наследование из них в res/values-v21/.
Чтобы сделать код более компактным, определите стили в res/values/, измените
+ стили в res/values-v21/ для новых API, а также используйте наследование стилей,
+ определив основные стили в res/values/ и задав наследование из них в res/values-v21/.
Вспомогательные библиотеки v7 r21 и более поздних версий включают следующие функции Material Design:
+Вспомогательные библиотеки v7 +r21 и более поздних версий включают следующие функции Material Design:
Theme.AppCompat;Theme.AppCompat;Theme.AppCompat;Theme.AppCompat;Чтобы получить стили Material Design и настроить цветовую палитру с помощью вспомогательной библиотеки Android v7, примените одну из следующих тем Theme.AppCompat:
Чтобы получить стили Material Design и настроить цветовую палитру с помощью вспомогательной библиотеки
+Android v7, примените одну из следующих тем Theme.AppCompat:
<!-- extend one of the Theme.AppCompat themes --> @@ -85,18 +107,23 @@ page.title=Обеспечение совместимости </style>-
Виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView} имеются в более ранних версиях Android. Они находятся во вспомогательной библиотеке Android v7, и для них существуют следующие ограничения:
+Виджеты {@link android.support.v7.widget.RecyclerView} и {@link +android.support.v7.widget.CardView} имеются в более ранних версиях Android. Они находятся во +вспомогательной библиотеке Android v7, и для них существуют следующие ограничения.
Чтобы воспользоваться этими возможностями в версиях Android, предшествующих 5.0 (уровень API 21), включите в свой проект вспомогательную библиотеку Android v7 как зависимость Gradle:
+Чтобы воспользоваться этими возможностями в версиях Android, предшествующих 5.0 (уровень API 21), включите в свой проект вспомогательную библиотеку +Android v7 как зависимость Gradle:
dependencies {
@@ -117,10 +144,12 @@ dependencies {
Чтобы обеспечить совместимость приложения с более ранними версиями Android, проверьте системный параметр {@link android.os.Build.VERSION#SDK_INT version} во время запуска, прежде чем вызвать API любой из этих функций:
+Чтобы обеспечить совместимость приложения с более ранними версиями Android, проверьте системный параметр {@link +android.os.Build.VERSION#SDK_INT version} во время запуска, прежде чем вызвать API любой из этих +функций:
// Check if we're running on Android 5.0 or higher
@@ -131,4 +160,9 @@ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
}
-Примечание. Чтобы указать версии Android, поддерживаемые вашим приложением, укажите в файле манифеста атрибуты android:minSdkVersion и android:targetSdkVersion. Чтобы использовать функции Material Design, которые имеются в Android 5.0, задайте для атрибута android:targetSdkVersion значение 21. Дополнительные сведения представлены в руководстве по API <uses-sdk>.
Примечание. Чтобы указать версии Android, поддерживаемые вашим приложением,
+установите атрибуты android:minSdkVersion и android:targetSdkVersion
+в файле манифеста. Чтобы использовать функции Material Design, которые имеются в Android 5.0, задайте
+для атрибута android:targetSdkVersion значение 21. Дополнительные сведения см.
+ в руководстве по API
+<uses-sdk>.
В Android 5.0 (уровень API 21) и более поздних версий можно тонировать растровые изображения и изображения в формате NinePatch, определенные как альфа-маски. Для тонирования можно применять как цветовые ресурсы, так и атрибуты темы, которые разрешаются в цветовые ресурсы (например, ?android:attr/colorPrimary). Обычно такие ресурсы создаются только один раз, после чего они автоматически окрашиваются для соответствия цветам темы.
В Android 5.0 (уровень API 21) и более поздних версий можно тонировать растровые изображения и изображения в формате NinePatch, определенные как
+альфа-маски. Для тонирования можно применять как цветовые ресурсы, так и атрибуты темы, которые
+разрешаются в цветовые ресурсы (например, ?android:attr/colorPrimary). Обычно такие ресурсы создаются
+только один раз, после чего они автоматически окрашиваются для соответствия цветам темы.
Тонирование можно применить к объектам {@link android.graphics.drawable.BitmapDrawable} и {@link android.graphics.drawable.NinePatchDrawable} с помощью метода {@code setTint()}. Также можно задать цвет и способ тонирования в макетах, используя для этого атрибуты android:tint и android:tintMode.
Тонирование можно применить к объектам {@link android.graphics.drawable.BitmapDrawable} и {@link
+android.graphics.drawable.NinePatchDrawable} с помощью метода {@code setTint()}. Также можно
+задать цвет и способ тонирования в макетах, используя для этого атрибуты android:tint и
+android:tintMode.
Во вспомогательной библиотеке Android r21 и более поздних версий содержится класс {@link android.support.v7.graphics.Palette}, с помощью которого можно извлекать главные цвета на изображении. Данный класс позволяет извлекать следующие главные цвета:
+Во вспомогательной библиотеке Android r21 и более поздних версий содержится класс {@link +android.support.v7.graphics.Palette}, +с помощью которого можно извлекать следующие главные цвета на изображении:
Для извлечения этих цветов передайте объект {@link android.graphics.Bitmap} в статический метод {@link android.support.v7.graphics.Palette#generate Palette.generate()} в фоновом потоке, где вы загружаете изображения. Если невозможно использовать этот поток, вместо этого вызовите метод {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} и укажите прослушиватель.
+Для извлечения этих цветов передайте объект {@link android.graphics.Bitmap} в статический метод +{@link android.support.v7.graphics.Palette#generate Palette.generate()} в фоновом +потоке, где загружаются изображения. Если невозможно использовать этот поток, вместо этого вызовите метод +{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} и укажите +модуль прослушивания.
-Извлечь главные цвета на изображении можно также с помощью методов get из класса Palette, таких как Palette.getVibrantColor.
Извлечь главные цвета на изображении можно также с помощью методов getter из класса
+Palette, таких как Palette.getVibrantColor.
Чтобы использовать класс {@link android.support.v7.graphics.Palette} в своем проекте, добавьте в модуль своего приложения следующую зависимость Gradle:
+Чтобы использовать класс {@link android.support.v7.graphics.Palette} в своем проекте, добавьте в модуль своего приложения следующую +зависимость Gradle: +
dependencies {
...
- compile 'com.android.support:palette-v7:21.0.+'
+ compile 'com.android.support:palette-v7:21.0.0'
}
-Дополнительные сведения представлены в справке по API для класса {@link android.support.v7.graphics.Palette}.
+Дополнительные сведения представлены в справке по API для класса {@link android.support.v7.graphics.Palette} +.
Векторная графика в Android
В Android 5.0 (уровень API 21) и более поздних версий имеется возможность определить векторные элементы, которые можно масштабировать без ущерба для четкости. Для векторного изображения требуется лишь один файл ресурсов, тогда как для растровых изображений требуется отдельный файл ресурсов для каждого разрешения. Чтобы создать векторное изображение, укажите детали формы в XML-элементе <vector>.
В Android 5.0 (уровень API 21) и более поздних версий имеется возможность определить векторные элементы, которые можно масштабировать без ущерба для четкости.
+ Для векторного изображения требуется лишь один файл ресурсов, тогда как для растровых изображений необходим отдельный файл ресурсов для каждой плотности экрана.
+ Чтобы создать векторное изображение, укажите детали формы в XML-элементе <vector>.
+
В примере ниже задается векторное изображение в форме сердца:
+В следующем примере создается векторное изображение в форме сердца.
<!-- res/drawable/heart.xml --> @@ -102,4 +120,7 @@ href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px"> </vector>-
Векторные изображения представлены в Android как объекты {@link android.graphics.drawable.VectorDrawable}. Дополнительные сведения о синтаксисе pathData представлены в справке по траекториям SVG. Дополнительные сведения об анимации свойств векторных элементов см. в разделе Анимация векторных элементов.
Векторные изображения представлены в Android как объекты {@link android.graphics.drawable.VectorDrawable}.
+ Дополнительные сведения о синтаксисе pathData см. в справке по траекториям SVG. Дополнительные сведения
+об анимации свойств векторных элементов см. в разделе
+Анимация векторных элементов.
В приложении можно реализовать множество функций Material Design и одновременно сохранить его совместимость с версиями Android, предшествующими версии 5.0. Дополнительные сведения представлены в разделе Обеспечение совместимости.
+В приложении можно реализовать множество функций Material Design и одновременно сохранить его совместимость с версиями Android, предшествующими версии 5.0. + Дополнительные сведения представлены на странице +Обеспечение совместимости.
-Чтобы освежить существующее приложение с помощью функций и элементов Material Design, обновите макеты в соответствии с рекомендациями Material Design. Также не забудьте реализовать такие функции, как глубина, реакция на касание и анимация.
+Чтобы дополнить существующее приложение функциями и элементами Material Design, обновите макеты в соответствии с рекомендациями Material Design. + Также не забудьте добавить в приложение функции глубины, реакции на касание и анимации. +
При создании приложений с функциями Material Design следуйте рекомендациям Material Design, которые позволят вам получить целостное представление о принципах дизайна. При проектировании и разработке своего приложения следуйте инструкциям и используйте новые функциональные возможности платформы Android.
+При создании приложений с "материальными" функциями следуйте рекомендациям Material Design, которые позволят вам получить целостное представление о новых принципах дизайна. + При проектировании и разработке своего приложения следуйте инструкциям и используйте новые функциональные возможности платформы Android. +
Чтобы применить тему Material Design в своем приложении, укажите стиль, который наследуется от android:Theme.Material:
Чтобы применить тему Material Design в своем приложении, укажите стиль, который наследует от
+android:Theme.Material:
<!-- res/values/styles.xml --> @@ -65,15 +72,19 @@ page.title=Начало работы </resources>-
В теме Material Design содержатся обновленные системные виджеты, для которых можно настраивать цветовую палитру, а также анимации для реакции на касание и переходы. Дополнительные сведения представлены в разделе Использование темы Material Design.
+В теме Material Design содержатся обновленные системные виджеты, для которых можно настраивать цветовую палитру, а также стандартные анимации для реакции на касания и переходы. + Дополнительные сведения представлены в разделе +Использование темы Material Design.
Помимо применения и настройки темы Material Design, ваши макеты должны быть созданы в соответствии с рекомендациями Material Design. Особо внимание при разработке макетов следует обращать на следующие элементы:
+Помимо применения и настройки темы Material Design, необходимо соответствие +рекомендациям Material Design используемых макетов. При разработке макетов необходимо контролировать следующие элементы: +
Представления могут отбрасывать тени, и значение высоты определяет размер тени и порядок ее прорисовки. Чтобы установить высоту представления, используйте в макетах атрибут android:elevation:
Представления могут отбрасывать тени, и значение высоты определяет размер тени и порядок ее прорисовки.
+ Чтобы установить высоту представления, используйте в макетах атрибут
+android:elevation:
<TextView
@@ -95,14 +108,22 @@ page.title=Начало работы
android:elevation="5dp" />
-С помощью нового свойства translationZ можно создавать анимации, которые отражают временные изменения в высоте представления. Изменения высоты могут быть полезны при реагировании на сенсорные жесты.
С помощью нового свойства translationZ можно создавать анимации, которые отражают временные изменения в высоте представления.
+ Изменения высоты могут быть полезны при
+реагировании на сенсорные
+жесты.
Дополнительные сведения представлены в разделе Определение теней и обрезка представлений.
+Дополнительные сведения представлены в разделе Определение теней и обрезка представлений. +
-{@link android.support.v7.widget.RecyclerView} представляет собой более гибкую версию {@link android.widget.ListView}. Она поддерживает различные типы макетов и способствует повышению производительности. {@link android.support.v7.widget.CardView} обеспечивает единообразное отображение фрагментов информации внутри подсказок в разных приложениях. В следующем примере демонстрируется, как включить {@link android.support.v7.widget.CardView} в макет:
+{@link android.support.v7.widget.RecyclerView} представляет собой более гибкую версию {@link +android.widget.ListView}. Она поддерживает различные типы макетов и способствует повышению производительности. +{@link android.support.v7.widget.CardView} обеспечивает единообразное отображение фрагментов информации внутри карточек в разных приложениях. + В следующем примере показано, как включить +{@link android.support.v7.widget.CardView} в макет:
<android.support.v7.widget.CardView @@ -114,12 +135,15 @@ page.title=Начало работы </android.support.v7.widget.CardView>-
Дополнительные сведения представлены в разделе Создание списков и подсказок.
+Дополнительные сведения представлены в разделе Создание списков и карточек. +
В состав Android 5.0 (уровень API 21) входят новые API для создания в приложении настраиваемой анимации. Например, можно активировать переходы между операциями и задавать для операций конечный переход:
+В состав Android 5.0 (уровень API 21) входят новые API для создания в приложении настраиваемой анимации. +Например, можно разрешать переходы между операциями и задавать для операций конечный переход: +
public class MyActivity extends Activity {
@@ -142,6 +166,6 @@ public class MyActivity extends Activity {
}
-При запуске другой операции из этой операции активируется конечный переход.
+При запуске одной операции из другой активируется конечный переход.
-Подробные сведения о новых API для анимации см. в разделе Определение настраиваемой анимации.
\ No newline at end of file +Подробные сведения о новых API для анимации см. в разделе Определение настраиваемой анимации.
diff --git a/docs/html-intl/intl/ru/training/material/index.jd b/docs/html-intl/intl/ru/training/material/index.jd index 1483c51fbc0ab..0b3f1c4fc0ba8 100644 --- a/docs/html-intl/intl/ru/training/material/index.jd +++ b/docs/html-intl/intl/ru/training/material/index.jd @@ -1,33 +1,39 @@ -page.title=Создание приложений с помощью Material Design -page.type=проектирование -page.image=images/material.png -page.metaDescription=Узнайте, как применить Material Design к своим приложениям. +page.title=Создание приложений с помощью Material Design +page.type=проектирование +page.image=images/cards/material_2x.png +page.metaDescription=Научитесь применять Material Design к своим приложениям. + @jd:bodyMaterial Design представляет собой полное руководство по созданию визуальных, движущихся и интерактивных элементов для различных платформ и устройств. Чтобы применить элементы Material Design в своих приложениях Android, руководствуйтесь инструкциями в спецификации Material Design, а также воспользуйтесь новыми компонентами и функциями, которые доступны в Android 5.0 (уровень API 21).
+Material Design представляет собой комплексную концепцию создания визуальных, движущихся и интерактивных элементов для различных платформ и устройств. + Чтобы применить элементы Material Design в своих приложениях Android, +руководствуйтесь инструкциями в +спецификации Material +Design, а также воспользуйтесь новыми компонентами и функциями, которые доступны в Android 5.0 (уровень API 21). +
-Данный курс обучения посвящен созданию приложений Material Design с использованием следующих элементов:
+Данный курс обучения посвящен созданию приложений Material Design, в ходе которого используются следующие элементы:
В этом курсе также рассматривается обеспечение обратной совместимости нового приложения, в котором используются функции Material Design, с версиями Android, предшествующими версии 5.0 (уровень API 21).
+В этом курсе также рассматривается обеспечение обратной совместимости нового приложения, в котором используются функции Material Design, с версиями Android, предшествующими версии 5.0 (уровень API 21). +
Для создания в приложениях составных списков и подсказок с помощью стилей Material Design можно использовать виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView}.
+Для создания в приложениях составных списков и карточек с помощью стилей Material Design можно использовать виджеты +{@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView}. +
Виджет {@link android.support.v7.widget.RecyclerView} представляет собой расширенную и более гибкую версию {@link android.widget.ListView}. Он является контейнером для отображения больших наборов данных, которые можно эффективно прокручивать, сохраняя при этом ограниченное количество представлений. Виджет {@link android.support.v7.widget.RecyclerView} рекомендуется использовать в случаях, когда имеются коллекции данных, элементы которых изменяются во время выполнения на основе действий пользователя или сетевых событий.
+Виджет {@link android.support.v7.widget.RecyclerView} представляет собой расширенную и более гибкую версию {@link android.widget.ListView}. + Он является контейнером для отображения больших наборов данных, которые можно эффективно прокручивать, сохраняя при этом ограниченное количество представлений. + Виджет +{@link android.support.v7.widget.RecyclerView} рекомендуется использовать в случаях, когда имеются коллекции данных, элементы которых изменяются во время выполнения в зависимости от действий пользователя или сетевых событий. +
-Класс {@link android.support.v7.widget.RecyclerView} упрощает отображение и обработку больших наборов данных за счет предоставления:
+Класс {@link android.support.v7.widget.RecyclerView} упрощает отображение и обработку больших наборов данных с помощью следующих возможностей: +
Также предоставляются гибкие возможности определения настраиваемых менеджеров макетов и анимации для виджетов {@link android.support.v7.widget.RecyclerView}.
+Также предоставляются гибкие возможности определения настраиваемых менеджеров макетов и анимации для виджетов {@link +android.support.v7.widget.RecyclerView}.
Рисунок 1. Виджет RecyclerView.
Чтобы воспользоваться виджетом {@link android.support.v7.widget.RecyclerView}, необходимо определить адаптер и менеджер макетов. Для создания адаптера следует наследовать класс {@link android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Характеристики реализации зависят от особенностей используемого набора данных и типа представлений. Дополнительные сведения представлены в примерах ниже.
+Чтобы воспользоваться виджетом {@link android.support.v7.widget.RecyclerView}, необходимо определить адаптер и менеджер макетов. + Для создания адаптера необходимо наследовать класс {@link +android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Характеристики реализации зависят от особенностей используемого набора данных и типа представлений. + Дополнительные сведения представлены в примерах ниже. +
@@ -49,25 +61,37 @@ page.title=Создание списков и подсказок
Менеджер макетов размещает представления элемента внутри {@link android.support.v7.widget.RecyclerView} и определяет порядок повторного использования представлений элемента, которые более не отображаются для пользователя. Чтобы повторно использовать (или перезапустить) представление, менеджер макетов может запросить адаптер заменить содержимое представления другим элементом из набора данных. Такой перезапуск представлений позволяет повысить производительность за счет того, что исключается создание ненужных представлений и выполнение ресурсоемких операций подстановки {@link android.app.Activity#findViewById findViewById()}.
+Менеджер макетов размещает представления элемента внутри {@link +android.support.v7.widget.RecyclerView} и определяет порядок повторного использования представлений элемента, которые перестают быть видимыми пользователю. + Чтобы повторно использовать (или перезапустить) представление, менеджер макетов может запросить адаптер заменить содержимое представления другим элементом из набора данных. + Такой перезапуск представлений позволяет повысить производительность за счет того, что исключается создание ненужных представлений и выполнение ресурсоемких операций поиска {@link android.app.Activity#findViewById findViewById()}. + +
Виджет {@link android.support.v7.widget.RecyclerView} включает следующие встроенные менеджеры макетов:
Для создания менеджера макетов следует наследовать класс {@link android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.
+Для создания менеджера макетов необходимо наследовать класс {@link +android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.
По умолчанию анимация для добавления и удаления элементов включается в виджете {@link android.support.v7.widget.RecyclerView}. Для настройки такой анимации следует наследовать класс {@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} и воспользоваться методом {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()}.
+По умолчанию анимация для добавления и удаления элементов включается в виджете {@link +android.support.v7.widget.RecyclerView}. Для настройки такой анимации следует наследовать класс +{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} и воспользоваться методом + {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} +.
В следующем примере демонстрируется, как включить в макет виджет {@link android.support.v7.widget.RecyclerView}:
+В следующем примере демонстрируется, как включить в макет виджет +{@link android.support.v7.widget.RecyclerView}:
<!-- A RecyclerView with some commonly used attributes -->
@@ -78,7 +102,9 @@ page.title=Создание списков и подсказок
android:layout_height="match_parent"/>
-После добавления виджета {@link android.support.v7.widget.RecyclerView} подключите дескриптор объекта, подключите его к менеджеру макетов, а затем подключите адаптер к данным, которые будут отображаться:
+После добавления виджета {@link android.support.v7.widget.RecyclerView} подключите дескриптор объекта, подключите его к менеджеру макетов, а затем подключите адаптер к данным, которые будут отображаться: + +
public class MyActivity extends Activity {
@@ -108,7 +134,10 @@ public class MyActivity extends Activity {
}
-Адаптер обеспечивает доступ к элементам в наборе данных, создает представления для элементов и заменяет содержимое некоторых представлений новыми элементами данных, когда исходный элемент уже не отображается. Пример кода ниже представляет собой простую реализацию для набора данных, который состоит из массива строк, выведенного на экран с помощью виджетов {@link android.widget.TextView}:
+Адаптер обеспечивает доступ к элементам в наборе данных, создает представления для элементов и заменяет содержимое некоторых представлений новыми элементами данных, когда исходный элемент уже не отображается. + + Пример кода ниже является простой реализацией набора данных, который состоит из массива строк, выведенного на экран с помощью виджетов {@link android.widget.TextView}: +
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@@ -165,25 +194,35 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
-Рисунок 3. Примеры подсказок.
+Рисунок 3. Примеры карточек.
-Создание подсказок
+Создание карточек
-Виджет {@link android.support.v7.widget.CardView} является расширением класса {@link android.widget.FrameLayout} и позволяет отображать информацию внутри подсказок, которые будут выглядеть одинаково в рамках платформы. Виджеты {@link android.support.v7.widget.CardView} могут отбрасывать тени и иметь закругленные углы.
+Виджет {@link android.support.v7.widget.CardView} является расширением класса {@link android.widget.FrameLayout}
+и позволяет отображать информацию внутри карточек, которые будут выглядеть одинаково в рамках платформы. Виджеты {@link
+android.support.v7.widget.CardView} могут отбрасывать тени и иметь закругленные углы.
-Чтобы создать подсказку, отбрасывающую тень, воспользуйтесь атрибутом card_view:cardElevation. В Android 5.0 (уровень API 21) и более поздних версий виджет {@link android.support.v7.widget.CardView} использует реальную высоту и динамические тени, а в более ранних версиях виджет возвращается к программным теням. Дополнительные сведения представлены в разделе Обеспечение совместимости.
+Чтобы создать карточку, отбрасывающую тень, воспользуйтесь атрибутом card_view:cardElevation. В Android 5.0 (уровень API 21) и более поздних версий виджет
+{@link android.support.v7.widget.CardView} использует реальную
+высоту и динамические тени, а в более ранних версиях в виджете реализованы программные тени.
+Дополнительные сведения представлены на странице Обеспечение
+совместимости.
-Для настройки внешнего вида виджета {@link android.support.v7.widget.CardView} используйте следующие свойства:
+Для настройки внешнего вида виджета
+{@link android.support.v7.widget.CardView} используйте следующие свойства:
card_view:cardCornerRadius.CardView.setRadius.card_view:cardBackgroundColor.card_view:cardCornerRadius;
+CardView.setRadius;card_view:cardBackgroundColor.
+В следующем примере показано, как включить виджет {@link android.support.v7.widget.CardView} в макет:
+В следующем примере показано, как включить виджет {@link android.support.v7.widget.CardView} + в макет:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -212,7 +251,11 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
Добавление зависимостей
-Виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView} имеются во вспомогательных библиотеках v7. Чтобы использовать эти виджеты в своем проекте, добавьте в модуль приложения следующие зависимости Gradle:
+ Виджеты {@link android.support.v7.widget.RecyclerView} и {@link android.support.v7.widget.CardView}
+входят во вспомогательные
+библиотеки v7. Чтобы использовать эти виджеты в своем проекте, добавьте в модуль приложения следующие
+зависимости Gradle:
+
dependencies {
@@ -220,4 +263,4 @@ dependencies {
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
}
-
\ No newline at end of file
+
diff --git a/docs/html-intl/intl/ru/training/material/shadows-clipping.jd b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
index fe634d3f60c51..a1c41fcd93d85 100644
--- a/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/ru/training/material/shadows-clipping.jd
@@ -18,20 +18,29 @@ page.title=Определение теней и обрезка представ
-В Material Design представлена возможность настройки высоты элементов интерфейса. Высота позволяет пользователю понять относительную важность каждого элемента и сосредоточиться на выполнении необходимой задачи.
+В Material Design появилась возможность настройки высоты элементов интерфейса. Высота позволяет пользователю понять относительную важность каждого элемента и сосредоточиться на выполнении поставленной задачи. +
-Высота представления, выраженная с помощью свойства Z, определяет внешний вид его тени: представления с более высоким значением Z отбрасывают более мягкие тени большего размера. Представления с более высокими значениями Z перекрывают представления с более низкими значениями Z, однако значение Z не влияет на размер самого представления.
+Высота представления, выраженная с помощью свойства Z, определяет внешний вид его тени: представления с более высоким значением Z отбрасывают более мягкие тени большего размера. + Представления с более высокими значениями Z перекрывают представления с более низкими значениями Z, однако значение Z не влияет на размер самого представления. +
-Прорисовка теней выполняется родительским представлением, поэтому к приподнятому представлению можно применять стандартную операцию обрезки представления (по умолчанию представление обрезается своим родительским представлением).
+Прорисовка теней выполняется родительским представлением, поэтому к приподнятому представлению можно применять стандартную операцию обрезки представления (по умолчанию представление обрезается своим родительским представлением). +
-Установка высоты также полезна для создания анимации, когда виджеты временно поднимаются выше плоскости представления при выполнении какого-либо действия.
+Установка высоты также полезна для создания анимации, когда виджеты временно поднимаются выше плоскости представления при выполнении какого-либо действия. +
-Дополнительные сведения об установке высоты в Material Design представлены в статье Objects in 3D space.
+Дополнительные сведения об установке высоты в Material Design представлены на странице +Объекты в трехмерном пространстве. +
Значение Z для представления включает два компонента:
Значение Z для представления включает два компонента: + +
Рисунок 1. Тени для различной высоты представления.
-Чтобы установить высоту представления в определении макета, используйте атрибут android:elevation. Чтобы установить высоту представления в программном коде операции, используйте метод{@link android.view.View#setElevation View.setElevation()}.
Чтобы установить высоту представления в определении макета, используйте атрибут android:elevation
+. Чтобы установить высоту представления в программном коде операции, используйте метод
+{@link android.view.View#setElevation View.setElevation()}.
Чтобы установить смещение представления, используйте метод {@link android.view.View#setTranslationZ View.setTranslationZ()}.
+Чтобы установить смещение представления, используйте метод {@link android.view.View#setTranslationZ +View.setTranslationZ()}.
-Новые методы {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} и {@link android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} позволяют с легкостью анимировать изменение высоты представления. Дополнительные сведения представлены в справке по API для {@link android.view.ViewPropertyAnimator}, а также в руководстве по анимации свойств для разработчиков.
+Новые методы {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} и {@link +android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} позволяют с легкостью анимировать изменение высоты представлений. + Дополнительные сведения см. в справке по API для +{@link android.view.ViewPropertyAnimator}, а также в руководстве по анимации свойств для разработчиков. +
-Также можно воспользоваться {@link android.animation.StateListAnimator} для указания этих анимаций описательно. Это особенно полезно в тех случаях, когда состояние изменяется при анимации переключения, например, когда пользователь нажимает на кнопку. Дополнительные сведения представлены в разделе Анимация изменений состояния представления.
+Также можно использовать класс {@link android.animation.StateListAnimator} для декларирования этих анимаций. + Это особенно полезно в тех случаях, когда анимация запускается при изменении состояния, например, когда пользователь нажимает на кнопку. + Дополнительные сведения см. в разделе +Анимация изменений состояния представления.
-Значения Z измеряются в dp (пикселы, не зависящие от плотности).
+Значения Z измеряются в dp (пиксели, не зависящие от плотности).
Границы фонового элемента представления определяют форму его тени по умолчанию. Контуры – это внешние границы графического объекта, они также определяют область ряби для реакции на касание.
+Границы фонового элемента представления определяют форму его тени по умолчанию. +Контуры — это внешние границы графического объекта, они также определяют область ряби для отклика на касание. +
В примере ниже рассматривается это представление, определенное с помощью фонового элемента дизайна:
@@ -77,23 +98,36 @@ page.title=Определение теней и обрезка представ </shape> -Представление отбрасывает тень с закругленными углами, поскольку фоновый элемент дизайна определяет контур представления. Если указать настраиваемый контур, он будет переопределять форму тени по умолчанию для представления.
+Представление отбрасывает тень с закругленными углами, поскольку контур представления определяется фоновым элементом дизайна. + Если указать настраиваемый контур, он будет переопределять стандартную форму тени для представления.
Порядок определения настраиваемого контура представления в программном коде
Можно создавать овальные и прямоугольные контуры со скругленными углами, используя для этого методы класса {@link android.graphics.Outline}. Поставщик контуров по умолчанию получает контуры из фона представления. Чтобы представление не отбрасывало тень, задайте для поставщика контуров значение null.
Можно создавать овальные и прямоугольные контуры со скругленными углами, используя для этого методы класса
+{@link android.graphics.Outline}. Стандартный источник контуров получает контуры из фона представления.
+ Чтобы представление не отбрасывало тень, задайте для источника контуров значение null.
+
С помощью обрезки представлений можно с легкостью изменять их форму. Представление можно обрезать для обеспечения единообразия элементов дизайна. Также можно изменить форму представления в ответ на действия пользователя. С помощью метода {@link android.view.View#setClipToOutline View.setClipToOutline()} или атрибута android:clipToOutline представление можно обрезать по его контуру. Обрезать можно только прямоугольники, круги и скругленные прямоугольники, как определено в методе {@link android.graphics.Outline#canClip Outline.canClip()}.
С помощью обрезки представлений можно с легкостью изменять их форму. Представление можно обрезать для обеспечения единообразия элементов дизайна.
+Также можно изменить форму представления в ответ на действия пользователя.
+С помощью метода {@link android.view.View#setClipToOutline
+View.setClipToOutline()} или атрибута android:clipToOutline представление можно обрезать по его контуру. Обрезать
+можно только прямоугольники, круги и скругленные прямоугольники, как определено в методе
+{@link android.graphics.Outline#canClip Outline.canClip()}.
Чтобы обрезать представление по форме элемента дизайна, установите элемент дизайна в качестве фона представления (как показано выше) и вызовите метод {@link android.view.View#setClipToOutline View.setClipToOutline()}.
+Чтобы обрезать представление по форме элемента дизайна, установите этот элемент в качестве фона представления +(как показано выше) и вызовите метод {@link android.view.View#setClipToOutline View.setClipToOutline()} +.
-Обрезка представления – довольно ресурсоемкая операция, поэтому не анимируйте форму, которую вы используете для обрезки представления. Для достижения этого эффекта используйте анимацию эффекта появления.
\ No newline at end of file +Обрезка представления — довольно ресурсоемкая операция, поэтому не анимируйте форму, которую вы используете для обрезки представления. + Для достижения требуемого эффекта используйте анимацию эффекта появления.
diff --git a/docs/html-intl/intl/ru/training/material/theme.jd b/docs/html-intl/intl/ru/training/material/theme.jd index 6b9298764cc52..320f308312bfe 100644 --- a/docs/html-intl/intl/ru/training/material/theme.jd +++ b/docs/html-intl/intl/ru/training/material/theme.jd @@ -27,9 +27,12 @@ page.title=Использование темы Material DesignВнешний вид темы Material Design можно настроить с учетом фирменного стиля, воспользовавшись для этого цветовой палитрой. Можно изменить оттенок строки действий и строки состояния, используя атрибуты темы, как показано на рисунке 3.
+Внешний вид темы Material Design можно настроить с учетом фирменного стиля, воспользовавшись для этого цветовой палитрой. + Можно изменить оттенок строки действий и строки состояния, используя атрибуты темы, как показано на рисунке 3. +
-Системные виджеты отличаются новым дизайном и анимацией для реакции на касание. В своем приложении вы можете настроить цветовую палитру, анимацию реакции на касание и переходы между операциями.
+Системные виджеты отличаются новым дизайном и анимацией отклика на касание. В своем приложении вы можете настроить цветовую палитру, анимацию отклика на касание и переходы между операциями. +
Тема Material Design задается следующими параметрами:
@@ -39,7 +42,8 @@ page.title=Использование темы Material Design@android:style/Theme.Material.Light.DarkActionBar.Список доступных стилей Material Design представлен в справке по API для {@link android.R.style R.style}.
+Список доступных стилей Material Design см. в справке по API для +{@link android.R.style R.style}.
-Примечание. Тема Material Design доступна только в Android 5.0 (уровень API 21) и более поздних версий. Во вспомогательных библиотеках v7 представлены темы со стилями Material Design для некоторых виджетов. Эти библиотеки также обеспечивают поддержку настройки цветовой палитры. Дополнительные сведения представлены в разделе Обеспечение совместимости. +Примечание. Темы Material Design доступны только в ОС Android 5.0 (уровень API 21) и более поздних версий. + Во вспомогательных библиотеках v7 + представлены темы со стилями Material Design для некоторых виджетов. Эти библиотеки также обеспечивают поддержку настройки цветовой палитры. + Дополнительные сведения см. на странице +Обеспечение совместимости.
Для настройки основных цветов в соответствии с фирменным стилем определите настраиваемые цвета с помощью атрибутов темы при наследовании от темы Material Design:
+Для настройки основных цветов в соответствии с фирменным стилем определите настраиваемые цвета с помощью атрибутов темы при наследовании от темы Material Design: +
<resources> @@ -91,17 +100,32 @@ page.title=Использование темы Material DesignНастройка строки состояния
-В теме Material Design можно с легкостью настроить строку состояния, указав нужный цвет в соответствии с фирменным стилем и задав достаточную контрастность для отображения белых значков состояния. Чтобы задать настраиваемый цвет для строки состояния, воспользуйтесь атрибутом
+android:statusBarColorпри наследовании темы Material Design. По умолчанию параметрandroid:statusBarColorнаследует значениеandroid:colorPrimaryDark.В теме Material Design можно с легкостью настроить строку состояния, указав нужный цвет в соответствии с фирменным стилем и задав достаточную контрастность для отображения белых значков состояния. + Чтобы установить настраиваемый цвет для строки состояния, воспользуйтесь атрибутом
android:statusBarColorпри наследовании темы Material Design. -Кроме того, можно самостоятельно разместить элемент за строкой состояния. Например, если требуется наложить прозрачную строку состояния поверх фотографии, применив еле уловимый темный градиент, чтобы были видны белые значки состояния. Для этого задайте для атрибута
- -android:statusBarColorзначение@android:color/transparentи настройте флаги окна требуемым образом. Также можно воспользоваться методом {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} для применения анимации или эффекта постепенного исчезновения.-Примечание. Строка состояния почти всегда должна иметь четкую границу, отделяющую ее от основной панели инструментов, за исключением случаев, когда за этими панелями от края и до края экрана отображается большое количество изображений или мультимедийный контент, а также в случае, когда вы используете градиент, чтобы обеспечить отображение значков. + По умолчанию параметр
-android:statusBarColorнаследует значениеandroid:colorPrimaryDark.При настройке панели навигации и строки состояния сделайте их прозрачными либо измените только строку состояния. Во всех остальных случаях панель навигации должна оставаться черной.
+Кроме того, можно самостоятельно разместить элемент за строкой состояния. Например, если требуется наложить прозрачную строку состояния поверх фотографии, применив еле уловимый темный градиент, чтобы были видны белые значки состояния. + + Для этого задайте для атрибута
+ +android:statusBarColorзначение +@android:color/transparentи настройте флаги окна требуемым образом. Также можно воспользоваться +методом {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} для применения анимации или эффекта постепенного исчезания. ++Примечание. Строка состояния почти всегда должна иметь четкую границу, отделяющую ее от основной панели инструментов, за исключением случаев, когда за этими панелями от края и до края экрана отображается большое количество изображений или мультимедийный контент, а также в случае, когда вы используете градиент, чтобы обеспечить видимость значков. + + +
+ +При настройке панели навигации и строки состояния сделайте их прозрачными либо измените только строку состояния. + Во всех остальных случаях панель навигации должна оставаться черной.
Отдельные представления темы -
Элементы в определениях макета XML могут задавать атрибут
\ No newline at end of file +android:theme, который ссылается на ресурс темы. Этот атрибут изменяет тему для элемента и любых дочерних элементов, что удобно для изменения цветовых палитр темы в определенной области интерфейса.Элементы в определениях макета XML могут задавать атрибут
diff --git a/docs/html-intl/intl/vi/design/material/index.jd b/docs/html-intl/intl/vi/design/material/index.jd new file mode 100644 index 0000000000000..838fd68d12a9e --- /dev/null +++ b/docs/html-intl/intl/vi/design/material/index.jd @@ -0,0 +1,185 @@ +page.title=Material Design cho Android +page.tags=Material,design +page.image=images/cards/design-material-for-android_2x.jpg + +@jd:body + + + +android:theme, который ссылается на ресурс темы. + Этот атрибут изменяет тему для элемента и любых дочерних элементов, +что можно использовать для изменения цветовых палитр темы в определенной области интерфейса. +++ + + + +Tài liệu cho Nhà phát triển
+Tạo ứng dụng với Material Design
+++ + + + +Video
+Giới thiệu Material Design
+++ + + + +Video
+Giấy và Mực: Những vật liệu quan trọng
+++ + + + +Video
+Material Design trong Google I/O App
+Material design là một hướng dẫn toàn diện về thiết kế +trực quan, chuyển động và tương tác giữa nhiều nền tảng và thiết bị. Hiện nay Android có hỗ trợ +những ứng dụng theo phong cách material design. Để sử dụng material design trong ứng dụng Androi của mình, hãy làm theo hướng dẫn nêu +trong đặc tả material design và sử dụng +những thành phần và tính năng mới sẵn có trong Android 5.0 (API mức 21) trở lên.
+ +Android cung cấp những phần tử sau để bạn dựng ứng dụng theo phong cách material design:
+ +
Để biết thêm thông tin về triển khai material design trên Android, hãy xem +Tạo ứng dụng với Material Design.
+ + +Giao diện material mang đến một phong cách mới cho ứng dụng của bạn và các widget hệ thống, cho phép bạn đặt +bảng màu của chúng và hoạt hình mặc định cho phản hồi chạm và chuyển tiếp hoạt động.
+ + +
+ Giao diện material tối
+
+ Giao diện material sáng
+Để biết thêm thông tin, hãy xem phần Sử dụng Giao diện Material +.
+ + +Android cung cấp hai loại widget mới để hiển thị thẻ và danh sách bằng phong cách +và hoạt hình material design:
+ + +
+ Widget RecyclerView mới là một phiên bản có thể ghép nối hơn của ListView
+ có hỗ trợ nhiều kiểu bố trí khác nhau và cải thiện hiệu năng.
+ Widget CardView mới cho phép bạn hiển thị những mẩu thông tin quan trọng bên trong
+ thẻ với diện mạo và cảm nhận nhất quán.
Để biết thêm thông tin, hãy xem phần Tạo Danh sách +và Thẻ.
+ + +Bên cạnh các thuộc tính X và Y, dạng xem trong Android nay có +thêm thuộc tính Z. Thuộc tính mới này biểu diễn độ cao của một dạng xem và sẽ quyết định:
+ +Để biết thêm thông tin, hãy xem phần Định nghĩa +Đổ bóng và Dạng xem Cắt hình.
+ + +API hoạt hình mới cho phép bạn tạo hoạt hình tùy chỉnh cho phản hồi chạm trong điều khiển UI, +thay đổi trạng thái xem và chuyển tiếp hoạt động.
+ +Những API này cho phép bạn:
+ +Hoạt hình phản hồi chạm được tích hợp vào một vài dạng xem tiêu chuẩn, ví dụ như các nút. Các API mới này +cho phép bạn tùy biến những hoạt hình này và thêm chúng vào dạng xem tùy chỉnh của mình.
+ +Để biết thêm thông tin, hãy xem phần Định nghĩa Hoạt hình +Tùy chỉnh.
+ + +Những khả năng mới này của nội dung vẽ được sẽ giúp bạn triển khai các ứng dụng theo phong cách material design:
+ +Để biết thêm thông tin, hãy xem phần Làm việc với +Nội dung Vẽ được.
diff --git a/docs/html-intl/intl/vi/training/material/animations.jd b/docs/html-intl/intl/vi/training/material/animations.jd new file mode 100644 index 0000000000000..e93c99d64508f --- /dev/null +++ b/docs/html-intl/intl/vi/training/material/animations.jd @@ -0,0 +1,550 @@ +page.title=Định nghĩa Hoạt hình Tùy chỉnh + +@jd:body + +Hoạt hình theo phong cách material design phản hồi hành động của người dùng và cung cấp +tính liên tục trực quan khi người dùng tương tác với ứng dụng của bạn. Giao diện material cung cấp một số hoạt hình +mặc định cho các nút và chuyển tiếp hoạt động, và Android 5.0 (API mức 21) và cao hơn cho phép bạn tùy chỉnh +những hoạt hình này và tạo các hoạt hình mới:
+ +Phản hồi chạm trong Material Design đưa ra một xác nhận trực quan tức thời tại +điểm tiếp xúc khi người dùng tương tác với các phần tử UI. Hoạt hình phản hồi chạm mặc định +cho nút sẽ sử dụng lớp {@link android.graphics.drawable.RippleDrawable} mới để chuyển tiếp +giữa các trạng thái khác nhau bằng hiệu ứng gợn sóng.
+ +Trong hầu hết trường hợp, bạn nên áp dụng tính năng này trong tệp XML dạng xem của mình bằng cách chỉ định nền +dạng xem là:
+ +?android:attr/selectableItemBackground cho gợn sóng có giới hạn.?android:attr/selectableItemBackgroundBorderless cho gợn sóng lan ra ngoài
+dạng xem. Hiệu ứng sẽ được vẽ lên và được giới hạn bởi dạng xem mẹ gần nhất có nền
+không rỗng.Lưu ý: selectableItemBackgroundBorderless là một thuộc tính
+mới được giới thiệu trong API mức 21.
Hoặc, bạn có thể định nghĩa {@link android.graphics.drawable.RippleDrawable}
+làm tài nguyên XML bằng cách sử dụng phần tử ripple.
Bạn có thể gán một màu cho các đối tượng {@link android.graphics.drawable.RippleDrawable}. Để thay đổi
+màu phản hồi chạm mặc định, hãy sử dụng thuộc tính android:colorControlHighlight
+của chủ đề.
Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho lớp {@link +android.graphics.drawable.RippleDrawable}.
+ + +Hoạt hình lộ ra đảm bảo tính liên tục trực quan cho người dùng khi bạn hiện hoặc ẩn một nhóm phần tử +UI. Phương thức {@link android.view.ViewAnimationUtils#createCircularReveal +ViewAnimationUtils.createCircularReveal()} cho phép bạn tạo hiệu ứng hoạt hình một vòng tròn cắt hình +để lộ ra hoặc ẩn một dạng xem.
+ +Để lộ ra một dạng xem ẩn trước đó bằng hiệu ứng này:
+ ++// previously invisible view +View myView = findViewById(R.id.my_view); + +// get the center for the clipping circle +int cx = (myView.getLeft() + myView.getRight()) / 2; +int cy = (myView.getTop() + myView.getBottom()) / 2; + +// get the final radius for the clipping circle +int finalRadius = Math.max(myView.getWidth(), myView.getHeight()); + +// create the animator for this view (the start radius is zero) +Animator anim = + ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius); + +// make the view visible and start the animation +myView.setVisibility(View.VISIBLE); +anim.start(); ++ +
Để ẩn một dạng xem hiển thị trước đó bằng hiệu ứng này:
+ +
+// previously visible view
+final View myView = findViewById(R.id.my_view);
+
+// get the center for the clipping circle
+int cx = (myView.getLeft() + myView.getRight()) / 2;
+int cy = (myView.getTop() + myView.getBottom()) / 2;
+
+// get the initial radius for the clipping circle
+int initialRadius = myView.getWidth();
+
+// create the animation (the final radius is zero)
+Animator anim =
+ ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);
+
+// make the view invisible when the animation is done
+anim.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ super.onAnimationEnd(animation);
+ myView.setVisibility(View.INVISIBLE);
+ }
+});
+
+// start the animation
+anim.start();
+
+
+
+Hình 1 - Chuyển tiếp + với những phần tử chung.
+ Để phát lại phim, nhấp vào màn hình thiết bị +Chuyển tiếp hoạt động trong các ứng dụng theo phong cách material design cung cấp kết nối trực quan giữa các trạng thái khác nhau +thông qua chuyển động và chuyển đổi giữa những phần tử hay dùng. Bạn có thể quy định hoạt hình tùy chỉnh cho +các chuyển tiếp ra vào và chuyển tiếp phần tử chung giữa các hoạt động.
+ +Android 5.0 (API mức 21) hỗ trợ những chuyển tiếp ra vào sau:
+ +Bất cứ chuyển tiếp nào mở rộng lớp {@link android.transition.Visibility} đều được hỗ trợ +như một chuyển tiếp vào hoặc ra. Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho lớp +{@link android.transition.Transition}.
+ +Android 5.0 (API mức 21) cũng hỗ trợ những chuyển tiếp phần tử chung này:
+ +Khi bạn cho phép chuyển tiếp hoạt động trong ứng dụng của mình, chuyển tiếp mờ dần chéo cross-fading +mặc định sẽ được kích hoạt giữa các hoạt động ra vào.
+ +
++ Hình 2 - Chuyển tiếp cảnh với một phần tử chung. +
+ +Trước tiên, cho phép chuyển tiếp nội dung cửa sổ bằng thuộc tính android:windowContentTransitions
+khi bạn định nghĩa một kiểu kế thừa từ chủ đề material. Bạn cũng có thể quy định chuyển tiếp
+ra, vào và phần tử chung trong định nghĩa kiểu của mình:
+<style name="BaseAppTheme" parent="android:Theme.Material"> + <!-- enable window content transitions --> + <item name="android:windowContentTransitions">true</item> + + <!-- specify enter and exit transitions --> + <item name="android:windowEnterTransition">@transition/explode</item> + <item name="android:windowExitTransition">@transition/explode</item> + + <!-- specify shared element transitions --> + <item name="android:windowSharedElementEnterTransition"> + @transition/change_image_transform</item> + <item name="android:windowSharedElementExitTransition"> + @transition/change_image_transform</item> +</style> ++ +
Chuyển tiếp change_image_transform trong ví dụ này được định nghĩa như sau:
+<!-- res/transition/change_image_transform.xml --> +<!-- (see also Shared Transitions below) --> +<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> + <changeImageTransform/> +</transitionSet> ++ +
Phần tử changeImageTransform tương ứng với lớp
+{@link android.transition.ChangeImageTransform}. Để biết thêm thông tin, hãy xem tài liệu tham khảo API
+cho {@link android.transition.Transition}.
Thay vào đó, để cho phép chuyển tiếp nội dung cửa sổ trong mã của bạn, hãy gọi phương thức +{@link android.view.Window#requestFeature Window.requestFeature()}:
+ ++// inside your activity (if you did not enable transitions in your theme) +getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); + +// set an exit transition +getWindow().setExitTransition(new Explode()); ++ +
Để quy định chuyển tiếp trong mã của bạn, hãy gọi những phương thức này bằng đối tượng {@link +android.transition.Transition}:
+ +Phương thức {@link android.view.Window#setExitTransition setExitTransition()} và {@link +android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} định nghĩa +chuyển tiếp ra cho hoạt động gọi. Phương thức {@link android.view.Window#setEnterTransition +setEnterTransition()} và {@link android.view.Window#setSharedElementEnterTransition +setSharedElementEnterTransition()} định nghĩa chuyển tiếp vào cho hoạt động được gọi.
+ +Để có đầy đủ hiệu ứng của một chuyển tiếp, bạn phải cho phép chuyển tiếp nội dung cửa sổ trên cả hoạt động +gọi và được gọi. Nếu không, hoạt động gọi sẽ bắt đầu chuyển tiếp ra, +nhưng khi đó bạn sẽ thấy chuyển tiếp cửa sổ (như co giãn và mờ dần).
+ +Để bắt đầu một chuyển tiếp vào ngay khi có thể, hãy sử dụng phương thức +{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} +trên hoạt động được gọi. Nó cho phép bạn có chuyển tiếp vào ấn tượng hơn.
+ +Nếu bạn cho phép chuyển tiếp và đặt chuyển tiếp ra cho một hoạt động, chuyển tiếp sẽ được +kích hoạt khi bạn khởi chạy một hoạt động khác như sau:
+ ++startActivity(intent, + ActivityOptions.makeSceneTransitionAnimation(this).toBundle()); ++ +
Nếu bạn đặt một chuyển tiếp vào cho hoạt động thứ hai, chuyển tiếp này cũng được kích hoạt khi hoạt động
+bắt đầu. Để vô hiệu hoá chuyển tiếp khi bạn bắt đầu một hoạt động khác, hãy cung cấp
+một nhóm tùy chọn null.
Để tạo một hoạt hình chuyển tiếp màn hình giữa hai hoạt động có một phần tử chung:
+ +android:transitionName.
+// get the element that receives the click event
+final View imgContainerView = findViewById(R.id.img_container);
+
+// get the common element for the transition in this activity
+final View androidRobotView = findViewById(R.id.image_small);
+
+// define a click listener
+imgContainerView.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View view) {
+ Intent intent = new Intent(this, Activity2.class);
+ // create the transition animation - the images in the layouts
+ // of both activities are defined with android:transitionName="robot"
+ ActivityOptions options = ActivityOptions
+ .makeSceneTransitionAnimation(this, androidRobotView, "robot");
+ // start the new activity
+ startActivity(intent, options.toBundle());
+ }
+});
+
+
+Đối với các dạng xem động dùng chung mà bạn khởi tạo trong mã của mình, hãy sử dụng phương thức +{@link android.view.View#setTransitionName View.setTransitionName()} để quy định một +tên phần tử chung trong cả hai hoạt động.
+ +Để đảo ngược hoạt hình chuyển tiếp cảnh khi bạn kết thúc hoạt động thứ hai, hãy gọi phương thức +{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} +thay vì {@link android.app.Activity#finish Activity.finish()}.
+ +Để tạo một hoạt hình chuyển tiếp cảnh giữa hai hoạt động có nhiều hơn một phần tử
+chung, hãy định nghĩa các phần tử chung trong cả hai bố trí bằng thuộc tính android:transitionName
+ (hoặc sử dụng phương thức {@link android.view.View#setTransitionName View.setTransitionName()}
+trong cả hai hoạt động), và tạo một đối tượng {@link android.app.ActivityOptions} như sau:
+ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, + Pair.create(view1, "agreedName1"), + Pair.create(view2, "agreedName2")); ++ + +
Hoạt hình theo phong cách material design phụ thuộc vào đường cong làm mẫu hình nội suy thời gian +và chuyển động không gian. Với Android 5.0 (API mức 21) trở lên, bạn có thể định nghĩa đường cong định thời tùy chỉnh và +mẫu hình chuyển động cong cho hoạt hình.
+ +Lớp {@link android.view.animation.PathInterpolator} là một hàm nội suy mới dựa trên đường cong +Bézier hoặc đối tượng {@link android.graphics.Path}. Hàm nội suy này quy định một đường cong chuyển động +trong một hình vuông 1x1, với các điểm neo tại (0,0) và (1,1) cùng các điểm kiểm soát được quy định bằng cách sử dụng +các tham đối của hàm dựng. Bạn cũng có thể định nghĩa một hàm nội suy đường dẫn dưới dạng tài nguyên XML:
+ ++<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" + android:controlX1="0.4" + android:controlY1="0" + android:controlX2="1" + android:controlY2="1"/> ++ +
Hệ thống cung cấp tài nguyên XML cho ba đường cong cơ bản trong đặc tả +material design:
+ +@interpolator/fast_out_linear_in.xml@interpolator/fast_out_slow_in.xml@interpolator/linear_out_slow_in.xmlBạn có thể chuyển một đối tượng {@link android.view.animation.PathInterpolator} tới phương thức {@link +android.animation.Animator#setInterpolator Animator.setInterpolator()}.
+ +Lớp {@link android.animation.ObjectAnimator} có các hàm dựng mới cho phép bạn tạo hiệu ứng hoạt hình +cho các tọa độ dọc theo một đường dẫn bằng hai hoặc nhiều thuộc tính đồng thời. Ví dụ, trình tạo hoạt hình sau +sử dụng một đối tượng {@link android.graphics.Path} để tạo hiệu ứng hoạt hình cho thuộc tính X và Y của một dạng xem:
+ ++ObjectAnimator mAnimator; +mAnimator = ObjectAnimator.ofFloat(view, View.X, View.Y, path); +... +mAnimator.start(); ++ + +
Lớp {@link android.animation.StateListAnimator} cho phép bạn định nghĩa trình tạo hoạt hình để chạy khi +trạng thái của dạng xem thay đổi. Ví dụ sau cho biết cách định nghĩa một {@link +android.animation.StateListAnimator} dưới dạng tài nguyên XML:
+ ++<!-- animate the translationZ property of a view when pressed --> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_pressed="true"> + <set> + <objectAnimator android:propertyName="translationZ" + android:duration="@android:integer/config_shortAnimTime" + android:valueTo="2dp" + android:valueType="floatType"/> + <!-- you could have other objectAnimator elements + here for "x" and "y", or other properties --> + </set> + </item> + <item android:state_enabled="true" + android:state_pressed="false" + android:state_focused="true"> + <set> + <objectAnimator android:propertyName="translationZ" + android:duration="100" + android:valueTo="0" + android:valueType="floatType"/> + </set> + </item> +</selector> ++ +
Để gắn kèm hoạt hình trạng thái dạng xem tùy chỉnh vào một dạng xem, hãy định nghĩa một trình tạo hoạt hình bằng cách sử dụng phần tử
+selector trong một tệp tài nguyên XML như trong ví dụ này, và gán nó cho dạng xem
+của bạn bằng thuộc tính android:stateListAnimator. Để gán một trình tạo hoạt hình danh sách trạng thái
+cho một dạng xem trong mã của bạn, hãy sử dụng phương thức {@link android.animation.AnimatorInflater#loadStateListAnimator
+AnimationInflater.loadStateListAnimator()} và gán trình tạo hoạt hình cho dạng xem của bạn bằng phương thức
+{@link android.view.View#setStateListAnimator View.setStateListAnimator()}.
Khi chủ đề của bạn mở rộng ra chủ đề material, các nút sẽ có hoạt hình Z theo mặc định. Để tránh hành vi
+này trong nút của bạn, hãy đặt thuộc tính android:stateListAnimator thành
+@null.
Lớp {@link android.graphics.drawable.AnimatedStateListDrawable} cho phép bạn tạo các nội dung vẽ được +để hiển thị hoạt hình giữa các thay đổi trạng thái của dạng xem được liên kết. Một số widget hệ thống trong +Android 5.0 sử dụng những hoạt hình này theo mặc định. Ví dụ sau cho biết cách +cách định nghĩa {@link android.graphics.drawable.AnimatedStateListDrawable} dưới dạng tài nguyên XML:
+ ++<!-- res/drawable/myanimstatedrawable.xml --> +<animated-selector + xmlns:android="http://schemas.android.com/apk/res/android"> + + <!-- provide a different drawable for each state--> + <item android:id="@+id/pressed" android:drawable="@drawable/drawableP" + android:state_pressed="true"/> + <item android:id="@+id/focused" android:drawable="@drawable/drawableF" + android:state_focused="true"/> + <item android:id="@id/default" + android:drawable="@drawable/drawableD"/> + + <!-- specify a transition --> + <transition android:fromId="@+id/default" android:toId="@+id/pressed"> + <animation-list> + <item android:duration="15" android:drawable="@drawable/dt1"/> + <item android:duration="15" android:drawable="@drawable/dt2"/> + ... + </animation-list> + </transition> + ... +</animated-selector> ++ + +
Nội dung vẽ được Véc-tơ sẽ co giãn được +mà không làm mất độ sắc nét. Lớp {@link android.graphics.drawable.AnimatedVectorDrawable} +cho phép bạn tạo hiệu ứng hoạt hình các thuộc tính của nội dung vẽ được véc-tơ.
+ +Thường thì bạn định nghĩa nội dung vẽ được véc-tơ hoạt hình theo ba tệp XML:
+ +<vector> trong
+res/drawable/<animated-vector> trong
+res/drawable/<objectAnimator> trong
+res/anim/Nội dung vẽ được véc-tơ hoạt hình có thể tạo hiệu ứng hoạt hình các thuộc tính của phần tử <group> và
+<path>. Phần tử <group> định nghĩa một bộ
+đường dẫn hoặc nhóm phụ và phần tử <path> định nghĩa các đường dẫn sẽ được vẽ.
Khi định nghĩa một nội dung vẽ được véc-tơ mà bạn muốn tạo hiệu ứng hoạt hình, hãy sử dụng thuộc tính android:name
+để gán một tên duy nhất cho các nhóm và đường dẫn, sao cho bạn có thể tham chiếu tới chúng từ các định nghĩa
+trình tạo hoạt hình của mình. Ví dụ:
+<!-- res/drawable/vectordrawable.xml --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:height="64dp" + android:width="64dp" + android:viewportHeight="600" + android:viewportWidth="600"> + <group + android:name="rotationGroup" + android:pivotX="300.0" + android:pivotY="300.0" + android:rotation="45.0" > + <path + android:name="v" + android:fillColor="#000000" + android:pathData="M300,70 l 0,-70 70,70 0,0 -70,70z" /> + </group> +</vector> ++ +
Định nghĩa nội dung vẽ được véc-tơ hoạt hình sẽ tham chiếu tới các nhóm và đường dẫn trong nội dung vẽ được véc-tơ theo +tên của chúng:
+ ++<!-- res/drawable/animvectordrawable.xml --> +<animated-vector xmlns:android="http://schemas.android.com/apk/res/android" + android:drawable="@drawable/vectordrawable" > + <target + android:name="rotationGroup" + android:animation="@anim/rotation" /> + <target + android:name="v" + android:animation="@anim/path_morph" /> +</animated-vector> ++ +
Định nghĩa hoạt hình biểu diễn các đối tượng {@link android.animation.ObjectAnimator} hoặc {@link +android.animation.AnimatorSet}. Trình tạo hoạt hình đầu tiên trong ví dụ này sẽ xoay nhóm +đối tượng 360 độ:
+ ++<!-- res/anim/rotation.xml --> +<objectAnimator + android:duration="6000" + android:propertyName="rotation" + android:valueFrom="0" + android:valueTo="360" /> ++ +
Trình tạo hoạt hình thứ hai trong ví dụ này sẽ đổi dạng đường dẫn của nội dung vẽ được véc-tơ từ hình này sang +hình khác. Cả hai đường dẫn đều phải tương thích với việc đổi dạng: chúng phải có cùng số lệnh +và cùng số lượng tham số cho từng lệnh.
+ ++<!-- res/anim/path_morph.xml --> +<set xmlns:android="http://schemas.android.com/apk/res/android"> + <objectAnimator + android:duration="3000" + android:propertyName="pathData" + android:valueFrom="M300,70 l 0,-70 70,70 0,0 -70,70z" + android:valueTo="M300,70 l 0,-70 70,0 0,140 -70,0 z" + android:valueType="pathType" /> +</set> ++ +
Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho {@link +android.graphics.drawable.AnimatedVectorDrawable}.
diff --git a/docs/html-intl/intl/vi/training/material/compatibility.jd b/docs/html-intl/intl/vi/training/material/compatibility.jd new file mode 100644 index 0000000000000..65e813129704f --- /dev/null +++ b/docs/html-intl/intl/vi/training/material/compatibility.jd @@ -0,0 +1,168 @@ +page.title=Duy trì Tính tương thích + +@jd:body + +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 +chỉ 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 +nhữ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 +với thiết bị đang chạy các bản phát hành Android trước đây.
+ + +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ề +chủ đề cũ hơn trên những thiết bị đang chạy phiên bản Android cũ hơn:
+ +res/values/styles.xml.res/values-v21/styles.xml.Lưu ý: +Nế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, +ứng dụng của bạn sẽ không chạy trên phiên bản Android trước 5.0. +
+ + +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ứ +thuộ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 +Android 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 +bố 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.
+ +Tạo tệp bố trí của bạn cho Android 5.0 (API mức 21) bên trong res/layout-v21/ và
+tệp bố trí thay thế của bạn cho các phiên bản Android cũ hơn trong res/layout/.
+Ví dụ, res/layout/my_activity.xml là một bố trí thay thế cho
+res/layout-v21/my_activity.xml.
Để tránh lặp mã, hãy định nghĩa kiểu của bạn bên trong res/values/, sửa đổi
+các kiểu trong res/values-v21/ cho các API mới và sử dụng kế thừa kiểu, định nghĩa
+kiểu cơ bản trong res/values/ và kế thừa từ những kiểu trong res/values-v21/.
Thư viện Hỗ trợ v7 +r21 và cao hơn gồm những tính năng material design sau:
+ +Theme.AppCompat.Theme.AppCompat.Chủ đề Theme.AppCompat cung cấp các kiểu phong cách material design cho những widget này:
Để 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
+của Android, hãy áp dụng một trong các chủ đề Theme.AppCompat:
+<!-- extend one of the Theme.AppCompat themes --> +<style name="Theme.MyTheme" parent="Theme.AppCompat.Light"> + <!-- customize the color palette --> + <item name="colorPrimary">@color/material_blue_500</item> + <item name="colorPrimaryDark">@color/material_blue_700</item> + <item name="colorAccent">@color/material_green_A200</item> +</style> ++ +
Widget {@link android.support.v7.widget.RecyclerView} và {@link +android.support.v7.widget.CardView} sẵn có trong các phiên bản Android cũ hơn thông qua +Thư viện Hỗ trợ v7 của Android với những hạn chế sau:
+Để 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 +Thư viện Hỗ trợ v7 của Android vào dự án của bạn như một Phần phụ thuộc Gradle:
+ +
+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.+'
+}
+
+
+
+Những tính năng sau chỉ sẵn có trong Android 5.0 (API mức 21) trở lên:
+ +Để 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 +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:
+ +
+// 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
+}
+
+
+Lưu ý: Để quy định ứng dụng của bạn hỗ trợ những phiên bản Android nào,
+hãy sử dụng thuộc tính android:minSdkVersion và android:targetSdkVersion
+trong 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
+thuộc tính android:targetSdkVersion thành 21. Để biết thêm thông tin, hãy xem hướng dẫn
+ <uses-sdk> API
+.
Những khả năng sau của nội dung vẽ được giúp bạn triển khai phong cách material design trong các ứng dụng của mình:
+ +Bài học này cho bạn biết cách sử dụng những tính năng này trong ứng dụng của mình.
+ + +Với Android 5.0 (API mức 21) và cao hơn, bạn có thể nhuộm màu ảnh bitmap và ảnh chín miếng được định nghĩa làm
+mặt nạ alpha. Bạn có thể nhuộm chúng bằng tài nguyên màu hoặc những thuộc tính chủ đề nhằm phân giải thành các tài nguyên
+màu (ví dụ, ?android:attr/colorPrimary). Thông thường, bạn chỉ tạo những tài sản này
+một lần và tô màu tự động cho chúng để khớp với chủ đề của mình.
Bạn có thể áp dụng một màu nhuộm cho đối tượng {@link android.graphics.drawable.BitmapDrawable} hoặc {@link
+android.graphics.drawable.NinePatchDrawable} bằng phương thức {@code setTint()}. Bạn cũng có thể
+đặt màu nhuộm và chế độ trong bố trí của mình bằng các thuộc tính android:tint và
+android:tintMode.
Thư viện Hỗ trợ Android r21 và cao hơn bao gồm lớp {@link +android.support.v7.graphics.Palette}, cho phép bạn trích xuất màu nổi bật từ một hình ảnh. +Lớp này trích xuất những màu nổi bật sau:
+ +Để trích xuất những màu này, hãy chuyển một đối tượng {@link android.graphics.Bitmap} cho phương thức tĩnh +{@link android.support.v7.graphics.Palette#generate Palette.generate()} trong +luồng chạy ngầm nơi bạn tải hình ảnh của mình. Nếu bạn không thể sử dụng luồng đó, hãy gọi phương thức +{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} và +cung cấp một trình nghe.
+ +Bạn có thể truy xuất màu nổi bật từ hình ảnh bằng cách sử dụng các phương thức getter trong lớp
+Palette chẳng hạn như Palette.getVibrantColor.
Để sử dụng lớp {@link android.support.v7.graphics.Palette} trong dự án của mình, hãy thêm +Phần phụ thuộc Gradle sau vào +mô-đun ứng dụng của bạn:
+ +
+dependencies {
+ ...
+ compile 'com.android.support:palette-v7:21.0.0'
+}
+
+
+Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho lớp +{@link android.support.v7.graphics.Palette}.
+ + +Đồ họa Véc-tơ Android
+Trong Android 5.0 (API mức 21) và cao hơn, bạn có thể định nghĩa nội dung vẽ được véc-tơ co giãn mà không làm mất
+độ sắc nét. Bạn chỉ cần một tệp tài sản cho một hình ảnh véc-tơ, đối lập với tệp tài sản cho
+từng mật độ màn hình trong trường hợp hình ảnh bitmap. Để tạo một hình ảnh véc-tơ, bạn định nghĩa chi tiết
+của hình ảnh trong phần tử XML <vector>.
Ví dụ sau định nghĩa hình ảnh véc-tơ có hình một trái tim:
+ ++<!-- res/drawable/heart.xml --> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + <!-- intrinsic size of the drawable --> + android:height="256dp" + android:width="256dp" + <!-- size of the virtual canvas --> + android:viewportWidth="32" + android:viewportHeight="32"> + + <!-- draw a path --> + <path android:fillColor="#8fff" + android:pathData="M20.5,9.5 + c-1.955,0,-3.83,1.268,-4.5,3 + c-0.67,-1.732,-2.547,-3,-4.5,-3 + C8.957,9.5,7,11.432,7,14 + c0,3.53,3.793,6.257,9,11.5 + c5.207,-5.242,9,-7.97,9,-11.5 + C25,11.432,23.043,9.5,20.5,9.5z" /> +</vector> ++ +
Hình ảnh véc-tơ được biểu diễn trong Android dưới dạng đối tượng {@link android.graphics.drawable.VectorDrawable}
+. Để biết thêm thông tin về cú pháp pathData, hãy xem tham chiếu Đường dẫn SVG. Để biết thêm thông tin
+về việc tạo hiệu ứng hoạt hình các thuộc tính của nội dung vẽ được véc-tơ, hãy xem
+Tạo Hiệu ứng Hoạt hình Nội dung vẽ được Véc-tơ.
Để tạo ứng dụng với material design:
+ +Bạn có thể thêm nhiều tính năng material design vào ứng dụng của mình trong khi vẫn duy trì tính tương thích với +các phiên bản Android trước 5.0. Để biết thêm thông tin, hãy xem phần +Duy trì Tính tương thích.
+ +Để cập nhật một ứng dụng hiện tại bằng material design, hãy cập nhật các bố trí của bạn theo +hướng dẫn về material design. Cũng nhớ kết hợp chiều sâu, phản hồi chạm và +hoạt hình.
+ +Nếu bạn tạo một ứng dụng mới với các tính năng của material design, hướng dẫn về material design cung cấp cho bạn một +khuôn khổ thiết kế súc tích. Làm theo hướng dẫn đó và sử dụng chức năng mới trong khuôn khổ Android +để thiết kế và phát triển ứng dụng của bạn.
+ + +Để áp dụng chủ đề material trong ứng dụng của mình, hãy quy định một kiểu kế thừa từ
+android:Theme.Material:
+<!-- res/values/styles.xml --> +<resources> + <!-- your theme inherits from the material theme --> + <style name="AppTheme" parent="android:Theme.Material"> + <!-- theme customizations --> + </style> +</resources> ++ +
Chủ đề material cung cấp các widget hệ thống được cập nhật để bạn có thể đặt bảng màu và +hoạt hình mặc định cho phản hồi chạm và chuyển tiếp hoạt động. Để biết thêm chi tiết, hãy xem phần +Sử dụng Chủ đề Material.
+ + +Bên cạnh việc áp dụng và tùy chỉnh chủ đề material, bố trí của bạn cần tuân thủ +hướng dẫn về material design. Khi thiết kế +bố trí của bạn, hãy đặc biệt chú ý tới điều sau đây:
+ +Dạng xem có thể đổ bóng và giá trị độ cao của một dạng xem
+xác định kích cỡ bóng và thứ tự vẽ của nó. Để đặt độ cao của một dạng xem, hãy sử dụng thuộc tính
+android:elevation trong bố trí của bạn:
+<TextView + android:id="@+id/my_textview" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/next" + android:background="@color/white" + android:elevation="5dp" /> ++ +
Thuộc tính translationZ mới cho phép bạn tạo những hoạt hình phản ánh các thay đổi
+tạm thời về độ cao của một dạng xem. Thay đổi về độ cao có thể hữu ích khi
+phản hồi lại các cử chỉ
+chạm.
Để biết thêm chi tiết, hãy xem phần Định nghĩa +Đổ bóng và Dạng xem Cắt hình.
+ + +{@link android.support.v7.widget.RecyclerView} là một phiên bản dễ ghép nối hơn của {@link +android.widget.ListView} có hỗ trợ các kiểu bố trí khác nhau và cung cấp những cải tiến về hiệu năng. +{@link android.support.v7.widget.CardView} cho phép bạn hiện các mẩu thông tin bên trong thẻ với +một diện mạo nhất quán giữa các ứng dụng. Ví dụ về mã sau đây minh họa cách thêm +{@link android.support.v7.widget.CardView} vào bố trí của bạn:
+ ++<android.support.v7.widget.CardView + android:id="@+id/card_view" + android:layout_width="200dp" + android:layout_height="200dp" + card_view:cardCornerRadius="3dp"> + ... +</android.support.v7.widget.CardView> ++ +
Để biết thêm thông tin, hãy xem phần Tạo Danh sách +và Thẻ.
+ + +Android 5.0 (API mức 21) bao gồm các API mới để tạo hoạt hình tùy chỉnh trong ứng dụng của bạn. +Ví dụ, bạn có thể cho phép chuyển tiếp hoạt động và định nghĩa một chuyển tiếp ra bên trong một +hoạt động:
+ +
+public class MyActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ // enable transitions
+ getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
+ setContentView(R.layout.activity_my);
+ }
+
+ public void onSomeButtonClicked(View view) {
+ getWindow().setExitTransition(new Explode());
+ Intent intent = new Intent(this, MyOtherActivity.class);
+ startActivity(intent,
+ ActivityOptions
+ .makeSceneTransitionAnimation(this).toBundle());
+ }
+}
+
+
+Khi bạn bắt đầu một hoạt động khác từ hoạt động này, chuyển tiếp ra được kích hoạt.
+ +Để tìm hiểu thêm về các API hoạt hình mới, hãy xem Định nghĩa Hoạt hình Tùy chỉnh.
diff --git a/docs/html-intl/intl/vi/training/material/index.jd b/docs/html-intl/intl/vi/training/material/index.jd new file mode 100644 index 0000000000000..44b74e1826fdf --- /dev/null +++ b/docs/html-intl/intl/vi/training/material/index.jd @@ -0,0 +1,61 @@ +page.title=Material Design cho Nhà phát triển +page.type=design +page.image=images/cards/material_2x.png +page.metaDescription=Tìm hiểu cách áp dụng material design cho ứng dụng của bạn. + + +@jd:body + +Material design là một hướng dẫn toàn diện về thiết kế trực quan, chuyển động +và tương tác giữa nhiều nền tảng và thiết bị. Để sử dụng material design trong ứng dụng Androi của mình, hãy làm theo hướng dẫn +mô tả trong +đặc tả +material design và sử dụng những thành phần và tính năng mới sẵn có trong Android 5.0 +(API mức 21).
+ +Bài học này sẽ cho bạn thấy cách tạo ứng dụng material design bằng những phần tử sau:
+ +Bài học này cũng hướng dẫn cho bạn cách duy trì tính tương thích với các phiên bản Android trước +5.0 (API mức 21) khi bạn sử dụng các tính năng về material design trong ứng dụng của mình.
+ +Để tạo danh sách và thẻ phức tạp bằng phong cách material design trong ứng dụng của mình, bạn có thể sử dụng widget +{@link android.support.v7.widget.RecyclerView} và {@link android.support.v7.widget.CardView} +.
+ + +Widget {@link android.support.v7.widget.RecyclerView} là một phiên bản nâng cao và linh hoạt hơn +của {@link android.widget.ListView}. Widget này là một bộ chứa để hiển thị các tập dữ liệu +lớn có thể được cuộn rất hiệu quả bằng cách duy trì một số dạng xem hữu hạn. Sử dụng widget +{@link android.support.v7.widget.RecyclerView} khi bạn có các bộ sưu tập dữ liệu với phần tử +thay đổi vào thời gian chạy dựa vào hành động của người dùng hoặc sự kiện mạng.
+ +Lớp {@link android.support.v7.widget.RecyclerView} đơn giản hóa việc hiển thị và xử lý +các tập dữ liệu lớn bằng cách cung cấp:
+ +Bạn cũng có sự linh hoạt để định nghĩa các trình quản lý bố trí tùy chỉnh và hoạt hình cho widget {@link +android.support.v7.widget.RecyclerView}.
+ +
+
+Hình 1. Widget RecyclerView.
+
Để sử dụng widget {@link android.support.v7.widget.RecyclerView}, bạn phải quy định một +trình điều hợp và trình quản lý bố trí. Để tạo một trình điều hợp, hãy mở rộng lớp {@link +android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter}. Chi tiết +của triển khai phụ thuộc vào các chỉ định của tập dữ liệu của bạn và kiểu dạng xem. Để biết thêm +thông tin, hãy xem ví dụ bên dưới.
+ +
+
+Hình 2 - Danh sách với RecyclerView.
+
Trình quản lý bố trí sẽ định vị các dạng xem mục bên trong {@link +android.support.v7.widget.RecyclerView} và xác định thời điểm sử dụng lại các dạng xem mục +không còn hiển thị trước người dùng nữa. Để sử dụng lại (hoặc tái chế) một dạng xem, trình quản lý bố +trí có thể yêu cầu trình điều hợp thay thế nội dung của dạng xem bằng một phần tử khác từ tập dữ liệu. Tái chế +dạng xem bằng cách này sẽ cải thiện hiệu năng nhờ tránh tạo những dạng xem không cần thiết hoặc thực hiện +tra cứu {@link android.app.Activity#findViewById findViewById()} tốn kém.
+ +{@link android.support.v7.widget.RecyclerView} cung cấp những trình quản lý bố trí dựng sẵn sau:
+ +Để tạo một trình quản lý bố trí tùy chỉnh, hãy mở rộng lớp {@link +android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager}.
+ +Hoạt hình để thêm và loại bỏ mục được kích hoạt theo mặc định trong {@link +android.support.v7.widget.RecyclerView}. Để tùy chỉnh những hoạt hình này, hãy mở rộng lớp +{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} và sử dụng +phương thức {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} +.
+ +Ví dụ đoạn mã sau minh họa cách thêm +{@link android.support.v7.widget.RecyclerView} vào bố trí:
+ ++<!-- A RecyclerView with some commonly used attributes --> +<android.support.v7.widget.RecyclerView + android:id="@+id/my_recycler_view" + android:scrollbars="vertical" + android:layout_width="match_parent" + android:layout_height="match_parent"/> ++ +
Sau khi thêm widget {@link android.support.v7.widget.RecyclerView} vào bố trí của bạn, +hãy lấy một núm điều tác tới đối tượng, kết nối nó với một trình quản lý bố trí và gắn kèm một trình điều hợp cho dữ liệu +cần được hiển thị:
+ +
+public class MyActivity extends Activity {
+ private RecyclerView mRecyclerView;
+ private RecyclerView.Adapter mAdapter;
+ private RecyclerView.LayoutManager mLayoutManager;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.my_activity);
+ mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
+
+ // use this setting to improve performance if you know that changes
+ // in content do not change the layout size of the RecyclerView
+ mRecyclerView.setHasFixedSize(true);
+
+ // use a linear layout manager
+ mLayoutManager = new LinearLayoutManager(this);
+ mRecyclerView.setLayoutManager(mLayoutManager);
+
+ // specify an adapter (see also next example)
+ mAdapter = new MyAdapter(myDataset);
+ mRecyclerView.setAdapter(mAdapter);
+ }
+ ...
+}
+
+
+Trình điều hợp cung cấp truy cập vào các mục trong tập dữ liệu của bạn, tạo dạng xem cho mục và +thay thế nội dung của một số dạng xem bằng mục dữ liệu mới khi mục ban đầu không còn +hiển thị. Ví dụ đoạn mã sau đây thể hiện việc triển khai đơn giản của tập dữ liệu bao gồm +một mảng xâu được hiển thị bằng widget {@link android.widget.TextView}:
+ +
+public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
+ private String[] mDataset;
+
+ // Provide a reference to the views for each data item
+ // Complex data items may need more than one view per item, and
+ // you provide access to all the views for a data item in a view holder
+ public static class ViewHolder extends RecyclerView.ViewHolder {
+ // each data item is just a string in this case
+ public TextView mTextView;
+ public ViewHolder(TextView v) {
+ super(v);
+ mTextView = v;
+ }
+ }
+
+ // Provide a suitable constructor (depends on the kind of dataset)
+ public MyAdapter(String[] myDataset) {
+ mDataset = myDataset;
+ }
+
+ // Create new views (invoked by the layout manager)
+ @Override
+ public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
+ int viewType) {
+ // create a new view
+ View v = LayoutInflater.from(parent.getContext())
+ .inflate(R.layout.my_text_view, parent, false);
+ // set the view's size, margins, paddings and layout parameters
+ ...
+ ViewHolder vh = new ViewHolder(v);
+ return vh;
+ }
+
+ // Replace the contents of a view (invoked by the layout manager)
+ @Override
+ public void onBindViewHolder(ViewHolder holder, int position) {
+ // - get element from your dataset at this position
+ // - replace the contents of the view with that element
+ holder.mTextView.setText(mDataset[position]);
+
+ }
+
+ // Return the size of your dataset (invoked by the layout manager)
+ @Override
+ public int getItemCount() {
+ return mDataset.length;
+ }
+}
+
+
+
+
++Hình 3. Ví dụ thẻ. +
+{@link android.support.v7.widget.CardView} mở rộng lớp {@link android.widget.FrameLayout} và +cho phép bạn hiển thị thông tin bên trong các thẻ có diện mạo nhất quán trên khắp nền tảng. Widget {@link +android.support.v7.widget.CardView} có thể có đổ bóng và góc bo tròn.
+ +Để tạo một thẻ có bóng, hãy sử dụng thuộc tính card_view:cardElevation.
+{@link android.support.v7.widget.CardView} sử dụng độ cao thực và đổ bóng động trên Android 5.0
+(API mức 21) và cao hơn, và quay lại triển khai đổ bóng theo lập trình trên các phiên bản cũ hơn.
+Để biết thêm thông tin, hãy xem phần Duy trì
+Tính tương thích.
Sử dụng những thuộc tính sau để tùy chỉnh diện mạo của widget +{@link android.support.v7.widget.CardView}:
+ +card_view:cardCornerRadius
+.CardView.setRadius.card_view:cardBackgroundColor
+.Ví dụ về mã sau đây cho bạn thấy cách thêm widget {@link android.support.v7.widget.CardView} +trong bố trí của mình:
+ ++<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" + xmlns:card_view="http://schemas.android.com/apk/res-auto" + ... > + <!-- A CardView that contains a TextView --> + <android.support.v7.widget.CardView + xmlns:card_view="http://schemas.android.com/apk/res-auto" + android:id="@+id/card_view" + android:layout_gravity="center" + android:layout_width="200dp" + android:layout_height="200dp" + card_view:cardCornerRadius="4dp"> + + <TextView + android:id="@+id/info_text" + android:layout_width="match_parent" + android:layout_height="match_parent" /> + </android.support.v7.widget.CardView> +</LinearLayout> ++ +
Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho {@link android.support.v7.widget.CardView}.
+ + +Widget {@link android.support.v7.widget.RecyclerView} và {@link android.support.v7.widget.CardView} +là bộ phận của Thư viện Hỗ trợ +v7. Để sử dụng những widget này trong dự án của mình, hãy thêm những +Phụ thuộc Gradle này vào mô-đun +ứng dụng của bạn:
+ +
+dependencies {
+ ...
+ compile 'com.android.support:cardview-v7:21.0.+'
+ compile 'com.android.support:recyclerview-v7:21.0.+'
+}
+
diff --git a/docs/html-intl/intl/vi/training/material/shadows-clipping.jd b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
new file mode 100644
index 0000000000000..e9091f289fcb1
--- /dev/null
+++ b/docs/html-intl/intl/vi/training/material/shadows-clipping.jd
@@ -0,0 +1,133 @@
+page.title=Định nghĩa Đổ bóng và Dạng xem Cắt hình
+
+@jd:body
+
+Material design giới thiệu độ cao cho phần tử UI. Độ cao giúp người dùng hiểu được +tầm quan trọng tương đối của từng phần tử và tập chung sự chú ý của họ vào tác vụ hiện có.
+ +Độ cao của một dạng xem, được biểu diễn bằng thuộc tính Z, sẽ xác định diện mạo trực quan của +bóng đổ: dạng xem có giá trị Z cao hơn sẽ đổ bóng lớn hơn, mềm hơn. Dạng xem có giá trị Z cao hơn sẽ che khuất dạng xem +có giá trị Z thấp hơn; tuy nhiên, giá trị Z của một dạng xem không ảnh hưởng tới kích cỡ của dạng xem.
+ +Đổ bóng được vẽ bởi dạng xem mẹ của dạng xem cao hơn, do vậy nó phụ thuộc vào tiêu chuẩn cắt dạng xem, +được cắt bởi dạng xem mẹ theo mặc định.
+ +Độ cao cũng hữu ích trong việc tạo hoạt hình ở nơi widget tạm thời dâng cao hơn +mặt phẳng dạng xem khi thực hiện một hành động nào đó.
+ +Để biết thêm thông tin về độ cao trong material design, hãy xem +Đối tượng +trong không gian 3D.
+ + +Giá trị Z của một dạng xem có hai thành phần: + +
Z = elevation + translationZ
+Hình 1 - Đổ bóng cho các độ cao dạng xem khác nhau.
+ +Để đặt độ cao của dạng xem trong một định nghĩa bố trí, hãy sử dụng thuộc tính android:elevation
+. Để đặt độ cao của dạng xem trong mã của một hoạt động, hãy sử dụng phương thức
+{@link android.view.View#setElevation View.setElevation()}.
Để đặt độ dịch của dạng xem, hãy sử dụng phương thức {@link android.view.View#setTranslationZ +View.setTranslationZ()}.
+ +Các phương thức {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} và {@link +android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} mới cho phép +bạn dễ dàng tạo hiệu ứng hoạt hình cho độ cao của dạng xem. Để biết thêm thông tin, hãy xem tài liệu tham khảo API cho +{@link android.view.ViewPropertyAnimator} và hướng dẫn cho nhà phát triển về Hoạt hình Thuộc tính +.
+ +Bạn cũng có thể sử dụng {@link android.animation.StateListAnimator} để +quy định những hoạt hình này bằng cách khai báo. Điều này đặc biệt hữu ích đối với trường hợp các thay đổi +trạng thái sẽ kích hoạt hoạt hình như khi người dùng nhấn một nút. Để biết thêm thông tin, hãy xem phần +Tạo Hiệu ứng Hoạt hình Thay đổi Trạng thái Xem.
+ +Giá trị Z được đo bằng dp (điểm ảnh độc lập với mật độ).
+ + +Các giới hạn nội dung vẽ được của nền dạng xem sẽ xác định hình dạng mặc định của bóng. +Viền biểu thị hình dạng ngoài của một đối tượng đồ họa và định nghĩa vùng +gợn sóng cho phản hồi chạm.
+ +Hãy cân nhắc dạng xem sau được định nghĩa với nội dung vẽ được làm nền:
+ ++<TextView + android:id="@+id/myview" + ... + android:elevation="2dp" + android:background="@drawable/myrect" /> ++ +
Nội dung vẽ được làm nền được định nghĩa là một hình chữ nhật với góc bo tròn:
+ ++<!-- res/drawable/myrect.xml --> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <solid android:color="#42000000" /> + <corners android:radius="5dp" /> +</shape> ++ +
Dạng xem sẽ tạo đổ bóng có góc bo tròn do nội dung vẽ được làm nền sẽ định nghĩa +viền của dạng xem. Khi cung cấp viền tùy chỉnh, nó ghi đè hình dạng mặc định của bóng đổ dạng xem.
+ +Để định nghĩa viền tùy chỉnh cho một dạng xem trong mã của bạn:
+ +
Bạn có thể tạo viền hình bầu dục và hình chữ nhật có góc bo tròn bằng cách sử dụng các phương thức trong lớp
+{@link android.graphics.Outline}. Trình cung cấp viền mặc định cho dạng xem sẽ lấy viền
+từ nền của dạng xem. Để ngăn dạng xem đổ bóng, hãy đặt trình cung cấp viền của nó
+thành null.
Dạng xem cắt hình cho phép bạn dễ dàng thay đổi hình dạng của một dạng xem. Bạn có thể cắt hình dạng xem để
+nhất quán với các phần tử thiết kế khác hoặc để thay đổi hình dạng của một dạng xem để đáp ứng lại thông tin đầu vào của người dùng.
+Bạn có thể cắt một dạng xem thành vùng viền của nó bằng cách sử dụng phương thức {@link android.view.View#setClipToOutline
+View.setClipToOutline()} hoặc thuộc tính android:clipToOutline. Chỉ
+viền là hình chữ nhật, hình tròn và hình chữ nhật bo tròn mới hỗ trợ cắt hình như được xác định bởi phương thức
+{@link android.graphics.Outline#canClip Outline.canClip()}.
Để cắt dạng xem thành hình dạng của một nội dung vẽ được, hãy đặt nội dung vẽ được làm nền của dạng xem +(như minh họa bên trên) và gọi phương thức {@link android.view.View#setClipToOutline View.setClipToOutline()} +.
+ +Cắt dạng xem là một thao tác tốn kém, vì vậy đừng tạo hiệu ứng hoạt hình cho hình dạng bạn sử dụng để +cắt dạng xem. Để đạt được hiệu ứng này, hãy sử dụng hoạt hình Hiệu ứng Lộ ra.
diff --git a/docs/html-intl/intl/vi/training/material/theme.jd b/docs/html-intl/intl/vi/training/material/theme.jd new file mode 100644 index 0000000000000..9c46b5d18cabc --- /dev/null +++ b/docs/html-intl/intl/vi/training/material/theme.jd @@ -0,0 +1,131 @@ +page.title=Sử dụng Chủ đề Material + +@jd:body + +Chủ đề material mới cung cấp:
+ +Bạn có thể tùy chỉnh diện mạo của chủ đề material +theo nhận diện thương hiệu của mình bằng một bảng màu mà bạn kiểm soát. Bạn có thể nhuộm màu thanh hành động và +thanh trạng thái bằng cách sử dụng các thuộc tính chủ đề như minh họa trong Hình 3.
+ +Widget hệ thống có một thiết kế mới và hoạt hình phản hồi chạm. Bạn có thể tùy chỉnh +bảng màu, hoạt hình phản hồi chạm và chuyển tiếp hoạt động cho ứng dụng của mình.
+ +Chủ đề material được định nghĩa là:
+ +@android:style/Theme.Material (phiên bản tối)@android:style/Theme.Material.Light (phiên bản sáng)@android:style/Theme.Material.Light.DarkActionBarĐể biết danh sách các kiểu material mà bạn có thể sử dụng, hãy xem tài liệu tham chiếu API cho +{@link android.R.style R.style}.
+ + +
+ Hình 1. Giao diện material tối
+
+ Hình 2. Giao diện material sáng
++Lưu ý: Chủ đề material chỉ sẵn có trong Android 5.0 (API mức 21) trở +lên. Thư viện Hỗ trợ v7 +cung cấp chủ đề mang phong cách material design cho một số widget và hỗ trợ tùy chỉnh +bảng màu. Để biết thêm thông tin, hãy xem phần +Duy trì Tính tương thích. +
+ + +Để tùy chỉnh các màu cơ bản của chủ đề cho phù hợp với nhãn hiệu của bạn, hãy định nghĩa +màu tùy chỉnh của bạn bằng thuộc tính chủ đề khi bạn kế thừa từ chủ đề material:
+ ++<resources> + <!-- inherit from the material theme --> + <style name="AppTheme" parent="android:Theme.Material"> + <!-- Main theme colors --> + <!-- your app branding color for the app bar --> + <item name="android:colorPrimary">@color/primary</item> + <!-- darker variant for the status bar and contextual app bars --> + <item name="android:colorPrimaryDark">@color/primary_dark</item> + <!-- theme UI controls like checkboxes and text fields --> + <item name="android:colorAccent">@color/accent</item> + </style> +</resources> ++ +
++Hình 3. Tùy chỉnh chủ đề material.
+Chủ đề material cho phép bạn dễ dàng tùy chỉnh thanh trạng thái để bạn có thể quy định
+màu cho phù hợp với nhãn hiệu của mình và đảm bảo đủ độ tương phản để hiển thị biểu tượng trạng thái màu trắng. Để
+đặt màu tùy chỉnh cho thanh trạng thái, hãy sử dụng thuộc tính android:statusBarColor khi
+bạn mở rộng chủ đề material. Theo mặc định, android:statusBarColor kế thừa
+giá trị của android:colorPrimaryDark.
Bạn cũng có thể tự vẽ phía sau thanh trạng thái. Ví dụ, nếu bạn muốn hiển thị
+thanh trạng thái trong suốt trên một ảnh chụp, với graddien hơi tối để đảm bảo biểu tượng
+trạng thái màu trắng nhìn thấy được. Để làm vậy, hãy đặt thuộc tính android:statusBarColor thành
+@android:color/transparent và điều chỉnh cờ cửa sổ nếu cần. Bạn cũng có thể
+sử dụng phương thức {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} cho hoạt hình
+hoặc hiệu ứng mờ dần.
+Lưu ý: Thanh trạng thái cần luôn có một bản vẽ rõ ràng từ +thanh công cụ chính, trừ trường hợp bạn hiển thị nội dung hình ảnh hoặc phương tiện phong phú từ cạnh tới cạnh phía sau +những thanh này và khi bạn sử dụng gradient để đảm bảo rằng các biểu tượng vẫn nhìn thấy được. +
+ +Khi bạn tùy chỉnh thanh điều hướng và trạng thái, hãy khiến cả hai đều trong suốt hoặc chỉ sửa đổi +thanh trạng thái. Thanh điều hướng nên giữ lại màu đen trong mọi trường hợp khác.
+ + +Những phần tử trong định nghĩa bố trí XML có thể quy định thuộc tính android:theme để
+tham chiếu tới một tài nguyên chủ đề. Thuộc tính này sửa đổi chủ đề cho phần tử và bất cứ
+phần tử con nào, điều này có ích đối với việc thay đổi bảng màu của chủ đề trong một phần cụ thể
+của giao diện.
有关在 Android 上实现材料设计的详细信息,请参阅创建材料设计应用。 +
有关在 Android 上实现材料设计的详细信息,请参阅使用材料设计创建应用。
材料主题提供了新的应用样式和系统小工具,让您能够为触摸反馈以及活动转换设置配色工具以及默认动画。 +
材料主题提供了新的应用样式和系统小工具,让您能够为触摸反馈以及 Activity 转换设置配色工具以及默认动画。
@@ -136,7 +135,7 @@ Android 现在已支持材料设计应用。动画 API 让您可为 UI 控件中的触摸反馈、视图状态更改以及活动转换创建自定义动画。 +
动画 API 让您可为 UI 控件中的触摸反馈、视图状态更改以及 Activity 转换创建自定义动画。
这些 API 的作用是:
@@ -149,7 +148,7 @@ Android 现在已支持材料设计应用。 使用循环显示动画隐藏和显示视图。材料设计中的动画将为用户提供操作反馈并在用户与您的应用进行互动时提供视觉连续性。材料主题将为按钮与操作行为转换提供一些默认动画,而 Android 5.0 及以上的版本(API 级别 21)可让您定制这些动画,同时也可创建新动画:
+材料设计中的动画将为用户提供操作反馈并在用户与您的应用进行互动时提供视觉连续性。 +材料主题将为按钮与操作行为转换提供一些默认动画,而 Android 5.0(API 级别 21)及更高版本可让您定制这些动画,同时也可创建新动画: + +
材料设计中的触摸反馈可在用户与 UI 元素互动时,在接触点上提供即时视觉确认。适用于按钮的默认触摸动画使用全新 {@link android.graphics.drawable.RippleDrawable} 类别,以波纹效果实现不同状态间的转换。
+材料设计中的触摸反馈可在用户与 UI 元素互动时,在接触点上提供即时视觉确认。 +适用于按钮的默认触摸动画使用全新 {@link android.graphics.drawable.RippleDrawable} 类别,以波纹效果实现不同状态间的转换。 -
在大多数情况下,您应以下列方式指定视图背景,在您的视图 XML 中应用此功能:
+ + +在大多数情况下,您应以下列方式指定视图背景,在您的视图 XML 中应用此功能: +
?android:attr/selectableItemBackground 指定有界的波纹?android:attr/selectableItemBackgroundBorderless 指定越界的波纹?android:attr/selectableItemBackground 指定有界的波纹。?android:attr/selectableItemBackgroundBorderless 指定越过视图边界的波纹。
+它将由一个非空背景的视图的最近父项所绘制和设定边界。
+注意:selectableItemBackgroundBorderless 是 API 级别 21 中推出的新属性。
注意:selectableItemBackgroundBorderless 是 API 级别 21 中推出的新属性。
+
此外,您可利用 ripple 元素将 {@link android.graphics.drawable.RippleDrawable} 定义为一个 XML 资源。
此外,您可利用 ripple 元素将 {@link android.graphics.drawable.RippleDrawable}
+定义为一个 XML 资源。
您可以为 {@link android.graphics.drawable.RippleDrawable} 对象指定一种颜色。如果要改变默认触摸反馈颜色,请使用主题的 android:colorControlHighlight 属性。
您可以为 {@link android.graphics.drawable.RippleDrawable} 对象指定一种颜色。如果要改变默认触摸反馈颜色,请使用主题的 android:colorControlHighlight
+属性。
+
如果要了解更多信息,请参阅 {@link android.graphics.drawable.RippleDrawable} 类别的 API 参考文档。
+如果要了解更多信息,请参阅 {@link +android.graphics.drawable.RippleDrawable} 类别的 API 参考文档。
当您显示或隐藏一组 UI 元素时,揭露动画可为用户提供视觉连续性。{@link android.view.ViewAnimationUtils#createCircularReveal ViewAnimationUtils.createCircularReveal()} 方法让您能够为裁剪区域添加动画以揭露或隐藏视图。
+当您显示或隐藏一组 UI +元素时,揭露动画可为用户提供视觉连续性。{@link android.view.ViewAnimationUtils#createCircularReveal +ViewAnimationUtils.createCircularReveal()} 方法让您能够为裁剪区域添加动画以揭露或隐藏视图。 +
如果要使用此效果揭露之前不可见的视图:
@@ -122,19 +139,29 @@ anim.start();图 1 - 拥有共享元素的转换。
- 如果要重新播放影片,请单击设备屏幕 +图 1 - 拥有共享元素的转换。 +
+ 如果要重新播放影片,请点击设备屏幕材料设计应用中的操作行为转换透过通用元素之间的移动和转换提供不同状态之间的视觉连接。您可为进入、退出以及操作行为之间的共享元素转换指定定制动画。
+材料设计应用中的操作行为转换透过通用元素之间的移动和转换提供不同状态之间的视觉连接。 +您可为进入、退出转换以及操作行为之间的共享元素转换指定定制动画。 +
Android 5.0(API 级别 21)支持这些进入与退出转换:
@@ -142,10 +169,12 @@ anim.start();任何扩展 {@link android.transition.Visibility} 类别的转换均将获得进入或退出转换支持。如果要了解更多信息,请参阅 {@link android.transition.Transition} 类别的 API 参考文档。
+任何扩展 {@link android.transition.Visibility} 类别的转换均将获得进入或退出转换支持。 +如果要了解更多信息,请参阅 +{@link android.transition.Transition} 类别的 API 参考文档。
Android 5.0(API 级别 21)也支持这些共享元素转换:
@@ -156,7 +185,8 @@ anim.start();当您在您的应用中启用操作行为转换,默认的交叉淡入淡出转换将在进入与退出操作行为之间激活。
+当您在您的应用中启用操作行为转换,默认的交叉淡入淡出转换将在进入与退出操作行为之间激活。 +
@@ -165,7 +195,9 @@ anim.start();
首先,在定义您从材料主题继承的风格时,使用 android:windowContentTransitions 属性启用窗口内容转换。您也可在您的风格定义中指定进入、退出以及共享元素转换:
首先,在定义您从材料主题继承的风格时,使用 android:windowContentTransitions
+属性启用窗口内容转换。您也可在您的风格定义中指定进入、退出以及共享元素转换:
+
<style name="BaseAppTheme" parent="android:Theme.Material"> @@ -194,9 +226,12 @@ anim.start(); </transitionSet>-
changeImageTransform 元素与 {@link android.transition.ChangeImageTransform} 类别相对应。如果要了解更多信息,请参阅 {@link android.transition.Transition} 的 API 参考文档。
changeImageTransform 元素与
+{@link android.transition.ChangeImageTransform} 类别相对应。如果要了解更多信息,请参阅 {@link android.transition.Transition} 的 API
+参考。
如果要在您的代码中启用窗口内容转换,请调用 {@link android.view.Window#requestFeature Window.requestFeature()} 方法:
+如果要在您的代码中启用窗口内容转换,请调用 +{@link android.view.Window#requestFeature Window.requestFeature()} 方法:
// inside your activity (if you did not enable transitions in your theme) @@ -206,33 +241,47 @@ getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); getWindow().setExitTransition(new Explode());-
如果要在您的代码中指定转换,请以 {@link android.transition.Transition} 对象调用这些方法:
+如果要在您的代码中指定转换,请以 {@link +android.transition.Transition} 对象调用这些方法:
{@link android.view.Window#setExitTransition setExitTransition()} 与 {@link android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 方法定义正在调用的操作行为的退出转换。{@link android.view.Window#setEnterTransition setEnterTransition()} 与 {@link android.view.Window#setSharedElementEnterTransition setSharedElementEnterTransition()} 方法定义被调用的操作行为的进入转换。
+{@link android.view.Window#setExitTransition setExitTransition()} 和 {@link +android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 方法定义正在调用的操作行为的退出转换。 +{@link android.view.Window#setEnterTransition +setEnterTransition()} 与 {@link android.view.Window#setSharedElementEnterTransition +setSharedElementEnterTransition()} 方法定义被调用的操作行为的进入转换。
-如果要取得转换的完整效果,您必须在正在调用以及被调用的操作行为上启用窗口内容转换。否则,正在调用的操作行为将开始退出转换,但是您将会看到窗口转换(例如缩放或淡入淡出)
+如果要取得转换的完整效果,您必须在正在调用以及被调用的操作行为上启用窗口内容转换。 +否则,正在调用的操作行为将开始退出转换,但是您将会看到窗口转换(例如缩放或淡入淡出)。 +
-如果要尽快开始进入转换,请在被调用的操作行为上使用 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} 方法。这可以让您实现更生动的进入转换。
+如果要尽快开始进入转换,请针对被调用的操作行为使用 +{@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} +方法。这可以让您实现更生动的进入转换。
-如果您启用转换并且为一个操作行为设置退出转换,那么在您启动另一个操作行为时,转换将以下列方式激活:
+如果您启用转换并且为一个操作行为设置退出转换,那么在您启动另一个操作行为时,转换将以下列方式激活: +
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
-如果您已为第二个操作行为设置进入转换,则转换也将会在操作行为开始时激活。如果要在您开始另一个操作行为时禁用转换,请提供 null 选项包。
如果您已为第二个操作行为设置进入转换,则转换也将会在操作行为启动时激活。
+如果要在您启动另一个操作行为时禁用转换,请提供
+null 选项包。
如果要在两个拥有共享元素的操作行为之间安排屏幕转换动画:
@@ -240,8 +289,10 @@ startActivity(intent,android:transitionName 属性对两个布局中的共享元素指定一个通用名称。android:transitionName 属性对两个布局中的共享元素指定一个通用名称。
@@ -266,13 +317,20 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
});
-对于在您的代码中生成的共享动态视图,请使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法在两个操作行为中指定一个通用元素名称。
+对于在您的代码中生成的共享动态视图,请使用 +{@link android.view.View#setTransitionName View.setTransitionName()} 方法在两个操作行为中指定一个通用元素名称。 +
-如果要在完成第二项操作行为时反转场景转换动画,请调用 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} 方法而非 {@link android.app.Activity#finish Activity.finish()}。
+如果要在完成第二项操作行为时反转场景转换动画,请调用 +{@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} +方法而非 {@link android.app.Activity#finish Activity.finish()}。
-如果要在两个拥有多过一个共享元素的操作行为之间安排场景转换动画,请以 android:transitionName 属性(或在两个操作行为中使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法)定义共享元素,并以下列方式创建一个 {@link android.app.ActivityOptions} 对象:
如果要在两个拥有多个共享元素的操作行为之间安排场景转换动画,请以 android:transitionName
+属性(或在两个操作行为中使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法)定义共享元素,并以下列方式创建一个 {@link android.app.ActivityOptions} 对象:
+
+
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, @@ -283,9 +341,14 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,使用曲线运动
-材料设计中的动画利用曲线进行时间内插与空间移动模式。利用 Android 5.0(API 级别 21)及更高版本,您可为动画定义定制时间曲线以及曲线运动模式。
+材料设计中的动画利用曲线实现时间内插与空间移动模式。 +利用 Android 5.0(API 级别 21)及更高版本,您可为动画定义定制时间曲线以及曲线运动模式。 +
-{@link android.view.animation.PathInterpolator} 类别是一个基于贝塞尔曲线或 {@link android.graphics.Path} 对象的全新插入器。此插入器在一个 1x1 的正方形内指定一个运动曲线,定位点位于 (0,0) 以及 (1,1),而控制点则使用构造函数参数指定。您也可以将路径插入器定义为一个 XML 资源:
+{@link android.view.animation.PathInterpolator} 类别是一个基于贝塞尔曲线或 {@link android.graphics.Path} 对象的全新插入器。 +此插入器在一个 1x1 的正方形内指定一个运动曲线,定位点位于 (0,0) 以及 (1,1),而控制点则使用构造函数参数指定。 + +您也可以将路径插入器定义为一个 XML 资源:
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" @@ -295,7 +358,8 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, android:controlY2="1"/>-系统将为材料设计规范中的三种基本曲线提供 XML 资源:
+系统将为材料设计规范中的三种基本曲线提供 XML 资源: +
@interpolator/fast_out_linear_in.xml@interpolator/linear_out_slow_in.xml您可以将一个 {@link android.view.animation.PathInterpolator} 对象传递给 {@link android.animation.Animator#setInterpolator Animator.setInterpolator()} 方法。
+您可以将一个 {@link android.view.animation.PathInterpolator} 对象传递给 {@link +android.animation.Animator#setInterpolator Animator.setInterpolator()} 方法。
-{@link android.animation.ObjectAnimator} 类别拥有新的构造函数,可让您一次使用两个或更多属性在路径上为坐标添加动画。例如,下列的动画使用 {@link android.graphics.Path} 对象为视图的 X 和 Y 属性添加动画:
+{@link android.animation.ObjectAnimator} 类别拥有新的构造函数,可让您一次使用两个或更多属性在路径上为坐标添加动画。 +例如,下列动画使用 {@link android.graphics.Path} 对象为视图的 X 和 Y 属性添加动画: +
ObjectAnimator mAnimator; @@ -317,7 +384,9 @@ mAnimator.start();为视图状态改变添加动画
-{@link android.animation.StateListAnimator} 类别让您能够定义视图状态改变时运行的动画。下列示例显示如何将 {@link android.animation.StateListAnimator} 定义为一个 XML 资源:
+{@link android.animation.StateListAnimator} 类别让您能够定义视图状态改变时运行的动画。 +下列示例显示如何将 {@link +android.animation.StateListAnimator} 定义为一个 XML 资源:
<!-- animate the translationZ property of a view when pressed --> @@ -345,11 +414,21 @@ mAnimator.start(); </selector>-如果要将定制视图状态动画附加至一个视图,请依照此示例使用 XML 资源文件中的
+selector元素定义一个动画,并使用android:stateListAnimator属性将此动画分配给您的视图。如果要将一个状态列表动画分配给您的代码内的一个视图,请使用 {@link android.animation.AnimatorInflater#loadStateListAnimator AnimationInflater.loadStateListAnimator()} 方法,并以{@link android.view.View#setStateListAnimator View.setStateListAnimator()} 方法将动画分配给您的视图。如果要将定制视图状态动画附加至一个视图,请依照此示例使用 XML 资源文件中的 +
-selector元素定义一个动画,并使用android:stateListAnimator属性将此动画分配给您的视图。 +如果要将一个状态列表动画分配给您的代码内的一个视图,请使用 {@link android.animation.AnimatorInflater#loadStateListAnimator +AnimationInflater.loadStateListAnimator()} 方法,并以 +{@link android.view.View#setStateListAnimator View.setStateListAnimator()} 方法将动画分配给您的视图。 +当您的主题扩展材料主题,在默认情况下按钮将拥有一个 Z 动画。如果要避免您的按钮出现这类行为,请将
+android:stateListAnimator属性设置为@null。当您的主题扩展材料主题时,在默认情况下按钮将拥有一个 Z 动画。如果要避免您的按钮出现这类行为,请将
-android:stateListAnimator属性设置为 +@null。 +{@link android.graphics.drawable.AnimatedStateListDrawable} 类别让您能够创建图片,显示相关视图之间的状态变化。Android 5.0 中的某些系统小组件在默认情况下使用这些动画。下列示例显示如何将 {@link android.graphics.drawable.AnimatedStateListDrawable} 定义为一个 XML 资源:
+{@link android.graphics.drawable.AnimatedStateListDrawable} 类别让您能够创建图片,显示相关视图之间的状态变化。 +Android 5.0 中的某些系统小组件在默认情况下使用这些动画。 +下列示例显示如何将 {@link android.graphics.drawable.AnimatedStateListDrawable} 定义为一个 XML 资源: +
<!-- res/drawable/myanimstatedrawable.xml --> @@ -379,19 +458,28 @@ mAnimator.start();为矢量图片添加动画
-矢量图片可在不丢失定义的情况下缩放。{@link android.graphics.drawable.AnimatedVectorDrawable} 类别可让您为矢量图片的属性添加动画。
+矢量图片可在不丢失定义的情况下缩放。 +{@link android.graphics.drawable.AnimatedVectorDrawable} +类别可让您为矢量图片的属性添加动画。
您通常可以在 3 个 XML 文件中定义添加动画的矢量图片:
res/drawable/ 中拥有 <vector> 元素的矢量图片res/drawable/ 中拥有 <animated-vector> 元素且已添加动画的矢量图片res/anim/ 中拥有 <objectAnimator> 元素的一个或多个对象动画res/drawable/ 中拥有 <vector> 元素的矢量图片res/drawable/ 中拥有 <animated-vector> 元素且已添加动画的矢量图片res/anim/ 中拥有 <objectAnimator> 元素的一个或多个对象动画添加动画的矢量图片可为 <group> 以及 <path> 元素的属性添加动画。<group> 元素定义路径集或子组,而 <path> 元素则定义将绘制的路径。
添加动画的矢量图片可为 <group> 以及
+<path> 元素的属性添加动画。<group> 元素定义路径集或子组,而 <path> 元素则定义将绘制的路径。
+
当您定义一个您想要添加动画的矢量图片时,请使用 android:name 属性给这些群组和路径指定一个唯一名称,以便让您能够从您的动画定义中参考这些群组或路径。例如:
当您定义一个您想要添加动画的矢量图片时,请使用 android:name
+属性给这些群组和路径指定一个唯一名称,以便让您能够从您的动画定义中引用这些群组或路径。
+例如:
<!-- res/drawable/vectordrawable.xml --> @@ -413,7 +501,8 @@ mAnimator.start(); </vector>-
已添加动画的矢量图片定义指的是矢量图片内按名称分类的群组和路径:
+已添加动画的矢量图片定义按名称引用矢量图片内的群组和路径: +
<!-- res/drawable/animvectordrawable.xml --> @@ -428,7 +517,9 @@ mAnimator.start(); </animated-vector>-
动画定义代表着 {@link android.animation.ObjectAnimator} 或 {@link android.animation.AnimatorSet} 对象。此示例中的首个动画为目标群组进行了 360 度旋转:
+动画定义代表着 {@link android.animation.ObjectAnimator} 或 {@link +android.animation.AnimatorSet} 对象。此示例中的第一个动画将目标群组旋转 360 度: +
<!-- res/anim/rotation.xml -->
@@ -439,7 +530,9 @@ mAnimator.start();
android:valueTo="360" />
-此示例中的第二个动画为矢量图片的路径进行变形。两个路径均需可兼容变形操作:两个路径均需拥有相同数量的指令,而且每个指令均需拥有相同数量的参数。
+此示例中的第二个动画对矢量图片的路径进行变形。 +两个路径均需可兼容变形操作:两个路径均需拥有相同数量的指令,而且每个指令均需拥有相同数量的参数。 +
<!-- res/anim/path_morph.xml --> @@ -453,4 +546,5 @@ mAnimator.start(); </set>-
如果要了解更多信息,请参阅 {@link android.graphics.drawable.AnimatedVectorDrawable} 的 API 参考文档。
\ No newline at end of file +如果要了解更多信息,请参阅 {@link +android.graphics.drawable.AnimatedVectorDrawable} 的 API 参考文档。
diff --git a/docs/html-intl/intl/zh-cn/training/material/compatibility.jd b/docs/html-intl/intl/zh-cn/training/material/compatibility.jd index 6cf228e16b845..aa23d4b5e6141 100644 --- a/docs/html-intl/intl/zh-cn/training/material/compatibility.jd +++ b/docs/html-intl/intl/zh-cn/training/material/compatibility.jd @@ -20,42 +20,63 @@ page.title=维护兼容性 -有些材料设计功能(例如材料主题和定制操作行为转换)仅在 Android 5.0(API 级别 21)及更高版本中提供。不过,您可为您的应用进行设计,使应用在支持材料设计的设备上运行时可使用这些功能,且同时能够与运行早期版本 Android 的设备兼容。
+有些材料设计功能(例如材料主题和定制操作行为转换)仅在 Android 5.0(API 级别 21)及更高版本中提供。 +不过,您可为您的应用进行设计,使应用在支持材料设计的设备上运行时可使用这些功能,且同时能够与运行早期版本 Android 的设备兼容。 + +
您可为您的应用进行配置,使应用能够在支持它的设备上使用材料主题,并且能够在运行早期版本 Android 的设备上还原至早期版本的主题:
+您可对您的应用进行配置,使应用能够在支持它的设备上使用材料主题,并且能够在运行早期版本 Android 的设备上还原至早期版本的主题: +
res/values/styles.xml 中的早期版本主题(例如 Holo)继承的主题。res/values-v21/styles.xml 中的材料主题继承且拥有相同名称的主题。res/values/styles.xml 中的早期版本主题(例如 Holo)继承的主题。res/values-v21/styles.xml 中的材料主题继承且拥有相同名称的主题。请注意:如果您的应用使用材料主题,但没有以这方式提供备用主题,您的应用将无法在 Android 5.0 之前的 Android 版本上运行。 +
注意:如果您的应用使用材料主题,但没有以这方式提供备用主题,您的应用将无法在 Android 5.0 之前的 Android 版本上运行。 + +
如果您根据材料设计指导方针设计的布局没有使用 Android 5.0(API 级别 21)所推出的新 XML 属性,这些布局将能够在早期版本 Android 上运行。或者,您也可以提供备用布局。您也可以提供备用布局以定制应用在早期版本 Android 上的呈现方式。
+如果您根据材料设计指导方针设计的布局没有使用 Android 5.0(API 级别 21)所推出的新 XML 属性,这些布局将能够在早期版本的 Android 上运行。 -
您可在 res/layout-v21/ 内创建用于 Android 5.0(API 级别 21)的布局文件,同时也可在 res/layout/ 内创建用于早期版本 Android 的备用布局文件。例如,res/layout/my_activity.xml 是 res/layout-v21/my_activity.xml 的备用布局。
为避免代码重复,请在 res/values/ 内定义您的风格,在 res/values-v21/ 内为新 API 修改风格,以及使用风格继承(即:在 res/values/ 内定义基础风格,然后在 res/values-v21/ 内继承这些风格)。
您可在 res/layout-v21/ 内创建用于 Android 5.0(API 级别 21)的布局文件,同时也可在 res/layout/ 内创建用于早期版本 Android 的备用布局文件。例如,res/layout/my_activity.xml 是
+res/layout-v21/my_activity.xml 的备用布局。
+
+
为避免代码重复,请在 res/values/ 内定义您的风格,在 res/values-v21/ 内为新 API 修改风格,以及使用风格继承(即:在 res/values/ 内定义基础风格,然后在 res/values-v21/ 内继承这些风格)。
+
+
v7 支持内容库 r21 及更高版本包括下列材料设计功能:
+v7 支持内容库 +r21 及更高版本包括下列材料设计功能:
Theme.AppCompat 主题时可取得适用于一些系统小组件的材料设计风格。Theme.AppCompat 主题中拥有配色工具主题属性。Theme.AppCompat 主题时可取得适用于一些系统小组件的材料设计风格。
+Theme.AppCompat 主题中拥有配色工具主题属性。
+如果要利用 Android v7 支持内容库取得材料设计风格以及定制配色工具,请应用其中一个 Theme.AppCompat 主题:
如果要利用 Android v7 支持内容库取得材料设计风格以及定制配色工具,请应用其中一个 Theme.AppCompat 主题:
+
<!-- extend one of the Theme.AppCompat themes --> @@ -85,18 +107,23 @@ page.title=维护兼容性 </style>-
{@link android.support.v7.widget.RecyclerView} 以及 {@link android.support.v7.widget.CardView} 小组件可通过 Android v7 支持内容库提供给早期版本 Android,但有如下限制:
+{@link android.support.v7.widget.RecyclerView} 以及 {@link +android.support.v7.widget.CardView} 小组件可通过 Android v7 支持内容库提供给早期版本 Android,但有如下限制: +
如果要在 Android 5.0(API 级别 21)之前的 Android 版本使用这些功能,请将 Android v7 支持内容库作为 Gradle 依赖关系包括在您的项目中:
+如果要在 Android 5.0(API 级别 21)之前的 Android 版本中使用这些功能,请将 +Android v7 支持内容库作为 Gradle 依赖项包括在您的项目中:
dependencies {
@@ -120,7 +147,9 @@ dependencies {
如果要保留与早期版本 Android 的兼容性,请您在运行时检查系统 {@link android.os.Build.VERSION#SDK_INT version},然后再为下列的任何一个功能调用 API:
+如果要保留与早期版本 Android 的兼容性,请您在运行时检查系统 {@link +android.os.Build.VERSION#SDK_INT version},然后再为下列的任何一个功能调用 API: +
// Check if we're running on Android 5.0 or higher
@@ -131,4 +160,9 @@ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
}
-请注意:如果要指定您的应用所支持的 Android 版本,请使用您的清单文件中的 android:minSdkVersion 以及 android:targetSdkVersion 属性。如果要在 Android 5.0 内使用材料设计功能,请将 android:targetSdkVersion 属性设置为 21。如果要了解更多信息,请参阅 <uses-sdk> API 指南。
注意:如果要指定您的应用所支持的 Android 版本,请使用您的清单文件中的 android:minSdkVersion 以及 android:targetSdkVersion
+属性。
+如果要在 Android 5.0 内使用材料设计功能,请将 android:targetSdkVersion 属性设置为 21。
+如果要了解更多信息,请参阅
+<uses-sdk> API
+指南。
利用 Android 5.0(API 级别 21)及更高版本,您可为位图以及定义为 Alpha 蒙版的点九图着色。您可使用颜色资源或分解为颜色资源(例如 ?android:attr/colorPrimary)的主题属性为其着色。通常,您只有一次机会创建这些资产并自动为其上色以符合您的主题。
利用 Android 5.0(API 级别 21)及更高版本,您可为位图以及定义为 Alpha 蒙版的点九图着色。
+您可使用颜色资源或分解为颜色资源(例如 ?android:attr/colorPrimary)的主题属性为其着色。
+通常,您只有一次机会创建这些资产并自动为其上色以符合您的主题。
+
您可利用 {@code setTint()} 方法为 {@link android.graphics.drawable.BitmapDrawable} 或 {@link android.graphics.drawable.NinePatchDrawable} 对象着色。您也可以利用 android:tint 以及 android:tintMode 属性设置您的布局中的着色颜色和模式。
您可利用 {@code setTint()} 方法为 {@link android.graphics.drawable.BitmapDrawable} 或 {@link
+android.graphics.drawable.NinePatchDrawable} 对象着色。您也可以利用 android:tint 以及
+android:tintMode 属性设置您的布局中的着色颜色和模式。
+
Android 支持内容库 r21 及更高版本包括 {@link android.support.v7.graphics.Palette} 类别,可让您从图像萃取突出颜色。此类别将萃取下列突出颜色:
+Android 支持内容库 r21 及更高版本包括 {@link +android.support.v7.graphics.Palette} 类别,可让您从图像萃取突出颜色。此类别将萃取下列突出颜色: +
如果要萃取这些颜色,请将 {@link android.graphics.Bitmap} 对象传递给位于您上载图像的背景线程的 {@link android.support.v7.graphics.Palette#generate Palette.generate()} 静态方法。如果您无法使用此线程,请调用 {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 方法并提供一个侦听程序。
+如果要萃取这些颜色,请将 {@link android.graphics.Bitmap} 对象传递给位于您上载图像的背景线程的 +{@link android.support.v7.graphics.Palette#generate Palette.generate()} 静态方法。 +如果您无法使用此线程,请调用 +{@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 方法并提供一个侦听程序。 +
-您可使用 Palette 类别(例如 Palette.getVibrantColor)中的 getter 方法从图像检索突出颜色。
您可使用
+Palette 类别(例如 Palette.getVibrantColor)中的 getter 方法从图像检索突出颜色。
如果要使用您项目中的 {@link android.support.v7.graphics.Palette} 类别,请将下列 Gradle 依赖关系添加至您的应用模块:
+如果要在项目中使用 {@link android.support.v7.graphics.Palette} 类别,请将下列 +Gradle 依赖项添加至您的应用模块: +
dependencies {
...
- compile 'com.android.support:palette-v7:21.0.+'
+ compile 'com.android.support:palette-v7:21.0.0'
}
-如果要了解更多信息,请参阅 {@link android.support.v7.graphics.Palette} 类别的 API 参考文档。
+如果要了解更多信息,请参阅{@link android.support.v7.graphics.Palette} +类别的 API 参考文档。
Android 矢量图形
在 Android 5.0(API 级别 21)及更高版本中,您可定义矢量图片,而且图片可在不丢失定义的情况下缩放。您只需一个资产文件即可创建一个矢量图像,而位图图像则需要为每个屏幕密度提供一个资产文件。如果要创建一个矢量图像,请您在 <vector> XML 元素中定义形状的详情。
在 Android 5.0(API 级别 21)及更高版本中,您可定义矢量图片,而且图片可在不损失清晰度的情况下缩放。
+您只需一个资产文件即可创建一个矢量图像,而位图图像则需要为每个屏幕密度提供一个资产文件。
+如果要创建一个矢量图像,请您在 <vector> XML 元素中定义形状的详情。
+
下列示例以心形定义一个矢量图像:
@@ -102,4 +120,7 @@ href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px"> </vector> -矢量图像在 Android 中以 {@link android.graphics.drawable.VectorDrawable} 对象表示。如果要了解更多有关 pathData 语法的信息,请参阅 SVG 路径参考文档。如果要了解更多有关为矢量图片属性添加动画的信息,请参阅为矢量图片添加动画。
矢量图像在 Android 中以 {@link android.graphics.drawable.VectorDrawable}
+对象表示。如果要了解更多有关 pathData 语法的信息,请参阅 SVG 路径参考。如果要了解更多有关为矢量图片属性添加动画的信息,请参阅为矢量图片添加动画。
+
+
您可将多个材料设计功能添加至您的应用,同时维护与 Android 5.0 之前的 Android 版本的兼容性。如果要了解更多信息,请参阅维护兼容性。
+您可将多个材料设计功能添加至您的应用,同时保持与 Android 5.0 之前的 Android 版本的兼容性。 +如果要了解更多信息,请参阅 +保持兼容性。
如果要更新现有应用以纳入材料设计,请遵循材料设计指导方针更新您的布局。同时也须确保纳入深度、触摸反馈和动画。
+如果要更新现有应用以纳入材料设计,请遵循材料设计指导方针更新您的布局。 +同时也须确保纳入深度、触摸反馈和动画。 +
如果您要使用材料设计功能创建新应用,材料设计指导方针将为您提供一个紧密结合的设计框架。请遵循这些指导方针并使用 Android 框架中的新功能来设计与开发您的应用。
+如果您要使用材料设计功能创建新应用,材料设计指导方针将为您提供一个紧密结合的设计框架。 +请遵循这些指导方针并使用 Android +框架中的新功能来设计与开发您的应用。
如果要在您的应用中使用材料主题,请指定一个从 android:Theme.Material 继承的风格:
如果要在您的应用中使用材料主题,请指定一个从
+android:Theme.Material 继承的风格:
<!-- res/values/styles.xml --> @@ -65,12 +72,16 @@ page.title=入门指南 </resources>-
材料主题提供更新的系统小组件,让您能够为触摸反馈以及操作行为转换设置配色工具以及默认动画。有关更多详情,请参阅使用材料主题。
+材料主题提供更新的系统小组件,让您能够为触摸反馈以及操作行为转换设置配色工具以及默认动画。 +有关更多详情,请参阅使用材料主题。 +
除了应用及定制材料主题,您的布局同时也应符合材料设计指导方针。设计布局时,请特别注意下列几点:
+除了应用及定制材料主题,您的布局同时也应符合材料设计指导方针。 +设计布局时,请特别注意下列几点: +
视图可透射阴影,而视图的高度值将决定其阴影的大小以及其显示顺序。如果要设置视图的高度,请使用您的布局中的 android:elevation 属性:
视图可透射阴影,而视图的高度值将决定其阴影的大小以及其显示顺序。
+如果要设置视图的高度,请使用您的布局中的
+android:elevation 属性:
<TextView
@@ -95,14 +108,22 @@ page.title=入门指南
android:elevation="5dp" />
-新的 translationZ 属性可让您创建反映出视图高度临时变化的动画。高度变化可在响应触摸手势时发挥作用。
新的 translationZ 属性可让您创建反映出视图高度临时变化的动画。
+高度变化可在响应触摸手势时发挥作用。
-
有关更多详情,请参阅定义阴影与裁剪视图。
+ + +有关更多详情,请参阅定义阴影与裁剪视图。 +
{@link android.support.v7.widget.RecyclerView} 是 {@link android.widget.ListView} 的可插入版本,支持不同布局类型,具有更高性能。{@link android.support.v7.widget.CardView} 让您能够展示卡片内的各种信息并且在各种应用中实现一致的呈现方式。下列代码示例将展示如何将 {@link android.support.v7.widget.CardView} 包括在您的布局中:
+{@link android.support.v7.widget.RecyclerView} 是 {@link +android.widget.ListView} 的可插入版本,支持不同布局类型,具有更高性能。 +{@link android.support.v7.widget.CardView} 让您能够展示卡片内的各种信息并且在各种应用中实现一致的呈现方式。 +下列代码示例将展示如何将 +{@link android.support.v7.widget.CardView} 包括在您的布局中:
<android.support.v7.widget.CardView @@ -114,12 +135,15 @@ page.title=入门指南 </android.support.v7.widget.CardView>-
如果要了解更多信息,请参阅创建列表与卡片。
+如需了解详细信息,请参阅创建列表和卡片。 +
Android 5.0(API 级别 21)包括新 API,可用于在您的应用中创建定制动画。例如,您可启用操作行为转换并定义操作行为内的退出转换:
+Android 5.0(API 级别 21)包括新 API,可用于在您的应用中创建定制动画。例如,您可启用操作行为转换并定义操作行为内的退出转换: + +
public class MyActivity extends Activity {
@@ -142,6 +166,6 @@ public class MyActivity extends Activity {
}
-当您从此操作行为开始另一个操作行为时,退出转换将被激活。
+当您从此操作行为启动另一个操作行为时,退出转换将被激活。
-如果要了解有关新动画 API 的更多详情,请参阅定义定制动画。
\ No newline at end of file +如果要了解有关新动画 API 的更多详情,请参阅定义定制动画。
diff --git a/docs/html-intl/intl/zh-cn/training/material/index.jd b/docs/html-intl/intl/zh-cn/training/material/index.jd index 0a968df9b1c91..dea14839ad8dc 100644 --- a/docs/html-intl/intl/zh-cn/training/material/index.jd +++ b/docs/html-intl/intl/zh-cn/training/material/index.jd @@ -1,21 +1,26 @@ -page.title=使用材料设计创建应用 -page.type=design -page.image=images/material.png +page.title=面向开发者的材料设计 +page.type=设计 +page.image=images/cards/material_2x.png page.metaDescription=学习如何将材料设计运用到您的应用中。 + @jd:body材料设计是专为设计适用于多个平台和设备的视觉、移动与互动效果而制定的综合指南。如果要在您的 Android 应用中使用材料设计,请遵循材料设计规范内所述的指导方针,并使用 Android 5.0(API 级别 21)所提供的新组件与功能。
+材料设计是专为设计适用于多个平台和设备的视觉、运动与互动效果而制定的综合指南。 +如果要在您的 Android 应用中使用材料设计,请遵循材料设计规范内所述的指导方针,并使用 Android 5.0(API 级别 21)所提供的新组件与功能。 + + + +
本课程将向您介绍如何利用下列元素创建材料设计应用:
@@ -27,7 +32,8 @@ page.metaDescription=学习如何将材料设计运用到您的应用中。本课程也将向您展示在您的应用中使用材料设计功能时应如何维护与 Android 5.0(API 级别 21)之前的 Android 版本的兼容性。
+本课程也将向您展示在您的应用中使用材料设计功能时应如何保持与 Android +5.0(API 级别 21)之前的 Android 版本的兼容性。
如果要在您的应用中使用材料设计风格创建复杂列表与卡片,您可使用 {@link android.support.v7.widget.RecyclerView} 以及 {@link android.support.v7.widget.CardView} 小组件。
+如果要在您的应用中使用材料设计风格创建复杂列表与卡片,您可使用 +{@link android.support.v7.widget.RecyclerView} 以及 {@link android.support.v7.widget.CardView} +小组件。
{@link android.support.v7.widget.RecyclerView} 小组件比 {@link android.widget.ListView} 更高级且更具灵活性。此小组件是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常有效的滚动操作。如果您有数据收集任务,且在任务运行过程中其元素将因用户操作或网络事件而发生改变,则请使用 {@link android.support.v7.widget.RecyclerView} 小组件。
+{@link android.support.v7.widget.RecyclerView} 小组件比 {@link android.widget.ListView} 更高级且更具灵活性。 +此小组件是一个用于显示庞大数据集的容器,可通过保持有限数量的视图进行非常有效的滚动操作。 +如果您有数据集合,其中的元素将因用户操作或网络事件而发生改变,请使用 +{@link android.support.v7.widget.RecyclerView} 小组件。 +
-{@link android.support.v7.widget.RecyclerView} 类别将通过提供下列功能简化庞大数据集的显示与处理:
+{@link android.support.v7.widget.RecyclerView} 类别将通过提供下列功能简化庞大数据集的显示与处理: +
您也可灵活选择如何为 {@link android.support.v7.widget.RecyclerView} 小组件定义定制布局管理器与动画。
+您也可灵活选择如何为 {@link +android.support.v7.widget.RecyclerView} 小组件定义定制布局管理器与动画。
图 1.RecyclerView 小组件。
如果要使用 {@link android.support.v7.widget.RecyclerView} 小组件,您必须指定一个适配器和一个布局管理器。如果要创建一个适配器,请扩展 {@link android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 类别。实现的详情将取决于数据集的具体信息以及视图的类型。如果要了解更多信息,请参阅下列示例。
+如果要使用 {@link android.support.v7.widget.RecyclerView} 小组件,您必须指定一个适配器和一个布局管理器。 +如果要创建一个适配器,请扩展 {@link +android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 类别。实现的详情将取决于数据集的具体信息以及视图的类型。 +如果要了解更多信息,请参阅下列示例。 +
@@ -49,25 +61,37 @@ page.title=创建列表与卡片
布局管理器将确定 {@link android.support.v7.widget.RecyclerView} 内各项目视图的位置并决定何时重新使用用户已不可见的项目视图。如果要重新使用(或重复使用)一个视图,布局管理器可能会要求适配器以数据集中的另一个元素替换视图的内容。以此方式重复使用视图将可避免创建不必要的视图或执行成本高昂的 {@link android.app.Activity#findViewById findViewById()} 查找,从而改善性能。
+布局管理器将确定 {@link +android.support.v7.widget.RecyclerView} 内各项目视图的位置并决定何时重新使用用户已不可见的项目视图。 +如果要重新使用(或重复使用)一个视图,布局管理器可能会要求适配器以数据集中的另一个元素替换视图的内容。 +以此方式重复使用视图将可避免创建不必要的视图或执行成本高昂的 {@link android.app.Activity#findViewById findViewById()} 查找,从而改善性能。 + +
{@link android.support.v7.widget.RecyclerView} 提供这些内置布局管理器:
如果要创建一个定制布局管理器,请扩展 {@link android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 类别。
+如果要创建一个定制布局管理器,请扩展 {@link +android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 类别。
{@link android.support.v7.widget.RecyclerView} 在默认情况下启用增添与删除项目的动画。如果要定制这些动画,请扩展 {@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 类别并使用 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} 方法。
+{@link +android.support.v7.widget.RecyclerView} 在默认情况下启用增添与删除项目的动画。如果要定制这些动画,请扩展 +{@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 类别并使用 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} +方法。 +
下列代码示例将展示如何将 {@link android.support.v7.widget.RecyclerView} 添加至布局:
+下列代码示例将展示如何将 +{@link android.support.v7.widget.RecyclerView} 添加至布局:
<!-- A RecyclerView with some commonly used attributes -->
@@ -78,7 +102,9 @@ page.title=创建列表与卡片
android:layout_height="match_parent"/>
-将 {@link android.support.v7.widget.RecyclerView} 小组件添加至您的布局后,立即获取对象图柄并将其连接至布局管理器,同时附加一个适配器以便显示数据:
+将 {@link android.support.v7.widget.RecyclerView} 小组件添加至您的布局后,立即获取对象图柄并将其连接至布局管理器,同时附加一个适配器以便显示数据: + +
public class MyActivity extends Activity {
@@ -108,7 +134,10 @@ public class MyActivity extends Activity {
}
-适配器可让您存取数据集中的项目,为项目创建视图,并且在原始项目不再可见时以新数据项目替换视图的某些内容。下列代码示例将展示一个简单的实现,目标为一个包含使用 {@link android.widget.TextView} 小组件显示的字符串阵列的数据集:
+适配器可让您存取数据集中的项目,为项目创建视图,并且在原始项目不再可见时以新数据项目替换视图的某些内容。 + +下列代码示例将展示一个简单的实现,目标为一个包含使用 {@link android.widget.TextView} 小组件显示的字符串阵列的数据集: +
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@@ -171,19 +200,29 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
创建卡片
-{@link android.support.v7.widget.CardView} 扩展 {@link android.widget.FrameLayout} 类别并让您能够显示卡片内的信息,这些信息在整个平台中拥有一致的呈现方式。{@link android.support.v7.widget.CardView} 小组件可拥有阴影和圆角。
+{@link android.support.v7.widget.CardView} 扩展 {@link android.widget.FrameLayout} 类别并让您能够显示卡片内的信息,这些信息在整个平台中拥有一致的呈现方式。{@link
+android.support.v7.widget.CardView} 小组件可拥有阴影和圆角。
+
-如果要使用阴影创建卡片,请使用 card_view:cardElevation 属性。{@link android.support.v7.widget.CardView} 在 Android 5.0(API 级别 21)及更高版本中使用真实高度与动态阴影,而在早期的 Android 版本中则返回编程阴影实现。如果要了解更多信息,请参阅维护兼容性。
+如果要使用阴影创建卡片,请使用 card_view:cardElevation 属性。{@link android.support.v7.widget.CardView} 在 Android 5.0(API 级别 21)及更高版本中使用真实高度与动态阴影,而在早期的 Android 版本中则返回编程阴影实现。如需了解详细信息,请参阅保持兼容性
-
使用这些属性定制 {@link android.support.v7.widget.CardView} 小组件的外观:
+
+
+
+
+使用这些属性定制
+{@link android.support.v7.widget.CardView} 小组件的外观:
card_view:cardCornerRadius 属性。card_view:cardCornerRadius
+属性。CardView.setRadius 方法。card_view:cardBackgroundColor 属性。card_view:cardBackgroundColor
+属性。下列代码示例将展示如何将 {@link android.support.v7.widget.CardView} 小组件包括在您的布局中:
+下列代码示例将展示如何将 {@link android.support.v7.widget.CardView} +小组件包括在您的布局中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -207,12 +246,16 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
</LinearLayout>
-如果要了解更多信息,请参阅 {@link android.support.v7.widget.CardView} 的 API 参考文档。
+如果要了解更多信息,请参阅 {@link android.support.v7.widget.CardView} 的 API 参考。
-{@link android.support.v7.widget.RecyclerView} 与 {@link android.support.v7.widget.CardView} 小组件为 v7 支持内容库的一部分。如果要在您的项目中使用这些小组件,请将这些 Gradle 依赖关系添加至您的应用模块:
+{@link android.support.v7.widget.RecyclerView} 与 {@link android.support.v7.widget.CardView} +小组件为 v7 支持内容库的一部分。 +如果要在您的项目中使用这些小组件,请将这些 +Gradle 依赖项添加至您的应用模块: +
dependencies {
@@ -220,4 +263,4 @@ dependencies {
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
}
-
\ No newline at end of file
+
diff --git a/docs/html-intl/intl/zh-cn/training/material/shadows-clipping.jd b/docs/html-intl/intl/zh-cn/training/material/shadows-clipping.jd
index da58be6443e9f..e063d33d4da4c 100644
--- a/docs/html-intl/intl/zh-cn/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/zh-cn/training/material/shadows-clipping.jd
@@ -18,20 +18,29 @@ page.title=定义阴影与裁剪视图
-材料设计为 UI 元素引入高度高度将帮助用户了解每个元素的相对重要性,让他们能够集中于手边的工作。
+材料设计为 UI 元素引入高度。高度将帮助用户了解每个元素的相对重要性,让他们能够集中于手边的工作。 +
-由 Z 属性所表示的视图高度将决定其阴影的视觉外观:拥有较高 Z 值的视图将投射更大且更柔和的阴影。拥有较高 Z 值的视图将挡住拥有较低 Z 值的视图;不过视图的 Z 值并不影响视图的大小。
+由 Z 属性所表示的视图高度将决定其阴影的视觉外观:拥有较高 Z 值的视图将投射更大且更柔和的阴影。 +拥有较高 Z 值的视图将挡住拥有较低 Z 值的视图;不过视图的 Z 值并不影响视图的大小。 +
-阴影是由提升的视图的父项所绘制,因此将受到标准视图裁剪的影响,而在默认情况下裁剪将由父项执行。
+阴影是由提升的视图的父项所绘制,因此将受到标准视图裁剪的影响,而在默认情况下裁剪将由父项执行。 +
-此外,在创建其中的小组件在执行某些操作行为时会暂时升至视图平面之上的动画时,高度也很实用。
+此外,在创建其中的小组件在执行某些操作行为时会暂时升至视图平面之上的动画时,高度也很实用。 +
-要了解更多有关材料设计高度的信息,请参阅 3D 空间内的对象。
+要了解更多有关材料设计高度的信息,请参阅 +3D 空间内的对象。 +
视图的 Z 值包含两个组件:
视图的 Z 值包含两个组件: + +
图 1 - 不同视图高度的阴影。
-如果要在布局定义中设置视图的高度,请使用 android:elevation 属性。如果要在操作行为的代码中设置视图高度,请使用 {@link android.view.View#setElevation View.setElevation()} 方法。
如果要在布局定义中设置视图的高度,请使用 android:elevation
+ 属性。如果要在操作行为的代码中设置视图高度,请使用
+{@link android.view.View#setElevation View.setElevation()} 方法。
如果要设置视图转换,请使用 {@link android.view.View#setTranslationZ View.setTranslationZ()} 方法。
+如果要设置视图转换,请使用 {@link android.view.View#setTranslationZ +View.setTranslationZ()} 方法。
-全新的 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 与 {@link android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 方法让您能够轻松地为视图高度添加动画。如果要了解更多信息,请参阅 {@link android.view.ViewPropertyAnimator} 的 API 参考文档以及属性动画开发指南。
+全新的 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 与 {@link +android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 方法让您能够轻松地为视图高度添加动画。 +如果要了解更多信息,请参阅 +{@link android.view.ViewPropertyAnimator} 的 API 参考以及属性动画开发指南。 +
-您也可使用 {@link android.animation.StateListAnimator} 以说明性方式指定这些动画。当状态改变会触发动画(例如当用户按下按钮)时,此方法特别有用。如果要了解更多信息,请参阅为视图状态改变添加动画。
+您也可使用 {@link android.animation.StateListAnimator} 以说明性方式指定这些动画。 +当状态改变会触发动画(例如当用户按下按钮)时,此方法特别有用。 +如果要了解更多信息,请参阅为视图状态改变添加动画。 +
-Z 值按 dp(密度独立像素)测量。
+Z 值以 dp(密度独立像素)为单位度量。
视图的背景图片的边界将决定其阴影的默认形状。轮廓代表图形对象的外形并定义触摸反馈的波纹区域。
+视图的背景图片的边界将决定其阴影的默认形状。轮廓代表图形对象的外形并定义触摸反馈的波纹区域。 + +
下面举一个以背景图片定义的视图示例:
@@ -77,23 +98,36 @@ page.title=定义阴影与裁剪视图 </shape> -视图将投射一个带有圆角的阴影,因为背景图片将定义视图的轮廓。如果提供一个定制轮廓,则此轮廓将替代视图阴影的默认形状。
+视图将投射一个带有圆角的阴影,因为背景图片将定义视图的轮廓。 +如果提供一个定制轮廓,则此轮廓将替代视图阴影的默认形状。
如果要为您的代码中的视图定义定制轮廓:
您可使用 {@link android.graphics.Outline} 类别中的方法创建带有圆角的椭圆形和矩形轮廓。视图的默认轮廓提供程序将从视图背景取得轮廓。如果要防止视图投射阴影,请将其轮廓提供程序设置为 null。
您可使用
+{@link android.graphics.Outline} 类别中的方法创建带有圆角的椭圆形和矩形轮廓。视图的默认轮廓提供程序将从视图背景取得轮廓。
+如果要防止视图投射阴影,请将其轮廓提供程序设置为 null。
+
裁剪视图让您能够轻松改变视图形状。您可以裁剪视图,以便与其他设计元素保持一致,也可以根据用户输入改变视图形状。您可使用 {@link android.view.View#setClipToOutline View.setClipToOutline()} 方法或 android:clipToOutline 属性将视图裁剪至其轮廓区域。由 {@link android.graphics.Outline#canClip Outline.canClip()} 方法所决定,仅有矩形、圆形和圆角矩形轮廓支持裁剪。
裁剪视图让您能够轻松改变视图形状。您可以裁剪视图,以便与其他设计元素保持一致,也可以根据用户输入改变视图形状。您可使用 {@link android.view.View#setClipToOutline
+View.setClipToOutline()} 方法或 android:clipToOutline 属性将视图裁剪至其轮廓区域。
-
如果要将视图裁剪至图片的形状,请将图片设置为视图背景(如上所示)并调用 {@link android.view.View#setClipToOutline View.setClipToOutline()} 方法。
+由 +{@link android.graphics.Outline#canClip Outline.canClip()} 方法所决定,仅有矩形、圆形和圆角矩形轮廓支持裁剪。 + -裁剪视图是一个成本高昂的操作,因此不可为您用于裁剪视图的形状添加动画。如果要实现此效果,请使用揭露效果动画。
\ No newline at end of file +如果要将视图裁剪至图片的形状,请将图片设置为视图背景(如上所示)并调用 {@link android.view.View#setClipToOutline View.setClipToOutline()} +方法。 +
+ +裁剪视图是一个成本高昂的操作,因此不可为您用于裁剪视图的形状添加动画。 +如果要实现此效果,请使用揭露效果动画。
diff --git a/docs/html-intl/intl/zh-cn/training/material/theme.jd b/docs/html-intl/intl/zh-cn/training/material/theme.jd index e9b5d06c45387..5a45d4b93d6f3 100644 --- a/docs/html-intl/intl/zh-cn/training/material/theme.jd +++ b/docs/html-intl/intl/zh-cn/training/material/theme.jd @@ -27,9 +27,12 @@ page.title=使用材料主题您可使用您所控制的配色工具,按照您的品牌形象定制材料主题的外观。您可使用主题属性为操作栏和状态栏着色,如图 3 所示。
+您可使用您所控制的配色工具,按照您的品牌形象定制材料主题的外观。 +您可使用主题属性为操作栏和状态栏着色,如图 3 所示。 +
-系统小组件拥有全新的设计与触摸反馈动画。您可为您的应用定制配色工具、触摸反馈动画以及操作行为转换。
+系统小组件拥有全新的设计与触摸反馈动画。您可为您的应用定制配色工具、触摸反馈动画以及操作行为转换。 +
材料主题的定义为:
@@ -39,7 +42,8 @@ page.title=使用材料主题@android:style/Theme.Material.Light.DarkActionBar如果要了解您可使用的材料风格,请参阅 {@link android.R.style R.style} 的 API 参考文档。
+如果要了解您可使用的材料风格,请参阅 +{@link android.R.style R.style} 的 API 参考。
-请注意:材料主题仅在 Android 5.0(API 级别 21)及更高版本中提供。v7 支持内容库为一些小组件提供附带材料设计风格的主题,同时为配色工具定制提供支持。如果要了解更多信息,请参阅维护兼容性。 +注意:材料主题仅在 Android 5.0(API 级别 21)及更高版本中提供。 +v7 支持内容库为一些小组件提供附带材料设计风格的主题,同时为配色工具定制提供支持。 + +如果要了解更多信息,请参阅 +保持兼容性。
如果要定制主题的基色以符合您的品牌,您可在进行材料主题继承时使用主题属性定义您的定制颜色:
+如果要定制主题的基色以符合您的品牌,您可在进行材料主题继承时使用主题属性定义您的定制颜色: +
<resources> @@ -91,17 +100,32 @@ page.title=使用材料主题定制状态栏
-材料主题可让您轻松定制状态栏,因此您可以指定一个符合自己品牌特色且对比度足够高、能够显示白色状态图标的颜色。如果要为状态栏设置定制颜色,您可在扩展材料主题时使用
+android:statusBarColor属性。默认情况下,android:statusBarColor将继承android:colorPrimaryDark的值。材料主题可让您轻松定制状态栏,因此您可以指定一个符合自己品牌特色且对比度足够高、能够显示白色状态图标的颜色。 +如果要为状态栏设置定制颜色,您可在扩展材料主题时使用
android:statusBarColor属性。 -您也可自行将状态栏移到后侧。例如,您想在一个照片上以透明的方式显示状态栏,同时利用细微的深色渐变以确保白色状态图标仍保持可见。如果要执行此操作,请将
- -android:statusBarColor属性设置为@android:color/transparent并根据需要调整窗口标志。您也可以使用 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 方法进行动画或淡出设置。-请注意:在多数情况下,状态栏与主工具栏之间应该有一个清楚的分割,您在这些栏的后侧显示全屏的丰富图像或媒体内容以及使用颜色渐变以确保图表仍保持可见的情况除外。 +默认情况下,
-android:statusBarColor将继承android:colorPrimaryDark的值。定制导航栏和状态栏时,您可选择将导航栏和状态栏变透明或仅修改状态栏。在所有其他情况中,导航栏均应保持黑色。
+您也可自行将状态栏移到后侧。例如,您想在一个照片上以透明的方式显示状态栏,同时利用细微的深色渐变以确保白色状态图标仍保持可见。 + +如果要执行此操作,请将
+ +android:statusBarColor属性设置为 +@android:color/transparent并根据需要调整窗口标志。您也可以使用 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 方法进行动画或淡出设置。 + ++注意:在多数情况下,状态栏与主工具栏之间应该有一个清楚的分割,您在这些栏的后侧显示全屏的丰富图像或媒体内容以及使用颜色渐变以确保图表仍保持可见的情况除外。 + + +
+ +定制导航栏和状态栏时,您可选择将导航栏和状态栏变透明或仅修改状态栏。 +在所有其他情况中,导航栏均应保持黑色。
主题个别视图 -
XML 布局定义内的元素可指定
\ No newline at end of file +android:theme属性,而该属性将引用一个主题资源。此属性可修改元素以及任何子元素的主题,有助于改变界面中特定部分的主题配色工具。XML 布局定义内的元素可指定
diff --git a/docs/html-intl/intl/zh-tw/design/material/index.jd b/docs/html-intl/intl/zh-tw/design/material/index.jd index 620ee6ec20623..1b9e8cc108dec 100644 --- a/docs/html-intl/intl/zh-tw/design/material/index.jd +++ b/docs/html-intl/intl/zh-tw/design/material/index.jd @@ -1,7 +1,6 @@ -page.title=材料設計 -page.tags=Material, design -page.type=設計 -page.image=design/material/images/MaterialLight.png +page.title=Android 材料設計 +page.tags=Material,design +page.image=images/cads/design-material-for-android_2x.jpg @jd:body @@ -41,19 +40,19 @@ page.image=design/material/images/MaterialLight.pngandroid:theme属性,而该属性将引用一个主题资源。 +此属性可修改元素以及任何子元素的主题,有助于改变界面中特定部分的主题配色工具。 + +材料設計是一份內容廣泛的綜合性指南,引導您跨平台、跨裝置進行視覺、動態和互動的設計。 Android 現已納入對材料設計應用程式的支援。 -如果要在 Android 應用程式中使用材料設計,請依照材料設計規格中定義的指示,並使用 -Android -5.0 (API 層級 21) 或後續版本中的新元件和新功能。
+如果要在 Android 應用程式中使用材料設計,請依照材料設計規格中定義的指示,並使用 Android 5.0 (API 級別 21) 或後續版本中的新元件和新功能。 + +Android 提供下列元素,供您打造材料設計應用程式:
如需取得如何在 Android 上實作材料設計的詳細資訊,請詳見使用材料設計建立應用程式。 +
如需取得如何在 Android 上實作材料設計的詳細資訊,請參閱使用材料設計建立應用程式。
@@ -92,8 +91,8 @@ Android
- 新的 RecyclerView 小工具是 ListView
-更容易插入的版本,支援不同的版面配置類型,並提供效能改善。
新的 RecyclerView 小工具是 ListView 更容易插入的版本,支援不同的版面配置類型,並提供效能改善。
+
@@ -109,12 +108,12 @@ Android
除了 X 和 Y 屬性外,Android 中的檢視現在也有 Z 屬性。 -這個新屬性代表檢視的高度,這會決定:
+除了 X 和 Y 屬性外,Android 中的視圖現在也有 Z 屬性。 +這個新屬性代表視圖的高度,這會決定:
如需取得詳細資訊,請參閱定義陰影和裁剪檢視。 +
如需詳細資訊,請參閱定義陰影和裁剪視圖。
新的動畫 API 可針對 UI 控制項的輕觸回饋、檢視狀態中的變更,以及行為轉換,讓您建立自訂動畫。 +
新的動畫 API 可針對 UI 控制項的輕觸回饋、視圖狀態中的變更,以及操作行為轉換,讓您建立自訂動畫。
這些 API 讓您可以:
輕觸回饋動畫會內建於數個標準檢視中,例如按鈕等。新 API 可讓您自訂這些動畫,並將其新增至您的自訂檢視中。 +
輕觸回饋動畫會內建於數個標準視圖中,例如按鈕等。新 API 可讓您自訂這些動畫,並將其新增至您的自訂視圖中。
如需詳細資訊,請參閱定義自訂動畫。 @@ -176,7 +175,7 @@ Android
材料設計中的動畫讓使用者在進行操作動作之後獲得回饋,並且在使用者與您的應用程式互動時提供視覺上的連續性。材料設計風格針對按鈕和操作行為轉換提供某些預設的動畫,而 Android 5.0 (API 級別 21) 或更新版本則可讓您自訂這些動畫,以及建立新的動畫:
+材料設計中的動畫讓使用者在進行操作動作之後獲得回饋,並且在使用者與您的應用程式互動時提供視覺上的連續性。 +材料設計風格針對按鈕和操作行為轉換,提供某些預設的動畫,而 Android 5.0 (API 級別 21) 以上版本則可讓您自訂這些動畫並建立新的動畫: + +
當使用者與 UI 元素互動時,材料設計中的輕觸回饋在接觸點提供即時的視覺化確認。按鈕的預設輕觸回饋動畫使用新的 {@link android.graphics.drawable.RippleDrawable} 類別,透過漣漪效果在不同的狀態之間進行轉換。
+當使用者與 UI 元素互動時,材料設計中的輕觸回饋在接觸點提供即時的視覺化確認。 +按鈕的預設輕觸回饋動畫使用新的 {@link android.graphics.drawable.RippleDrawable} 類別,透過漣漪效果在不同狀態之間進行轉換。 -
在大多數情況下,您應該在檢視 XML 中將檢視背景指定為下列項目來套用此功能:
+ + +大多數情況下,您應該在視圖 XML 中將視圖背景指定為下列項目以套用此功能: +
?android:attr/selectableItemBackground?android:attr/selectableItemBackgroundBorderless?android:attr/selectableItemBackground。?android:attr/selectableItemBackgroundBorderless。
+這會繪製在具有非空背景的視圖之最接近父項上,並以其作為邊界。
+注意:selectableItemBackgroundBorderless 是 API 級別 21 引入的新屬性。
注意:selectableItemBackgroundBorderless 是 API 級別 21 推出的新屬性。
+
或者,您也可以使用 ripple 元素將 {@link android.graphics.drawable.RippleDrawable} 定義為 XML 資源。
或者,您也可以使用 ripple 元素將 {@link android.graphics.drawable.RippleDrawable} 定義為 XML 資源。
+
您可以對 {@link android.graphics.drawable.RippleDrawable} 物件指定顏色。如果要變更預設的輕觸回饋顏色,請使用風格主題的 android:colorControlHighlight 屬性。
您可以對 {@link android.graphics.drawable.RippleDrawable} 物件指定色彩。如要變更預設的輕觸回饋色彩,請使用設計風格的 android:colorControlHighlight 屬性。
-
如需詳細資訊,請參閱 {@link android.graphics.drawable.RippleDrawable} 類別的 API 參考資料。
+ + +如需詳細資訊,請參閱 {@link +android.graphics.drawable.RippleDrawable} 類別的 API 參考資料。
當您顯示或隱藏一組 UI 元素時,顯示動畫可提供使用者視覺上的連續性。{@link android.view.ViewAnimationUtils#createCircularReveal ViewAnimationUtils.createCircularReveal()} 方法可讓您以動畫顯示裁剪的圓形,來顯示或隱藏檢視。
+當您顯示或隱藏一組 UI 元素時,顯示動畫可提供使用者視覺上的連續性。 +{@link android.view.ViewAnimationUtils#createCircularReveal +ViewAnimationUtils.createCircularReveal()}方法可讓您以動畫顯示裁剪的圓形,以顯示或隱藏視圖。 +
-使用下列效果顯示之前看不見的檢視:
+使用下列效果顯示之前看不見的視圖:
// previously invisible view @@ -79,7 +96,7 @@ myView.setVisibility(View.VISIBLE); anim.start();-
使用下列效果隱藏之前看見的檢視:
+使用下列效果隱藏之前看見的視圖:
// previously visible view @@ -122,41 +139,54 @@ anim.start();--圖 1 - 使用分享元素的轉換。
- 如果要重播影片,請按一下裝置螢幕 +圖 1 - 使用分享元素的轉換。 +
+ 如要重播影片,請按一下裝置螢幕材料設計應用程式中的操作行為轉換透過常見元素之間的動作和轉換,在不同的狀態之間提供視覺上的連接效果。您可以針對進入和離開轉換,以及不同操作行為之間分享元素的轉換指定自訂動畫。
+材料設計應用程式中的操作行為轉換透過常見元素之間的動作和轉換,在不同的狀態之間提供視覺上的連接效果。 +您可針對進入和離開轉換及不同操作行為之間分享元素的轉換指定自訂動畫。 +
Android 5.0 (API 級別 21) 支援下列進入和離開轉換:
延伸 {@link android.transition.Visibility} 類別的轉換都可做為進入或離開轉換。如需詳細資訊,請參閱 {@link android.transition.Transition} 類別的 API 參考資料。
+所有延伸 {@link android.transition.Visibility} 類別的轉換都可作為進入或離開轉換。 +如需詳細資訊,請參閱 {@link android.transition.Transition} 類別的 API 參考資料。 +
Android 5.0 (API 級別 21) 也支援下列分享元素轉換:
當您在應用程式中啟用操作行為轉換時,進入和離開操作行為之間會啟動預設交錯淡化轉換。
+當您在應用程式中啟用操作行為轉換時,進入和離開操作行為之間會啟動預設交錯淡化轉換。 +
@@ -165,7 +195,9 @@ anim.start();
首先,當您定義一個從材料設計風格繼承而來的樣式時,請使用 android:windowContentTransitions 屬性啟用視窗內容轉換。您也可以在樣式定義中指定進入、離開和分享元素轉換:
首先,當您定義一個從材料設計風格繼承而來的樣式時,請使用 android:windowContentTransitions 屬性啟用視窗內容轉換。
+您也可在樣式定義中指定進入、離開和分享元素轉換:
+
<style name="BaseAppTheme" parent="android:Theme.Material"> @@ -194,9 +226,12 @@ anim.start(); </transitionSet>-
changeImageTransform 元素符合 {@link android.transition.ChangeImageTransform} 類別。如需詳細資訊,請參閱 {@link android.transition.Transition} 的 API 參考資料。
changeImageTransform 元素對應至 {@link android.transition.ChangeImageTransform} 類別。
+如需詳細資訊,請參閱 {@link android.transition.Transition} 的 API 參考資料。
+
如果要在程式碼中改為啟用視窗內容轉換,請呼叫 {@link android.view.Window#requestFeature Window.requestFeature()} 方法:
+如要在程式碼中改為啟用視窗內容轉換,請呼叫 {@link android.view.Window#requestFeature Window.requestFeature()}方法: +
// inside your activity (if you did not enable transitions in your theme) @@ -206,42 +241,58 @@ getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); getWindow().setExitTransition(new Explode());-
如果要在程式碼中指定轉換,請搭配 {@link android.transition.Transition} 物件呼叫下列方法:
+如要在程式碼中指定轉換,請以 {@link +android.transition.Transition} 物件呼叫下列方法:
{@link android.view.Window#setExitTransition setExitTransition()} 和 {@link android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 方法定義呼叫操作行為的離開轉換。{@link android.view.Window#setEnterTransition setEnterTransition()} 和 {@link android.view.Window#setSharedElementEnterTransition setSharedElementEnterTransition()} 方法定義被呼叫操作行為的進入轉換。
+{@link android.view.Window#setExitTransition setExitTransition()} 和 {@link +android.view.Window#setSharedElementExitTransition setSharedElementExitTransition()} 方法定義了呼叫操作行為的離開轉換。 +{@link android.view.Window#setEnterTransition +setEnterTransition()} 和 {@link android.view.Window#setSharedElementEnterTransition +setSharedElementEnterTransition()} 方法定義被呼叫操作行為的進入轉換。
-如果要取得轉換的完整效果,您必須同時對呼叫與被呼叫操作行為啟用視窗內容轉換。否則,呼叫操作行為只會啟動離開轉換,然後您只會看到視窗轉換 (類似調整大小或淡化)。
+如要取得轉換的完整效果,您必須同時對呼叫與被呼叫操作行為啟用視窗內容轉換。 +否則,呼叫操作行為會啟動離開轉換,然後您只會看到視窗轉換 (類似調整大小或淡化)。 +
-如果要立即啟動進入轉換,請對被呼叫的操作行為使用 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} 方法。這樣您就會有更戲劇性的進入轉換。
+如要立即啟動進入轉換,請對被呼叫的操作行為使用 {@link android.view.Window#setAllowEnterTransitionOverlap Window.setAllowEnterTransitionOverlap()} 方法。 + +這樣您就會有更戲劇性的進入轉換。
如果您啟用轉換並且對操作行為設定離開轉換,當您啟動另一個操作行為時就會啟動轉換,如下所示:
+若您啟用轉換並對操作行為設定離開轉換,當您啟動另一個操作行為時,就會啟動轉換,如下所示: +
startActivity(intent,
ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
-如果您已經針對第二個操作行為設定進入轉換,當操作行為啟動時,也會啟動轉換。如果要在啟動另一個操作行為時停用轉換,請提供 null 選項組合。
若您已針對第二個操作行為設定進入轉換,當操作行為啟動時,也會啟動轉換。
+若要在啟動另一個操作行為時停用轉換,請提供 null 選項組合。
+
在兩個擁有分享元素的操作行為之間製作螢幕轉換動畫:
android:transitionName 屬性,對兩個版面配置中的分享元素指定通用名稱。android:transitionName 屬性,對兩個版面配置中的分享元素指定通用名稱。
+
@@ -266,13 +317,20 @@ imgContainerView.setOnClickListener(new View.OnClickListener() {
});
-對於您在程式碼中所產生的分享動態檢視,請使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法,在兩個操作行為中指定通用元素名稱。
+對於您在程式碼中所產生的分享動態視圖,請使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法,在兩個操作行為中指定通用元素名稱。 -
如果要在完成第二個操作行為時倒轉場景轉換動畫,請呼叫 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} 方法而不是 {@link android.app.Activity#finish Activity.finish()}。
+ + +如要在完成第二個操作行為時倒轉場景轉換動畫,請呼叫 {@link android.app.Activity#finishAfterTransition Activity.finishAfterTransition()} 方法而不是 {@link android.app.Activity#finish Activity.finish()}。 + +
如果要在兩個擁有多個分享元素的操作行為之間製作場景轉換動畫,請使用 android:transitionName 屬性在兩個版面配置中定義分享元素 (或在兩個操作行為中使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法),然後建立 {@link android.app.ActivityOptions} 物件,如下所示:
如要在兩個具有多個分享元素的操作行為之間製作場景轉換動畫,請使用 android:transitionName 屬性在兩個版面配置中定義分享元素 (或在兩個操作行為中使用 {@link android.view.View#setTransitionName View.setTransitionName()} 方法),然後建立 {@link android.app.ActivityOptions} 物件,如下所示:
+
+
+
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, @@ -283,9 +341,14 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this,使用曲線動作
-材料設計中的動畫依據使用時間插值法和空間移動模式的曲線。在 Android 5.0 (API 級別 21) 或更新版本中,您可以為動畫定義自訂時間曲線和曲線動作模式。
+材料設計中的動畫依據使用時間插值法和空間移動模式的曲線而定。 +在 Android 5.0 (API 級別 21) 及以上版本中,您可為動畫定義自訂時間曲線和曲線動作模式。 +
-{@link android.view.animation.PathInterpolator} 類別是根據貝茲曲線 (Bézier curve) 或 {@link android.graphics.Path} 物件的一種新插值器。這個插值器在一個 1x1 的方格中指定動作曲線,在 (0,0) 和 (1,1) 有兩個錨定點,以及使用建構函式引數指定的控制點。您也可以將路徑插值器定義為 XML 資源:
+{@link android.view.animation.PathInterpolator} 類別是根據貝茲曲線 (Bézier curve) 或 {@link android.graphics.Path} 物件的一種新插值器。 +這個插值器在一個 1x1 的方格中指定動作曲線,在 (0,0) 和 (1,1) 有兩個錨定點,以及使用建構函式引數指定的控制點。 + +您也可以將路徑插值器定義為 XML 資源:
<pathInterpolator xmlns:android="http://schemas.android.com/apk/res/android" @@ -295,7 +358,8 @@ ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(this, android:controlY2="1"/>-系統在材料設計規格中提供三種基本曲線的 XML 資源:
+系統在材料設計規格中提供三種基本曲線的 XML 資源: +
@interpolator/fast_out_linear_in.xml@interpolator/linear_out_slow_in.xml您可以將 {@link android.view.animation.PathInterpolator} 物件傳遞到 {@link android.animation.Animator#setInterpolator Animator.setInterpolator()} 方法。
+您可將 {@link android.view.animation.PathInterpolator} 物件傳送至 {@link +android.animation.Animator#setInterpolator Animator.setInterpolator()} 方法。
-{@link android.animation.ObjectAnimator} 類別有新的建構函式,可讓您一次使用兩個以上的屬性沿著路徑以動畫顯示座標。例如,下列動畫器使用 {@link android.graphics.Path} 物件,以動畫顯示檢視的 X 和 Y 屬性:
+{@link android.animation.ObjectAnimator} 類別有新的建構函式,可讓您一次使用兩個以上的屬性沿著路徑以動畫顯示座標。 +例如,下列動畫器使用 {@link android.graphics.Path} 物件,以動畫顯示視圖的 X 和 Y 屬性: +
ObjectAnimator mAnimator; @@ -315,9 +382,11 @@ mAnimator.start();-
{@link android.animation.StateListAnimator} 類別可讓您定義檢視狀態變更時所執行的動畫器。下列範例示範如何將 {@link android.animation.StateListAnimator} 定義為 XML 資源:
+{@link android.animation.StateListAnimator} 類別可讓您定義視圖狀態變更時所執行的動畫器。 +下列範例示範如何將 {@link +android.animation.StateListAnimator} 定義為 XML 資源:
<!-- animate the translationZ property of a view when pressed --> @@ -345,11 +414,21 @@ mAnimator.start(); </selector>-
如果要將自訂的檢視狀態動畫連接到檢視,請依照此範例在 XML 資源檔案中使用 selector 元素定義動畫器,然後使用 android:stateListAnimator 屬性將它指派到您的檢視。如果要在程式碼中為檢視指派狀態清單動畫器,請使用 {@link android.animation.AnimatorInflater#loadStateListAnimator AnimationInflater.loadStateListAnimator()} 方法,然後使用 {@link android.view.View#setStateListAnimator View.setStateListAnimator()} 方法將動畫器指派到您的檢視。
如要將自訂的視圖狀態動畫連接到視圖,請依照此範例在 XML 資源檔案中使用 selector 元素定義動畫器,並使用 android:stateListAnimator 屬性將其指派到您的視圖。
-
當您的風格主題延伸材料設計風格時,按鈕預設會有 Z 動畫。如果要避免在按鈕中出現這類行為,請將 android:stateListAnimator 屬性設定為 @null。
{@link android.graphics.drawable.AnimatedStateListDrawable} 類別可讓您在相關檢視的狀態變更之間,建立顯示動畫的可繪項目。Android 5.0 中的某些系統小工具預設會使用這些動畫。下列範例示範如何將 {@link android.graphics.drawable.AnimatedStateListDrawable} 定義為 XML 資源:
+ + +當您的設計風格延伸材料設計風格時,按鈕預設會有 Z 動畫。如果要避免在按鈕中出現這類行為,請將 android:stateListAnimator 屬性設定為 @null。
+
+
{@link android.graphics.drawable.AnimatedStateListDrawable} 類別可讓您在相關視圖的狀態變更之間,建立顯示動畫的可繪項目。 +Android 5.0 中的某些系統小工具預設會使用這些動畫。 +下列範例示範如何將 {@link android.graphics.drawable.AnimatedStateListDrawable} 定義為 XML 資源: +
<!-- res/drawable/myanimstatedrawable.xml --> @@ -379,19 +458,28 @@ mAnimator.start();動畫顯示矢量可繪
-矢量可繪可以調整大小,但又不會喪失定義。{@link android.graphics.drawable.AnimatedVectorDrawable} 類別可讓您以動畫顯示矢量可繪的屬性。
+矢量可繪可以調整大小,但又不會喪失定義。 +{@link android.graphics.drawable.AnimatedVectorDrawable} 類別可讓您以動畫顯示矢量可繪的屬性。 +
您通常會在下列三個 XML 檔案中定義能可動矢量可繪:
res/drawable/ 中有 <vector> 元素的矢量可繪res/drawable/ 中有 <animated-vector> 元素的可動矢量可繪res/anim/ 中有 <objectAnimator> 元素的一或多個物件動畫器res/drawable/ 中包含 <vector> 元素的矢量可繪
+res/drawable/ 中包含 <animated-vector> 元素的可動矢量可繪
+res/anim/ 中包含 <objectAnimator> 元素的一或多個物件動畫器
+可動的矢量可繪能以動畫顯示 <group> 和 <path> 元素的屬性。<group> 元素定義一組路徑或子群組,而 <path> 元素則定義要繪製的路徑。
可動的矢量可繪能以動畫顯示 <group> 和 <path> 元素的屬性。
+<group> 元素定義一組路徑或子群組,而 <path> 元素則定義要繪製的路徑。
+
當您定義要可動的矢量可繪時,請使用 android:name 屬性為群組和路徑指派唯一的名稱,以便從您的動畫器定義參考這些群組和路徑。例如:
當您定義要可動的矢量可繪時,請使用 android:name 屬性為群組和路徑指派唯一的名稱,以便從您的動畫器定義參考這些群組和路徑。
+
+例如:
<!-- res/drawable/vectordrawable.xml --> @@ -413,7 +501,8 @@ mAnimator.start(); </vector>-
可動的矢量可繪定義是依照名稱來參考矢量可繪中的群組和路徑:
+可動的矢量可繪定義是依照名稱來參考矢量可繪中的群組和路徑: +
<!-- res/drawable/animvectordrawable.xml --> @@ -428,7 +517,9 @@ mAnimator.start(); </animated-vector>-
動畫定義代表 {@link android.animation.ObjectAnimator} 或 {@link android.animation.AnimatorSet} 物件。此範例中的第一個動畫器會 360 度旋轉目標群組:
+動畫定義代表 {@link android.animation.ObjectAnimator} 或 {@link +android.animation.AnimatorSet} 物件。此範例中的第一個動畫器會 360 度旋轉目標群組: +
<!-- res/anim/rotation.xml -->
@@ -439,7 +530,9 @@ mAnimator.start();
android:valueTo="360" />
-此範例中的第二個動畫器會將矢量可繪的路徑從一種形狀變成另外一種形狀。兩個路徑必須相容才能變形:這表示兩個路徑必須有相同數量的命令,每個命令必須有相同數量的參數。
+此範例中的第二個動畫器會將矢量可繪的路徑從一種形狀變成另外一種形狀。 +兩個路徑必須相容才能變形:意即兩個路徑必須有相同數量的命令,而每個命令必須有相同數量的參數。 +
<!-- res/anim/path_morph.xml --> @@ -453,4 +546,5 @@ mAnimator.start(); </set>-
如需詳細資訊,請參閱 {@link android.graphics.drawable.AnimatedVectorDrawable} 的 API 參考資料。
\ No newline at end of file +如需詳細資訊,請參閱 {@link +android.graphics.drawable.AnimatedVectorDrawable} 的 API 參考資料。
diff --git a/docs/html-intl/intl/zh-tw/training/material/compatibility.jd b/docs/html-intl/intl/zh-tw/training/material/compatibility.jd index 35c135f77f47a..767788bf75be5 100644 --- a/docs/html-intl/intl/zh-tw/training/material/compatibility.jd +++ b/docs/html-intl/intl/zh-tw/training/material/compatibility.jd @@ -20,47 +20,68 @@ page.title=維持相容性 -某些材料設計功能 (例如材料設計風格和自訂操作行為轉換) 只能在 Android 5.0 (API 級別 21) 以及更新版本中使用。不過,您還是可以將應用程式設計為在支援材料設計的裝置上執行時才使用這些功能,而且仍然與執行舊版 Android 的裝置相容。
+某些材料設計功能如材料設計風格和自訂操作行為轉換等,只能在 Android 5.0 (API 級別 21) 及以上版本中使用。 +然而,您還是可以將應用程式設計為在支援材料設計的裝置上執行時才使用這些功能,並仍然與執行舊版 Android 的裝置相容。 + +
您可以設定應用程式在支援材料設計風格的裝置上執行時才予以使用,在執行舊版 Android 的裝置上執行時則轉換成舊版的風格主題:
+您可以設定應用程式在支援材料設計風格的裝置上執行時才予以使用,在執行舊版 Android 的裝置上執行時則轉換成舊版的設計風格: +
res/values/styles.xml 中定義繼承自舊版風格主題 (例如 Holo) 的風格主題。res/values-v21/styles.xml 中定義與材料設計風格相同名稱的風格主題。res/values/styles.xml 中定義繼承自舊版設計風格 (例如 Holo) 的設計風格。
+res/values-v21/styles.xml 中定義與材料設計風格相同名稱的設計風格。
+注意:如果您的應用程式使用材料設計風格,但卻未以此方式提供替代風格主題,您的應用程式將無法在 Android 5.0 以前的版本上執行。 +
注意:若您的應用程式使用材料設計風格,但卻未以此方式提供替代設計風格,您的應用程式將無法在 Android 5.0 之前的版本上執行。 + +
如果您根據材料設計指南所設計的版面配置沒有使用 Android 5.0 (API 級別 21) 中導入的任何全新 XML 屬性,則這些版面配置就可以在舊版 Android 上運作。或者,您也可以提供替代的版面配置。您也可以提供替代的版面配置來自訂應用程式在舊版 Android 上要如何顯示。
+若您根據材料設計指南所設計的版面配置並未使用任何 Android 5.0 (API 級別 21) 中推出的全新 XML 屬性,則這些版面配置就可以在舊版 Android 上運作。 -
在 res/layout-v21/ 內建立 Android 5.0 (API 級別 21) 的版面配置檔案,並在 res/layout/ 內建立舊版 Android 的替代版面配置檔案。例如,res/layout/my_activity.xml 是 res/layout-v21/my_activity.xml 的替代版面配置。
為了避免程式碼重複,請在 res/values/ 內定義您的樣式,在 res/values-v21/ 中針對新的 API 修改樣式,然後使用樣式繼承,在 res/values/ 中定義基礎樣式,然後從 res/values-v21/ 中的樣式繼承。
在 res/layout-v21/ 內建立 Android 5.0 (API 級別 21) 的版面配置檔案,並在 res/layout/ 內建立舊版 Android 的替代版面配置檔案。例如,res/layout/my_activity.xml 是 res/layout-v21/my_activity.xml 的替代版面配置。
+
+
+
為了避免程式碼重複,請在 res/values/ 內定義您的樣式,在 res/values-v21/ 中針對新的 API 修改樣式,再使用樣式繼承,在 res/values/ 中定義基礎樣式,然後從 res/values-v21/ 中的樣式繼承。
+
+
v7 支援程式庫 r21 以及更新版本包含下列材料設計功能:
+v7 支援程式庫 r21 以及更新版本包含下列材料設計功能: +
Theme.AppCompat 風格主題時,某些系統小工具的材料設計樣式。Theme.AppCompat 風格主題中的色板風格主題屬性。Theme.AppCompat 設計風格時,某些系統小工具的材料設計樣式。
+Theme.AppCompat 設計風格中的色板設計風格屬性。
+Theme.AppCompat 風格主題提供下列小工具的材料設計樣式:
Theme.AppCompat 設計風格提供下列小工具的材料設計樣式:
如果要取得材料設計樣式並使用 Android v7 支援程式庫自訂色板,請套用其中一個 Theme.AppCompat 風格主題:
如果要取得材料設計樣式並使用 Android v7 支援程式庫自訂色板,請套用其中一個 Theme.AppCompat 設計風格:
+
<!-- extend one of the Theme.AppCompat themes --> @@ -87,16 +109,21 @@ page.title=維持相容性清單和卡片
-在舊版 Android 中,透過 Android v7 支援程式庫可以使用 {@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具,但是有下列限制:
+在舊版 Android 中,透過 Android v7 支援程式庫可以使用 {@link android.support.v7.widget.RecyclerView} 和 {@link +android.support.v7.widget.CardView} 小工具,但有下列限制: +
如果要在 Android 5.0 (API 級別 21) 以前的版本中使用這些功能,請在您的專案中包含 Android v7 支援程式庫做為 Gradle 相依性:
+如果要在 Android 5.0 (API 級別 21) 以前的版本中使用這些功能,請在您的專案中包含 Android v7 支援程式庫做為 Gradle 相依性: +
dependencies {
@@ -120,7 +147,9 @@ dependencies {
如果要維持與舊版 Android 的相容性,在您呼叫這些功能的 API 之前,請先在執行期間檢查系統 {@link android.os.Build.VERSION#SDK_INT version}:
+如要維持與舊版 Android 的相容性,在呼叫這些功能的 API 之前,請先在執行期間檢查系統 {@link +android.os.Build.VERSION#SDK_INT version}: +
// Check if we're running on Android 5.0 or higher
@@ -131,4 +160,9 @@ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
}
-注意:如果要指定應用程式支援的 Android 版本,請在您的宣示說明檔案中使用 android:minSdkVersion 和 android:targetSdkVersion 屬性。如果要在 Android 5.0 中使用材料設計功能,請將 android:targetSdkVersion 屬性設定為 21。如需詳細資訊,請參閱 <uses-sdk> API 指南。
注意:如果要指定應用程式支援的 Android 版本,請在您的宣示說明檔案中使用 android:minSdkVersion 和 android:targetSdkVersion 屬性。
+
+如果要在 Android 5.0 中使用材料設計功能,請將 android:targetSdkVersion 屬性設定為 21。
+如需詳細資訊,請參閱 <uses-sdk> API 指南。
+
+
如果使用 Android 5.0 (API 級別 21) 或更新版本,您可以對點陣圖和定義為 Alpha 遮罩的九宮格影像著色。您可以使用顏色資源或解析為顏色資源的風格主題屬性 (例如 ?android:attr/colorPrimary) 為圖片著色。這些資產您通常只會建立一次,然後自動著色以符合您的風格主題。
若您使用 Android 5.0 (API 級別 21) 或以上版本,您可對點陣圖和定義為 Alpha 遮罩的九宮格影像著色。
+您可使用顏色資源或解析為顏色資源的設計風格屬性 (如 ?android:attr/colorPrimary 為圖片著色。
+這些資產您通常只會建立一次,然後自動著色以符合您的設計風格。
+
您可以使用 {@code setTint()} 方法對 {@link android.graphics.drawable.BitmapDrawable} 或 {@link android.graphics.drawable.NinePatchDrawable} 物件套用著色。您也可以使用 android:tint 和 android:tintMode 屬性,設定版面配置中的著色顏色和模式。
您可使用 {@code setTint()} 方法對 {@link android.graphics.drawable.BitmapDrawable} 或 {@link
+android.graphics.drawable.NinePatchDrawable} 物件套用著色。您也可以使用 android:tint 和 android:tintMode 屬性,設定版面配置中的著色顏色和模式。
+
+
Android 支援程式庫 r21 和更新版本包含 {@link android.support.v7.graphics.Palette} 類別,可讓您從影像提取出顯著的顏色。此類別會提取下列顯著顏色:
+Android 支援程式庫 r21 和更新版本包含 {@link +android.support.v7.graphics.Palette} 類別,可讓您從影像提取出顯著的顏色。此類別會提取下列顯著顏色: +
如果要提取這些顏色,請將 {@link android.graphics.Bitmap} 物件傳遞到載入影像之背景執行緒中的 {@link android.support.v7.graphics.Palette#generate Palette.generate()} 靜態方法。如果您無法使用該執行緒,請改為呼叫 {@link android.support.v7.graphics.Palette#generateAsync Palette.generateAsync()} 方法並提供接聽器。
+如果要提取這些顏色,請將 {@link android.graphics.Bitmap} 物件傳遞到載入影像之背景執行緒中的 {@link android.support.v7.graphics.Palette#generate Palette.generate()} 靜態方法。 -
您可以使用 Palette 類別中的 getter 方法 (例如 Palette.getVibrantColor) 從影像擷取顯著顏色。
如果要在專案中使用 {@link android.support.v7.graphics.Palette} 類別,請在應用程式的模組中加入下列 Gradle 相依性:
+ + +您可使用 Palette 類別中的 getter 方法 (如 Palette.getVibrantColor 從影像擷取顯著顏色。
+
如果要在專案中使用 {@link android.support.v7.graphics.Palette} 類別,請在應用程式的模組中加入下列 Gradle 相依性: + +
dependencies {
...
- compile 'com.android.support:palette-v7:21.0.+'
+ compile 'com.android.support:palette-v7:21.0.0'
}
-如需詳細資訊,請參閱 {@link android.support.v7.graphics.Palette} 類別的 API 參考資料。
+如需詳細資訊,請參閱 {@link android.support.v7.graphics.Palette} 類別的 API 參考資料。 +
Android Vector Graphics
在 Android 5.0 (API 級別 21) 或更新版本中,您可以定義矢量可繪,這種圖形可以調整大小但不會遺失定義。一個矢量影像只需要一個資產檔案,但是點陣圖影像的每一種螢幕密度都需要一個資產檔案。如果要建立矢量影像,您必須在 <vector> XML 元素內定義圖形的詳細資料。
在 Android 5.0 (API 級別 21) 或以上版本中,您可定義矢量可繪,這種圖形可以調整大小但不會遺失定義。
+一個矢量影像只需要一個資產檔案,但點陣圖影像的每一種螢幕密度都需要一個資產檔案。
+如果要建立矢量影像,您必須在 <vector> XML 元素內定義圖形的詳細資料。
+
下列範例定義一個具有心形圖案的矢量影像:
@@ -102,4 +120,7 @@ href="https://www.youtube.com/watch?v=wlFVIIstKmA" style="margin-top:18px"> </vector> -在 Android 中,矢量影像是以 {@link android.graphics.drawable.VectorDrawable} 物件代表。如需有關 pathData 語法的詳細資訊,請參閱 SVG 路徑參考資料。如需有關繪製矢量可繪的屬性,請參閱動畫顯示矢量可繪。
在 Android 中,{@link android.graphics.drawable.VectorDrawable} 物件代表矢量影像。
+如需有關 pathData 語法的詳細資訊,請參閱 SVG 路徑參考資料。如需有關繪製矢量可繪屬性的詳細資訊,請參閱動畫顯示矢量可繪。
+
+
您可以在應用程式中加入多種材料設計功能,同時維持與 Android 5.0 之前版本的相容性。如需詳細資訊,請參閱維持相容性。
+您可在應用程式中加入多種材料設計功能,同時維持與 Android 5.0 之前版本的相容性。 +如需詳細資訊,請參閱維持相容性。 +
如果要更新現有應用程式以納入材料設計功能,請依照下列材料設計指南更新版面配置。然後再加入深度、輕觸回饋和動畫。
+如要更新現有應用程式以納入材料設計功能,請依照下列材料設計指南更新版面配置。 +同時確保加入深度、輕觸回饋和動畫。 +
如果您要使用材料設計功能建立新應用程式,材料設計指南可以提供您一致性的設計架構。請依照下列指南,使用 Android 架構中的新功能來設計和開發應用程式。
+如果您要使用材料設計功能建立新應用程式,材料設計指南可以提供一致性的設計架構。 +請依照下列指南,使用 Android 架構中的新功能來設計和開發應用程式。 +
如果要在應用程式中套用材料設計風格,請指定一個繼承自 android:Theme.Material 的樣式:
如要在應用程式中套用材料設計風格,請指定一個繼承自 android:Theme.Material 的樣式:
+
<!-- res/values/styles.xml --> @@ -65,12 +72,16 @@ page.title=開始使用 </resources>-
材料設計風格提供更新過的系統小工具,可以讓您設定小工具的色板和預設動畫做為輕觸回饋與操作行為轉換。如需詳細資訊,請參閱使用材料設計風格。
+材料設計風格提供已更新的系統小工具,可讓您設定系統小工具的色板和預設動畫,作為輕觸回饋與操作行為轉換。 +如需詳細資訊,請參閱使用材料設計風格。 +
除了套用和自訂材料設計風格之外,您的版面配置也必須遵守材料設計指南。當您設計版面配置時,請注意下列事項:
+除了套用和自訂材料設計風格之外,您的版面配置也必須遵守材料設計指南。 +當您設計版面配置時,請注意下列事項: +
檢視可以投射出陰影,因此檢視的高度值會決定陰影的大小及其繪製順序。如果要設定檢視的高度,請在版面配置中使用 android:elevation 屬性:
檢視可以投射出陰影,因此檢視的高度值會決定陰影的大小及其繪製順序。
+如要設定視圖的高度,請在版面配置中使用 android:elevation 屬性:
+
<TextView
@@ -95,14 +108,22 @@ page.title=開始使用
android:elevation="5dp" />
-您可以使用新的 translationZ 屬性建立動畫,來反映檢視高度的短暫變化。高度變化可以用來回應輕觸手勢。
您可以使用新的 translationZ 屬性建立動畫,來反映視圖高度的短暫變化。
+高度變化可以用來回應輕觸手勢。
-
如需詳細資訊,請參閱定義陰影和裁剪檢視。
+ + +如需詳細資訊,請參閱定義陰影和裁剪檢視。 +
{@link android.support.v7.widget.RecyclerView} 是一個更容易插入的 {@link android.widget.ListView},能支援不同的版面配置類型,並且提供更好的效能。{@link android.support.v7.widget.CardView} 可讓您在不同的應用程式之間,以一致的外觀顯示卡片內部的資訊。下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.CardView}:
+{@link android.support.v7.widget.RecyclerView} 是一個更容易插入的 {@link +android.widget.ListView} 版本,可支援不同的版面配置類型並提供更好的效能。{@link android.support.v7.widget.CardView} 可讓您在不同的應用程式之間以一致的外觀顯示卡片內部的資訊。 + +下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.CardView}: +
<android.support.v7.widget.CardView @@ -114,12 +135,15 @@ page.title=開始使用 </android.support.v7.widget.CardView>-
如需詳細資訊,請參閱建立清單和卡片。
+如需詳細資訊,請參閱建立清單和卡片。 +
Android 5.0 (API 級別 21) 包含許多新的 API 可在應用程式中建立自訂動畫。例如,您可以啟用操作行為轉換,然後在操作行為內部定義離開轉換:
+Android 5.0 (API 級別 21) 包含許多新的 API 以便在應用程式中建立自訂動畫。例如,您可以啟用操作行為轉換,並在操作行為內部定義離開轉換: + +
public class MyActivity extends Activity {
@@ -144,4 +168,4 @@ public class MyActivity extends Activity {
當您從這個操作行為開始另一個操作行為時,就會啟動離開轉換。
-如需深入了解新的動畫 API,請參閱定義自訂動畫。
\ No newline at end of file
+如需深入了解新的動畫 API,請參閱定義自訂動畫。
diff --git a/docs/html-intl/intl/zh-tw/training/material/index.jd b/docs/html-intl/intl/zh-tw/training/material/index.jd
index ff17ee7e56655..5599d5936973c 100644
--- a/docs/html-intl/intl/zh-tw/training/material/index.jd
+++ b/docs/html-intl/intl/zh-tw/training/material/index.jd
@@ -1,7 +1,8 @@
-page.title=使用材料設計建立應用程式
-page.type=design
-page.image=images/material.png
-page.metaDescription=了解如何對應用程式套用材料設計。
+page.title=開發人員材料設計
+page.type=設計
+page.image=images/cards/material_2x.png
+page.metaDescription=學習如何套用材料設計至您的應用程式。
+
@jd:body
@@ -10,24 +11,29 @@ page.metaDescription=了解如何對應用程式套用材料設計。
相依性和先決條件
材料設計是一份廣泛綜合性的指南,引導您跨平台、跨裝置進行視覺、動態和互動的設計。如果要在 Android 應用程式中使用材料設計,請依照材料設計規格中的指示,使用 Android 5.0 (API 級別 21) 中的新元件和新功能。
+材料設計是一份廣泛綜合性的指南,引導您跨平台、跨裝置進行視覺、動態和互動的設計。 +如要在 Android 應用程式中使用材料設計,請依照材料設計規格中的指示,使用 Android 5.0 (API 級別 21) 中的新元件和新功能。 + + + +
本課程示範如何使用下列元素建立材料設計應用程式:
本課程也示範當您在應用程式中使用材料設計功能時,如何與 Android 5.0 (API 級別 21) 之前的版本維持相容性。
+本課程也示範當您在應用程式中使用材料設計功能時,如何與 Android 5.0 (API 級別 21) 之前的版本維持相容性。 +
如果要在應用程式中使用材料設計樣式建立複雜的清單和卡片,可以使用 {@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具。
+如要在應用程式中使用材料設計樣式建立複雜的清單和卡片,可以使用 {@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具。 + +
{@link android.support.v7.widget.RecyclerView} 小工具是比較進階和彈性的 {@link android.widget.ListView} 版本。這個小工具是一個用來顯示大型資料集的容器,只要維護少數幾個檢視,就可以非常有效率地捲動資料集。如果您的資料集元素在執行期間會根據使用者操作動作或網路事件而變更,就可以使用 {@link android.support.v7.widget.RecyclerView} 小工具。
+{@link android.support.v7.widget.RecyclerView} 小工具是比較進階和彈性的 {@link android.widget.ListView} 版本。 +這個小工具是一個用來顯示大型資料集的容器,只要維護少數幾個視圖,就可極有效率地捲動資料集。 +當您的資料集元素在執行階段會根據使用者操作動作或網路事件而變更,請使用 {@link android.support.v7.widget.RecyclerView} 小工具。 -
{@link android.support.v7.widget.RecyclerView} 類別會提供下列項目,簡化大型資料集的顯示和處理方式:
+ + +{@link android.support.v7.widget.RecyclerView} 類別會提供下列項目,簡化大型資料集的顯示和處理方式: +
您也可以針對 {@link android.support.v7.widget.RecyclerView} 小工具定義自訂的版面配置管理員。
+您也可針對 {@link +android.support.v7.widget.RecyclerView} 小工具定義自訂的版面配置管理員。
圖 1.RecyclerView 小工具。
如果要使用 {@link android.support.v7.widget.RecyclerView} 小工具,您就必須指定配接器和版面配置管理員。如果要建立配接器,請延伸 {@link android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 類別。實作的詳細情形則根據您的資料集和檢視類型而定。如需詳細資訊,請參閱下面的範例。
+如果要使用 {@link android.support.v7.widget.RecyclerView} 小工具,您必須指定配接器和版面配置管理員。 +如要建立配接器,請延伸 {@link +android.support.v7.widget.RecyclerView.Adapter RecyclerView.Adapter} 類別。實作的詳細情形根據您的資料集和檢視類型而定。 +如需詳細資訊,請參閱下面的範例。 +
-圖 2 - 使用 RecyclerView 的清單。
+圖 2 - 含有 RecyclerView 的清單。
版面配置管理員會將 {@link android.support.v7.widget.RecyclerView} 內的項目檢視定位,然後判斷何時要重複使用使用者不會再看到的項目檢視。如果要重複使用 (或者「回收」) 某個檢視,版面配置管理員會要求配接器使用資料集中不同的元素取代檢視的內容。使用此方式回收檢視可以增進效能,避免建立不必要的檢視或執行耗費資源的 {@link android.app.Activity#findViewById findViewById()} 查詢。
+版面配置管理員會將 {@link +android.support.v7.widget.RecyclerView} 內的項目視圖定位,並判斷何時要重複使用使用者不會再看到的項目視圖。 +如要重複使用 (或回收) 某個視圖,版面配置管理員會要求配接器以資料集中不同的元素,取代視圖的內容。 +使用此方式回收視圖可避免建立不必要的視圖或執行耗費資源的 {@link android.app.Activity#findViewById findViewById()} 查詢,以增進效能。 + +
{@link android.support.v7.widget.RecyclerView} 提供下列內建的版面配置管理員:
如果要建立自訂版面配置管理員,請延伸 {@link android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 類別。
+如要建立自訂版面配置管理員,請延伸 {@link +android.support.v7.widget.RecyclerView.LayoutManager RecyclerView.LayoutManager} 類別。
在 {@link android.support.v7.widget.RecyclerView} 中,預設已啟用新增和移除項目的動畫。如果要自訂這些動畫,請延伸 {@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 類別並使用 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} 方法。
+在 {@link +android.support.v7.widget.RecyclerView} 中,預設已啟用新增和移除項目的動畫。如果要自訂這些動畫,請延伸 {@link android.support.v7.widget.RecyclerView.ItemAnimator RecyclerView.ItemAnimator} 類別並使用 {@link android.support.v7.widget.RecyclerView#setItemAnimator RecyclerView.setItemAnimator()} 方法。 + + +
下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.RecyclerView}:
+下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.RecyclerView}: +
<!-- A RecyclerView with some commonly used attributes -->
@@ -78,7 +102,9 @@ page.title=建立清單和卡片
android:layout_height="match_parent"/>
-在版面配置中加入 {@link android.support.v7.widget.RecyclerView} 小工具之後,取得該物件的控制代碼、將控制代碼連線到版面配置管理員,然後連接配接器以便顯示資料:
+一旦您在版面配置中加入 {@link android.support.v7.widget.RecyclerView} 小工具之後,先取得該物件的控制代碼、將控制代碼連線到版面配置管理員,再連接配接器以便顯示資料: + +
public class MyActivity extends Activity {
@@ -108,7 +134,10 @@ public class MyActivity extends Activity {
}
-配接器可以存取資料集中的項目、建立項目的檢視,並在原來的項目無法再顯示時,使用新的資料項目取代某些檢視的內容。下列程式碼範例簡單實作一個由使用 {@link android.widget.TextView} 小工具顯示的字串陣列所組成的資料集:
+配接器可存取資料集中的項目、建立項目的視圖,並在原來的項目無法再顯示時,使用新的資料項目取代某些視圖的內容。 + +下列程式碼範例簡單實作一個由使用 {@link android.widget.TextView} 小工具顯示的字串陣列所組成的資料集: +
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
@@ -171,19 +200,29 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
建立卡片
-{@link android.support.v7.widget.CardView} 會延伸 {@link android.widget.FrameLayout} 類別,可讓您跨平台以一致的外觀顯示卡片內部的資訊。{@link android.support.v7.widget.CardView} 小工具可以有陰影和圓形邊角。
+{@link android.support.v7.widget.CardView} 會延伸{@link android.widget.FrameLayout} 類別,讓您跨平台以一致的外觀顯示卡片內部的資訊。{@link
+android.support.v7.widget.CardView} 小工具可以有陰影和圓形邊角。
+
-如果要建立有陰影的卡片,請使用 card_view:cardElevation 屬性。在 Android 5.0 (API 級別 21) 以及更新版本上,{@link android.support.v7.widget.CardView} 使用實際高度和動態陰影,但是在較舊的版本上則只能有計畫地實作陰影。如需詳細資訊,請參閱維持相容性。
+如要建立有陰影的卡片,請使用 card_view:cardElevation 屬性。在 Android 5.0 (API 級別 21) 以及以上版本,{@link android.support.v7.widget.CardView} 使用實際高度和動態陰影,但在較舊的版本上只能有計畫地實作陰影。如需詳細資訊,請參閱維持相容性。
-
使用下列屬性可自訂 {@link android.support.v7.widget.CardView} 小工具的外觀:
+
+
+
+
+使用下列屬性可自訂 {@link android.support.v7.widget.CardView} 小工具的外觀:
+
card_view:cardCornerRadius 屬性。card_view:cardCornerRadius 屬性。
+ CardView.setRadius 方法。card_view:cardBackgroundColor 屬性。card_view:cardBackgroundColor 屬性。
+ 下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.CardView} 小工具:
+下列程式碼範例示範如何在版面配置中加入 {@link android.support.v7.widget.CardView}小工具: +
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
@@ -212,7 +251,11 @@ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
新增相依性
-{@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具都屬於 v7 支援程式庫。如果要在專案中使用這些小工具,請在應用程式的模組中加入下列 Gradle 相依性:
+{@link android.support.v7.widget.RecyclerView} 和 {@link android.support.v7.widget.CardView} 小工具都屬於 v7 支援程式庫。
+
+如要在專案中使用這些小工具,請在應用程式的模組中加入下列 Gradle 相依性:
+
+
dependencies {
@@ -220,4 +263,4 @@ dependencies {
compile 'com.android.support:cardview-v7:21.0.+'
compile 'com.android.support:recyclerview-v7:21.0.+'
}
-
\ No newline at end of file
+
diff --git a/docs/html-intl/intl/zh-tw/training/material/shadows-clipping.jd b/docs/html-intl/intl/zh-tw/training/material/shadows-clipping.jd
index 54a8eced6c84d..d8c996d0255b6 100644
--- a/docs/html-intl/intl/zh-tw/training/material/shadows-clipping.jd
+++ b/docs/html-intl/intl/zh-tw/training/material/shadows-clipping.jd
@@ -1,4 +1,4 @@
-page.title=定義陰影和裁剪檢視
+page.title=定義陰影和裁剪視圖
@jd:body
@@ -6,9 +6,9 @@ page.title=定義陰影和裁剪檢視
材料設計為 UI 元素引入高度的概念。高度可以幫助使用者了解每個元素的相對重要性,然後讓使用者把焦點放在手邊的工作上。
+材料設計為 UI 元素引入高度的概念。高度有助使用者了解每個元素的相對重要性並將焦點放在手邊的工作上。 +
-檢視的高度以 Z 屬性表示,判斷其陰影的視覺外觀:Z 值越高的檢視投射範圍越大,陰影就越柔和。Z 值較高的檢視會遮住 Z 值較低的檢視。不過,檢視的 Z 值不會影響檢視的大小。
+視圖的高度以 Z 屬性表示,決定其陰影的視覺外觀:視圖的 Z 值越高,投射範圍越大,陰影也就越柔和。 +Z 值較高的視圖會遮住 Z 值較低的視圖。然而,視圖的 Z 值不會影響視圖的大小。 +
-陰影是由較高的上層檢視繪製,因此也和標準檢視裁剪一樣,預設由上層檢視裁剪陰影。
+陰影是由較高的上層視圖繪製,因此也和標準視圖裁剪一樣,預設由上層視圖裁剪陰影。 +
-當小工具在執行某些操作動作而暫時升高到檢視平面的上方時,高度對於建立動畫也非常有用。
+當小工具在執行某些操作動作而暫時升高到視圖平面的上方時,高度對於建立動畫也非常實用。 +
-如需有關材料設計高度的詳細資訊,請參閱 3D 空間中的物件。
+如需有關材料設計高度的詳細資訊,請參閱 3D 空間中的物件。 + +
-檢視的 Z 值有兩個部分:
視圖的 Z 值有兩個部分: + +
Z = elevation + translationZ
-圖 1 - 不同檢視高度的陰影。
+圖 1 - 不同視圖高度的陰影。
-如果要在版面配置定義中設定檢視的高度,請使用 android:elevation 屬性。如果要在操作行為的程式碼中設定檢視的高度,請使用 {@link android.view.View#setElevation View.setElevation()} 方法。
如要在版面配置定義中設定視圖的高度,請使用 android:elevation 屬性。
+如果要在操作行為的程式碼中設定檢視的高度,請使用 {@link android.view.View#setElevation View.setElevation()} 方法。
+
如果要設定檢視的解譯,請使用 {@link android.view.View#setTranslationZ View.setTranslationZ()} 方法。
+如要在操作行為的程式碼中設定檢視的高度,請使用 {@link android.view.View#setTranslationZ +View.setTranslationZ()} 方法。
-新的 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 和 {@link android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 方法可以很輕易地賦予檢視高度栩栩如生的質感。如需詳細資訊,請參閱 {@link android.view.ViewPropertyAnimator} 的 API 參考資料和屬性動畫開發人員指南。
+新的 {@link android.view.ViewPropertyAnimator#z ViewPropertyAnimator.z()} 和 {@link +android.view.ViewPropertyAnimator#translationZ ViewPropertyAnimator.translationZ()} 方法可以很輕易地讓視圖高度變得栩栩如生。 +如需詳細資訊,請參閱 {@link android.view.ViewPropertyAnimator}的 API 參考資料和屬性動畫開發人員指南。 -
您也可以使用 {@link android.animation.StateListAnimator} 以宣告的方式指定這些動畫。當狀態變更觸發動畫時 (例如當使用者按下了按鈕),這會特別有用。如需詳細資訊,請參閱動畫顯示檢視狀態變更。
+ + +您也可以使用 {@link android.animation.StateListAnimator} 以宣告的方式指定這些動畫。 +當狀態變更觸發動畫時, 例如使用者按下按鈕,這會特別實用。 +如需詳細資訊,請參閱動畫顯示視圖狀態變更。 +
Z 值的測量單位為 dp (密度獨立像素)。
-檢視背景可繪項目的邊界決定檢視陰影的預設形狀。外框代表圖形物件的外部形狀,而且會定義輕觸回饋的漣漪區域。
+檢視背景可繪項目的邊界決定了視圖陰影的預設形狀。外框代表圖形物件的外部形狀,並可定義輕觸回饋的漣漪區域。 -
我們來看看這個使用背景可繪項目定義的檢視:
+ + +我們來看看這個使用背景可繪項目定義的視圖:
<TextView @@ -77,23 +98,36 @@ page.title=定義陰影和裁剪檢視 </shape>-
因為背景可繪項目定義了檢視的外框,所以檢視投射出有圓形邊角的陰影。如果提供自訂的外框,則會覆寫檢視陰影的預設形狀。
+因為背景可繪項目定義了視圖的外框,所以視圖投射出有圓形邊角的陰影。 +如果提供自訂的外框,則會覆寫視圖陰影的預設形狀。
-在程式碼中定義檢視的自訂外框:
+
在程式碼中定義視圖的自訂外框:
您可以使用 {@link android.graphics.Outline} 類別中的方法,建立橢圓形外框和有圓形邊角的長方形外框。檢視的預設外框提供者會從檢視的背景取得外框。如果要避免檢視投射出陰影,請將檢視的外框提供者設定為 null。
您可以使用 {@link android.graphics.Outline} 類別中的方法,建立橢圓形外框和有圓形邊角的長方形外框。
+視圖的預設外框提供者會從視圖的背景取得外框。
+如果要避免視圖投射出陰影,請將視圖的外框提供者設定為 null。
+
裁剪檢視可以讓您輕鬆地變更檢視的形狀。您可以裁剪檢視,讓檢視與其他設計元素有一致的外觀,或者變更檢視的形狀來回應使用者的輸入。您可以使用 {@link android.view.View#setClipToOutline View.setClipToOutline()} 方法或 android:clipToOutline 屬性,將檢視裁剪為其外框區域。依照 {@link android.graphics.Outline#canClip Outline.canClip()} 方法的定義,只有長方形、圓形和圓角長方形的外框才支援裁剪。
裁剪視圖可以讓您輕鬆地變更視圖的形狀。您可以裁剪視圖,讓視圖與其他設計元素有一致的外觀,或變更視圖的形狀來回應使用者的輸入。您可以使用 {@link android.view.View#setClipToOutline
+View.setClipToOutline()} 方法或 android:clipToOutline 屬性,將視圖裁剪為其外框區域。
-
如果要將檢視裁剪為可繪項目的形狀,請將可繪項目設定為檢視的背景 (如上所示),然後呼叫 {@link android.view.View#setClipToOutline View.setClipToOutline()} 方法。
+根據 {@link android.graphics.Outline#canClip Outline.canClip()} 方法的定義,只有長方形、圓形和圓角長方形的外框才支援裁剪。 -裁剪檢視是一種耗費資源的操作,所以請不要將您用來裁剪檢視的形狀做成動畫。如果想要達到這種效果,請使用顯示效果動畫。
\ No newline at end of file + + +如要將視圖裁剪為可繪項目的形狀,請將可繪項目設定為視圖的背景 (如上所示),然後呼叫 {@link android.view.View#setClipToOutline View.setClipToOutline()} 方法。 + +
+ +裁剪視圖是一種耗費資源的操作,所以請不要將您用來裁剪視圖的形狀做成動畫。 +如果想要達到這種效果,請使用顯示效果動畫。
diff --git a/docs/html-intl/intl/zh-tw/training/material/theme.jd b/docs/html-intl/intl/zh-tw/training/material/theme.jd index 8e368277a44ec..61cd8bdcfda58 100644 --- a/docs/html-intl/intl/zh-tw/training/material/theme.jd +++ b/docs/html-intl/intl/zh-tw/training/material/theme.jd @@ -8,7 +8,7 @@ page.title=使用材料設計風格您可以根據品牌特性,使用您控制的色板來自訂材料設計風格的外觀。您可以使用風格主題屬性,為行為欄和狀態列著色,如圖 3 所示。
+您可根據品牌特性,使用您控制的色板以自訂材料設計風格的外觀。 +您可以使用風格主題屬性,為行為欄和狀態列著色,如圖 3 所示。 +
-系統小工具經過全新設計,有輕觸回饋動畫。您可以為應用程式自訂色板、輕觸回饋動畫,以及操作行為轉換。
+系統小工具經過全新設計,有輕觸回饋動畫。您可以為應用程式自訂色板、輕觸回饋動畫,以及操作行為轉換。 +
材料設計風格定義為:
@@ -39,33 +42,39 @@ page.title=使用材料設計風格@android:style/Theme.Material.Light.DarkActionBar如需您可以使用的材料樣式清單,請參閱 {@link android.R.style R.style} 的 API 參考資料。
+如需您可以使用的材料樣式清單,請參閱 {@link android.R.style R.style} 的 API 參考資料。 +
圖 1.深色材料設計風格
+圖 1.深色材料設計風格
圖 2.淺色材料設計風格
+圖 2.淺色材料設計風格
-注意:材料設計風格只能在 Android 5.0 (API 級別 21) 以及更新版本中使用。v7 支援程式庫針對某些小工具提供使用材料設計樣式的風格主題,並且支援自訂色板。如需詳細資訊,請參閱維持相容性。 +注意:材料設計風格只能在 Android 5.0 (API 級別 21) 及以上版本中使用。 +v7 支援程式庫針對某些小工具提供使用材料設計樣式的設計風格,並支援自訂色板。 + +如需詳細資訊,請參閱維持相容性。 +
如果要自訂風格主題的基礎顏色來搭配您的品牌,在繼承材料設計風格時,請使用風格主題屬性定義您的自訂顏色:
+如要自訂設計風格的基礎顏色來搭配您的品牌,在繼承材料設計風格時,請使用設計風格屬性定義您的自訂顏色: +
<resources> @@ -91,17 +100,32 @@ page.title=使用材料設計風格自訂狀態列
-材料設計風格可以讓您輕鬆自訂狀態列,因此您可以指定符合品牌的顏色,並且提供足夠的對比來顯示白色的狀態圖示。如果要設定狀態列的自訂顏色,請在延伸材料設計風格時使用
+android:statusBarColor屬性。android:statusBarColor預設會繼承android:colorPrimaryDark的值。材料設計風格可讓您輕鬆自訂狀態列,因此,您可指定符合品牌的顏色,並提供足夠的對比來顯示白色的狀態圖示。 +如要設定狀態列的自訂顏色,請在延伸材料設計風格時使用
android:statusBarColor屬性。 -您也可以自行繪製狀態列。例如,如果您想要在相片上面顯示透明的狀態列,但是搭配一點深色的漸層,確保可以看見白色的狀態圖示。請將
- -android:statusBarColor屬性設定為@android:color/transparent,並且視需要調整視窗標幟。您也可以使用 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 方法顯示動畫或進行淡化。-注意:狀態列必須與主要工具列有清楚區分的輪廓,除非您要在這些列後面顯示全版的豐富圖像或媒體內容,或者使用漸層來確保圖示清晰可見。 +
-android:statusBarColor預設會繼承android:colorPrimaryDark的值。當您自訂導覽列和狀態列時,請讓兩者都變成透明,或者只修改狀態列。在其他所有狀況下,導覽列都必須保持黑色。
+您也可以自行繪製狀態列。例如,若您想在相片上面顯示透明的狀態列,卻想搭配一點深色的漸層以確保白色的狀態圖示清晰可見。 + +請將
+ +android:statusBarColor屬性設定為@android:color/transparent,並且視需要調整視窗標幟。 +您也可以使用 {@link android.view.Window#setStatusBarColor Window.setStatusBarColor()} 方法顯示動畫或進行淡化。 + ++注意:狀態列應該與主要工具列有清楚區分的輪廓,除非您想在這些列後面顯示全版的豐富圖像或媒體內容,或使用漸層以確保圖示清晰可見。 -
風格主題個別檢視 + -
XML 版面配置定義中的元素可以指定
\ No newline at end of file +android:theme屬性,參考風格主題資源。這個屬性會修改元素和所有子元素的風格主題,這在改變介面特定部份的風格主題色板時很有用。當您自訂瀏覽列和狀態列時,請讓兩者都變成透明,或者只修改狀態列。 +在其他所有狀況下,瀏覽列都必須保持黑色。
+ + +設計風格個別視圖 + +
XML 版面配置定義中的元素可以指定
diff --git a/docs/html/design/design_toc.cs b/docs/html/design/design_toc.cs index 477eb2332d517..2dda87e82aa62 100644 --- a/docs/html/design/design_toc.cs +++ b/docs/html/design/design_toc.cs @@ -24,7 +24,10 @@ pt-br-lang="Material Design" ru-lang="Material Design" zh-cn-lang="材料设计" - zh-tw-lang="材料設計"> + zh-tw-lang="材料設計" + in-lang="Desain Bahan" + vi-lang="Material Design" + > Material for Android diff --git a/docs/html/training/training_toc.cs b/docs/html/training/training_toc.cs index 38f069f55d6b0..9e156d0821d3b 100644 --- a/docs/html/training/training_toc.cs +++ b/docs/html/training/training_toc.cs @@ -1609,6 +1609,15 @@ results." Creating Apps with Material Designandroid:theme屬性,參考設計風格資源。 +此屬性會修改元素和所有子元素的設計風格,對於改變介面特定部份的設計風格色板非常實用。 + +