看板 AndroidDev 關於我們 聯絡資訊
看了各位的討論,試著直接用一張 canvas 畫出所有columns而不是每個column都用view, 的確效率提高很多,但是有個問題想要請教一下, 如果我想要在listview裡面畫出格線的話該如何在canvas內做會比較好呢? 目前只要在canvas上使用drawRect 來畫出網格,整個listview就會變得有點鈍鈍的; 因為需求上一定要這麼多columns (表格大小大概是 50 columns * 1000 rows), 不知道有沒有什麼更有效率的方法可以畫出網格線呢? ※ 引述《givemepass (〆)》之銘言: : ※ 引述《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), 來自: 1.163.30.199 ※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1412184313.A.C83.html
JULONE780701: ListView要幹嘛用的? 10/03 10:45