?????? 說實(shí)話 這是開通本博文的第二篇文章。本博文主要是面對一些開發(fā)者以及我個人的總結(jié)。寫文章之前說實(shí)話我并不是很想去寫,我懶洋洋的躺在沙發(fā)上,本身的惰性讓我不想動手寫博文。我開始有些后悔 因?yàn)樵谖疑现苄攀牡┑┑恼f按照《軟技能:代碼之外的生存指南》這本書做的時候, 我發(fā)現(xiàn)它是那么的難!我現(xiàn)在的心境寧愿去打開PS4玩一會兒戰(zhàn)神, 因?yàn)樗拇_非常有趣。但是現(xiàn)在我還是來寫這篇博文了 因?yàn)樽罱K的意志主導(dǎo)了我的行動 ?!甌hink so it was’ 雖然我現(xiàn)在不是很清楚是誰說了這話 但是它的確非常有道理 你的未來跟你想法息息相關(guān) 我把也作為了自己的座右銘。而從更加科學(xué)的角度上講這事的話就是你的意識群中的勝利者贏得了這次思維爭奪戰(zhàn)爭從而主導(dǎo)人做某事,當(dāng)然這些解釋在《程序員的思維訓(xùn)練里》也有,我就不用多贅述了。
????? 前面說了這么多廢話的原因是你的思維習(xí)慣息息相關(guān) 而經(jīng)常鍛煉的思維才會在出現(xiàn)問題大腦進(jìn)行思維爭論時占據(jù)上風(fēng),我不清楚這是不是對持之以很或者習(xí)慣的一種更加科學(xué)的解釋而不是靠什么意志這種抽象的東西(笑)。根據(jù)德雷福斯模型 這種思維的確非常重要我認(rèn)為這也是讓技術(shù)人員可以自我提升的一個重要途徑 而不是沒白沒黑的加班 ,改可以不必要發(fā)生的bug, 每天都在重復(fù)一樣的代碼,掌握技能之前需要去了解非常重要。Material Design對于如今andriod來說已經(jīng)是不可或缺的一部分,如今大部分app都遵循了md設(shè)計,因此我覺得總結(jié)一下md思想很重要,注意是總結(jié) 所有東西都來源于官方 他不是很長 你也可以不看我這博文去官方獲取這完全可行。我想做的是總結(jié)一下這方面的東西 盡量以后運(yùn)用的時候能夠集中 就像德雷福斯模型那樣高手總是會全局考慮問題 從而集中部分方面他們想要的(這里暫且先把高級新手 勝任者 專家 大師等都稱為高手)
pong友 使用一兩個md控件那不叫使用了md設(shè)計更不叫遵循md思想!
???? 動畫是我們再熟悉不過的元素 一個好的動畫能讓用戶感到愉悅當(dāng)然生硬的動畫會讓用戶感到厭惡,這就像一個劇情跌宕的電影突然闖入一個毫無來源的角色強(qiáng)行煽情一樣讓觀眾感到尷尬。而在md設(shè)計中谷歌官方為了開發(fā)者提供了關(guān)于動畫的一套基本原則。
??? 1?? 關(guān)于動作的真實(shí) 觸碰
??????? 如今大多數(shù)人都擁有手機(jī) 而用戶通過屏幕控制手機(jī)稱之為交互,谷歌官方認(rèn)為過去我們在交互方面做得不夠 或者說不真實(shí) 比如一個button,一個又大又丑跟老式鍵盤一樣的按鈕 相信沒多少用戶會專注于這種設(shè)計的app 。作為開發(fā)者來說你做得東西首先是面對用戶的, 沒有用戶的app毫無價值?。?因此如何取悅用戶是一個問題。
????? 因此谷歌官方首先推出了一個很人性化的設(shè)計, 我們也可以稱其為水波紋。 這種效果相信很多人看到過 它是一個動畫, 這種觸感反饋的真實(shí)促進(jìn)了用戶對于app的好感。
? 2 關(guān)于動作的真實(shí)?可信度
??? 想象一下同樣大小的氣球和鉛球哪個更重估計大家心知肚明,因此它們兩在進(jìn)行運(yùn)動中速率也不是一樣的 而進(jìn)行的碰撞反饋也不會相同。 谷歌官方推薦開發(fā)者去觀察你做得動畫是不是可信的 其中最重要的兩個元素就是體積和重量(Mass and Weight)。太重的東西會用很大的外力才會移動 而很輕的東西則可以輕輕一推就讓其走很遠(yuǎn)。在我以前學(xué)做UE4 看視頻教學(xué)的時候 那些大佬們就提醒過這點(diǎn) 你做的東西必須讓用戶感到真實(shí)可信 ,然后才會有進(jìn)一步的接觸這很重要。而谷歌官方也再次確認(rèn)了這點(diǎn) 有個關(guān)于彈簧球的demo了解一下 這里說的就是關(guān)于重量和體積帶來的碰撞反饋是有明顯的不同。
3 關(guān)于反饋
?? ?? 谷歌官方稱之為響應(yīng)式交互,其實(shí)這個道理跟上面說的一樣交互的體驗(yàn)不同則決定了app的的質(zhì)量。一個有意義的轉(zhuǎn)場動畫會使這種相應(yīng)變得讓人感到愉快 一個從a到b頁面的不同動畫就可能決定了這種交互質(zhì)量 我想谷歌之所以廢棄了overridePendingTransition 這個api也是如此 因?yàn)樗鼘?shí)在太生硬了 現(xiàn)在大部分都是用了ActivityOptions.makeSceneTransitionAnimation(XXX).toBundle()這種方法 引入轉(zhuǎn)場動畫當(dāng)然還需要其他的步驟 比如你還需要定義一個過度文件explode 等 ,但是我寫這方面的博文不會主講這些 我認(rèn)為認(rèn)識整體之后再去扣細(xì)節(jié)才會更加得心應(yīng)手。
?????? 同樣一個響應(yīng)式操作的元素是關(guān)于共享元素 通過添加android:transitionName 屬性這讓這種交互顯得更加自然 反饋也會更好。這也就是官方所說的新入元素 淡出元素和通用元素 進(jìn)一個新的模塊之前應(yīng)當(dāng)對用戶有一定的引導(dǎo) 直到用戶形成使用app的一個行為習(xí)慣是很重要的,就跟我們玩游戲看到的一樣作為新手 我并不愿意去接受太復(fù)雜的屬性值 和所有武器招數(shù) 這讓游戲看起來枯燥乏味,估計也沒有哪個關(guān)卡設(shè)計師會進(jìn)行這樣的設(shè)計。同樣的思想也用于app中,其中還有一個更加節(jié)省學(xué)習(xí)成本的方法就是模仿 這也就是為什么所有的im app的輸入欄都在最下面 實(shí)際上如果哪個app設(shè)計到最上方進(jìn)行輸入會讓用戶覺得毫不習(xí)慣而對app缺乏好感 盡管它優(yōu)化的真的非常不錯。
?????? 終上所述,細(xì)節(jié)決定成敗。md之所以成為了現(xiàn)在最流行的設(shè)計模式 是因?yàn)橛泻芏嗖粸槿怂募?xì)節(jié)在里面讓用戶潛意識覺得這很舒服。這篇寫到這里我覺得有點(diǎn)長了,事實(shí)上我也沒想到會這么長。我覺得看文章的你不要因此而覺得焦躁,千里之行始于足下更加了解md設(shè)計思想才能做出更好的app。
參考文章:Material Design 中文版 官方文檔