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