V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
njustyw
V2EX  ›  分享创造

写了一个 V2EX 的 android 客户端,欢迎拍砖

  •  
  •   njustyw ·
    greatyao · 2015-05-18 10:08:01 +08:00 · 10291 次点击
    这是一个创建于 3514 天前的主题,其中的信息可能已经有所发展或是发生改变。

    V2EX-android

    V2EX社区客户端。

    Google Play

    其他下载链接

    支持功能

    • 话题查看
    • 节点查看和按字母搜索
    • 用户资料查看
    • 话题回复
    • 话题创建
    • 未读提醒查看

    其他功能

    • 实现了节点、话题、用户三个Scheme,通过话题、节点、用户链接直接打开客户端进行相关信息浏览
    • 对用户已经浏览过的话题作记忆处理并在界面上进行展示
    • 话题、帖子等采用了卡片式布局

    绝大部分数据是通过调用V2EX的Json API解析得到的,少部分涉及到用户个人信息则是通过Http模拟浏览器请求页面。但是Json API调用有严格的调用次数和时间限制,为了避免这个问题,我将数据缓存到文件系统中,如果用户不手动刷新,则会直接从缓存中读取的,当然这并不能解决根本问题,每个小时180次请求的警戒线还是很容易就突破,这时候服务器返回403禁止访问,会很大的影响用户体验。我在后续版本中会考虑绕过Json API用模拟浏览器访问来代替。

    开发相关

    开发用的是 Android Studio,除了编译速度感觉略慢一点点,就没有什么其它的大问题了,而且智能提示更智能,此外用 gradle 做库依赖确实方便,真的可以甩 eclipse 几条大街了。

    V2EX客户端里面的列表用到了Android兼容库

    compile 'com.android.support:cardview-v7:21.0.3'
    compile 'com.android.support:recyclerview-v7:21.0.3'
    

    刚开始对于V2EX的主题列表和回帖列表,我都是用ListView实现的。不过后来发现总存在一些问题,在Nexus 5上没什么问题,但是在其他手机上列表会出现一些锯齿。于是我用RecyclerView来重新实现了一遍。CardView则对每个话题Item进行卡片式布局。

    这是V2EX-Android中用到的第三方库:
    compile 'com.astuetz:pagerslidingtabstrip:1.0.1'
    compile 'com.loopj.android:android-async-http:1.4.6'
    compile 'com.github.mrengineer13:snackbar:1.1.0'
    compile 'com.melnykov:floatingactionbutton:1.3.0'

    • android-async-http

      封装了 http 请求,直接支持 json,gzip 压缩,相当省事。

    • universal-image-loader

      异步图像加载,缓存和显示,如果你想要在界面上显示网络图片,那么赶紧使用它吧。

    • pagerslidingtabstrip

      交互式页面指示器控件,完美配合ViewPager控件。

    • floatingactionbutton

      浮动Action Button控件,完美配合ListView、RecyleView。

    • snackbar

      Snackbar 是 Material Design 下的一个组件,这是模仿Snackbar的效果实现了一款兼容5.0系统以下的Snackbar。

    除此以外,还使用了

    • 友盟的SDK作统计分析和自动更新
    • BadgeView作数字提醒
    • Pinyin4J 将汉字转化为对应的拼音字母

    反馈

    最后,欢迎大家pull request来为V2EX-Android(前往Github地址)添加新功能。

    屏幕截图

    https://raw.github.com/greatyao/v2ex-ster/snapshots/latest.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/hot.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/nodes.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/favor.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/topic_details.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/user_details.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/topic_add.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/topic_reply.png

    https://raw.github.com/greatyao/v2ex-android/master/snapshots/drawer.png

    第 1 条附言  ·  2015-05-18 10:54:36 +08:00
    重新上图

    第 2 条附言  ·  2015-05-18 11:06:52 +08:00















    呼吁一下,咱不是专业搞设计的,谁帮忙重新设计一下logo
    93 条回复    2015-08-29 10:34:20 +08:00
    nicodelee
        1
    nicodelee  
       2015-05-18 10:15:10 +08:00
    图挂了,github地址也错了
    chengzhoukun
        2
    chengzhoukun  
       2015-05-18 10:18:03 +08:00 via Android
    这个应该放在分享创造节点吧
    bidu
        3
    bidu  
       2015-05-18 10:22:38 +08:00 via Android
    logo不是很好看呢
    RanchoH
        4
    RanchoH  
       2015-05-18 10:27:06 +08:00   ❤️ 1


    哭出来了……
    njustyw
        5
    njustyw  
    OP
       2015-05-18 10:28:18 +08:00
    @RanchoH 谁帮忙做个logo
    armysheng
        6
    armysheng  
       2015-05-18 10:47:45 +08:00
    感谢,收藏!
    sarices
        7
    sarices  
       2015-05-18 10:48:54 +08:00
    深绿色和灰色不是很搭啊,热门话题旁边的图标
    laruan14
        8
    laruan14  
       2015-05-18 10:49:02 +08:00
    这个LOGO……………………6
    morethansean
        9
    morethansean  
       2015-05-18 10:49:12 +08:00
    ……这 UI,报警了!
    maxbon
        10
    maxbon  
       2015-05-18 10:58:12 +08:00
    LOGO。。。望而生畏啊
    jemyzhang
        12
    jemyzhang  
       2015-05-18 11:16:35 +08:00
    装上看看
    njustyw
        13
    njustyw  
    OP
       2015-05-18 11:19:38 +08:00
    @little_cup 多谢 要是自主设计个就好了
    lincanbin
        14
    lincanbin  
       2015-05-18 11:37:26 +08:00 via Android
    cardview的布局有些突兀
    njustyw
        15
    njustyw  
    OP
       2015-05-18 11:40:34 +08:00
    @lincanbin 具体指教,要是有更优雅的方法,希望pull request
    kookxiang
        16
    kookxiang  
       2015-05-18 11:44:06 +08:00 via Android
    卡片能否用直角?圆角感觉好难受
    njustyw
        17
    njustyw  
    OP
       2015-05-18 12:00:38 +08:00
    @nicodelee markdown下如何发图?
    njustyw
        18
    njustyw  
    OP
       2015-05-18 12:07:03 +08:00
    @Livid 烦请移到 /go/create
    Tyler1989
        19
    Tyler1989  
       2015-05-18 12:09:49 +08:00 via Android
    LOGO太那个了吧
    hljjhb
        20
    hljjhb  
       2015-05-18 12:09:58 +08:00
    被LOGO吓住了……
    greatyao
        21
    greatyao  
       2015-05-18 12:12:32 +08:00
    @Tyler1989
    @hljjhb
    @bidu
    @laruan14
    @maxbon
    谁帮忙重新设计个阿
    learnshare
        22
    learnshare  
       2015-05-18 12:17:31 +08:00
    赞一个,Logo UI 和配色,都有很大的提升空间。
    baozijun
        23
    baozijun  
       2015-05-18 12:26:45 +08:00
    好棒,非常感谢楼主的分享,顺便学习一下!
    ynyounuo
        24
    ynyounuo  
       2015-05-18 12:28:07 +08:00
    还不如这样

    或者这样


    虽然也不好看,但是不至于扎眼 = =
    o02VFqu3gZnZfX8n
        25
    o02VFqu3gZnZfX8n  
       2015-05-18 12:42:13 +08:00
    1、圆角确实不如矩形;
    2、Material Design 中对于卡片中间的留白有过建议(好像是用 Feedly RSS 阅读做的例子),此处的留白一方面比较大,另一方面不是很有必要;
    3、Google Play 第一张图,是平板的屏幕截图,我认为应该用碎片处理一下布局,双页模式。

    当然,仅供参考 XD
    chenshaoju
        26
    chenshaoju  
       2015-05-18 13:34:00 +08:00 via Android
    玩了一下,有点意思,但是圆角边感觉有些奇怪。
    Kai
        27
    Kai  
    MOD
       2015-05-18 13:35:10 +08:00
    moved to /go/create
    sangmingming
        28
    sangmingming  
       2015-05-18 13:46:12 +08:00
    敢于分享还是纸的值得赞扬的
    chanssl
        29
    chanssl  
       2015-05-18 13:55:08 +08:00 via Android
    刷出来的帖子就那么几个,翻不了页?
    njustyw
        30
    njustyw  
    OP
       2015-05-18 14:06:15 +08:00
    @chanssl 目前还不支持翻页,因为貌似API不支持
    后续会考虑模拟网页获取数据
    messnoTrace
        31
    messnoTrace  
       2015-05-18 14:15:55 +08:00
    android大神,,给跪了,,
    badcode
        32
    badcode  
       2015-05-18 14:23:51 +08:00
    我是来说怎么用电脑(手机也行的)下载 Google APK 的
    将上面的 Google APK 的链接复制到下面网址其一
    不用 FQ,不用 google 账号,
    http://apkleecher.com/
    https://apps.evozi.com/apk-downloader/

    当然是用自己各种姿势下载最好
    只是想帮助又需要的朋友
    如果你一早就知道了
    请忽视~~
    nicktogo
        33
    nicktogo  
       2015-05-18 14:32:12 +08:00 via Android
    好棒, Android新手,刚开始学的时候就用的 eclipse,有一些操作习惯了,前几天想试下RecyclerView和CardView,据说AS使用这些新特性方便,就试了,但是简直睁眼瞎,不会用,还是乖乖回到eclipse,加依赖,导支持库,但是有时会有一些问题,冲突神马的。。。求问下,用AS,是不是真的不用这么麻烦?
    njustyw
        34
    njustyw  
    OP
       2015-05-18 14:36:52 +08:00
    @nicktogo 没那么麻烦,就是在build.gradle里面配一下,然后等待它从网络去下载一些依赖库,可能第一次等待的时间超级长。我android基本上也是从零起步。
    dwztom
        35
    dwztom  
       2015-05-18 16:40:14 +08:00
    联想起了 Rotten V2EX
    ueleaves
        36
    ueleaves  
       2015-05-18 16:46:51 +08:00
    已试用,总体质感不错。不过不知道什么原因第一次刷不出评论来,刷几次就出来了,lg g2 art on 4.4.2 。

    建议:+正序反序查看/到底部,+楼层显示。
    jianghu52
        37
    jianghu52  
       2015-05-18 16:57:59 +08:00
    我有个基础问题哈。像这样的客户端难道不需要数据库的连接信息么。如果要的话,Livid难道会给?
    allan1st
        38
    allan1st  
       2015-05-18 16:58:31 +08:00
    @nicktogo Android Studio 比 Eclipse 好用 N 倍。。。
    bibizhang
        39
    bibizhang  
       2015-05-18 17:00:14 +08:00
    我喜欢那个番茄~
    mxymarcos
        40
    mxymarcos  
       2015-05-18 17:23:30 +08:00
    赞!楼主 留个联系方式帮你改进下UI吧。。。
    njustyw
        41
    njustyw  
    OP
       2015-05-18 17:26:27 +08:00 via Android
    hqlyz
        42
    hqlyz  
       2015-05-18 17:26:36 +08:00
    @jianghu52 这个网站有提供了一些API的,见网站底部
    njustyw
        43
    njustyw  
    OP
       2015-05-18 17:27:38 +08:00 via Android
    @jianghu52 干嘛需要 模拟网页post get请求即可
    allan1st
        44
    allan1st  
       2015-05-18 17:27:39 +08:00   ❤️ 1
    给 LZ 提几个 UI 的小问题,如果你觉得想要遵守 Material Design 的话,可以仔细的去这里看看: http://www.google.com/design/spec/material-design/introduction.html。
    1. 卡片滥用,非常不美观。
    2. Floating Action Button icon 太大,按下没有 elevation 效果。
    3. Snackbar 右边应该是一个 Action 而不是『错误』这种词汇。
    4. Snackbar 出现的时候不应该遮挡 Floating Action Button
    5. Card View 标准圆角是 2dp,你是不是设置的太大了?
    6. Swipe down refresh 的小圆圈在有 Toolbar 的情况下应该是从 Toolbar 下方移出的,而不是放大的。
    7. Side Drawer 的宽度不对。
    8. 汉堡包菜单的图标不对。
    9. 『所有节点』的 a-z 被压缩了,长宽比例不对,而且清晰度比较低。
    10. 个人比较喜欢头像用圆的 :) 也比较符合 MD
    11. 一般左右的 margin 要用 16dp。有些地方不标准。
    12. 卡片套卡片很奇怪。
    13. 个人 Profile 那里, Twitter/GitHub 的向右箭头是 iOS 的设计风格,Android 基本不用向右箭头的。不过这是小问题也无所谓。
    14. 分享按钮的小箭头是不需要的,而且其他按钮是白色的,分享是灰的,然后你的主页的 Toolbar 用的是 dark theme。一些常用的 Material Design 的图标可以去这里下载: http://materialdesignicons.com/
    15. 提个小建议,『@XXX』 的 span 应该包括那个 『@』
    xcatliu
        45
    xcatliu  
       2015-05-18 18:01:41 +08:00
    官方 logo 就挺好的

    https://v2ex.com/static/apple-touch-icon.png

    我就是用的官方 logo 加了个背景图

    https://v2ex.com/t/191420
    MASAILA
        46
    MASAILA  
       2015-05-18 18:26:45 +08:00
    丑了点
    morethansean
        47
    morethansean  
       2015-05-18 18:30:24 +08:00
    @allan1st ……第一眼也是被这 UI 吓得不清
    lilyswf
        48
    lilyswf  
       2015-05-18 19:18:04 +08:00
    UI改改会好很多。logo我觉得用v2ex原来的就很好。
    allan1st
        50
    allan1st  
       2015-05-18 20:03:38 +08:00
    jucelin
        51
    jucelin  
       2015-05-18 21:02:49 +08:00
    @kookxiang +1,再把投影角度设定为0,☺
    nicktogo
        52
    nicktogo  
       2015-05-18 21:31:09 +08:00
    @allan1st 之前起步或许真应该用Android Studio,偷懒下了Eclipse,不过最近的JavaEE、Android项目都已经用了Eclipse,还是先过完这阵子,再转好了。但是感觉Android Studio的code style没有Eclipse好,而且之前折腾好久都不能导入Eclipse原有的,总觉得默认主题看着好不舒服,黑色主题又不习惯。。。说到底还是电脑屏幕不好。。。
    Bown
        53
    Bown  
       2015-05-18 21:35:07 +08:00
    Card不嵌套好一些,看起来挺怪的...
    nicktogo
        54
    nicktogo  
       2015-05-18 21:35:47 +08:00
    @njustyw 打算之后学习学习楼主的这个项目,感觉主要是JSON解析和Http,门槛应该不会太高吧?
    endoffight
        55
    endoffight  
       2015-05-18 21:38:24 +08:00 via Android
    登录信息会掉的?
    xxstop
        56
    xxstop  
       2015-05-18 21:58:00 +08:00
    不错~值得学习~已Star!
    Gonster
        57
    Gonster  
       2015-05-18 22:07:01 +08:00
    确实有点不好看0 ,0
    jings
        58
    jings  
       2015-05-18 22:18:50 +08:00 via Android
    @jings test
    Taosky
        59
    Taosky  
       2015-05-18 23:43:17 +08:00 via Android
    正在用它回复
    Mysdes
        60
    Mysdes  
       2015-05-18 23:50:49 +08:00
    随手传播正能量 ಠ◡ಠ

    Mysdes
        61
    Mysdes  
       2015-05-18 23:57:24 +08:00
    @Mysdes 啊?好久没回图片了,还以为上次改成 markdown 了。图片被压缩的渐变过渡都能看到了。愤怒!
    mthli
        62
    mthli  
       2015-05-18 23:59:38 +08:00 via Android   ❤️ 1
    @Mysdes 这图标不错。
    exuxu
        63
    exuxu  
       2015-05-19 00:09:09 +08:00 via Android
    赞,我喜欢这种字体。
    ___来自fresh v2ex android client.
    exuxu
        64
    exuxu  
       2015-05-19 00:25:13 +08:00 via Android
    可以刷的问题很少。。。。
    njustyw
        65
    njustyw  
    OP
       2015-05-19 00:35:11 +08:00
    @Mysdes 如果有png,可否email给我 [email protected]
    Mysdes
        66
    Mysdes  
       2015-05-19 00:53:50 +08:00
    @njustyw 已发,注意查收!
    wy198656
        67
    wy198656  
       2015-05-19 00:57:42 +08:00 via Android
    @njustyw 测试手机回复😄不错好用。
    Andiry
        68
    Andiry  
       2015-05-19 04:34:50 +08:00
    和其他几个客户端一样,没法翻页
    tuutoo
        69
    tuutoo  
       2015-05-19 07:17:20 +08:00 via Android
    支持支持! 希望增加左滑返回功能 这个很多客户端现在都用 。一会去pull request
    hellov22ex
        70
    hellov22ex  
       2015-05-19 08:17:56 +08:00 via Android
    正在使用,希望楼主增加个常去分区的选项,比如我最喜欢的二手交易和全部这种,感谢楼主分享,挺好用的
    njustyw
        71
    njustyw  
    OP
       2015-05-19 08:41:27 +08:00   ❤️ 1
    @tuutoo 十分期待
    @hellov22ex 这个在我的计划当中
    nanhuo
        72
    nanhuo  
       2015-05-19 09:53:16 +08:00
    先赞一个~
    hellov22ex
        73
    hellov22ex  
       2015-05-19 10:08:32 +08:00
    @njustyw 辛苦啦
    F1ReKing
        74
    F1ReKing  
       2015-05-19 10:13:21 +08:00
    不要假装这是Metarial Design,假如你对Metarial Design不熟悉的话,就不要去用,这UI非常难看,感觉就是乱拼凑的,我拿不到数据接口,不然肯定也做一个完全Metarial Design的风格客户端出来
    arens
        75
    arens  
       2015-05-19 10:16:18 +08:00
    @ynyounuo 还是喜欢这种简洁明朗高对比的~
    njustyw
        76
    njustyw  
    OP
       2015-05-19 10:22:15 +08:00
    @fireking 没有说这是Material Design啊
    你完全可以利用公布的几个json api 以及模拟网页抓取数据来做一个完全Metarial Design的风格客户端出来
    arens
        77
    arens  
       2015-05-19 10:27:19 +08:00
    我来提提设计的建议吧,界面里的卡片风格不要用圆角,就用方角效果好,另外卡片里面不要再嵌套卡片样式,例如卡片内的标签,可以用类似V2右边的楼层数颜色对比

    调了个配色,楼主可借鉴
    https://color.adobe.com/zh/V2EX-color-theme-6109910/
    tuutoo
        78
    tuutoo  
       2015-05-19 10:33:03 +08:00
    @njustyw 对不起 我搞错了 汗。。我不会写安卓程序 的。。 原来那是帮别人修改的地方 我还以为是提需求的地方。。。
    相信这客户端一定越来越好 有这么多热心的v2exer在
    zhy
        79
    zhy  
       2015-05-19 11:15:55 +08:00
    楼主这个是在windows下面开发的吗?我想拿来学习^_^
    hellov22ex
        80
    hellov22ex  
       2015-05-20 12:35:02 +08:00 via Android
    你好,提个建议,v2ex
    的内部链接能直接跳转么?
    njustyw
        81
    njustyw  
    OP
       2015-05-20 15:31:26 +08:00
    @hellov22ex 可以啊 实现了话题、节点、用户三个scheme,也就是说碰到形如http://www.v2ex.com/go/program和http://www.v2ex.com/t/1 的链接,V2EX会识别并打开。


    @zhy Android Studio支持Windows、Linux、Mac OS X
    sonaive
        82
    sonaive  
       2015-05-20 15:59:43 +08:00
    这么多人撸v2ex android客户端, 我以前也弄了一个. https://github.com/taoliuh/v2ex
    hellov22ex
        83
    hellov22ex  
       2015-05-20 16:21:59 +08:00
    @njustyw 辛苦啦,刚试了下,好像签到也没,要不干脆弄个自动签到?
    zjmdp
        84
    zjmdp  
       2015-05-21 00:29:48 +08:00
    http client建议使用retrofit,配合RxAndroid更赞。另外建议使用ButterKnife简化代码。
    njustyw
        85
    njustyw  
    OP
       2015-05-21 00:55:00 +08:00 via Android
    @hellov22ex 靠你了啊
    hellov22ex
        86
    hellov22ex  
       2015-05-21 11:26:14 +08:00
    @njustyw 本渣不会写啊,楼主
    jwenwang
        87
    jwenwang  
       2015-05-21 14:12:32 +08:00
    欢迎分享到 36氪NEXT 上来呀:) http://next.36kr.com/posts
    chanssl
        88
    chanssl  
       2015-06-22 18:08:29 +08:00 via Android
    http://www.coolapk.com/apk/com.yaoyumeng.v2ex
    这个是你开发的还是别人fork的?
    njustyw
        89
    njustyw  
    OP
       2015-06-22 18:14:26 +08:00 via Android
    @chanssl 酷安网站从play市场上爬的
    chanssl
        90
    chanssl  
       2015-06-22 18:22:32 +08:00 via Android
    @njustyw 噢噢,就说界面看着眼熟,怎么放弃MD了
    njustyw
        91
    njustyw  
    OP
       2015-06-22 18:35:20 +08:00 via Android
    @chanssl 使用左侧抽屉导航时需要移动左/右手相当一段距离 比较麻烦
    xfabs
        92
    xfabs  
       2015-07-13 01:03:08 +08:00 via Android
    在play store下载了,不错!用上了,logo看着有点怪,也说不上哪怪。
    endoffight
        93
    endoffight  
       2015-08-29 10:34:20 +08:00 via Android
    提个建议,无图模式列表页能不能也不加载用户头像
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1091 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 19:06 · PVG 03:06 · LAX 11:06 · JFK 14:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.