Coder Social home page Coder Social logo

vipyinzhiwei / eyepetizer Goto Github PK

View Code? Open in Web Editor NEW
1.9K 34.0 433.0 111.69 MB

🔥基于 Kotlin 语言仿写「开眼 Eyepetizer」的一个短视频 Android 客户端项目,采用 Jetpack + 协程实现的 MVVM 架构。

Home Page: http://vipyinzhiwei.com/2020/06/19/pager05

License: Apache License 2.0

Kotlin 100.00%
android kotlin coroutines livedata-viewmodel datastore appstartup databinding paging3 mvvm-architecture android-jetpack

eyepetizer's Introduction

中文 | English

Eyepetizer

基于 Kotlin 语言仿写「开眼 Eyepetizer」的一个短视频 Android 客户端项目,采用 Jetpack + 协程实现的 MVVM 架构。

简介

这是一个高仿「开眼 Eyepetizer」的短视频 Android 客户端项目,个人觉得这款 App 的 UI 设计风格很好看,界面简洁清新,通过此项目,进行相关技术的学习与整合。

整个项目没有复杂的封装,同时项目开发规范参考了 Kotlin 官方文档 与第三方 AndroidStandardDevelop。个人认为代码还是比较容易阅读理解的,因此也非常适合新手入门 Kotlin 语言,同时更快地掌握 Jetpack 组件的使用。

另外值得一提的是,所有 UI 都是经过标注工具测量后的,无论是字体颜色、大小、间距等几乎都是像素级模仿的「开眼 Eyepetizer」Android 客户端 App,对应的 v6.3.1 版本。(查看历史版本

屏幕截图







图片加载不出来?附上博客地址

下载体验

主要功能

  • 观看优质高清短视频与评论。
  • 浏览社区图文与视频创作。
  • 查看每日新鲜资讯与热搜关键词。
  • 分享精彩短视频与新鲜资讯等。

使用工具

更新日志

查看发布历史更新日志

关于我

鼓励

通过这个项目希望能够帮助大家更好地学习 Jetpack 与 MVVM 架构。如果你喜欢 Eyepetizer 的设计,感觉本项目的源代码对你的学习有所帮助,可以点右上角 "Star" 支持一下,谢谢!^_^

致谢

License

所有数据来源于开眼,仅供学习和交流使用,严禁用于任何商业用途,原作公司拥有所有权利。

Copyright (c) 2020. vipyinzhiwei <[email protected]>

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.

eyepetizer's People

Contributors

vipyinzhiwei avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eyepetizer's Issues

还不错

下了apk安装了下,希望源码一致,热切盼望更新下版,增加登录相关功能 #9

问一下

ERROR: Could not find method buildFeatures() for arguments [build_8ks6wbd6k3c8c8neyqccwgmi2$_run_closure1$_closure7@7ce812fd] on object of type com.android.build.gradle.internal.dsl.BaseAppModuleExtension.
出现这个错误是我AS必须要升级成4.0.0才可以的么?

SharedPreferences扩展可删除

既然使用了androidx.core:core-ktx ,里面已经包含SharedPreferences扩展,没必要将源码拷贝一份写个扩展方法,
40E58954-A56C-43B3-BD35-814244C34EC5
修改如下:

image
需要在build.gradle中添加
image
这样SharedPreferences扩展即可删除

Kotlin Coroutine 的一些探讨?

Retrofit的请求返回Call有点累赘,这样还要自己扩张.await方法。

@GET
fun getDaily(@Url url: String): Call<Daily>

直接返回Daily不香吗?

@GET
suspend fun getDaily(@Url url: String): Daily

Call + .await方法Retrofit已经有自己的实现了,可以直接拿来用

suspend fun <T : Any> Call<T>.await(): T {
  return suspendCancellableCoroutine { continuation ->
    continuation.invokeOnCancellation {
      cancel()
    }
    enqueue(object : Callback<T> {
      override fun onResponse(call: Call<T>, response: Response<T>) {
        if (response.isSuccessful) {
          val body = response.body()
          if (body == null) {
            val invocation = call.request().tag(Invocation::class.java)!!
            val method = invocation.method()
            val e = KotlinNullPointerException("Response from " +
                method.declaringClass.name +
                '.' +
                method.name +
                " was null but response body type was declared as non-null")
            continuation.resumeWithException(e)
          } else {
            continuation.resume(body)
          }
        } else {
          continuation.resumeWithException(HttpException(response))
        }
      }

      override fun onFailure(call: Call<T>, t: Throwable) {
        continuation.resumeWithException(t)
      }
    })
  }
}

我们要做的只是正常suspend block与try catch的异常处理

开眼招聘

职位诱惑:
成长空间、成就感、不错的收入

职位描述:
工作职责:

1、负责【开眼】视频App的日常开发和维护;

2、编写高质量的代码;

3、和产品经理配合,深度参与App产品需求讨论、功能定义等;

4、设计良好的代码结构,不断迭代重构;

5、参与大前端前沿技术研究和实践;

职位要求:

1、大学本科计算机相关专业;

2、熟悉Java语言,了解Kotlin;

3、熟悉Android四大件;

4、了解Android性能优化方法;

5、了解并能熟练使用Android开发工具以及其他开发工具;

6、具有良好的编程技巧和文档编写能力;

7、能迅速适应工作环境以及抗压能力;

8、要有良好的沟通能力,团队合作精神;

9、有Flutter开发经验者或跨平台技术开发经验者优先;

工作地址
北京 - 朝阳区 - 望京东金辉大厦
有意请联系:
https://www.lagou.com/jobs/7290624.html?show=4f54fb71d6f64fea9e703c3a111b5fcf

只能向下翻10条的Bug

测试设备pixel xl android 10
在社区>>推荐>>点击图片预览大图后只能向下滑动翻10页没有下一个10条分页的加载
我测试了一下开眼原版app是有这个功能的,没事只是反馈一个测试信息,作者没必要开发的

备注
作者开发可见开发实力深厚,和隔壁那个开眼的Fullter版本在伯仲之间

搜索接口

大佬,我想问一下搜索的接口是什么呢?还有actionURL是什么呀?

还不错

看着挺舒服的,你名字咋和我的一样了

赞赞赞

你的项目很赞,本人打算以后写一款笔记/图书/阅读/日记 相关的app。以后有借鉴,会联系你的,给个大红包

F-Droid

请问是否可以将应用发布到 F-Droid?Readme 中有一个非商业限制,请问是对代码的限制还是对数据的免责声明?谢谢!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.