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