News-Feed-App

所属分类:土木工程
开发工具:kotlin
文件大小:0KB
下载次数:0
上传日期:2020-02-17 03:12:43
上 传 者sh-1993
说明:  Android的简单新闻提要应用程序,使用某种MVI+Clean Architecture构建,
(Simple news feed app for Android, built with sort of MVI + Clean Architecture,)

文件列表:
.travis.yml (1393, 2018-06-27)
app/ (0, 2018-06-27)
app/build.gradle (4878, 2018-06-27)
app/gradle/ (0, 2018-06-27)
app/gradle/jacoco.gradle (1304, 2018-06-27)
app/gradle/utils.gradle (231, 2018-06-27)
app/proguard/ (0, 2018-06-27)
app/proguard/okhttp.pro (37, 2018-06-27)
app/proguard/okio.pro (81, 2018-06-27)
app/proguard/rxjava.pro (25, 2018-06-27)
app/src/ (0, 2018-06-27)
app/src/debug/ (0, 2018-06-27)
app/src/debug/res/ (0, 2018-06-27)
app/src/debug/res/values/ (0, 2018-06-27)
app/src/debug/res/values/strings.xml (118, 2018-06-27)
app/src/main/ (0, 2018-06-27)
app/src/main/AndroidManifest.xml (1373, 2018-06-27)
app/src/main/ic_launcher-web.png (24421, 2018-06-27)
app/src/main/ic_launcher_round-web.png (44439, 2018-06-27)
app/src/main/java/ (0, 2018-06-27)
app/src/main/java/com/ (0, 2018-06-27)
app/src/main/java/com/voltek/ (0, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/ (0, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/Aliases.kt (81, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/App.kt (1500, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/analytics/ (0, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/analytics/Analytics.kt (384, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/analytics/AnalyticsKit.kt (125, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/analytics/ComposedAnalytics.kt (1529, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/analytics/EventsAndParams.kt (434, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/analytics/kits/ (0, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/analytics/kits/DebugAnalyticsKit.kt (282, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/dagger/ (0, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/dagger/AnalyticsModule.kt (727, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/dagger/AppComponent.kt (901, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/dagger/AppModule.kt (355, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/dagger/NetworkModule.kt (1617, 2018-06-27)
app/src/main/java/com/voltek/newsfeed/dagger/PlatformModule.kt (296, 2018-06-27)
... ...

[![Build Status](https://travis-ci.org/IvanAntsiferov/News-Feed-App.svg?branch=master)](https://travis-ci.org/IvanAntsiferov/News-Feed-App) # News Feed App Simple Android app, displaying list of latest news from chosen news sources. Main features: - 70 news sources in 9 categories - Share an article function - Support both portrait and landscape screen orientation - Two pane mode for tablets ## Screenshots ![Screenshot](https://raw.githubusercontent.com/IvanAntsiferov/News-Feed-App/master/docs/images/Screenshot1.png) ![Screenshot](https://raw.githubusercontent.com/IvanAntsiferov/News-Feed-App/master/docs/images/Screenshot2.png) ![Screenshot](https://raw.githubusercontent.com/IvanAntsiferov/News-Feed-App/master/docs/images/Screenshot3.png) ## Technical Details App built with MVI architecture. Presentation layer is done a bit different from classic MVP. There is [Model](https://github.com/IvanAntsiferov/News-Feed-App/blob/master/app/src/main/java/com/voltek/newsfeed/presentation/base/BaseModel.kt) class instance in Presenter, that holds current view state. Presenter does not send any commands to view, instead of this, presenter changes `Model` properties, and than View `render` changes. View input [events](https://github.com/IvanAntsiferov/News-Feed-App/blob/master/app/src/main/java/com/voltek/newsfeed/presentation/base/Event.kt) sent to presenter through `event` method. Domain layer works much more like MVP + Clean Architecture approach. Business logic is represented by use cases and repositories. Repositories work with data layer and handle entities mapping. Domain layer knows nothing about Android SDK. Data layer works directly with Android specific tools: network calls, DB queries (In this case app persistent storage made with Realm) and stuff like that. ## Tests You can find unit test [here](https://github.com/IvanAntsiferov/News-Feed-App/tree/master/app/src/test/java/com/voltek/newsfeed). Current code coverage is about 40%. ## Analytics App has [Analytics](https://github.com/IvanAntsiferov/News-Feed-App/tree/master/app/src/main/java/com/voltek/newsfeed/analytics) module, that used to gather user events and record different metrics. There is [AnalyticsKit](https://github.com/IvanAntsiferov/News-Feed-App/blob/master/app/src/main/java/com/voltek/newsfeed/analytics/AnalyticsKit.kt) interface, that can be implemented using any of your favorite app metrics tools, like Fabric, Firebase, AppMetrica or whatever. With this approach you can use any number of metrics tools in any combination, and easy add or remove them. ## How To Build Project This app uses [News API](https://newsapi.org/) to retrieve data. You must provide your own api key in order to build the app. Paste it to project [gradle.properties](https://raw.githubusercontent.com/IvanAntsiferov/News-Feed-App/master/gradle.properties) in variable named ```ApiKey```. ## Libraries * [Moxy](https://github.com/Arello-Mobile/Moxy) * [RxJava](https://github.com/ReactiveX/RxJava) * [RxAndroid](https://github.com/ReactiveX/RxAndroid) * [RxBinding](https://github.com/JakeWharton/RxBinding) * [RxKotlin](https://github.com/ReactiveX/RxKotlin) * [Realm](https://github.com/realm/realm-java) * [Kotlin Realm Extensions](https://github.com/vicpinm/Kotlin-Realm-Extensions) * [Retrofit](https://github.com/square/retrofit) * [Dagger 2](https://github.com/google/dagger) * [Glide](https://github.com/bumptech/glide) * [Hawk](https://github.com/orhanobut/hawk) * [Timber](https://github.com/JakeWharton/timber) * [RecyclerView Animators](https://github.com/wasabeef/recyclerview-animators) * [Mockito-Kotlin](https://github.com/nhaarman/mockito-kotlin) ### License ``` Copyright 2017-2018 Ivan Antsiferov 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. ```

近期下载者

相关文件


收藏者