Google introduces the design library for making material design easier. so we reimplement the tab component by TabLayout. it's work perfectly in 22.2.0. but we get problem after upgrade the version to 22.2.1. the tab doesn't show up anymore(issue track).
it's work on some place, but some one isn't. we couldn't figure out what is the right way to handle this. so we decide to rollback the version to 22.2.0.
2015年8月1日 星期六
2014年12月15日 星期一
Material Design I : Floating Action Button (FAB)
自從Google再Lollipop(5.0)推出後,終於記得順便幫Android穿上漂亮的衣服,那就是 Material Design(MD)最重要的使命,不論是設計的元素、語言跟配色都有了屬於自己的Guildline。
對Android Developer而言,則是遵守官方規矩,就可以自己做出"有點"美感APP,官方BLOG還貼心的準備Check list給開發者(這表示幾乎都有附上source code)。而我們公司的產品也順著這班MD的風潮導入了許多元素,讓原本很iOS的APP找回了自己應有的面貌:> 這篇文章介紹其中一個導入的widget : Floating Action Button(FAB)
仿間有一大堆自製的牌子, 以下條列使用心得
https://github.com/makovkastar/FloatingActionButton
評論 : 最多star,多做了show/hide的animation,但用在5.0以下的Device會怪怪的(可能是我的project設定有問題)(這是我發的issue ticket),所以最後沒採用這套。
https://github.com/futuresimple/android-floating-action-button
評論: 它是fork上面那個的專案,不過它多做了sub-menu的功能(有點像Path的小紅點, 這也是MD其中一種元素),但沒有包裝show/hide的animation,最後我採用這套,因為他沒有上面的issue(神奇),最後我把上面animation的code搬到這個專案之中,搞定。
2014年5月6日 星期二
Pull-to-Refresh on Android
Pull-to-Refresh(PTR)的功能在iOS是原本就support的功能,而在Android上面既然要靠第三方Library(現在則否)來實現,由此可見Andorid生態系的UI原件多麼貧乏;自然而然就會有開發者去寫一個類似iOS的功能:
Android-PullToRefresh : 我們產品原本也用這個,但是碰到難以延伸的問題之後就改用別的(後面會提到),難以延伸的問題來自原件直接繼承,如果你要用在GridView,那你就必須用PullToRefreshGridView,這就會碰到如果你的GridView是客製化的(可能你會用GridViewHeader,或StickyGridHeaders,這個問題來自另外一個需求,Android的GridView沒有辦法加Header跟Footer),那這個Library就會讓你傷透腦筋,有了這個設計瓶頸,使我們不得不嘗試使用ActionBar-PullToRefresh。
ActionBar-PullToRefresh : Android為了更像Android,連PTR的行為也改得跟iOS不同,也就是Refresh的時候在ActionBar上會有一條跑馬燈在奔馳著,這套Library就是採用這種實作,自然而然程式的架構也不會跟UI元件直接耦合在一起。不過使用它必須要注意的是API的版本跟ActionBar的實作方式,它推出了三種Library:
1. actionbar-pulltorefresh:library : api 14+
2. extra-actionbarcompat-pulltorefresh : api7+. 使用support-library實作ActionBar
3. extra-actionbarshelock-pulltorefresh : api7+. 使用ActionBarshelock
這套Library採用Delegate的方式與元件互動,有興趣的話可以直接看他們的example code
mPullToRefreshLayout = (PullToRefreshLayout) view.findViewById(R.id.ptr_layout);
ActionBarPullToRefresh.from(getActivity())
.allChildrenArePullable()
.listener(this)
.setup(mPullToRefreshLayout);
但可惜的是該套Library已經不在維護,因為Google官方的support-library(v19.02)已經默默推出了SwipeRefreshLayout;再者它跑在Amazon Kindle機器上也會有Bug,感覺是padding算錯了,所以沒有辦法跟ActionBar貼在一起,所以最後我們會採用Google官方的版本。
SwipeRefreshLayout(API 7+):他跟ActionBar-PTR不同的地方在於Animation,上者是從左到右的跑馬燈,而它從中間往外擴的跑馬燈,而且在拖拉到一半的時候不會有提示訊息擋在ActionBar上,API使用的方式也蠻像ActionBar-PRT,但目前是第一版所以有些問題需要自己修改。
1. 無法ListView/GridView無法ScrollUp : 這個問題會發生在你包Layout的時候,如果第一個元件不是List/GridView的話就會發生。
2. 拖拉時,該頁面"一定"會彈跳 : 有些Design不預期有這種行為,但現在的API架構也無法讓你取消它。
寫到最後,才發現如果把細節寫下去可能會長到太過誇張,所以這篇文章先定位成選用不同PTR Solution的Outline,而實作及設計細節就留給其他文章當作"救援投手"了。
訂閱:
文章 (Atom)
