看板 AndroidDev 關於我們 聯絡資訊
※ 引述《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畫的 速度非常快 不過裡面不符合我的需求 所以就沒有深入研究惹 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.233.71 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1412000994.A.816.html
mozzan: 不曉得大大是否有用過Jorte,我想做他的翻頁(超快),無奈 09/29 22:43
mozzan: 我的view似乎太多,始終會卡 09/29 22:43
其實我後來發現 view會卡 是因為浪費太多資源一直在生成view 如果你有adapter的holder觀念 就可以只生成一個view 然後剩下的都是不斷的更新資料就好 我剛下載了Jorte 發現他是用Viewpager 翻頁快應該是在翻頁之前就把資料生好了 我寫的行事曆也是非常快速的翻頁 ※ 編輯: givemepass (123.192.233.71), 09/29/2014 22:51:30
JULONE780701: 我今天剛好做了行事曆...需要的話站內信 09/30 00:27
JULONE780701: 用viewPager+GridView,我反而覺得算日期比較煩= = 09/30 00:28
JULONE780701: ondraw是快很多沒錯,但如果你行事曆上要做很多功能 09/30 00:31
JULONE780701: 反而會很麻煩,ondraw畫報表圓餅圖那種才會比較好 09/30 00:32
JULONE780701: ViewPager+GridView很順不會卡卡 09/30 00:34
JULONE780701: 硬要縮放的畫就真的要ondraw畫 09/30 00:39
kewang: 先拜一下原po大神! 09/30 13:10
zerofinal: 有高手快拜~~~ 10/01 08:38
kusomanfcu: 最慢的是生成 VIEW的物件沒錯.... 10/03 17:19