All Projects → leiyun1993 → WanAndroid

leiyun1993 / WanAndroid

Licence: Apache-2.0 license
基于玩安卓开放api的AndroidApp

Programming Languages

kotlin
9241 projects
HTML
75241 projects

Projects that are alternatives of or similar to WanAndroid

Wanandroidclient
【暂停更新】Try to build a www.wanandroid.com client for kotlin.
Stars: ✭ 616 (+1300%)
Mutual labels:  wanandroid
Wanandroid
🔥项目采用 Kotlin 语言,基于 MVP + RxJava + Retrofit + Glide + EventBus 等架构设计,努力打造一款优秀的 [玩Android] 客户端
Stars: ✭ 1,223 (+2679.55%)
Mutual labels:  wanandroid
Flutter wanandroid
🔥项目基于 Flutter 移动应用框架,采用 Dart 语言编写,努力打造一款优秀的 [玩Android] 客户端
Stars: ✭ 198 (+350%)
Mutual labels:  wanandroid
Wanandroid jetpack
玩安卓的Jetpack版本
Stars: ✭ 33 (-25%)
Mutual labels:  wanandroid
Wanandroid Mini
基于玩安卓开放api的微信小程序
Stars: ✭ 41 (-6.82%)
Mutual labels:  wanandroid
Wanandroidxg
玩安卓 WanAndroid 单 Actvity + Fragment && Retrofit + RxJava + MVP +Dagger2+Glide
Stars: ✭ 103 (+134.09%)
Mutual labels:  wanandroid
Flutter wanandroid
🔥🔥🔥 基于Google Flutter的WanAndroid客户端,支持Android和iOS。包括BLoC、RxDart 、国际化、主题色、启动页、引导页!
Stars: ✭ 5,309 (+11965.91%)
Mutual labels:  wanandroid
Fun android flutter
👿👿👿👿👿玩Android客户端Flutter版本。Provider的最佳实践.DarkMode、多色彩主题、国际化、切换字体、优美动画
Stars: ✭ 2,502 (+5586.36%)
Mutual labels:  wanandroid
Jetpackmvvm
🐔🏀一个Jetpack结合MVVM的快速开发框架,基于MVVM模式集成谷歌官方推荐的JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation组件 使用Kotlin语言,添加大量拓展函数,简化代码 加入Retrofit网络请求,协程,帮你简化各种操作,让你快速开发项目
Stars: ✭ 1,100 (+2400%)
Mutual labels:  wanandroid
Wanandroid
Kotlin+JetPack+协程实现的MVVM架构Wanandroid客户端
Stars: ✭ 197 (+347.73%)
Mutual labels:  wanandroid
Wanandroidclient
http://wanandroid.com/ 个人定制客户端
Stars: ✭ 36 (-18.18%)
Mutual labels:  wanandroid
Wanandroid mini
💥玩安卓 小程序版
Stars: ✭ 41 (-6.82%)
Mutual labels:  wanandroid
Brick
【此git仓库已停止更新,其中的若干个模块将被拆分为多个仓库,详情请点开本人的仓库列表查看。】使用Kotlin Coroutine和ViewModel、LiveData等Android Jetpack组件搭建而成的MVP、MVVM架构框架。实现了业务代码的高复用性的核心特点,并且使用简单、代码简洁。 如果使用Retrofit作为网络请求工具,可以为Model层自动注入Retrofit Api实例,进一步精简代码。同样的,也可以注入Room数据库框架的Dao层接口。注:配合http模块食用,风味更佳!
Stars: ✭ 109 (+147.73%)
Mutual labels:  wanandroid
Wanandroid
🐔🏀【停止维护,已使用Jetpack+Mvvm重构】根据鸿神提供的WanAndroid开放Api来制作的产品级玩安卓App,采用Kotlin语言,基于Material Design+AndroidX +MVP+RxJava+Retrofit等框架开发,注释超详细,方便大家练手
Stars: ✭ 674 (+1431.82%)
Mutual labels:  wanandroid
Wanandroid
玩安卓java客户端http://www.wanandroid.com/ 模块化客户端,运用MVP+Retrofit+Rxjava+Rxlifecycle+Glide+Eventbus+ARouter等架构,构建一个最简洁的玩安卓app。
Stars: ✭ 199 (+352.27%)
Mutual labels:  wanandroid
Wanandroid Flutter
Flutter版本 WanAndroid客户端 适合Flutter入门学习 被张鸿洋微信公众号推荐为优质Flutter开源项目啦
Stars: ✭ 601 (+1265.91%)
Mutual labels:  wanandroid
Playa
玩Android(http://www.wanandroid.com/) APP(MVP + RxJava2 + Retrofit2 + Dagger2)
Stars: ✭ 93 (+111.36%)
Mutual labels:  wanandroid
Awesome Wanandroid
⚡致力于打造一款极致体验的 http://www.wanandroid.com/ 客户端,知识和美是可以并存的哦QAQn(*≧▽≦*)n
Stars: ✭ 2,525 (+5638.64%)
Mutual labels:  wanandroid
Wandroid
首款适配玩Android、掘金、简书、CSDN、公众号文章黑夜模式,无广告,支持离线阅读,代码图片显示,关注内容本身,阅读体验升级。
Stars: ✭ 199 (+352.27%)
Mutual labels:  wanandroid
Rn Wanandroid
study react native ,wanandroid客户端
Stars: ✭ 112 (+154.55%)
Mutual labels:  wanandroid

玩Android

关注wanandroid有些时日了,一直以来也是鸿洋大神的粉丝,一直都有用他开放的api写一个App的打算,最近时间比较充裕,所以就抽时间完成了这样一款。Github上的wanadnroidApp已经非常的多了。有很多也很优秀,但是我觉得开放api的目的是让大家都参与其中,所以这款app是我完全按照自己的思维去写的,UI想怎么写就怎么写,架构想怎么写就怎么写,又不是上班时间,别对自己有那么多的要求。只求更熟练的掌握Kotlin和打发多余的时间,当然这个项目能给予大家消遣或者给新手一些启发,那就是赚到了!

现在也不是完整版本,后续有时间会持续的更新此App(也就是想到想优化的东西的时候,或者鸿洋大神更新了他的api的时候),希望大家看的开心、玩的愉快~

简介

本项目使用 kotlin+mvp+retrofit+anko+eventbus+glide,用的都是一些很主流的框架。当然项目中其实没有太多的技术难点,主要是当你有一项技能之后,不做点自己的东西,手就会痒~~

APK下载(5.0+)

image

项目截图

image image image image image image image image image image image

部分功能解析

1、MVP

极简的MVP设计,这是此前自己参考一些项目之后写的MVPSample,适合这种小项目玩耍

abstract class BaseActivity<out P : BasePresenter<*>> : AppCompatActivity(){
    protected val mPresenter: P? by lazy { initPresenter() }
}
abstract class BasePresenter<T : IView>(view: T) {
    protected var mView: T? = view
    
    fun onDestroy() {
        mView = null
    }
}
interface IArticlePageContract {

    interface Presenter{
        fun getxxxx()
    }

    interface View:IView{
        fun onxxxxSuccess(data: xxxx)
        fun onxxxxFailed(msg: String)
    }
}

2、网络请求

普通的Retrofit封装,使用GsonConverterFactory解析数据,保持登录使用的是ReadCookiesInterceptorSaveCookiesInterceptor读取和保存Cookie。 ApiCallBack使用lambda回调,并进一步简化回调信息,合并为BaseResult同意处理。

class ApiCallBack<T>(val result: BaseResult<T>.() -> Unit) : Callback<BaseResult<T>> {

    override fun onResponse(call: Call<BaseResult<T>>, response: Response<BaseResult<T>>) {
        val code = response.code()
        if (code in 200..299) {
            val errorCode = response.body()?.errorCode
            if (errorCode == -1001) {    //需要重新登录
                App.instance.user = null
            } else {
                response.body()!!.result()
            }
        } else {
            onFailure(call, RuntimeException("response error,detail = " + response.raw().toString()))
        }
    }

    override fun onFailure(call: Call<BaseResult<T>>, throwable: Throwable) {
        val error = when (throwable) {
            is SocketTimeoutException -> "网络不给力!"
            is ConnectException -> "当前的网络不通!"
            is UnknownHostException -> "当前的网络不通!"
            else -> "当前服务异常!"
            //可进一步细分错误类型
        }
        BaseResult<T>().apply {
            errorCode = -1
            errorMsg = error
        }.result()
    }
}

这样处理回调的时候就可以很简单的如下处理:

ApiHelper.api.xxxx(xxxx).enqueue(ApiCallBack {
    if (isSuccess) {
        mView?.onXxxxSuccess(data!!)
    } else {
        mView?.onXxxxFailed(errorMsg)
    }
})

3、推荐一波BaseRecyclerViewAdapterHelper

这个包含了自动loadmore,emptyView,header,footer,moreType等一些列很实用的功能,使用后RecyclerView的适配器如下,非常方便的使用:

class HomeAdapter : BaseQuickAdapter<ArticleItem, BaseViewHolder>(R.layout.item_home_article) {

    override fun convert(helper: BaseViewHolder?, item: ArticleItem?) {
        val itemView = helper?.itemView
        itemView?.apply {
            item?.let {
                //do something
            }
        }
    }
}

4、关于页面

这是个加载的本地Html,是抠了WanAndroid-About然后加上了关于本App的介绍

image

版本信息

v1.1.0.0(TODO)

  • 知识体系
  • TODO工具
  • 搜索功能
  • 优化项目页瀑布流显示

v1.0.1.0

  • 修改升级样式
  • 解决adapter重复绑定的bug

v1.0.0.3

  • 引入bugly,增加升级功能

v1.0.0.2

  • 删除部分无用的库

v1.0.0.1

  • 优化title显示

v1.0.0.0

  • 首页文章与Banner
  • 微信文章
  • 项目
  • 登录注册
  • 我的收藏

TKS

  • 感谢鸿洋大神创建了这么好的学习网站WanAndroid
  • 感谢大神百忙之中抽空写的开放api
  • 感谢项目中使用到的各种库的无私奉献

License

Copyright 2018 YunLei

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].