Android開發之Material Design高體驗開源專案篇
介於擬物和扁平之間的Material Design自面世以來,便引起了很多人的關注與思考,就此產生的討論也不絕於耳。本文詳細介紹了在Android開發者圈子裡頗受青睞的十個Material Design開源專案,從示例、FAB、選單、動畫、Ripple到Dialog,看被稱為“Google第一次在設計語言和規範上超越了Apple”的Material Design是如何逐漸成為App的一種全新設計標準。
在眾多新晉庫中,MaterialDesignLibrary可以說是頗受開發者矚目的一個控制元件效果庫,能夠讓開發者在Android 2.2系統上使用Android 5.0才支援的控制元件效果,比如扁平、矩形、浮動按鈕,複選框以及各式各樣的進度指示器等。
除上述之外,MaterialDesignLibrary還擁有SnackBar、Dialog、Color selector元件,可非常便捷地對應用介面進行設定。
進度指示器樣式效果設定:
- <com.gc.materialdesign.views.ProgressBarCircularIndetermininate
- android:id="@+id/progressBarCircularIndetermininate"
- android:layout_width="32dp"
-
android:layout_height
- android:background="#1E88E5"/>
- Dialog dialog = new Dialog(Context context,String title, String message);
- dialog.show();
由來自法蘭西的Robin Chutaux開發的RippleEffect基於MIT許可協議開源,能夠在Android API 9+上實現Material Design,為開發者提供了一種極為簡易的方式來建立帶有可擴充套件檢視的header檢視,並且允許最大程度上的自定製。
用法(在XML檔案中宣告一個RippleView):
- <com.andexert.library.RippleView
- android:id="@+id/more"
- android:layout_width="?android:actionBarSize"
- android:layout_height="?android:actionBarSize"
- android:layout_toLeftOf="@+id/more2"
- android:layout_margin="5dp"
- ripple:rv_centered="true">
- <ImageView
- android:layout_width="?android:actionBarSize"
- android:layout_height="?android:actionBarSize"
- android:src="@android:drawable/ic_menu_edit"
- android:layout_centerInParent="true"
- android:padding="10dp"
- android:background="@android:color/holo_blue_dark"/>
- </com.andexert.library.RippleView>
隨著Material Design的到來,AppCompat v21也為開發者提供了Material Design的控制元件外觀支援,其中就包括EditText,但卻並不好用,沒有設定顏色的API,也沒有任何Google Material Design Spec中提到的特性。於是,來自國內的開發者“扔物線”開發了MaterialEditText庫,直接繼承EditText,無需修改Java檔案即能實現自定義控制元件顏色。
自定義Base Color:
- app:baseColor="#0056d3"
自定義Error Color:
- app:maxCharacters="10"
- app:errorColor="#ddaa00"
Android-LollipopShowcase是由來自奧地利的移動、後端及Web開發者Mike Penz所開發的演示應用,集中演示了新Material Design中所有的UI效果,以及Android Lollipop中其他非常酷炫的特性元素,比如Toolbar、RecyclerView、ActionBarDrawerToggle、Floating Action Button(FAB)、Android Compat Theme等。
MaterialList是一個能夠幫助所有Android開發者獲取谷歌UI設計規範中新增的CardView(卡片檢視)的開源庫,支援Android 2.3+系統。作為ListView的擴充套件,MaterialList可以接收、儲存卡片列表,並根據它們的Android風格和設計模式進行展示。此外,開發者還可以建立專屬於自己的卡片佈局,並輕鬆將其新增到CardList中。
使用過程程式碼,在佈局中宣告MaterialListView:
- <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:paddingLeft="@dimen/activity_horizontal_margin"
- android:paddingRight="@dimen/activity_horizontal_margin"
- android:paddingTop="@dimen/activity_vertical_margin"
- android:paddingBottom="@dimen/activity_vertical_margin">
- <com.dexafree.materiallistviewexample.view.MaterialListView
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:id="@+id/material_listview"/>
- </RelativeLayout>
Floating Action Button(FAB)是眾多專家大牛針對Material Design討論比較細化的一個點,通過圓形元素與分割線、卡片、各種Bar的直線形成鮮明對比,並使用色彩設定中鮮豔的輔色,帶來更具突破性的視覺效果。也正因如此,在Github上,有著許多與FAB相關的開源專案,基於Material Design規範的開源Android浮動Action Button控制元件android-floating-action-button便是其中之一。
其主要特性如下:
- 支援常規56dp和最小40dp的按鈕;
- 支援自定義正常、Press狀態以及可拖拽圖示的按鈕背景顏色;
- AddFloatingActionButton類能夠讓開發者非常方便地直接在程式碼中寫入加號圖示;
- FloatingActionsMenu類支援展開/摺疊顯示動作。
android-ui是Android UI元件類庫,支援Android API 14+,包含了ActionView、RevealColorView等UI元件。其中,ActionView可使Action動作顯示動畫效果,而RevealColorView則帶來了Android 5.0中的圓形顯示/隱藏動畫體驗。
Material Menu為開發者帶來了非常酷炫的Android選單、返回、刪除以及檢查按鈕變形,完全控制動畫,併為開發者提供了兩種MaterialMenuDrawable包裝。
自定義顏色等操作:
- // change color
- MaterialMenu.setColor(int color)
- // change transformation animation duration
- MaterialMenu.setTransformationDuration(int duration)
- // change pressed animation duration
- MaterialMenu.setPressedDuration(int duration)
- // change transformation interpolator
- MaterialMenu.setInterpolator(Interpolator interpolator)
- // set RTL layout support
- MaterialMenu.setRTLEnabled(boolean enabled)
Android-ObservableScrollView是一款用於在滾動檢視中觀測滾動事件的Android庫。它能夠輕而易舉地與Android 5.0 Lollipop引進的工具欄(Toolbar)進行互動,還可以幫助開發者實現擁有Material Design應用視覺體驗的介面外觀,支援ListView、ScrollView、WebView、RecyclerView、GridView元件。
互動程式碼回撥:
- @Override
- publicvoid onUpOrCancelMotionEvent(ScrollState scrollState) {
- ActionBar ab = getSupportActionBar();
- if (scrollState == ScrollState.UP) {
- if (ab.isShowing()) {
- ab.hide();
- }
- } elseif (scrollState == ScrollState.DOWN) {
- if (!ab.isShowing()) {
- ab.show();
- }
- }
- }
最後,再來介紹一下Google Material Design規範的官方開源圖示集Material Design Icons。良心Google開源了包括Material Design系統圖標包在內的750個字形,涵蓋動作、音視訊、通訊、內容、編輯器、檔案、硬體、影象、地圖、導航、通知、社交等各個方面,適用於Web、Android和iOS應用開發,絕對是開發者及設計師必備的資源。
圖示格式主要包括:
- SVG格式,24px和48px;
- SVG和CSS Sprites;
- 適用於Web平臺的1x、2x PNG格式圖示;
- 適用於iOS的1x、2x、3x PNG圖示;
- 所有圖示的Hi-dpi版本(hdpi、mdpi、xhdpi、xxhdpi、xxxhdpi)。
文章轉載自:http://www.csdn.net/article/2014-11-21/2822753-material-design-libs/1
對於MD新特性,給許多5.0以上使用者帶來了許多視覺體驗,互動感立體性強。同時今年Google官方大會,公佈支援中文版官方網站。取消對4.0以下進行維護。有喜有憂吧。
如有問題:請聯絡我哈:[email protected]
相關推薦
Android開發之Material Design高體驗開源專案篇
介於擬物和扁平之間的Material Design自面世以來,便引起了很多人的關注與思考,就此產生的討論也不絕於耳。本文詳細介紹了在Android開發者圈子裡頗受青睞的十個Material Design開源專案,從示例、FAB、選單、動畫、Ripple到Dialog,看被稱為“Google第一次在
Material Design相容性和開源專案
有一部分Material design特性只能在5.0或者更高的版本上才能使用,包括以下這些: Activity transitions(activity切換動畫效果)Touch feedback(觸控反饋)Reveal animationsPath-based anim
Android開發之貝塞爾曲線進階篇(仿直播送禮物,餓了麼購物車動畫)
又是一年畢業季,今年終於輪到我了,最近一邊忙著公司的專案,一邊趕著畢設和論文,還私下和朋友搞了些小外包,然後還要還抽出時間寫部落格,真是忙的不要不要的。 好了,言歸正傳,前幾天寫了一篇關於貝塞爾曲線的基礎篇,如果你對貝塞爾曲線還不是很瞭解,建議你先去閱讀下:Android開發之貝塞爾曲線初體驗 ,今天這篇文
Android之Material Design
什麼是Material Design? 中文:材料設計。它是2014年穀歌為了解決碎片化,統一不同產品存在的不同UI風格而設計了一套扁平化、簡約風格的UI控制元件,類似的其他廠商設計還有:蘋果、微軟(Mego)等 如何使用Material Design?
Android原始碼解析--Material Design之水波紋點選效果RippleEffect使用
好了,這樣差不多就完成了我們的水波漣漪效果了。。。。 看一下怎麼用吧? 如果你的開發IDE是Android Studio那麼我們可以把github上的庫整合到我們的專案中, <span style="font-size:14px;">dependencies { comp
Android開發之高亮引導
看下圖,今天的任務就是它了,app 的高亮引導的實現,找到幾個github上面已經實現的庫,下載下來原始碼對比分析實現原理,整理自己的知識體系。下面是其中一個的效果圖(我用DialogFragment實
android開發之高仿中國建設銀行App
皇天不負有心人,今天終於被我找到了這篇神文!關於高仿中國建設銀行App的一篇Blog,於是我就不自覺的把它消化成了我的東西了,嘿嘿!不過我是有節操滴,在本文的最後我貼上了此文轉載於哪裡?也希望各位在以後的學習道路上,不要做忘恩負義的人! 各位,準備好了嗎?讓我們一起來看看大
Android之Material Design之可重新整理的滑動列表(RecyclerView)
Material Design控制元件的簡單介紹:Toolbar — 加強版ActionBar,用setSupportActionBar()方法將Toolbar例項傳入 (app:showAsAction-用來指定按鈕的顯示位置)。DrawerLayout — 用於滑動選單。
Android學習筆記之Material Design實戰
Material Design是在2014年Google I/O大會上重磅推出的一套全新的介面設計語言,是由谷歌的設計工程師們基於傳統優秀的設計原則,結合豐富的創意和科學技術所發明的一套全新的介面設計語言,包含了視覺、運動、互動效果等特性。為支援Material Design
Android進階——Material Design新控制元件之TabLayout製作可滾動的Tabs頁面(二)
引言 上一篇總結講解了下TabLayout的基本特點、屬性和簡單的應用步驟,相信大家已經對於TabLayout已經不再陌生,這篇就結合Fragment+ViewPager的架構開發一個主流App的主要框架,進一步學習下TabLayout的操作和監聽,同時分享一
Android開發之getX,getRawX,getWidth,getTranslationX等的區別
save string hlist getwidth sta 是我 touch 項目 寬度 轉載請註明出處:http://blog.csdn.net/dmk877/article/details/51550031 好久沒寫博客了,最近工作確實挺忙的,剛剛結束了一個
Android 開發之Windows環境下Android Studio安裝和使用教程(圖文詳細步驟)
9.png 虛擬機 jdk版本 編寫 clip 開發平臺 集成開發 arc 電腦安裝 鑒於谷歌最新推出的Android Studio備受開發者的推崇,所以也跟著體驗一下。 一、介紹Android Studio Android Studio 是一個Android
Android開發之AudioManager(音頻管理器)具體解釋
應該 數量 service eth out 開發 要求 type 路由 AudioManager簡單介紹: AudioManager類提供了訪問音量和振鈴器mode控制。使用Context.getSystemService(Context.AUDIO_SERVICE)
【入門篇】ANDROID開發之BUG專講
world 自然 執行 類型 效率 str 積累 全部 href 話說諸葛亮是一個優秀的程序員,每個錦囊都是應對不同的case而編寫的。可是優秀的程序員也敵只是更優秀的bug。六出祈山。七進中原,鞠躬盡瘁,死而後已的諸葛亮僅僅由於有一
android開發之merge結合include優化布局
ted com match clas you title example ews 文件的 merge結合include優化android布局,效果不知道。個人感覺使用上也有非常大的局限。只是還是了解一下。記錄下來。 布局文件都要有根節點,但androi
轉Android開發之增量更新
avt exp chm 這一 font ams extern city ron 一、使用場景 apk升級,節省服務器和用戶的流量 二、原理 自從 Android 4.1 開始, Google Play 引入了應用程序的增量更新功能,App使用該升級方式,可節省約2/3
Android開發之布局文件裏實現OnClick事件關聯處理方法
intent dsm nbsp ext 關聯 you vertica findview 時間 一般監聽OnClickListener事件,我們都是通過Button button = (Button)findViewById(....); button.se
Android 開發之 ---- bootloader (LK)
ttl tab 不同的 opera 指定 isa system void mem LK是什麽 LK 是 Little Kernel 它是 appsbl (Applications ARM Boot Loader)流程代碼 ,little kernel
Android開發之藍牙連接打印機
cep sdi tco disable ner gis util receiver count 代碼很簡單,直接一個布局文件和一個activity。需要的朋友可以直接將這兩部分粘貼復制到項目中即可。 Activity部分: package com.anhua.bluet
Android開發之新建項目報錯的問題
instr rul txt gin 通過 ini .com org top 通過android studio新建一個空項目。在新建完項目之後,gradle編譯會報錯。 發生問題的原因是build.gradle(Project:TopDialog)中: allproject