- 前段时间,想要写一个练手的项目,所以决定开发一个第三方微博 App
- 分析 Sina WeiboSDK源码,发现官方Api请求在实现、代码风格上存在很多弊端
- 本项目中所有的请求,都是利用 RxJava + Retrofit 重新封装请求,并实现无网缓存
- 采用 MVP 设计模式,充分解耦,在代码阅读、后期维护上有很好的体验
- 由于新浪暂停对第三方微博的审核,所以未能通过应用审核,获取更多权限,来完成后续开发,当然也是不能直接运行的
- 所以想要运行项目的同学,可以替换成自己的新浪APP key,或者联系我给你添加测试账号
- 分享的目的是,我觉得项目中功能还是很不错的,希望可以给予大家一些参考
- GitHub 项目地址 : https://github.com/Werb/Werb
微博主界面
- 实现微博主页信息流浏览、可以在每条微博中,实现点赞,评论,转发功能
- 使用自定义 View 实现九宫格图片显示,同时点击浏览图片,支持左右滑动
- 支持下拉刷新,上滑加载,快速回到顶端
- 闪屏界面做了类似于 Twitter 闪屏界面的动画处理
- 其中对微博正文的文字处理,我觉得是比较有意思的地方,通过正则表达式匹配出 @ ,# ,url,做不同的颜色及点击处理
werb_main.png
微博详情界面
- 在主页点击微博,可以进入详情界面
- 实现了对该条微博的转发,评论功能,同时还可以对该微博下的评论进行回复,转发操作
- 利用 CoordinatorLayout 实现父布局与子布局嵌套滑动
- 由于微博接口限制,这里只能获取微博下的评论数据,转发和点赞是获取不到的,但在代码编写上三者几乎相同,只是请求的接口不同
detail
微博个人主页
- 显示用户的粉丝数,关注数,微博数
- 查看个人相册,个人收藏,好友列表(包括粉丝,关注,互粉)
- 由于微博接口限制,只能获取部分数据,忍不住吐槽一下,真是太坑了...
- 相册是通过个人界面中获取的微博信息,提取出图片参数,自己做处理的,新浪并没有提供获取相册列表的接口
user
收藏和相册
发微博界面
- 通过自定义View,实现emoji表情的添加,采用 ViewPager + GridView,具体请看代码实现
- 支持 TAG 话题添加
- 通过 TextWatcher 实现输入字符监听
- 定位和 @ 还没有实现
send_weibo
消息界面
- 实现了微博 @ ,评论 @ ,收到的评论,发出的评论四大功能
- 点击消息图片可以快捷回复
- 点击整个 item 可以跳转到微博详情界面
message
闲聊一下
License
Copyright 2016 Werb
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Contact Me
网友评论
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.wanbo.werb.widget.splash.SplashView.splashAndDisappear(com.wanbo.werb.widget.splash.SplashView$ISplashListener)' on a null object reference
at com.wanbo.werb.ui.activity.SplashActivity.onLoadingDataEnded(SplashActivity.java:74)
at com.wanbo.werb.ui.activity.SplashActivity.-wrap0(SplashActivity.java)
at com.wanbo.werb.ui.activity.SplashActivity$1.run(SplashActivity.java:67)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5826)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1109)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:875)
报这种错!!!什么情况