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

作者: qweqweqweqwe (4qwe)   2014-10-02 01:25:12
看了各位的討論,試著直接用一張 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畫的 速度非常快
: 不過裡面不符合我的需求 所以就沒有深入研究惹
作者: JULONE780701 (亞)   2014-10-03 10:45:00
ListView要幹嘛用的?

Links booklink

Contact Us: admin [ a t ] ucptt.com