精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

徹底理解 Android MD 設(shè)計(jì)里的 “陰影”

移動(dòng)開(kāi)發(fā) Android
如果我們想創(chuàng)造更好的 Android App,我相信我們需要遵循 Material Design 的設(shè)計(jì)規(guī)范。一般而言,Material Design 是一個(gè)包含光源、材質(zhì)和投影的三維環(huán)境。如果我們想要在 App 的開(kāi)發(fā)過(guò)程中,跟隨 Material Design 的設(shè)計(jì)原則,那么理解 光 與 陰影 就顯得尤為重要了。

[[220766]]

如果我們想創(chuàng)造更好的 Android App,我相信我們需要遵循 Material Design 的設(shè)計(jì)規(guī)范。一般而言,Material Design 是一個(gè)包含光源、材質(zhì)和投影的三維環(huán)境。如果我們想要在 App 的開(kāi)發(fā)過(guò)程中,跟隨 Material Design 的設(shè)計(jì)原則,那么理解 光 與 陰影 就顯得尤為重要了。

我將嘗試解釋本文中的以下主題。

  • Android 中的 3D
  • 深度(Depth)
  • Z 軸,Elevation 和 Translation Z。
  • 光源
  • 按鈕狀態(tài)(按下和靜止)
  • Outline
  • 自定義的 ViewOutlineProvider

在深入到陰影和光線之前,我想告訴你我們的真實(shí)環(huán)境什么?

什么是 3D?

真實(shí)的物質(zhì)環(huán)境,是一個(gè)三維空間,這意味著所有的物體對(duì)象都有 X、Y 和 Z 維度。Z軸與顯示器的平面垂直對(duì)齊,正 Z 軸朝向觀察者延伸。在 Material Design 的世界里,每個(gè)物體都有 1dp 的厚度。

Android 的 Depth

Material Design 不同于其他的設(shè)計(jì)指南,因?yàn)樗黾恿?Depth(深度)的概念。而 Depth 在真實(shí)的視覺(jué)中,有重要的意義。

我們可以認(rèn)為我們桌子上有一層紙,如果我們?cè)儋N一張紙,我們的眼睛會(huì)覺(jué)得它有一個(gè)深度。

讓我們通過(guò) Material Design 的應(yīng)用截圖來(lái)想象它。

讓我們來(lái)看看屏幕上的各個(gè)元素。

  • 屏幕(表層 - 深度為 0 )
  • CardViews
  • App UI 布局
  • 浮動(dòng)動(dòng)作按鈕(Floating Action Button)

這里面,每個(gè)元素都在另一個(gè)元素之上。CardView 可以滾動(dòng),所以我們可以說(shuō)***層是可滾動(dòng)的內(nèi)容,第二層是 AppBar 布局,第三層(頂層)是浮動(dòng)動(dòng)作按鈕。

那么,我們?nèi)绾味x層級(jí)?我們?nèi)绾巫層脩舾惺艿缴疃龋看鸢甘牵?Z 軸。

Android 中的 Z 值是什么?

View 的 Z 值有兩個(gè)組成部分:

  • Elevation:高度,一個(gè)靜態(tài)值。
  • Translation Z:Z軸變動(dòng)值,用于動(dòng)畫的動(dòng)態(tài)值。

我總是在想 Elevation 和 Translation Z 有什么區(qū)別。

Elevation 是靜態(tài)的,所以你***不要?jiǎng)討B(tài)的去改變他。如果你想在 Z 軸上做動(dòng)畫的效果(如按下態(tài)或者靜止態(tài)),你需要使用 Translation Z 屬性。

Translation Z 是動(dòng)態(tài)的,當(dāng)你創(chuàng)建一個(gè)空白項(xiàng)目,并在其中增加一個(gè)按鈕的時(shí)候,當(dāng)你按下它你將會(huì)看到陰影變大了。實(shí)際上 Elevation 并沒(méi)有變化,而是 Translation Z 屬性在變化。這是 Android 使用默認(rèn)的狀態(tài)列表動(dòng)畫,更改 Z 屬性。

Z Vaue = Elevation + TranslationZ

如果我們改變兩個(gè)具有 Z 值的 View,讓它們相交。Android 如何處理屏幕上的層級(jí)?讓我用一個(gè)我設(shè)計(jì)的圖表向你展示。

另外一個(gè)問(wèn)題,我們?nèi)绾慰吹轿矬w的影子?我們是需要一個(gè)陰影嗎?不是的,我們是需要一個(gè)光源。

Android 中的光源是什么?

其實(shí)問(wèn)題不在于是什么?而是在哪里。

在現(xiàn)實(shí)中,如果我們手持一個(gè)手電筒照桌子上的物體(從它的頂部),陰影的長(zhǎng)度會(huì)縮短,當(dāng)你降低它的時(shí)候,陰影的長(zhǎng)度會(huì)增加。

那么在 Android 的 Material Design 中,光源在哪里?在頂部?還是有角度的?經(jīng)過(guò)一番研究,我發(fā)現(xiàn)這個(gè)現(xiàn)象。

Android 中存在兩個(gè)光源,頂部那個(gè)是關(guān)鍵的光源,而另一個(gè)是環(huán)境光源,我們看到的陰影實(shí)際上是這兩個(gè)光源的組合。

讓我們看看顯示的效果。

在 Android 中,我們有很多小部件。按鈕、CardView、對(duì)話框,抽屜等所有這些都是視圖。如果有一個(gè)光源,我們就有陰影。那么我們?nèi)绾卧贏ndroid中決定 Z 值呢?Material Design 是如何規(guī)定這些的?

有一個(gè)示意圖來(lái)反映這種情況。

靜止或者按下

正如我之前提到的,在 Android Framework 中,一些動(dòng)畫是為小部件而實(shí)現(xiàn)的。如果你在布局中放置浮動(dòng)操作按鈕,默認(rèn)情況下它將具有 6dp 的 Elevation。但是你會(huì)注意到當(dāng)你按下按鈕時(shí),F(xiàn)AB 的 Elevation 將會(huì)提高到 12dp。

讓我告訴你,在這個(gè)過(guò)程中發(fā)生了什么。

其實(shí) FAB 有 6dp 的 Elevation。當(dāng)您按下按鈕時(shí),translationZ 值開(kāi)始增加。ViewPropertyAnimator 通過(guò)將 translationZ 值從 0dp 更改為 6dp 來(lái)讓視圖動(dòng)起來(lái)。如果你釋放按鈕,ViewPropertyAnimator 播放動(dòng)畫,將 translationZ 從 6dp 變到 0dp。你可以為你的視圖創(chuàng)建自定義狀態(tài)列表動(dòng)畫,并將其添加到你的視圖上。

我們來(lái)看一下這個(gè)過(guò)程的流程圖。

陰影的秘密:Outline

Outline 是一個(gè)屬于 android.graphic 下的類,看看它的文檔都說(shuō)了什么

定義一個(gè)簡(jiǎn)單的形狀,用于圖形的邊界區(qū)域。

可以為 View 計(jì)算,也可以由 Drawable 計(jì)算,以驅(qū)動(dòng)由視圖投射的陰影的形狀,或剪裁視圖的內(nèi)容。

每個(gè) View 都有默認(rèn)的輪廓以顯示其陰影。如果我們創(chuàng)建一個(gè)可繪制的自定義形狀,其輪廓將根據(jù)其形狀在內(nèi)部進(jìn)行計(jì)算。所以,如果我們畫圓,輪廓將會(huì)是圓的。如果我們繪制矩形,輪廓將是矩形。

總而言之,有一個(gè) Outlin 可以讓你以不可見(jiàn)的方式看到這個(gè)效果。但是,如果我想創(chuàng)建一個(gè)自定義的視圖,并動(dòng)態(tài)地改變它的邊界呢?Android 會(huì)為我的自定義視圖提供了 Outline 嗎?

Android 當(dāng)然為我們提供了自定義 Outline 的辦法,那就是 : ViewOutlineProvider。

什么是 ViewOutlineProvider

在我最近的開(kāi)源的 ScalingLayout 庫(kù)中,我沒(méi)有對(duì)自定義視圖實(shí)現(xiàn)陰影效果。我以為這是非常漂亮,沒(méi)有影子。但要記住 Material Design 的基礎(chǔ)知識(shí),3D,Depth,Z-Value。

這個(gè)動(dòng)畫中,我們可能無(wú)法確定那些地方是可以被點(diǎn)擊的,而且縮放布局中并沒(méi)有陰影。

接下來(lái)我們?yōu)樽远x的視圖提供動(dòng)態(tài)的輪廓。

  1. public class ScalingLayoutOutlineProvider extends ViewOutlineProvider { 
  2.  
  3.     @Override 
  4.     public void getOutline(View view, Outline outline) { 
  5.         outline.setRoundRect(0, 0, width, height, radius); 
  6.     } 
  7. public class ScalingLayout extends FrameLayout { 
  8.  
  9.     //... 
  10.     viewOutline = new ScalingLayoutOutlineProvider(w, h, currentRadius); 
  11.     setOutlineProvider(viewOutline); 
  12.     //.. 
  13.  

這樣,我們就為自定義的 View 增加了高度的支持。

更多有關(guān)于 ViewOutlineProvider 的使用中,被簡(jiǎn)化的一些基礎(chǔ)知識(shí),你可以在 ScalingLayout 中找到細(xì)節(jié)。

https://github.com/iammert/ScalingLayout

【本文為51CTO專欄作者“張旸”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)微信公眾號(hào)聯(lián)系作者獲取授權(quán)】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2021-05-13 08:55:33

Android架構(gòu)功能

2025-08-28 07:58:18

2016-11-28 14:44:55

ANDROID BIN通信架構(gòu)

2016-11-28 14:11:24

ANDROID BIN通信架構(gòu)

2021-08-15 08:11:54

AndroidSynchronize關(guān)鍵字

2021-09-04 07:29:57

Android

2022-08-16 09:03:01

JavaScript前端

2024-06-21 08:32:24

2022-01-06 14:25:24

C語(yǔ)言指針內(nèi)存

2021-12-06 11:19:47

語(yǔ)言指針內(nèi)存

2023-10-27 11:21:20

C語(yǔ)言Multics語(yǔ)言

2022-12-29 08:12:51

動(dòng)態(tài)規(guī)劃profit

2020-03-03 14:15:49

Redis持久化數(shù)據(jù)庫(kù)

2019-06-11 14:45:25

2019-01-09 08:31:07

2019-11-07 10:37:36

CookieSessionToken

2024-03-15 08:23:26

異步編程函數(shù)

2014-02-17 15:27:19

Linux系統(tǒng)

2022-10-24 08:08:27

閉包編譯器

2021-12-27 09:33:12

內(nèi)存泄漏程序
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩精品久久久久久久电影99爱| 成人欧美一区二区三区的电影| 韩国av一区二区三区四区| 久久九九免费视频| 免费黄色av网址| 神马电影网我不卡| 亚洲视频免费看| 国产精品区一区| 亚洲成人av网址| 亚洲成av人电影| 日韩国产精品一区| 激情视频综合网| 少妇av在线| 久久综合九色综合97_久久久| 国产91色在线|免| 免费中文字幕视频| 欧美艳星介绍134位艳星| 日韩一区二区三区精品视频| 男人插女人视频在线观看| 粉嫩一区二区三区国产精品| 国产成人自拍网| 国产精品99久久久久久久久久久久| 亚洲熟女www一区二区三区| 色爱av综合网| 日韩一区二区精品在线观看| 日韩一级免费在线观看| 欧美韩日亚洲| 中文字幕亚洲在| 久久久影院一区二区三区| 99在线观看精品视频| 欧美专区18| 国模吧一区二区| 一级免费黄色录像| 九一精品国产| 亚洲精品国产综合久久| 天天操精品视频| 91p九色成人| 黑人巨大精品欧美一区免费视频| 亚洲美女自拍偷拍| 香蕉视频在线看| 久久久久久久久岛国免费| 国产伦精品一区| 亚洲系列在线观看| 日韩精品久久理论片| 91成人在线视频| 久草视频精品在线| 国内精品久久久久久久97牛牛 | 国产精品第10页| 日本三级视频在线| 欧美/亚洲一区| 久久久99久久精品女同性| 免费网站在线高清观看| 小说区图片区色综合区| 亚洲精品国产精品乱码不99按摩| 在线播放av网址| 岛国精品一区| 精品国产免费人成在线观看| 色婷婷综合在线观看| 91麻豆精品国产91久久久更新资源速度超快| 一道本成人在线| 99视频精品免费| 播放一区二区| 欧美丝袜丝交足nylons| 日日躁夜夜躁aaaabbbb| 免费污视频在线一区| 在线一区二区三区做爰视频网站| caopor在线视频| 日本精品不卡| 欧美午夜精品理论片a级按摩| av免费在线播放网站| 欧美xo影院| 欧美图区在线视频| www.超碰97.com| 成人永久在线| 精品久久一二三区| 变态另类丨国产精品| 嫩草一区二区三区| 在线成人一区二区| 国产黄色小视频网站| 综合国产在线| 97在线看福利| 凹凸精品一区二区三区| 久久精品999| 亚洲最大的网站| 日韩中文字幕影院| 久久亚洲二区三区| 欧美一区二区三区精美影视| 成a人v在线播放| 亚洲美女免费视频| 午夜精品久久久久久久无码| 国偷自产一区二区免费视频| 欧美日韩在线播放| 潘金莲一级淫片aaaaa| 欧美三级午夜理伦三级小说| 国产亚洲精品综合一区91| 91制片厂在线| 亚洲高清成人| 国产精品久久激情| 国产成人a人亚洲精品无码| 国产盗摄一区二区三区| 蜜桃传媒视频麻豆第一区免费观看 | 91麻豆制片厂| 欧美+日本+国产+在线a∨观看| 午夜美女久久久久爽久久| 亚洲 国产 日韩 欧美| 国产精品一区久久久久| 久久久亚洲综合网站| 最爽无遮挡行房视频在线| 色综合色狠狠综合色| 91视频福利网| 在线中文字幕日韩| 欧美熟妇精品一区二区| 国产精品入口久久| 欧美人在线视频| 成人h动漫精品一区二区下载| 国内精品久久久久影院薰衣草 | 国产色片在线观看| 91美女福利视频| 黄色特一级视频| 国产精品久久久久77777丨| 精品粉嫩aⅴ一区二区三区四区 | 精品国产乱码久久久久久果冻传媒| 久久五月天综合| 奴色虐av一区二区三区| 不卡视频一二三四| 污污污污污污www网站免费| 高清av一区二区三区| 亚洲精品美女久久久| 欧美特级一级片| 麻豆视频一区二区| 欧美日韩一区在线播放| 草草在线视频| 欧美大胆一级视频| www欧美com| 精品写真视频在线观看| 婷婷久久伊人| 在线成人av观看| 日韩av在线资源| 日本五十路女优| 国产成人精品免费在线| 黄色网zhan| a一区二区三区亚洲| 色系列之999| 美女黄页在线观看| 国产午夜一区二区三区| 欧美精品色婷婷五月综合| 麻豆一区二区| 7777kkkk成人观看| 五月婷婷久久久| 精品久久久久久中文字幕| 这里只有精品在线观看视频| 亚洲视频中文| 久久99国产精品99久久| 在线男人天堂| 亚洲无限av看| 欧美高清69hd| 国产精品传媒入口麻豆| 污污动漫在线观看| 99国产**精品****| 亚洲一区二区自拍| 人人澡人人添人人爽一区二区| 91精品久久久久久久99蜜桃| 91香蕉视频网| 国产乱子伦一区二区三区国色天香| 青青草原国产免费| 亚洲日本视频在线| 777国产偷窥盗摄精品视频| 国产成人a人亚洲精品无码| 亚洲国产欧美日韩另类综合 | 中文字幕久久精品一区二区| 色综合久久88| 天堂在线中文资源| 日韩欧美在线视频| 免费在线观看a视频| 精品一区二区av| 99国产精品白浆在线观看免费| 国产96在线亚洲| 日本午夜在线亚洲.国产| sese一区| 日韩欧美激情一区| 九九热在线免费观看| 国产欧美一区二区精品仙草咪| 亚洲一级免费观看| 国模吧视频一区| 久久精品国产精品国产精品污| 欧美www.| 久久成人av网站| 四虎电影院在线观看| 欧美日韩中文字幕精品| 欧洲猛交xxxx乱大交3| 99re视频精品| 99re6在线观看| 精品动漫3d一区二区三区免费版 | 看看黄色一级片| 亚洲午夜电影| 日韩中文字幕一区二区| 精品中文字幕一区二区三区| 9.1国产丝袜在线观看| 在线观看麻豆蜜桃| 欧美精品一区二区三区在线 | 99在线视频影院| 一个色综合导航| 朝桐光av在线一区二区三区| 色国产综合视频| 免费在线观看黄色av| 亚洲国产成人在线| 精品人妻一区二区三区日产| 麻豆极品一区二区三区| 91视频 -- 69xx| 欧美在线资源| 亚洲电影免费| 日韩啪啪网站| www.久久久| 国产69精品久久| 国产91av在线| aa在线视频| 在线日韩第一页| 天堂av在线资源| 日韩欧美电影在线| 亚洲一区中文字幕永久在线| 欧美日韩一区二区在线播放| 欧美激情图片小说| 国产精品二三区| 无码人妻aⅴ一区二区三区69岛| 国产精品1区2区| 美女在线视频一区二区| 鲁大师影院一区二区三区| 日韩成人手机在线| 欧美日韩一卡| 穿情趣内衣被c到高潮视频| 日韩欧美一区二区三区免费看| 欧美日韩另类综合| 精品亚洲自拍| 国产精品一区二区在线观看| 国产精品igao视频网网址不卡日韩| 国产精品激情av电影在线观看 | 欧美体内谢she精2性欧美| 欧美三级小视频| 自拍偷拍亚洲激情| 免费观看特级毛片| 欧美国产精品中文字幕| 丰满少妇高潮一区二区| www久久精品| aaaaaav| 91麻豆.com| 日韩一区二区a片免费观看| 久久亚洲一级片| 日本乱子伦xxxx| 国产欧美综合在线观看第十页| 日本一区二区三区网站| 91视频在线观看免费| 手机在线看片日韩| 91在线你懂得| 成人午夜剧场视频网站| 国产色爱av资源综合区| 欧美三级视频网站| 中文字幕亚洲一区二区av在线| 99热6这里只有精品| 亚洲视频免费看| 久久国产免费观看| 亚洲国产精品一区二区尤物区| 久久久全国免费视频| 亚洲成人免费在线| 看片网址国产福利av中文字幕| 韩曰欧美视频免费观看| 成年人晚上看的视频| 精品视频一区二区不卡| 国产免费黄色录像| 精品国产一区二区三区不卡| 天天操天天干天天爽| 亚洲欧美国产另类| 日本精品一区二区三区在线播放| 麻豆成人在线看| 美足av综合网| 国产不卡在线观看| 成人国产网站| 99超碰麻豆| 亚洲精品推荐| 在线观看欧美一区| 国一区二区在线观看| 中文字幕乱码人妻综合二区三区 | 国产精品极品尤物在线观看 | 国产日韩欧美一区二区三区四区| 人体久久天天| 一区二区欧美日韩| 激情亚洲网站| 日本久久精品一区二区| 国产麻豆欧美日韩一区| 国产福利短视频| 国产精品久99| 国产成人在线免费观看视频| 欧美视频中文字幕| 人妻精品无码一区二区| 亚洲人成自拍网站| 日本欧美电影在线观看| 国产精品成人aaaaa网站| 久久久91麻豆精品国产一区| 久久99精品久久久久久久久久| 日本精品三区| 欧美日韩二三区| 国内久久精品视频| 无码人妻aⅴ一区二区三区| 中文字幕一区二区三中文字幕| 日韩 欧美 精品| 欧美一区二区三区在线视频| 天堂中文在线8| 伦理中文字幕亚洲| h1515四虎成人| 久久久久久九九| 欧美日韩三级电影在线| 日本黄大片一区二区三区| 成人a区在线观看| 在线看的片片片免费| 在线观看网站黄不卡| 高潮毛片7777777毛片| 色偷偷av一区二区三区| 亚洲深夜视频| 国产精品区一区| 久久精品影视| 免费涩涩18网站入口| 99视频在线观看一区三区| 黑人巨大精品一区二区在线| 欧美午夜精品久久久久久超碰| 亚洲 欧美 激情 小说 另类| 欧美日韩成人免费| 在线观看亚洲精品福利片| 品久久久久久久久久96高清| 亚洲乱码久久| 永久免费未满蜜桃| 亚洲自拍偷拍图区| 国产深喉视频一区二区| 色99之美女主播在线视频| 亚洲爱爱视频| 奇米影视首页 狠狠色丁香婷婷久久综合| 国产精品大片免费观看| 亚欧美一区二区三区| 亚洲日本在线观看| 亚洲在线精品视频| 综合久久五月天| 国产精品亚洲成在人线| 亚洲欧美国产一区二区| 日韩av一区二区三区四区| 深爱五月激情网| 欧美性猛交xxxx黑人| 日本人妖在线| 日本人成精品视频在线| 中文字幕伦av一区二区邻居| 日本精品免费在线观看| 26uuu成人网一区二区三区| 综合网在线观看| 亚洲色图35p| 丰满少妇一区| 在线观看日本一区| 国产中文一区二区三区| 欧美丰满熟妇bbbbbb| 91精品国产欧美一区二区18| www.欧美日本韩国| 国产精品18毛片一区二区| 中文在线一区| 亚洲天堂久久新| 在线观看视频91| 免费观看在线午夜影视| 91传媒在线免费观看| 亚洲香蕉网站| 疯狂揉花蒂控制高潮h| 色94色欧美sute亚洲13| 韩国中文字幕2020精品| 国产日韩av高清| 欧美精品一区二区三区久久久竹菊| 波多野结衣三级视频| 婷婷中文字幕综合| 黄色片免费在线| 成人欧美一区二区三区黑人| 欧美影视一区| 日韩精品卡通动漫网站| 欧美亚洲日本国产| caoporn免费在线| 精品日本一区二区三区在线观看| 久久大逼视频| 女性裸体视频网站| 精品不卡在线视频| 巨茎人妖videos另类| 国产系列第一页| jizz一区二区| 在线视频播放大全| 久久久亚洲精选| 日韩精品免费一区二区在线观看| www.偷拍.com| 色哟哟国产精品| 中文字幕有码在线观看| 麻豆蜜桃91| 国产伦精品一区二区三区在线观看| 欧美日韩综合在线观看| 色噜噜狠狠色综合网图区| 99re91这里只有精品| 自拍偷拍 国产| 亚洲电影第三页| 东热在线免费视频| 国产一区二区不卡视频| 老司机午夜精品|