精华 CNode Android 客户端 v1.4.0
发布于 9 年前 作者 xingrz 13635 次浏览 最后一次编辑是 8 年前 来自 分享

好啦,说干咱就干~

项目地址:xingrz/cnode-android

下载

下载地址

fir.im/cnode

截图

列表 内容

使用环境要求

Android 4.1 (Jelly Bean) 以上

开发环境要求

  • Android Studio (canary channel)
  • Android SDK
    • 5.0 (API 21) SDK Platform
    • SDK Tools
    • SDK Build-tools 21.1

总之都是最新的。

v1.4.0 主要变更

  • 透明的 Action Bar
  • LOGO 细节微调
75 回复

IOS 用户围观

我表示这些技术全部不认识。。。看来要补补了

速度的! android studio 噢, 坐等你代码

支持一个。

速度好快,就需要楼主这样的人。“我表示这些技术全部不认识。。。看来要补补了”

为什么不用phonegap呢?

@winky 主要原因,我目前从事的是 Android 开发,对于我来说几行代码就能实现妥妥的 Material Design 以及原生体验,而不需要用 HTML 和 CSS 堆砌。。。

很赞 可以一起干哈 表示没有玩过material design的要努努力了… 楼主是用eclipse还是android studio啊

点赞,大大支持!

赞一个,趁周末先补补上面的技术

@Cj-challenge 用的是 Android Studio (canary channel)

这两年谷歌画了很大力气去打造这个新的开发环境,总体来说用得挺舒服的~

device-2014-10-25-144324.png

纠结了一上午把内页也写出来了。接下来弄 Markdown 渲染部分。

不过现在还没有推出1.0的正式版丫 楼主现在用的版本还顺手吗?bug多不多丫?

效果比 iOS 的好哈哈,要大步赶上了~

新版的studio基本还行, 感觉比eclipse 流畅。

@xingrz , 帖子页的 发帖人头像放到导航栏的右侧 就好了, 标题可以去掉,下面正文区有标题就ok了 看起来可能比较空一点, 空间利用率也有所提过, :)

@fish :主要是参考了 Material Design 里面讨论类的布局,之后我微调一下。

另外,Markdown 渲染是个大问题。。。OTL

没搞过,搜了一下, 貌似这个可以,https://github.com/Uncodin/bypass

就不知道语法是不是全了

@alsotang 应该你来协调一下 让ios和Android的ui尽量一致

@fish Bypass 我也看过了,一是只支持标准语法,不支持 GFM;二是貌似比较老了,是 apklib 格式的,Gradle 不支持引入。

囧rz的apklib~, 又找了个方案: https://github.com/sirthias/pegdown 他支持 gfm -> html , 然后 android中 textview.setText(Html.fromHtml(html)) , 这篇文章还提到了图片显示的问题 http://www.cnblogs.com/playing/archive/2011/03/17/1987033.html 这样看来,基本应该可以解决了,@xingrz 试试

@fish 这个之前有看过,我继续研究下。

setText 显示 HTML 其实也只是转换成 Spanned 类来显示,毕竟不是真的 HTML。。。于是乎,ul li 什么的就悲剧了。。。

@fish 噗。。。PegDown 依赖的 parboiled-java 和 parboiled-core 里竟然有同名的类,于是编译报错了。。。神烦

UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lorg/parboiled/Action;
	at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
	at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
	at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
	at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
	at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
	at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
	at com.android.dx.command.dexer.Main.runMonoDex(Main.java:302)
	at com.android.dx.command.dexer.Main.run(Main.java:245)
	at com.android.dx.command.dexer.Main.main(Main.java:214)
	at com.android.dx.command.Main.main(Main.java:106)

。。。, 看来还是得 Hybird

device-2014-10-26-013023.png

对照着 Material Design 文档尝试了更大胆的布局。。。

@xingrz 头像放左或右都行

@alsotang 本身 iOS 和 Android 的设计风格不一样,一致倒不用吧,不过大体上已经是一致的啦哈哈,UI都好说,现在还是在头疼 MarkDown 的渲染=。=不知道Android 是不是也有这个问题。。

@callmewhy Markdown 的处理的确是个大问题。。。一个是转换,一个是呈现。

转换的话我给 nodeclub 提了 issue 了争取在 API 里增加转换好 HTML 的内容吧。

呈现的话,Android 的 TextView 提供了有限度的 HTML 支持(实际上是将 HTML 解析成它自己的富文本结构 Spanned)但是对 CSS 和 ul li 这些非文字的元素估计够坑爹。。。

@callmewhy @xingrz markdown 我这边可以渲染,但是 css 还是需要在你们的应用中,根据自己的布局来定义。

@alsotang 知晓。还在做一些小细节,所以新 API 的功能稍微延后一下。

@xingrz 嗯嗯,还有哪些功能想要的尽管跟我提

这层楼是用来测试样式的。 这是换行。

这是第二段了。粗体斜体粗斜体我是链接

下面是分割线


上面是分割线

一级标题

二级标题

三级标题

标题到四级就够了

这里有一段缓冲

  • 第一项
  • 第二项
    • 二一
    • 二二
  • 第三项
  1. 第一点
  2. 第二点
    • 里面的无符号一
    • 无符号二
  3. 第三点
  4. 第四点

这是最后一段

@xingrz @callmewhy 你这边应该也用得到

@alsotang 于是我就这么硬着头皮把项目列表给实现出来了。。。OTL

device-2014-10-26-223724.png

@xingrz 调 css 调出来的效果?说不定那个 css 文件还可以分享给 ios 那边使用

@alsotang CSS。。。想多了。。。Android 上面的 TextView 哪支持 CSS。。。

TextView 吃的是 CharSequence 类型,在上面可以包含一些控制符,实现很基本很基本的样式(比如字体字号颜色什么的)

用 WebView 嘛,资源占用大,而且大小什么的不好控制(打个 HTML 的比方就相当于每一层楼都是一个 iframe)

于是只好自己解析 HTML 标签后用字符堆出来了。。。

求更好的实现方式。。。。

呀不对为什么我会在 Node 社区讨论这么深入的 Android 话题。。。 为什么身为艺术生的我要写算法 以上是样式测试。

@xingrz 我觉得每一层楼都是一个 webview 也还过得去吧。。

@xingrz 可以把应用托管到FIR.im上,这样你更新什么大家都能看到,更加方便大家下载

@alsotang 在 ListView 里如果每个 item 都包含一个 WebView 的话,对 item view 的回收复用、WebView 的高度计算都是很麻烦的事情呀。。。

@yunheli 谢谢提醒,我等下看看。

暂时来说现在最官方的发布渠道是 GitHub Release。。。_(:зゝ∠)_

有没有支持Android 的版本范围, 比如最小支持Android 到几(2.2 2.3)

本来想参考下代码,如果只支持4.1,还是算了吧,公司要支持2.3 ,被整的各种奇葩路过。

@libinqq 应该问题不大,你试试把项目里的 minSdkVersion 改到 7 编译看看。

ActionBar 和一些 Material Design 控件我都是用 Support Library v7 的,所以理论上可以支持到 2.1。而且我也没用到什么版本特定的特性。

只是我觉得没必要罢了。

@libinqq 我刚刚编译了一下看了 Lint,其实兼容到 2.1 的问题也不大。

HtmlTagHandler 里面用了 LinkedListremoveFirstOccurrence 方法是 2.3 才有的,自己用遍历实现一个就是。

topic_item.xml 里面用到了 android:background="?android:attr/selectableItemBackground" 来显示触摸反馈,是 3.0 才有的。其实这些版本兼容问题,Android 还是非常好做「优雅降级」的:

  • 自己用 selector 写个触摸变色的 drawable 放到 res/drawable
  • 将现在这个 topic_item.xml 放到 res/layout-v11 里,表示 3.0 及以上才调用它
  • 复制一个调用自己写的 drawable 的 topic_item.xml 丢到 res/layout 里,表示 3.0 以下用它

Android 做优雅降级是很简单的。只是我这里没必要而已。

听说过 fir.im 吗?可以将应用放上去吗? github 这里,不翻墙的那些用户下不了。amazon s3 的地址被封了。

@xingrz 可以把截图啥的也传上去

竟然还有 travis-ci。。

@alsotang 先配着,以后有用。。。自动打包什么的 _(:зゝ∠)_

@xingrz 看到我的头像出镜了。。话说Material Design的核心不是Card么,这个设计完全看不到Card的影子。。

@nihgwu Card 只是 Material Design 包含的其中一种展示形式而已,但没有说所有信息都必须用 Card 框起来的。

自己解析 HTML 标签会不会遇到难搞的,比如:图片。。。=。=iOS解析HTML太慢了,评论准备也手动解析了

@callmewhy Android 的 Html.fromHtml() 倒是自带图片解析的。。。只是要自己实现网络请求和解码部分而已。。。

怎么请求不到数据啊???

@callmewhy @xingrz markdown 对于移动端来说竟然这么麻烦?我以为 html 用来做展示是很通用的

@alsotang 其实还好。。。没有开箱即用但又不至于超出能力范围。。。

@xingrz 关键还是你能力比较强。。

device-2014-10-30-022001.png

睡前一图。

@alsotang 我这边解析速度有点慢,不过应该是因为用了UIWebView。。。同事有比较好的替换方案,待我回去研究研究

@xingrz 头部在下滑的时候会隐藏的吧?这图看起来蛮高

@alsotang 所以又被我改成了这样

屏幕快照 2014-10-31 上午2.35.13.png

把这几天的变更发布1.2.0了。忙大作业和毕业设计,先匿几天。

说好专心做作业,结果忍不住又更新了。。。

RecyclerView 爽歪歪的动画

想问 这图片动画用什么工具做的呢?

@jadeball

$ adb shell screenrecord /sdcard/1.mp4
$ adb pull /sdcard/1.mp4
$ ffmpeg -i 1.mp4 -vf "scale=270x480" png1/%05d.png
$ convert -layers Optimize -delay 4/100 png1/*.png 1.gif
回到顶部