Re: [問題] 有個UI的設計問題想請教大家

作者: givemepass (λ)   2014-09-29 22:29:46
※ 引述《mozzan (mozzan)》之銘言:
: 借這個討論問一下
: 我有做到類似行事曆的APP
: 原本的方式是用 TableLayout 下去作,
: 發現速度上似乎有點慢,畢竟一個月有將近30~40個cell物件
: 而且基本上寬度和高度都是進到畫面時就算好了,
: 無法用放大手勢動態增長,
: 後來我看見Android行事曆的Code
: 他是用onDraw自己畫的,程式非常複雜
: 但是看起來好像比較快,且可以動態增長。
: 想請問,有人是使用TableLayout或GridView
: 作到動態增長的嗎?(單方向即可)
: 另外,是不是類似這種較為複雜的UI,
: 大多都是自己畫?
我目前是做到前後一百年沒問題
但是我的做法是先生出前後一百年的日期
所以你一開始在跑的時候會有約3~4秒的計算時間
之後只要掛在gridview 都沒什麼問題
======================================================
行事曆這種東西建議是自己刻 才會有深刻的體會
一開始我以為很簡單 所以就先使用android提供的calendar view
結果發現只提供3.0以上才可以使用
因此我就上github求救 找到好多範例
https://github.com/search?utf8=%E2%9C%93&q=calendar+android
於是我每一個都下載下來玩 看哪一個最簡單 就抄他的
結果每一個都很難 一.,一
所以我只好找一個我看得懂的 而且有授權的套用
可是當我發現要客製化的時候 不是缺少事件 就是沒有手勢
因此就找一個我看的懂得來改
接著要加入viewpager進行左右滑動 變成蠻複雜的問題
後來上github參考很多人的範例 終於寫出來了
然後需求改成下方加入了一個listview並且要事件連動
我以為很簡單 結果還是很難
listview造成上方viewpager掛太多事件 會卡卡的
因此我做了許多效能調校
終於寫好了 雖然效能沒有很好 但是還可以接受
然後需求又改成Viewpager必須垂直滑動 因為iOS是垂直滑動(乾~)
所以我就去找很多範例 發現原生viewpager只提供左右移動
只好在上github求救 還好高手很多 好多人也有這樣的需求
我又找到很多寫好的垂直滑動Viewpager範例 但是我改不動
所以只好繼承他拿過來直接用 噩夢就此開始
因為掛太多view在calendar上面
導致一開始啟動程式會空白一片
後來查到原因是view還沒生出來 我的日期就好了
所以值跑出來 但是畫面卻跑不出來
因此我就用ViewTreeObserver 的方法解決掉
可是單純跑我的calendar開啟速度勉強可以接受
但是程式還有其他同事的程式大雜燴 只能哭哭惹
於是我繼續改效能 後來發現是vetical viewpager惹的禍
只好怒找其他的vertical viewpager
總算讓我找到惹 也順利完成行事曆的基本型態
事情當然沒有想像中的簡單
需求又增加惹
不知道你有沒有看過LG G2的行事曆
http://cf-attach.i-sogi.com/tw/article/img/201405/2014051208311244943.jpg
中間要可以往上拉
於是乎我怒吃一包餅乾 繼續改
一開始我想說listview連在gridview下方
然後手勢往上拉的時候 就把gridview縮成兩行
事情當然沒有笨蛋想的那麼簡單
每次都要改變layout是一件很蠢的事情
畫面不是跑掉 就是直接閃退或空白給你看
於是我只好用滑動方式 先將listview藏在螢幕下方外面
然後在慢慢往上拉 有點像slidemenu的上下版
結果證明! 我不是做動畫的材料
只好在上github求救 果然讓我找到一個slide panel的套件
這套件真的很白爛 下載下來怎麼build都build不了
後來才找到要加一包lib才可以build
不過他效果寫的不錯 但是往上拉居然是放比例
害我必須算好整個畫面 丟進去 還常常不對
最近有更新 往上拉還會把gridview部分遮罩 真是夠惹
所以我又還原成舊的版本
事情就這樣結束了嗎? 沒有!
因為加了這個第三方 所以整個畫面非常的卡
卡到不能接受
我只好從根本開始解 打從一開始用viewpager似乎就是錯誤的決定
因為他只能一頁一頁翻
可是如果我是使用者 我一定會想要快速的滾動他!
所以上方我改用listview去改 下方也是listview
結果居然讓我改成功惹!
結論是如果能夠自己做 就自己做
不然繞很久 最後還是會繞回來der
另外提供一包很厲害 你可以參考他的做法
https://github.com/SimonVT/android-calendarview
他好像把原生的calendarview改成可以向下相容到2.2
而且是用canvas畫的 速度非常快
不過裡面不符合我的需求 所以就沒有深入研究惹
作者: mozzan (mozzan)   2014-09-29 22:43:00
不曉得大大是否有用過Jorte,我想做他的翻頁(超快),無奈我的view似乎太多,始終會卡
作者: JULONE780701 (亞)   2014-09-30 00:27:00
我今天剛好做了行事曆...需要的話站內信用viewPager+GridView,我反而覺得算日期比較煩= =ondraw是快很多沒錯,但如果你行事曆上要做很多功能反而會很麻煩,ondraw畫報表圓餅圖那種才會比較好ViewPager+GridView很順不會卡卡硬要縮放的畫就真的要ondraw畫
作者: kewang (652公車)   2014-09-30 13:10:00
先拜一下原po大神!
作者: zerofinal (人生~)   2014-10-01 08:38:00
有高手快拜~~~
作者: kusomanfcu (POE yea)   2014-10-03 17:19:00
最慢的是生成 VIEW的物件沒錯....

Links booklink

Contact Us: admin [ a t ] ucptt.com