├── .github └── workflows │ └── android.yml ├── .gitignore ├── BasePermission ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── bihe0832 │ │ └── base │ │ └── permission │ │ ├── PermissionsActivity.kt │ │ └── PermissionsChecker.kt │ └── res │ ├── layout │ └── com_bihe0832_common_permissions_activity.xml │ └── values │ └── com_tencent_jygame_common_permission.xml ├── Framework_core ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── ottd │ │ └── libs │ │ └── framework │ │ ├── App.kt │ │ ├── OttdFramework.java │ │ ├── common │ │ ├── ConfigProxy.kt │ │ └── eFlag.java │ │ ├── fragment │ │ ├── BaseBackFragment.kt │ │ └── BaseMainFragment.kt │ │ ├── model │ │ ├── ApplicationInfo.kt │ │ ├── News.kt │ │ ├── NewsList.kt │ │ ├── PackageInfo.kt │ │ ├── Topic.kt │ │ ├── TopicDetail.kt │ │ └── TopicList.kt │ │ ├── network │ │ └── ReadHubApi.kt │ │ └── utils │ │ ├── IntentExt.kt │ │ ├── QRCodeUtil.java │ │ ├── SimpleUtils.java │ │ └── TimeUtils.kt │ └── res │ ├── drawable │ └── icon.png │ ├── mipmap-xxhdpi │ └── readhub_logo.png │ ├── values-v19 │ └── dimens.xml │ └── values │ ├── com_bihe0832_readhub_res.xml │ ├── com_bihe0832_readhub_theme.xml │ └── dimens.xml ├── LibAdapter ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── chad │ │ └── library │ │ └── adapter │ │ └── base │ │ ├── BaseItemDraggableAdapter.java │ │ ├── BaseMultiItemQuickAdapter.java │ │ ├── BaseQuickAdapter.java │ │ ├── BaseSectionQuickAdapter.java │ │ ├── BaseViewHolder.java │ │ ├── animation │ │ ├── AlphaInAnimation.java │ │ ├── BaseAnimation.java │ │ ├── ScaleInAnimation.java │ │ ├── SlideInBottomAnimation.java │ │ ├── SlideInLeftAnimation.java │ │ └── SlideInRightAnimation.java │ │ ├── callback │ │ └── ItemDragAndSwipeCallback.java │ │ ├── entity │ │ ├── AbstractExpandableItem.java │ │ ├── IExpandable.java │ │ ├── MultiItemEntity.java │ │ └── SectionEntity.java │ │ ├── listener │ │ ├── OnItemChildClickListener.java │ │ ├── OnItemChildLongClickListener.java │ │ ├── OnItemClickListener.java │ │ ├── OnItemDragListener.java │ │ ├── OnItemLongClickListener.java │ │ ├── OnItemSwipeListener.java │ │ └── SimpleClickListener.java │ │ ├── loadmore │ │ ├── LoadMoreView.java │ │ └── SimpleLoadMoreView.java │ │ └── util │ │ ├── MultiTypeDelegate.java │ │ └── TouchEventUtil.java │ └── res │ ├── drawable │ ├── sample_footer_loading.png │ └── sample_footer_loading_progress.xml │ ├── layout │ └── quick_view_load_more.xml │ ├── values-en │ └── strings.xml │ └── values │ ├── dimens.xml │ ├── ids.xml │ └── strings.xml ├── LibCache ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── ottd │ └── libs │ └── cache │ ├── CacheItem.java │ ├── CacheManager.java │ ├── DiskLruCache.java │ ├── GetCacheCallback.java │ └── MemLruCache.java ├── LibConfig ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── ottd │ └── libs │ └── config │ ├── Config.java │ └── ConfigManager.java ├── LibCrash ├── build.gradle ├── libs │ └── bugly_crash_release.jar └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── ottd │ └── libs │ └── crash │ └── JYCrash.java ├── LibLogger ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── ottd │ └── libs │ └── logger │ ├── Logger.java │ └── OttdLog.java ├── LibNetwork ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── ottd │ └── libs │ └── network │ └── extensions │ └── RetrofitExt.kt ├── LibThread ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── ottd │ └── libs │ └── thread │ └── ThreadManager.java ├── LibUIUtils ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── ottd │ │ └── libs │ │ └── ui │ │ ├── AutoLoadDecorator.kt │ │ ├── BakedBezierInterpolator.java │ │ ├── CommonRecyclerAdapter.kt │ │ ├── CommonViewHolder.kt │ │ ├── ExpandableTextView.java │ │ ├── OnPullListener.java │ │ ├── ResourceUtils.java │ │ ├── SwipeProgressBar.java │ │ ├── SwipeRefreshLayout.java │ │ ├── ToastUtil.java │ │ └── ViewUtils.java │ └── res │ ├── drawable │ ├── bihe0832_common_swipe_indicator_arrow.png │ ├── com_bihe0832_common_toast_corner.xml │ └── icon.png │ ├── layout │ ├── com_bihe0832_common_swipe_refresh.xml │ └── com_bihe0832_common_toast.xml │ └── values │ ├── attrs.xml │ ├── com_bihe0832.common_swipe_res.xml │ ├── com_bihe0832.common_toast_res.xml │ ├── ids.xml │ └── strings.xml ├── LibUtils ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ ├── android │ └── os │ │ ├── Process.java │ │ └── SystemProperties.java │ └── com │ └── ottd │ └── libs │ └── utils │ ├── APKUtils.java │ ├── CommonUtils.java │ ├── HexUtils.java │ ├── KVPair.java │ ├── MD5.java │ ├── MathUtils.java │ ├── TextUtils.java │ ├── TimeUtils.java │ ├── URLUtils.java │ └── device │ ├── APN.java │ ├── APNUtil.java │ ├── DeviceUtils.java │ ├── ExternalStorage.java │ ├── ManufacturerUtil.java │ └── NetInfo.java ├── LibWebview ├── build.gradle ├── libs │ └── tbs_sdk_thirdapp_v3.2.0.1104_43200_sharewithdownload_withfilereader_withoutGame_obfs_20170609_115346.jar └── src │ └── main │ ├── AndroidManifest.xml │ └── java │ └── com │ └── ottd │ └── libs │ └── web │ ├── X5ObserWebView.java │ └── jsbridge │ ├── BaseJsBridgeProxy.java │ ├── JsBridge.java │ └── JsResult.java ├── Main ├── build.gradle └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── author.html │ ├── conf.ini │ ├── css │ │ └── global.css │ ├── js │ │ └── jquery.min.js │ ├── readhub.html │ ├── version.html │ └── zixie_shi.jpg │ ├── java │ └── com │ │ └── bihe0832 │ │ └── readhub │ │ ├── SplashActivity.java │ │ ├── about │ │ └── AboutActivity.kt │ │ ├── main │ │ ├── BottomBar.java │ │ ├── BottomBarTab.java │ │ ├── MainActivity.kt │ │ └── MainFragment.java │ │ ├── me │ │ └── MyFragment.kt │ │ ├── news │ │ ├── NewsListFragment.kt │ │ ├── NewsTabFragment.kt │ │ └── viewmodel │ │ │ └── NewsListViewModel.kt │ │ ├── topic │ │ ├── TopicDetailActivity.kt │ │ ├── TopicListAdapter.kt │ │ ├── TopicListFragment.kt │ │ └── viewmodel │ │ │ └── TopicViewModel.kt │ │ └── webview │ │ ├── WebViewFragment.java │ │ └── WebviewActivity.java │ └── res │ ├── drawable │ ├── black_dot.xml │ ├── com_bihe0832_bottombar_shadow_up.9.png │ ├── com_bihe0832_common_msg_bubble.xml │ ├── com_bihe0832_readhub_boder.xml │ ├── ic_account_circle_white_24dp.png │ ├── ic_keyboard_arrow_left_white_24dp.png │ ├── ic_keyboard_arrow_right_black_24dp.png │ ├── ic_open_in_new_black_24dp.png │ ├── ic_share_white_24dp.png │ ├── ic_star_black_24dp.png │ ├── ic_view_carousel_black_24dp.png │ ├── if_icon_news.png │ ├── share_footer.png │ ├── share_header.png │ └── timeline_dot.xml │ ├── layout │ ├── activity_topic_detail.xml │ ├── activity_topic_detail_news_item.xml │ ├── activity_topic_detail_timeline_item.xml │ ├── com_bihe0832_activity_splash.xml │ ├── com_bihe0832_readhub_about_activity.xml │ ├── com_bihe0832_readhub_main_activity.xml │ ├── com_bihe0832_readhub_main_fragment_main.xml │ ├── com_bihe0832_web_activity.xml │ ├── com_bihe0832_webview_fragment.xml │ ├── fragment_me.xml │ ├── fragment_news_item.xml │ ├── fragment_news_list.xml │ ├── fragment_news_tab.xml │ ├── fragment_topic_item_list.xml │ ├── fragment_topic_item_summary.xml │ └── fragment_topic_list.xml │ ├── menu │ └── com_tencent_jygame_app_share_toolbar.xml │ ├── values │ ├── card_res.xml │ └── me_res.xml │ └── xml │ └── provider_paths.xml ├── README.md ├── build.conf ├── build.gradle ├── build.sh ├── build_lib.sh ├── build_maven.gradle ├── config.gradle ├── debug.keystore ├── demo ├── architecture.jpg ├── me.jpg ├── news.jpg ├── readhub.sketch ├── readhub_release_newer.apk ├── readhub_release_newer.png ├── share.jpeg ├── topic.jpg └── topic_detail.jpg ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs └── com │ └── bihe0832 │ └── readhub │ ├── LibAdapter │ ├── 0.0.2 │ │ ├── LibAdapter-0.0.2-sources.jar │ │ ├── LibAdapter-0.0.2-sources.jar.md5 │ │ ├── LibAdapter-0.0.2-sources.jar.sha1 │ │ ├── LibAdapter-0.0.2.aar │ │ ├── LibAdapter-0.0.2.aar.md5 │ │ ├── LibAdapter-0.0.2.aar.sha1 │ │ ├── LibAdapter-0.0.2.pom │ │ ├── LibAdapter-0.0.2.pom.md5 │ │ └── LibAdapter-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibCache │ ├── 0.0.2 │ │ ├── LibCache-0.0.2-sources.jar │ │ ├── LibCache-0.0.2-sources.jar.md5 │ │ ├── LibCache-0.0.2-sources.jar.sha1 │ │ ├── LibCache-0.0.2.aar │ │ ├── LibCache-0.0.2.aar.md5 │ │ ├── LibCache-0.0.2.aar.sha1 │ │ ├── LibCache-0.0.2.pom │ │ ├── LibCache-0.0.2.pom.md5 │ │ └── LibCache-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibConfig │ ├── 0.0.2 │ │ ├── LibConfig-0.0.2-sources.jar │ │ ├── LibConfig-0.0.2-sources.jar.md5 │ │ ├── LibConfig-0.0.2-sources.jar.sha1 │ │ ├── LibConfig-0.0.2.aar │ │ ├── LibConfig-0.0.2.aar.md5 │ │ ├── LibConfig-0.0.2.aar.sha1 │ │ ├── LibConfig-0.0.2.pom │ │ ├── LibConfig-0.0.2.pom.md5 │ │ └── LibConfig-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibCrash │ ├── 0.0.2 │ │ ├── LibCrash-0.0.2-sources.jar │ │ ├── LibCrash-0.0.2-sources.jar.md5 │ │ ├── LibCrash-0.0.2-sources.jar.sha1 │ │ ├── LibCrash-0.0.2.aar │ │ ├── LibCrash-0.0.2.aar.md5 │ │ ├── LibCrash-0.0.2.aar.sha1 │ │ ├── LibCrash-0.0.2.pom │ │ ├── LibCrash-0.0.2.pom.md5 │ │ └── LibCrash-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibLogger │ ├── 0.0.2 │ │ ├── LibLogger-0.0.2-sources.jar │ │ ├── LibLogger-0.0.2-sources.jar.md5 │ │ ├── LibLogger-0.0.2-sources.jar.sha1 │ │ ├── LibLogger-0.0.2.aar │ │ ├── LibLogger-0.0.2.aar.md5 │ │ ├── LibLogger-0.0.2.aar.sha1 │ │ ├── LibLogger-0.0.2.pom │ │ ├── LibLogger-0.0.2.pom.md5 │ │ └── LibLogger-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibNetwork │ ├── 0.0.2 │ │ ├── LibNetwork-0.0.2-sources.jar │ │ ├── LibNetwork-0.0.2-sources.jar.md5 │ │ ├── LibNetwork-0.0.2-sources.jar.sha1 │ │ ├── LibNetwork-0.0.2.aar │ │ ├── LibNetwork-0.0.2.aar.md5 │ │ ├── LibNetwork-0.0.2.aar.sha1 │ │ ├── LibNetwork-0.0.2.pom │ │ ├── LibNetwork-0.0.2.pom.md5 │ │ └── LibNetwork-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibThread │ ├── 0.0.2 │ │ ├── LibThread-0.0.2-sources.jar │ │ ├── LibThread-0.0.2-sources.jar.md5 │ │ ├── LibThread-0.0.2-sources.jar.sha1 │ │ ├── LibThread-0.0.2.aar │ │ ├── LibThread-0.0.2.aar.md5 │ │ ├── LibThread-0.0.2.aar.sha1 │ │ ├── LibThread-0.0.2.pom │ │ ├── LibThread-0.0.2.pom.md5 │ │ └── LibThread-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibUIUtils │ ├── 0.0.2 │ │ ├── LibUIUtils-0.0.2-sources.jar │ │ ├── LibUIUtils-0.0.2-sources.jar.md5 │ │ ├── LibUIUtils-0.0.2-sources.jar.sha1 │ │ ├── LibUIUtils-0.0.2.aar │ │ ├── LibUIUtils-0.0.2.aar.md5 │ │ ├── LibUIUtils-0.0.2.aar.sha1 │ │ ├── LibUIUtils-0.0.2.pom │ │ ├── LibUIUtils-0.0.2.pom.md5 │ │ └── LibUIUtils-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ ├── LibUtils │ ├── 0.0.2 │ │ ├── LibUtils-0.0.2-sources.jar │ │ ├── LibUtils-0.0.2-sources.jar.md5 │ │ ├── LibUtils-0.0.2-sources.jar.sha1 │ │ ├── LibUtils-0.0.2.aar │ │ ├── LibUtils-0.0.2.aar.md5 │ │ ├── LibUtils-0.0.2.aar.sha1 │ │ ├── LibUtils-0.0.2.pom │ │ ├── LibUtils-0.0.2.pom.md5 │ │ └── LibUtils-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 │ └── LibWebview │ ├── 0.0.2 │ ├── LibWebview-0.0.2-sources.jar │ ├── LibWebview-0.0.2-sources.jar.md5 │ ├── LibWebview-0.0.2-sources.jar.sha1 │ ├── LibWebview-0.0.2.aar │ ├── LibWebview-0.0.2.aar.md5 │ ├── LibWebview-0.0.2.aar.sha1 │ ├── LibWebview-0.0.2.pom │ ├── LibWebview-0.0.2.pom.md5 │ └── LibWebview-0.0.2.pom.sha1 │ ├── maven-metadata.xml │ ├── maven-metadata.xml.md5 │ └── maven-metadata.xml.sha1 ├── proguard-rules.pro └── settings.gradle /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | name: Android CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - name: set up JDK 1.8 13 | uses: actions/setup-java@v1 14 | with: 15 | java-version: 1.8 16 | - name: Build with Gradle 17 | run: ./gradlew build 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Gradle files 12 | .gradle/ 13 | build/ 14 | 15 | # Local configuration file (sdk path, etc) 16 | local.properties 17 | 18 | # Proguard folder generated by Eclipse 19 | proguard/ 20 | 21 | # Log Files 22 | *.log 23 | 24 | # Android Studio Navigation editor temp files 25 | .navigation/ 26 | 27 | # Android Studio captures folder 28 | captures/ 29 | 30 | # IntelliJ 31 | *.iml 32 | .idea/* 33 | 34 | # Keystore files 35 | # Uncomment the following line if you do not want to check your keystore files in. 36 | #*.jks 37 | 38 | # External native build folder generated in Android Studio 2.2 and later 39 | .externalNativeBuild 40 | 41 | # Google Services (e.g. APIs or Firebase) 42 | google-services.json 43 | 44 | .DS_Store 45 | 46 | bin/* 47 | libs/*.aar 48 | 49 | local.properties 50 | gradle.properties -------------------------------------------------------------------------------- /BasePermission/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'kotlin-android' 3 | apply plugin: 'kotlin-kapt' 4 | 5 | android { 6 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 7 | buildToolsVersion rootProject.ext.android.buildToolsVersion 8 | 9 | defaultConfig { 10 | minSdkVersion rootProject.ext.android.minSdkVersion as int 11 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 12 | versionName rootProject.ext.android.versionName 13 | versionCode rootProject.ext.android.versionCode as int 14 | } 15 | 16 | lintOptions { 17 | abortOnError false 18 | } 19 | } 20 | 21 | 22 | clean.doFirst { 23 | delete "build" 24 | } 25 | 26 | //导出aar 27 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 28 | from 'build/outputs/aar/' + module.name + '-release.aar' 29 | into "./../libs/" 30 | } 31 | 32 | apply from: './../build_maven.gradle' 33 | 34 | dependencies { 35 | compile project(':Framework_core') 36 | } -------------------------------------------------------------------------------- /BasePermission/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /BasePermission/src/main/java/com/bihe0832/base/permission/PermissionsChecker.kt: -------------------------------------------------------------------------------- 1 | package com.bihe0832.base.permission 2 | 3 | import android.content.Context 4 | import android.content.pm.PackageManager 5 | import android.support.v4.content.ContextCompat 6 | 7 | class PermissionsChecker(context: Context) { 8 | private val mContext: Context 9 | 10 | init { 11 | mContext = context.applicationContext 12 | } 13 | 14 | // 判断权限集合 15 | fun lacksPermissions(vararg permissions: String): Boolean { 16 | for (permission in permissions) { 17 | if (lacksPermission(permission)) { 18 | return true 19 | } 20 | } 21 | return false 22 | } 23 | 24 | // 判断是否缺少权限 25 | private fun lacksPermission(permission: String): Boolean { 26 | return ContextCompat.checkSelfPermission(mContext, permission) == PackageManager.PERMISSION_DENIED 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /BasePermission/src/main/res/layout/com_bihe0832_common_permissions_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | -------------------------------------------------------------------------------- /BasePermission/src/main/res/values/com_tencent_jygame_common_permission.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 权限(permission) 4 | 应用需要必要的运行权限 5 | 6 | 退出 7 | 帮助 8 | 当前应用缺少必要权限。\n\n请点击\"设置\"-\"权限\"-打开所需权限。\n\n最后点击两次后退按钮,即可返回。\n 9 | 设置 10 | 11 | -------------------------------------------------------------------------------- /Framework_core/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'kotlin-android' 3 | apply plugin: 'kotlin-kapt' 4 | android { 5 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 6 | buildToolsVersion rootProject.ext.android.buildToolsVersion 7 | 8 | defaultConfig { 9 | minSdkVersion rootProject.ext.android.minSdkVersion as int 10 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 11 | versionName rootProject.ext.android.versionName 12 | versionCode rootProject.ext.android.versionCode as int 13 | 14 | manifestPlaceholders = [ 15 | MTA_APPKEY : "AK76E4VLVA8M", 16 | MTA_CHANNEL: "zixie" 17 | ] 18 | 19 | ndk { 20 | abiFilters 'armeabi' 21 | } 22 | 23 | } 24 | 25 | lintOptions { 26 | abortOnError false 27 | } 28 | } 29 | 30 | clean.doFirst { 31 | delete "build" 32 | } 33 | 34 | dependencies { 35 | compile fileTree(include: ['*.jar'], dir: 'libs') 36 | 37 | compile "$rootProject.ext.ExtLib.publishGroupID:LibThread:+" 38 | compile "$rootProject.ext.ExtLib.publishGroupID:LibUIUtils:+" 39 | compile "$rootProject.ext.ExtLib.publishGroupID:LibUtils:+" 40 | compile "$rootProject.ext.ExtLib.publishGroupID:LibLogger:+" 41 | compile "$rootProject.ext.ExtLib.publishGroupID:LibConfig:+" 42 | compile "$rootProject.ext.ExtLib.publishGroupID:LibCache:+" 43 | compile "$rootProject.ext.ExtLib.publishGroupID:LibCrash:+" 44 | compile "$rootProject.ext.ExtLib.publishGroupID:LibNetwork:+" 45 | compile "$rootProject.ext.ExtLib.publishGroupID:LibWebview:+" 46 | compile "$rootProject.ext.ExtLib.publishGroupID:LibAdapter:+" 47 | compile "com.android.support:support-v4:$rootProject.ext.android_support_version" 48 | compile "com.android.support:appcompat-v7:$rootProject.ext.android_support_version" 49 | compile "com.android.support:design:$rootProject.ext.android_support_version" 50 | compile "com.android.support:cardview-v7:$rootProject.ext.android_support_version" 51 | compile "com.android.support:recyclerview-v7:$rootProject.ext.android_support_version" 52 | compile 'com.android.support.constraint:constraint-layout:1.0.2' 53 | 54 | compile "android.arch.lifecycle:extensions:1.1.0" 55 | kapt "android.arch.lifecycle:compiler:1.1.0" 56 | 57 | compile 'me.yokeyword:fragmentation:1.2.5' 58 | compile 'me.yokeyword:fragmentation-swipeback:1.2.5' 59 | compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar' 60 | compile 'org.greenrobot:eventbus:3.0.0' 61 | compile 'com.github.bumptech.glide:glide:3.8.0' 62 | 63 | compile 'com.google.zxing:core:3.3.0' 64 | 65 | compile 'com.qq.mta:mta:3.3.+' 66 | compile 'com.tencent.mid:mid:3.+' 67 | compile 'com.qq.visual:visual:3.3.+' 68 | 69 | compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$rootProject.ext.kotlin_version" 70 | } 71 | -------------------------------------------------------------------------------- /Framework_core/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/App.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework 2 | 3 | import android.app.Application 4 | import com.ottd.libs.crash.JYCrash 5 | import com.tencent.mta.track.StatisticsDataAPI 6 | import com.tencent.stat.StatService 7 | 8 | 9 | class App : Application() { 10 | 11 | override fun onCreate() { 12 | super.onCreate() 13 | OttdFramework.getInstance().init(applicationContext) 14 | JYCrash.init(getApplicationContext(), "eda6c0c655", OttdFramework.getInstance().isDebug) 15 | StatService.startStatService(this, null, com.tencent.stat.common.StatConstants.VERSION) 16 | StatisticsDataAPI.instance(this) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/common/ConfigProxy.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.common 2 | 3 | import com.ottd.libs.config.Config 4 | import kotlin.properties.ReadOnlyProperty 5 | import kotlin.reflect.KProperty 6 | 7 | /** 8 | * Created by zixie on 2018/2/8. 9 | */ 10 | class ConfigProxy(val key: String, val defValue: T) : ReadOnlyProperty { 11 | override fun getValue(thisRef: Any, property: KProperty<*>): T { 12 | return when(defValue) { 13 | is Int -> Config.readConfig(key, defValue) 14 | is Long -> Config.readConfig(key, defValue) 15 | is Boolean -> Config.isSwitchEnabled(key, defValue) 16 | else -> Config.readConfig(key, defValue as String) 17 | } as T 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/common/eFlag.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.common; 2 | 3 | /** 4 | * Created by zixie on 2017/10/17. 5 | */ 6 | 7 | public class eFlag { 8 | public final static int Succ = 0; //成功 9 | public final static int Error = -1; //通用失败 10 | 11 | public final static int UPDATE_HAS_NEW = 1000; //有更新包 12 | public final static int UPDATE_HASNOT_NEW = 1001; //无更新包 13 | } 14 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/fragment/BaseBackFragment.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.fragment 2 | 3 | 4 | import android.os.Bundle 5 | import me.yokeyword.fragmentation_swipeback.SwipeBackFragment 6 | 7 | /** 8 | * Created by YoKeyword on 16/2/7. 9 | */ 10 | open class BaseBackFragment : SwipeBackFragment() { 11 | 12 | override fun onActivityCreated(savedInstanceState: Bundle?) { 13 | super.onActivityCreated(savedInstanceState) 14 | setParallaxOffset(0.5f) 15 | } 16 | 17 | override fun onSupportVisible() { 18 | super.onSupportVisible() 19 | // StatHelper.reportFragmentShow(this.getClass().getName()); 20 | } 21 | 22 | companion object { 23 | private val TAG = "Fragmentation" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/fragment/BaseMainFragment.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.fragment 2 | 3 | 4 | import com.ottd.libs.framework.R 5 | import com.ottd.libs.ui.ToastUtil 6 | import me.yokeyword.fragmentation.SupportFragment 7 | 8 | 9 | /** 10 | * 懒加载 11 | * Created by YoKeyword on 16/6/5. 12 | */ 13 | abstract class BaseMainFragment : SupportFragment() { 14 | private var TOUCH_TIME: Long = 0 15 | 16 | /** 17 | * 处理回退事件 18 | * 19 | * @return 20 | */ 21 | override fun onBackPressedSupport(): Boolean { 22 | if (System.currentTimeMillis() - TOUCH_TIME < WAIT_TIME) { 23 | _mActivity.finish() 24 | } else { 25 | TOUCH_TIME = System.currentTimeMillis() 26 | ToastUtil.showShort(context, context.getString(R.string.press_again_exit)) 27 | } 28 | return true 29 | } 30 | 31 | companion object { 32 | // 再点一次退出程序时间设置 33 | private val WAIT_TIME = 2000L 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/model/ApplicationInfo.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.model 2 | 3 | /** 4 | * Created by enzowei on 2018/2/5. 5 | */ 6 | data class ApplicationInfo(val ret: Int, 7 | val ecode: Int, 8 | val msg: String, 9 | val packageinfo: PackageInfo) -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/model/News.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.model 2 | 3 | /** 4 | * Created by enzowei on 2018/2/5. 5 | */ 6 | data class News(val id: Long, 7 | val title: String, 8 | val summary: String, 9 | val summaryAuto: String, 10 | val url: String, 11 | val mobileUrl: String?, 12 | val siteName: String, 13 | val siteSlug: String, 14 | val language: String, 15 | val authorName: String, 16 | val publishDate: String) -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/model/NewsList.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.model 2 | 3 | /** 4 | * Created by enzowei on 2018/2/5. 5 | */ 6 | data class NewsList(val data:List, 7 | val pageSize:Int, 8 | val totalItems:Long, 9 | val totalPages:Long) -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/model/PackageInfo.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.model 2 | 3 | /** 4 | * Created by enzowei on 2018/2/5. 5 | */ 6 | data class PackageInfo(val version: String, 7 | val url: String) -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/model/Topic.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.model 2 | 3 | /** 4 | * Created by enzowei on 2018/2/5. 5 | */ 6 | data class Topic(val id: String, 7 | val title: String, 8 | val summary: String, 9 | val newsArray: List, 10 | val weiboArray: List, 11 | val wechatArray: List, 12 | val relatedTopicArray: List, 13 | val publishUserId: String, 14 | val order: String, 15 | val publishDate: String, 16 | val createdAt: String, 17 | val updatedAt: String) 18 | 19 | 20 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/model/TopicDetail.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.model 2 | 3 | /** 4 | * Created by enzowei on 2018/2/5. 5 | */ 6 | data class TopicDetail(val id: String, 7 | val createdAt: String, 8 | val newsArray: List?, 9 | val order: String, 10 | val publishDate: String, 11 | val summary: String, 12 | val title: String, 13 | val updatedAt: String, 14 | val timeline: Timeline?, 15 | val entityTopic: List, 16 | // val entityEventTopics: Any,//暂时未知属性 17 | val hasInstantView: Boolean 18 | ) 19 | 20 | data class Timeline(val topics: List, 21 | val message: String, 22 | val keyword: List, 23 | val errorCode: Int, 24 | val commonEntites: List) 25 | 26 | data class Entity(val weight: Int = 0, 27 | val nerName: String, 28 | val entityId: Int, 29 | val entityName: String, 30 | val entityType: String, 31 | val entityUniqueId: String?, 32 | val eventType: Int = 0, 33 | val eventTypeLabel: String?) -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/model/TopicList.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.model 2 | 3 | data class TopicList(val data:List, 4 | val pageSize:Int, 5 | val totalItems:Long, 6 | val totalPages:Long) 7 | -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/utils/IntentExt.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.utils 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | 6 | /** 7 | * Created by enzowei on 2018/2/9. 8 | */ 9 | fun Intent.startWith(context: Context) { 10 | context.startActivity(this) 11 | } -------------------------------------------------------------------------------- /Framework_core/src/main/java/com/ottd/libs/framework/utils/TimeUtils.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.framework.utils 2 | 3 | import java.text.ParseException 4 | import java.text.SimpleDateFormat 5 | import java.util.* 6 | 7 | 8 | /** 9 | * Created by enzowei on 2018/2/7. 10 | */ 11 | fun String.getReadhubTimeStamp(): Long = try { 12 | SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.CHINA).apply { 13 | timeZone = TimeZone.getTimeZone("UTC") 14 | }.parse(this).time 15 | } catch (e: ParseException) { 16 | 0L 17 | } 18 | 19 | fun String.getDateCompareResult(): String = getReadhubTimeStamp().getDateCompareResult() 20 | 21 | fun Long.getDateCompareResult(): String { 22 | val minute = (1000 * 60).toLong() 23 | val hour = minute * 60 24 | val day = hour * 24 25 | val month = day * 30 26 | val year = month * 12 27 | val currentTimestamp = System.currentTimeMillis() 28 | // println(oldTimestamp) 29 | // println(currentTimestamp) 30 | val diffValue = currentTimestamp - this 31 | val yearC = diffValue / year 32 | val monthC = diffValue / month 33 | val weekC = diffValue / (7 * day) 34 | val dayC = diffValue / day 35 | val hourC = diffValue / hour 36 | val minC = diffValue / minute 37 | return when { 38 | yearC > 0 -> "${yearC} 年前" 39 | monthC > 0 -> "${monthC} 月前" 40 | weekC > 0 -> "${weekC} 周前" 41 | dayC > 0 -> "${dayC} 天前" 42 | hourC > 0 -> "${hourC} 小时前" 43 | minC > 0 -> "${minC} 分钟前" 44 | diffValue > 0 -> "${diffValue} 秒前" 45 | else -> "不久前" 46 | } 47 | } -------------------------------------------------------------------------------- /Framework_core/src/main/res/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Framework_core/src/main/res/drawable/icon.png -------------------------------------------------------------------------------- /Framework_core/src/main/res/mipmap-xxhdpi/readhub_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Framework_core/src/main/res/mipmap-xxhdpi/readhub_logo.png -------------------------------------------------------------------------------- /Framework_core/src/main/res/values-v19/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 25dp 8 | 9 | -------------------------------------------------------------------------------- /Framework_core/src/main/res/values/com_bihe0832_readhub_res.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Readhub 4 | 无码科技 5 | 每天几分钟 了解互联网 6 | 无码科技 • Readhub 7 | 8 | 话题 9 | 资讯 10 | 我的 11 | 12 | 科技动态 13 | 开发者资讯 14 | 区块链资讯 15 | 16 | %1$s / %2$s • %3$s 17 | 18 | 网络异常,请检查您的网络~ 19 | 重新加载 20 | 21 | 分享 Readhub 给朋友 22 | Readhub 是无码科技团队的一款产品。通过 Readhub 每天花几分钟了解一下互联网行业里发生的事情。你可以点击 https://readhub.me 通过网页版了解信息,或者点击 http://readhub.bihe0832.com/download/download.html 下载应用。 23 | 24 | 再按一次将退出应用 25 | 26 | 关于 Readhub 27 | 28 | Readhub 及无码科技 29 | file:///android_asset/readhub.html 30 | Readhub 网页版 31 | https://readhub.me 32 | https://readhub.me/topic/%1$s 33 | 34 | 关于应用 35 | 热门话题浏览方式 36 | 科技动态英文新闻 37 | 我关注的话题 38 | 关于开发者 39 | 开发者信息 — 子勰 40 | file:///android_asset/author.html 41 | 开发者信息 — enzo 42 | https://github.com/enzowyf 43 | 功能介绍 44 | file:///android_asset/version.html 45 | 检查新版本 46 | 47 | 您当前的版本(%1$s)已经是最新版 48 | Readhub 有版本啦! 49 | Readhub 最新版(%1$s)已经发布啦,您要现在更新么? 50 | 确认更新 51 | 取消更新 52 | 53 | 分享给朋友 54 | 55 | #00000000 56 | #607D8B 57 | 58 | #406d91 59 | #CFD8DC 60 | #F5F5F5 61 | #EFF6EE 62 | #246394 63 | #212121 64 | #6c747f 65 | #f2f2f2 66 | #BDBDBD 67 | 68 | -------------------------------------------------------------------------------- /Framework_core/src/main/res/values/com_bihe0832_readhub_theme.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | @color/background 4 | @color/primary 5 | @color/primary_blue 6 | @color/primary_text 7 | @color/accent 8 | @color/secondary_text 9 | 10 | 16 | 17 | 23 | 24 | -------------------------------------------------------------------------------- /Framework_core/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 32.0sp 6 | 24.0sp 7 | 20.0sp 8 | 18.0sp 9 | 16.0sp 10 | 14.0sp 11 | 12.0sp 12 | 10.0sp 13 | 8.0sp 14 | 52dp 15 | 0dp 16 | 17 | -------------------------------------------------------------------------------- /LibAdapter/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | .DS_Store 3 | local.properties 4 | 5 | # build files 6 | build/ 7 | bin/ 8 | gen/ 9 | output/ 10 | 11 | # android studio 12 | *.iml 13 | .idea 14 | -------------------------------------------------------------------------------- /LibAdapter/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | clean.doFirst { 20 | delete "build" 21 | } 22 | 23 | //导出aar 24 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 25 | from 'build/outputs/aar/' + module.name + '-release.aar' 26 | into "./../libs/" 27 | } 28 | 29 | apply from: './../build_maven.gradle' 30 | 31 | dependencies { 32 | compile fileTree(include: ['*.jar'], dir: 'libs') 33 | compile "com.android.support:recyclerview-v7:$rootProject.ext.android_support_version" 34 | } 35 | -------------------------------------------------------------------------------- /LibAdapter/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /Users/huasheng/Desktop/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /LibAdapter/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/BaseSectionQuickAdapter.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base; 2 | 3 | import android.view.ViewGroup; 4 | 5 | import com.chad.library.adapter.base.entity.SectionEntity; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 11 | */ 12 | public abstract class BaseSectionQuickAdapter extends BaseQuickAdapter { 13 | 14 | 15 | protected int mSectionHeadResId; 16 | protected static final int SECTION_HEADER_VIEW = 0x00000444; 17 | 18 | /** 19 | * Same as QuickAdapter#QuickAdapter(Context,int) but with 20 | * some initialization data. 21 | * 22 | * @param sectionHeadResId The section head layout id for each item 23 | * @param layoutResId The layout resource id of each item. 24 | * @param data A new list is created out of this one to avoid mutable list 25 | */ 26 | public BaseSectionQuickAdapter(int layoutResId, int sectionHeadResId, List data) { 27 | super(layoutResId, data); 28 | this.mSectionHeadResId = sectionHeadResId; 29 | } 30 | 31 | @Override 32 | protected int getDefItemViewType(int position) { 33 | return mData.get(position).isHeader ? SECTION_HEADER_VIEW : 0; 34 | } 35 | 36 | @Override 37 | protected K onCreateDefViewHolder(ViewGroup parent, int viewType) { 38 | if (viewType == SECTION_HEADER_VIEW) 39 | return createBaseViewHolder(getItemView(mSectionHeadResId, parent)); 40 | 41 | return super.onCreateDefViewHolder(parent, viewType); 42 | } 43 | 44 | @Override 45 | protected boolean isFixedViewType(int type) { 46 | return super.isFixedViewType(type) || type == SECTION_HEADER_VIEW; 47 | } 48 | 49 | @Override 50 | public void onBindViewHolder(K holder, int position) { 51 | switch (holder.getItemViewType()) { 52 | case SECTION_HEADER_VIEW: 53 | setFullSpan(holder); 54 | convertHead(holder, getItem(position - getHeaderLayoutCount())); 55 | break; 56 | default: 57 | super.onBindViewHolder(holder, position); 58 | break; 59 | } 60 | } 61 | 62 | protected abstract void convertHead(K helper, T item); 63 | 64 | } 65 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/animation/AlphaInAnimation.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.animation; 2 | 3 | import android.animation.Animator; 4 | import android.animation.ObjectAnimator; 5 | import android.view.View; 6 | 7 | 8 | /** 9 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 10 | */ 11 | public class AlphaInAnimation implements BaseAnimation { 12 | private static final float DEFAULT_ALPHA_FROM = 0f; 13 | private final float mFrom; 14 | 15 | public AlphaInAnimation() { 16 | this(DEFAULT_ALPHA_FROM); 17 | } 18 | 19 | public AlphaInAnimation(float from) { 20 | mFrom = from; 21 | } 22 | 23 | @Override 24 | public Animator[] getAnimators(View view) { 25 | return new Animator[]{ObjectAnimator.ofFloat(view, "alpha", mFrom, 1f)}; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/animation/BaseAnimation.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.animation; 2 | 3 | import android.animation.Animator; 4 | import android.view.View; 5 | 6 | /** 7 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 8 | */ 9 | public interface BaseAnimation { 10 | Animator[] getAnimators(View view); 11 | } 12 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/animation/ScaleInAnimation.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.animation; 2 | 3 | import android.animation.Animator; 4 | import android.animation.ObjectAnimator; 5 | import android.view.View; 6 | 7 | 8 | /** 9 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 10 | */ 11 | public class ScaleInAnimation implements BaseAnimation { 12 | private static final float DEFAULT_SCALE_FROM = .5f; 13 | private final float mFrom; 14 | 15 | public ScaleInAnimation() { 16 | this(DEFAULT_SCALE_FROM); 17 | } 18 | 19 | public ScaleInAnimation(float from) { 20 | mFrom = from; 21 | } 22 | 23 | @Override 24 | public Animator[] getAnimators(View view) { 25 | ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", mFrom, 1f); 26 | ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", mFrom, 1f); 27 | return new ObjectAnimator[]{scaleX, scaleY}; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/animation/SlideInBottomAnimation.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.animation; 2 | 3 | import android.animation.Animator; 4 | import android.animation.ObjectAnimator; 5 | import android.view.View; 6 | 7 | 8 | /** 9 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 10 | */ 11 | public class SlideInBottomAnimation implements BaseAnimation { 12 | @Override 13 | public Animator[] getAnimators(View view) { 14 | return new Animator[]{ 15 | ObjectAnimator.ofFloat(view, "translationY", view.getMeasuredHeight(), 0) 16 | }; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/animation/SlideInLeftAnimation.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.animation; 2 | 3 | import android.animation.Animator; 4 | import android.animation.ObjectAnimator; 5 | import android.view.View; 6 | 7 | 8 | /** 9 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 10 | */ 11 | public class SlideInLeftAnimation implements BaseAnimation { 12 | @Override 13 | public Animator[] getAnimators(View view) { 14 | return new Animator[]{ 15 | ObjectAnimator.ofFloat(view, "translationX", -view.getRootView().getWidth(), 0) 16 | }; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/animation/SlideInRightAnimation.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.animation; 2 | 3 | import android.animation.Animator; 4 | import android.animation.ObjectAnimator; 5 | import android.view.View; 6 | 7 | 8 | /** 9 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 10 | */ 11 | public class SlideInRightAnimation implements BaseAnimation { 12 | @Override 13 | public Animator[] getAnimators(View view) { 14 | return new Animator[]{ 15 | ObjectAnimator.ofFloat(view, "translationX", view.getRootView().getWidth(), 0) 16 | }; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/entity/AbstractExpandableItem.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.entity; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | 6 | /** 7 | *

A helper to implement expandable item.

8 | *

if you don't want to extent a class, you can also implement the interface IExpandable

9 | * Created by luoxw on 2016/8/9. 10 | */ 11 | public abstract class AbstractExpandableItem implements IExpandable { 12 | protected boolean mExpandable = false; 13 | protected List mSubItems; 14 | 15 | @Override 16 | public boolean isExpanded() { 17 | return mExpandable; 18 | } 19 | 20 | @Override 21 | public void setExpanded(boolean expanded) { 22 | mExpandable = expanded; 23 | } 24 | 25 | @Override 26 | public List getSubItems() { 27 | return mSubItems; 28 | } 29 | 30 | public boolean hasSubItem() { 31 | return mSubItems != null && mSubItems.size() > 0; 32 | } 33 | 34 | public void setSubItems(List list) { 35 | mSubItems = list; 36 | } 37 | 38 | public T getSubItem(int position) { 39 | if (hasSubItem() && position < mSubItems.size()) { 40 | return mSubItems.get(position); 41 | } else { 42 | return null; 43 | } 44 | } 45 | 46 | public int getSubItemPosition(T subItem) { 47 | return mSubItems != null ? mSubItems.indexOf(subItem) : -1; 48 | } 49 | 50 | public void addSubItem(T subItem) { 51 | if (mSubItems == null) { 52 | mSubItems = new ArrayList<>(); 53 | } 54 | mSubItems.add(subItem); 55 | } 56 | 57 | public void addSubItem(int position, T subItem) { 58 | if (mSubItems != null && position >= 0 && position < mSubItems.size()) { 59 | mSubItems.add(position, subItem); 60 | } else { 61 | addSubItem(subItem); 62 | } 63 | } 64 | 65 | public boolean contains(T subItem) { 66 | return mSubItems != null && mSubItems.contains(subItem); 67 | } 68 | 69 | public boolean removeSubItem(T subItem) { 70 | return mSubItems != null && mSubItems.remove(subItem); 71 | } 72 | 73 | public boolean removeSubItem(int position) { 74 | if (mSubItems != null && position >= 0 && position < mSubItems.size()) { 75 | mSubItems.remove(position); 76 | return true; 77 | } 78 | return false; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/entity/IExpandable.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.entity; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * implement the interface if the item is expandable 7 | * Created by luoxw on 2016/8/8. 8 | */ 9 | public interface IExpandable { 10 | boolean isExpanded(); 11 | void setExpanded(boolean expanded); 12 | List getSubItems(); 13 | 14 | /** 15 | * Get the level of this item. The level start from 0. 16 | * If you don't care about the level, just return a negative. 17 | */ 18 | int getLevel(); 19 | } 20 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/entity/MultiItemEntity.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.entity; 2 | 3 | /** 4 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 5 | */ 6 | public interface MultiItemEntity { 7 | int getItemType(); 8 | } 9 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/entity/SectionEntity.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.entity; 2 | 3 | import java.io.Serializable; 4 | 5 | /** 6 | * https://github.com/CymChad/BaseRecyclerViewAdapterHelper 7 | */ 8 | public abstract class SectionEntity implements Serializable { 9 | public boolean isHeader; 10 | public T t; 11 | public String header; 12 | 13 | public SectionEntity(boolean isHeader, String header) { 14 | this.isHeader = isHeader; 15 | this.header = header; 16 | this.t = null; 17 | } 18 | 19 | public SectionEntity(T t) { 20 | this.isHeader = false; 21 | this.header = null; 22 | this.t = t; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/listener/OnItemChildClickListener.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.listener; 2 | 3 | import android.view.View; 4 | 5 | import com.chad.library.adapter.base.BaseQuickAdapter; 6 | 7 | /** 8 | * Created by AllenCoder on 2016/8/03. 9 | * A convenience class to extend when you only want to OnItemChildClickListener for a subset 10 | * of all the SimpleClickListener. This implements all methods in the 11 | * {@link SimpleClickListener} 12 | **/ 13 | 14 | public abstract class OnItemChildClickListener extends SimpleClickListener { 15 | @Override 16 | public void onItemClick(BaseQuickAdapter adapter, View view, int position) { 17 | 18 | } 19 | 20 | @Override 21 | public void onItemLongClick(BaseQuickAdapter adapter, View view, int position) { 22 | 23 | } 24 | 25 | @Override 26 | public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { 27 | onSimpleItemChildClick(adapter, view, position); 28 | } 29 | 30 | @Override 31 | public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) { 32 | 33 | } 34 | 35 | public abstract void onSimpleItemChildClick(BaseQuickAdapter adapter, View view, int position); 36 | } 37 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/listener/OnItemChildLongClickListener.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.listener; 2 | 3 | import android.view.View; 4 | 5 | import com.chad.library.adapter.base.BaseQuickAdapter; 6 | 7 | /** 8 | * Created by AllenCoder on 2016/8/03. 9 | * A convenience class to extend when you only want to OnItemChildLongClickListener for a subset 10 | * of all the SimpleClickListener. This implements all methods in the 11 | * {@link SimpleClickListener} 12 | **/ 13 | public abstract class OnItemChildLongClickListener extends SimpleClickListener { 14 | @Override 15 | public void onItemClick(BaseQuickAdapter adapter, View view, int position) { 16 | 17 | } 18 | 19 | @Override 20 | public void onItemLongClick(BaseQuickAdapter adapter, View view, int position) { 21 | 22 | } 23 | 24 | @Override 25 | public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { 26 | 27 | } 28 | 29 | @Override 30 | public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) { 31 | onSimpleItemChildLongClick(adapter, view, position); 32 | } 33 | 34 | public abstract void onSimpleItemChildLongClick(BaseQuickAdapter adapter, View view, int position); 35 | } 36 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/listener/OnItemClickListener.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.listener; 2 | 3 | import android.view.View; 4 | 5 | import com.chad.library.adapter.base.BaseQuickAdapter; 6 | 7 | /** 8 | * Created by AllenCoder on 2016/8/03. 9 | *

10 | *

11 | * A convenience class to extend when you only want to OnItemClickListener for a subset 12 | * of all the SimpleClickListener. This implements all methods in the 13 | * {@link SimpleClickListener} 14 | */ 15 | public abstract class OnItemClickListener extends SimpleClickListener { 16 | @Override 17 | public void onItemClick(BaseQuickAdapter adapter, View view, int position) { 18 | onSimpleItemClick(adapter, view, position); 19 | } 20 | 21 | @Override 22 | public void onItemLongClick(BaseQuickAdapter adapter, View view, int position) { 23 | 24 | } 25 | 26 | @Override 27 | public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { 28 | 29 | } 30 | 31 | @Override 32 | public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) { 33 | 34 | } 35 | 36 | public abstract void onSimpleItemClick(BaseQuickAdapter adapter, View view, int position); 37 | } 38 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/listener/OnItemDragListener.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.listener; 2 | 3 | import android.support.v7.widget.RecyclerView; 4 | 5 | /** 6 | * Created by luoxw on 2016/6/20. 7 | */ 8 | public interface OnItemDragListener { 9 | void onItemDragStart(RecyclerView.ViewHolder viewHolder, int pos); 10 | 11 | void onItemDragMoving(RecyclerView.ViewHolder source, int from, RecyclerView.ViewHolder target, int to); 12 | 13 | void onItemDragEnd(RecyclerView.ViewHolder viewHolder, int pos); 14 | } 15 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/listener/OnItemLongClickListener.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.listener; 2 | 3 | import android.view.View; 4 | 5 | import com.chad.library.adapter.base.BaseQuickAdapter; 6 | 7 | /** 8 | * create by: allen on 16/8/3. 9 | */ 10 | 11 | public abstract class OnItemLongClickListener extends SimpleClickListener { 12 | @Override 13 | public void onItemClick(BaseQuickAdapter adapter, View view, int position) { 14 | 15 | } 16 | 17 | @Override 18 | public void onItemLongClick(BaseQuickAdapter adapter, View view, int position) { 19 | onSimpleItemLongClick(adapter, view, position); 20 | } 21 | 22 | @Override 23 | public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { 24 | 25 | } 26 | 27 | @Override 28 | public void onItemChildLongClick(BaseQuickAdapter adapter, View view, int position) { 29 | } 30 | 31 | public abstract void onSimpleItemLongClick(BaseQuickAdapter adapter, View view, int position); 32 | } 33 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/listener/OnItemSwipeListener.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.listener; 2 | 3 | import android.graphics.Canvas; 4 | import android.support.v7.widget.RecyclerView; 5 | 6 | /** 7 | * Created by luoxw on 2016/6/23. 8 | */ 9 | public interface OnItemSwipeListener { 10 | /** 11 | * Called when the swipe action start. 12 | */ 13 | void onItemSwipeStart(RecyclerView.ViewHolder viewHolder, int pos); 14 | 15 | /** 16 | * Called when the swipe action is over. 17 | * If you change the view on the start, you should reset is here, no matter the item has swiped or not. 18 | * 19 | * @param pos If the view is swiped, pos will be negative. 20 | */ 21 | void clearView(RecyclerView.ViewHolder viewHolder, int pos); 22 | 23 | /** 24 | * Called when item is swiped, the view is going to be removed from the adapter. 25 | */ 26 | void onItemSwiped(RecyclerView.ViewHolder viewHolder, int pos); 27 | 28 | /** 29 | * Draw on the empty edge when swipe moving 30 | * 31 | * @param canvas the empty edge's canvas 32 | * @param viewHolder The ViewHolder which is being interacted by the User or it was 33 | * interacted and simply animating to its original position 34 | * @param dX The amount of horizontal displacement caused by user's action 35 | * @param dY The amount of vertical displacement caused by user's action 36 | * @param isCurrentlyActive True if this view is currently being controlled by the user or 37 | * false it is simply animating back to its original state. 38 | */ 39 | void onItemSwipeMoving(Canvas canvas, RecyclerView.ViewHolder viewHolder, float dX, float dY, boolean isCurrentlyActive); 40 | } 41 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/loadmore/SimpleLoadMoreView.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.loadmore; 2 | 3 | 4 | import com.ottd.libs.adapter.R; 5 | 6 | /** 7 | * Created by BlingBling on 2016/10/11. 8 | */ 9 | 10 | public final class SimpleLoadMoreView extends LoadMoreView { 11 | 12 | @Override 13 | public int getLayoutId() { 14 | return R.layout.quick_view_load_more; 15 | } 16 | 17 | @Override 18 | protected int getLoadingViewId() { 19 | return R.id.load_more_loading_view; 20 | } 21 | 22 | @Override 23 | protected int getLoadFailViewId() { 24 | return R.id.load_more_load_fail_view; 25 | } 26 | 27 | @Override 28 | protected int getLoadEndViewId() { 29 | return R.id.load_more_load_end_view; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/util/MultiTypeDelegate.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.util; 2 | 3 | import android.support.annotation.LayoutRes; 4 | import android.util.SparseIntArray; 5 | 6 | import java.util.List; 7 | 8 | import static com.chad.library.adapter.base.BaseMultiItemQuickAdapter.TYPE_NOT_FOUND; 9 | 10 | /** 11 | * help you to achieve multi type easily 12 | *

13 | * Created by tysheng 14 | * Date: 2017/4/6 08:41. 15 | * Email: tyshengsx@gmail.com 16 | *

17 | *

18 | * more information: https://github.com/CymChad/BaseRecyclerViewAdapterHelper/issues/968 19 | */ 20 | 21 | public abstract class MultiTypeDelegate { 22 | 23 | private static final int DEFAULT_VIEW_TYPE = -0xff; 24 | private SparseIntArray layouts; 25 | private boolean autoMode, selfMode; 26 | 27 | public MultiTypeDelegate(SparseIntArray layouts) { 28 | this.layouts = layouts; 29 | } 30 | 31 | public MultiTypeDelegate() { 32 | } 33 | 34 | public final int getDefItemViewType(List data, int position) { 35 | T item = data.get(position); 36 | return item != null ? getItemType(item) : DEFAULT_VIEW_TYPE; 37 | } 38 | 39 | /** 40 | * get the item type from specific entity. 41 | * 42 | * @param t entity 43 | * @return item type 44 | */ 45 | protected abstract int getItemType(T t); 46 | 47 | public final int getLayoutId(int viewType) { 48 | return this.layouts.get(viewType, TYPE_NOT_FOUND); 49 | } 50 | 51 | private void addItemType(int type, @LayoutRes int layoutResId) { 52 | if (this.layouts == null) { 53 | this.layouts = new SparseIntArray(); 54 | } 55 | this.layouts.put(type, layoutResId); 56 | } 57 | 58 | /** 59 | * auto increase type vale, start from 0. 60 | * 61 | * @param layoutResIds layout id arrays 62 | * @return MultiTypeDelegate 63 | */ 64 | public MultiTypeDelegate registerItemTypeAutoIncrease(@LayoutRes int... layoutResIds) { 65 | autoMode = true; 66 | checkMode(selfMode); 67 | for (int i = 0; i < layoutResIds.length; i++) { 68 | addItemType(i, layoutResIds[i]); 69 | } 70 | return this; 71 | } 72 | 73 | /** 74 | * set your own type one by one. 75 | * 76 | * @param type type value 77 | * @param layoutResId layout id 78 | * @return MultiTypeDelegate 79 | */ 80 | public MultiTypeDelegate registerItemType(int type, @LayoutRes int layoutResId) { 81 | selfMode = true; 82 | checkMode(autoMode); 83 | addItemType(type, layoutResId); 84 | return this; 85 | } 86 | 87 | private void checkMode(boolean mode) { 88 | if (mode) { 89 | throw new RuntimeException("Don't mess two register mode"); 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /LibAdapter/src/main/java/com/chad/library/adapter/base/util/TouchEventUtil.java: -------------------------------------------------------------------------------- 1 | package com.chad.library.adapter.base.util; 2 | 3 | import android.view.MotionEvent; 4 | 5 | public class TouchEventUtil { 6 | 7 | public static String getTouchAction(int actionId) { 8 | String actionName = "Unknow:id=" + actionId; 9 | switch (actionId) { 10 | case MotionEvent.ACTION_DOWN: 11 | actionName = "ACTION_DOWN"; 12 | break; 13 | case MotionEvent.ACTION_MOVE: 14 | actionName = "ACTION_MOVE"; 15 | break; 16 | case MotionEvent.ACTION_UP: 17 | actionName = "ACTION_UP"; 18 | break; 19 | case MotionEvent.ACTION_CANCEL: 20 | actionName = "ACTION_CANCEL"; 21 | break; 22 | case MotionEvent.ACTION_OUTSIDE: 23 | actionName = "ACTION_OUTSIDE"; 24 | break; 25 | } 26 | return actionName; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /LibAdapter/src/main/res/drawable/sample_footer_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/LibAdapter/src/main/res/drawable/sample_footer_loading.png -------------------------------------------------------------------------------- /LibAdapter/src/main/res/drawable/sample_footer_loading_progress.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /LibAdapter/src/main/res/layout/quick_view_load_more.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 20 | 21 | 29 | 30 | 31 | 36 | 37 | 38 | 45 | 46 | 47 | 48 | 53 | 54 | 60 | 61 | -------------------------------------------------------------------------------- /LibAdapter/src/main/res/values-en/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Loading... 3 | load more failed 4 | No more data 5 | 6 | -------------------------------------------------------------------------------- /LibAdapter/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 50dp 4 | 5 | 4dp 6 | 10dp 7 | 40dp 8 | 72dp 9 | 10 | 12sp 11 | 14sp 12 | 16sp 13 | 14 | -------------------------------------------------------------------------------- /LibAdapter/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /LibAdapter/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Library 3 | 正在加载中... 4 | 加载失败,请点我重试 5 | 没有更多数据 6 | 7 | -------------------------------------------------------------------------------- /LibCache/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | clean.doFirst { 20 | delete "build" 21 | } 22 | 23 | //导出aar 24 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 25 | from 'build/outputs/aar/' + module.name + '-release.aar' 26 | into "./../libs/" 27 | } 28 | 29 | apply from: './../build_maven.gradle' 30 | 31 | dependencies { 32 | compile "$rootProject.ext.ExtLib.publishGroupID:LibLogger:+" 33 | compile "$rootProject.ext.ExtLib.publishGroupID:LibUtils:+" 34 | 35 | compile "com.android.support:appcompat-v7:$rootProject.ext.android_support_version" 36 | compile "com.android.support:support-v4:$rootProject.ext.android_support_version" 37 | } 38 | -------------------------------------------------------------------------------- /LibCache/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LibCache/src/main/java/com/ottd/libs/cache/CacheItem.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.cache; 2 | 3 | /** 4 | * Created by zixie on 2017/9/15. 5 | */ 6 | 7 | public class CacheItem { 8 | private String key; 9 | private String value; 10 | private long mCreateTime; 11 | private long mUpdateTime; 12 | private long mDeleteTime; 13 | 14 | public CacheItem(String key, String value, long createTime, long updateTime, long deleteTime) { 15 | this.key = key; 16 | this.value = value; 17 | this.mCreateTime = createTime; 18 | this.mUpdateTime = updateTime; 19 | this.mDeleteTime = deleteTime; 20 | } 21 | 22 | public String getKey() { 23 | return key; 24 | } 25 | 26 | public void setKey(String key) { 27 | this.key = key; 28 | } 29 | 30 | public String getValue() { 31 | return value; 32 | } 33 | 34 | public void setValue(String value) { 35 | this.value = value; 36 | } 37 | 38 | public long getCreateTime() { 39 | return mCreateTime; 40 | } 41 | 42 | public void setCreateTime(long createTime) { 43 | this.mCreateTime = createTime; 44 | } 45 | 46 | public long getUpdateTime() { 47 | return mUpdateTime; 48 | } 49 | 50 | public void setUpdateTime(long mUpdateTime) { 51 | this.mUpdateTime = mUpdateTime; 52 | } 53 | 54 | public long getDeleteTime() { 55 | return mDeleteTime; 56 | } 57 | 58 | public void setDeleteTime(long mDeleteTime) { 59 | this.mDeleteTime = mDeleteTime; 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /LibCache/src/main/java/com/ottd/libs/cache/GetCacheCallback.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.cache; 2 | 3 | 4 | public interface GetCacheCallback { 5 | 6 | int NoData = 0; 7 | int GetDataError = 1; 8 | void onSuccess(String cache); 9 | 10 | void onFail(int code); 11 | } 12 | -------------------------------------------------------------------------------- /LibCache/src/main/java/com/ottd/libs/cache/MemLruCache.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.cache; 2 | 3 | import android.support.annotation.NonNull; 4 | import android.util.LruCache; 5 | 6 | import com.ottd.libs.cache.CacheItem; 7 | 8 | /** 9 | * Created by zixie on 2017/9/15. 10 | */ 11 | 12 | public class MemLruCache { 13 | 14 | //默认内存超时时间1分钟 15 | private static final long DEFAULT_DURING = 60 * 10; 16 | private final LruCache mLruCache; 17 | 18 | public MemLruCache(int maxSize) { 19 | mLruCache = new LruCache<>(maxSize); 20 | } 21 | 22 | public String get(@NonNull String key) { 23 | CacheItem cacheItem = getItem(key); 24 | if(null != cacheItem){ 25 | return cacheItem.getValue(); 26 | }else{ 27 | return ""; 28 | } 29 | } 30 | 31 | public CacheItem getItem(@NonNull String key) { 32 | CacheItem cacheItem = mLruCache.get(key); 33 | if (cacheItem == null) { 34 | return null; 35 | } 36 | 37 | if (System.currentTimeMillis() / 1000 < cacheItem.getDeleteTime()) { 38 | return cacheItem; 39 | } else { 40 | mLruCache.remove(key); 41 | return null; 42 | } 43 | } 44 | 45 | public String put(@NonNull String key, @NonNull String value, long during) { 46 | if (during < 1) { 47 | mLruCache.remove(key); 48 | return null; 49 | } 50 | 51 | long time = System.currentTimeMillis() / 1000; 52 | CacheItem cacheItem = new CacheItem(key, value, time, time, time + during); 53 | CacheItem previous = mLruCache.put(key, cacheItem); 54 | 55 | if (previous != null) { 56 | return previous.getValue(); 57 | } else { 58 | return null; 59 | } 60 | } 61 | 62 | public String put(@NonNull String key, @NonNull String value) { 63 | return put(key, value,DEFAULT_DURING); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /LibConfig/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | clean.doFirst { 19 | delete "build" 20 | } 21 | 22 | //导出aar 23 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 24 | from 'build/outputs/aar/' + module.name + '-release.aar' 25 | into "./../libs/" 26 | } 27 | 28 | apply from: './../build_maven.gradle' 29 | 30 | dependencies { 31 | compile "$rootProject.ext.ExtLib.publishGroupID:LibLogger:+" 32 | compile "$rootProject.ext.ExtLib.publishGroupID:LibUtils:+" 33 | } -------------------------------------------------------------------------------- /LibConfig/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /LibConfig/src/main/java/com/ottd/libs/config/Config.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.config; 2 | 3 | import android.content.Context; 4 | 5 | 6 | /** 7 | * @author code@bihe0832.com 8 | */ 9 | 10 | public class Config { 11 | 12 | // 开关值为开启 13 | public static final String VALUE_SWITCH_ON = "true"; 14 | // 开关值为关闭 15 | public static final String VALUE_SWITCH_OFF = "false"; 16 | 17 | public static String readConfig (String key, String defValue){ 18 | return ConfigManager.getInstance().readConfig(key,defValue); 19 | } 20 | 21 | public static int readConfig (String key, int defValue){ 22 | return ConfigManager.getInstance().readConfig(key,defValue); 23 | } 24 | 25 | public static long readConfig (String key, long defValue){ 26 | return ConfigManager.getInstance().readConfig(key,defValue); 27 | } 28 | 29 | public static boolean isSwitchEnabled (String switchKey, boolean defValue){ 30 | return ConfigManager.getInstance().isSwitchEnabled(switchKey,defValue); 31 | } 32 | 33 | public static boolean setCloudConfig (String key, String defValue){ 34 | return ConfigManager.getInstance().writeConfig(key,defValue); 35 | } 36 | 37 | public static void init (Context ctx, String file){ 38 | ConfigManager.getInstance().init(ctx,file); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /LibCrash/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | clean.doFirst { 20 | delete "build" 21 | } 22 | 23 | //导出aar 24 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 25 | from 'build/outputs/aar/' + module.name + '-release.aar' 26 | into "./../libs/" 27 | } 28 | 29 | apply from: './../build_maven.gradle' 30 | 31 | dependencies { 32 | compile fileTree(include: ['*.jar'], dir: 'libs') 33 | } -------------------------------------------------------------------------------- /LibCrash/libs/bugly_crash_release.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/LibCrash/libs/bugly_crash_release.jar -------------------------------------------------------------------------------- /LibCrash/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | -------------------------------------------------------------------------------- /LibCrash/src/main/java/com/ottd/libs/crash/JYCrash.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.crash; 2 | 3 | import android.content.Context; 4 | 5 | import com.tencent.bugly.crashreport.CrashReport; 6 | 7 | /** 8 | * Created by zixie on 2017/8/21. 9 | */ 10 | 11 | public class JYCrash { 12 | 13 | public static void init(Context context, String appid, boolean isDebug) { 14 | 15 | CrashReport.UserStrategy strategy = new CrashReport.UserStrategy(context); 16 | strategy.setAppReportDelay(5000); 17 | CrashReport.initCrashReport(context, appid, isDebug, strategy); 18 | 19 | } 20 | 21 | public static void setUserID(String openid){ 22 | CrashReport.setUserId(openid); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /LibLogger/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | clean.doFirst { 20 | delete "build" 21 | } 22 | 23 | //导出aar 24 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 25 | from 'build/outputs/aar/' + module.name + '-release.aar' 26 | into "./../libs/" 27 | } 28 | 29 | apply from: './../build_maven.gradle' 30 | 31 | dependencies { 32 | compile "$rootProject.ext.ExtLib.publishGroupID:LibUtils:+" 33 | } -------------------------------------------------------------------------------- /LibLogger/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /LibLogger/src/main/java/com/ottd/libs/logger/OttdLog.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.logger; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | 7 | /** 8 | * Created by zixie on 2017/8/31. 9 | */ 10 | 11 | public class OttdLog { 12 | public static boolean sShowDebugLogSwitch = true; 13 | 14 | public static void init(Context ctx, boolean showDebugLog){ 15 | Logger.init(ctx,Logger.LOG_BOTH); 16 | sShowDebugLogSwitch = showDebugLog; 17 | } 18 | 19 | public static void e(String msg) { 20 | Logger.e(msg); 21 | } 22 | 23 | public static void e(String tag, Throwable throwable) { 24 | Logger.e(tag,throwable); 25 | } 26 | 27 | public static void e(String tag, String msg) { 28 | Logger.e(tag,msg); 29 | } 30 | 31 | public static void w(String msg) { 32 | Logger.w(msg); 33 | } 34 | 35 | public static void w(String tag, String msg) { 36 | Logger.w(tag,msg); 37 | } 38 | 39 | public static void d(String msg) { 40 | Logger.d(msg); 41 | } 42 | 43 | public static void d(Object msg) { 44 | Logger.d(msg); 45 | } 46 | 47 | public static void d(String tag, Object msg) { 48 | Logger.d(tag,msg); 49 | } 50 | 51 | public static void d(Bundle b) { 52 | Logger.d(b); 53 | } 54 | 55 | public static void d(Intent i) { 56 | Logger.d(i); 57 | } 58 | 59 | public static void d(String tag, Intent i) { 60 | Logger.d(tag,i); 61 | } 62 | 63 | public static void d(String tag, String msg) { 64 | Logger.d(tag,msg); 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /LibNetwork/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'kotlin-android' 3 | 4 | android { 5 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 6 | buildToolsVersion rootProject.ext.android.buildToolsVersion 7 | 8 | defaultConfig { 9 | minSdkVersion rootProject.ext.android.minSdkVersion as int 10 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 11 | versionName rootProject.ext.android.versionName 12 | versionCode rootProject.ext.android.versionCode as int 13 | } 14 | 15 | lintOptions { 16 | abortOnError false 17 | } 18 | } 19 | 20 | clean.doFirst { 21 | delete "build" 22 | } 23 | 24 | //导出aar 25 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 26 | from 'build/outputs/aar/' + module.name + '-release.aar' 27 | into "./../libs/" 28 | } 29 | 30 | apply from: './../build_maven.gradle' 31 | 32 | dependencies { 33 | compile "$rootProject.ext.ExtLib.publishGroupID:LibCache:+" 34 | 35 | compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$rootProject.ext.kotlin_version" 36 | compile 'com.squareup.okhttp3:okhttp:3.9.1' 37 | compile 'com.squareup.okhttp3:logging-interceptor:3.8.0' 38 | compile 'com.google.code.gson:gson:2.8.2' 39 | compile 'com.squareup.retrofit2:retrofit:2.3.0' 40 | compile 'com.squareup.retrofit2:converter-gson:2.3.0' 41 | compile 'com.github.enzowyf:okhttp4k:0.1.0' 42 | } 43 | -------------------------------------------------------------------------------- /LibNetwork/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /LibNetwork/src/main/java/com/ottd/libs/network/extensions/RetrofitExt.kt: -------------------------------------------------------------------------------- 1 | package topic.network 2 | 3 | import retrofit2.Call 4 | import retrofit2.Callback 5 | import retrofit2.Response 6 | 7 | /** 8 | * Created by enzowei on 2018/2/5. 9 | */ 10 | class RetrofitCallbackBuilder { 11 | 12 | var onResponse: ((call: Call?, response: Response?) -> Unit)? = null 13 | 14 | var onFailure: ((call: Call?, t: Throwable?) -> Unit)? = null 15 | 16 | fun onResponse(onResponse: (call: Call?, response: Response?) -> Unit) { 17 | this.onResponse = onResponse 18 | } 19 | 20 | fun onFailure(onFailure: (call: Call?, t: Throwable?) -> Unit) { 21 | this.onFailure = onFailure 22 | } 23 | } 24 | 25 | fun Call.enqueue(build: RetrofitCallbackBuilder.() -> Unit) { 26 | val builder = RetrofitCallbackBuilder().apply(build) 27 | this.enqueue(object : Callback { 28 | override fun onFailure(call: Call?, t: Throwable?) { 29 | builder.onFailure?.invoke(call, t) 30 | } 31 | 32 | override fun onResponse(call: Call?, response: Response?) { 33 | builder.onResponse?.invoke(call, response) 34 | } 35 | 36 | }) 37 | } -------------------------------------------------------------------------------- /LibThread/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | clean.doFirst { 20 | delete "build" 21 | } 22 | 23 | //导出aar 24 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 25 | from 'build/outputs/aar/' + module.name + '-release.aar' 26 | into "./../libs/" 27 | } 28 | 29 | apply from: './../build_maven.gradle' 30 | -------------------------------------------------------------------------------- /LibThread/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /LibUIUtils/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | apply plugin: 'kotlin-android' 3 | 4 | android { 5 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 6 | buildToolsVersion rootProject.ext.android.buildToolsVersion 7 | 8 | defaultConfig { 9 | minSdkVersion rootProject.ext.android.minSdkVersion as int 10 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 11 | versionName rootProject.ext.android.versionName 12 | versionCode rootProject.ext.android.versionCode as int 13 | } 14 | 15 | lintOptions { 16 | abortOnError false 17 | } 18 | } 19 | 20 | clean.doFirst { 21 | delete "build" 22 | } 23 | 24 | //导出aar 25 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 26 | from 'build/outputs/aar/' + module.name + '-release.aar' 27 | into "./../libs/" 28 | } 29 | 30 | apply from: './../build_maven.gradle' 31 | 32 | dependencies { 33 | compile "com.android.support:appcompat-v7:$rootProject.ext.android_support_version" 34 | compile "com.android.support:recyclerview-v7:$rootProject.ext.android_support_version" 35 | compile "$rootProject.ext.ExtLib.publishGroupID:LibThread:+" 36 | 37 | compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$rootProject.ext.kotlin_version" 38 | } -------------------------------------------------------------------------------- /LibUIUtils/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/java/com/ottd/libs/ui/AutoLoadDecorator.kt: -------------------------------------------------------------------------------- 1 | package com.tencent.jygame.base.subscribe.ui 2 | 3 | import android.support.v7.widget.LinearLayoutManager 4 | import android.support.v7.widget.RecyclerView 5 | 6 | /** 7 | * Created by enzowei on 2017/12/25. 8 | */ 9 | class AutoLoadDecorator(private val attachedRecyclerView: RecyclerView) { 10 | private val layoutManager: LinearLayoutManager = attachedRecyclerView.layoutManager as LinearLayoutManager 11 | var isLoadingMore = false 12 | private var onLoadMore: () -> Unit = {} 13 | private var onScrolled: ((recyclerView: RecyclerView?, dx: Int, dy: Int) -> Unit)? = null 14 | private var onScrollStateChanged: ((recyclerView: RecyclerView?, newState: Int) -> Unit)? = null 15 | 16 | init { 17 | attachedRecyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { 18 | override fun onScrolled(recyclerView: RecyclerView?, dx: Int, dy: Int) { 19 | super.onScrolled(recyclerView, dx, dy) 20 | onScrolled?.invoke(recyclerView, dx, dy) 21 | val lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition() 22 | //有回调接口,且不是加载状态,且计算后剩下2个item 23 | if (!isLoadingMore && lastVisibleItemPosition >= attachedRecyclerView.adapter.itemCount - 2) { 24 | onLoadMore() 25 | isLoadingMore = true 26 | } 27 | } 28 | 29 | override fun onScrollStateChanged(recyclerView: RecyclerView?, newState: Int) { 30 | super.onScrollStateChanged(recyclerView, newState) 31 | onScrollStateChanged?.invoke(recyclerView, newState) 32 | } 33 | 34 | }) 35 | } 36 | 37 | fun onLoadMore(onLoadMore: () -> Unit) { 38 | this.onLoadMore = onLoadMore 39 | } 40 | 41 | fun onScrolled(onScrolled: (recyclerView: RecyclerView?, dx: Int, dy: Int) -> Unit) { 42 | this.onScrolled = onScrolled 43 | } 44 | 45 | fun onScrollStateChanged(onScrollStateChanged: (recyclerView: RecyclerView?, newState: Int) -> Unit) { 46 | this.onScrollStateChanged = onScrollStateChanged 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/java/com/ottd/libs/ui/BakedBezierInterpolator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 The Android Open Source Project 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package com.ottd.libs.ui; 18 | 19 | import android.view.animation.Interpolator; 20 | 21 | /** 22 | * A pre-baked bezier-curved interpolator for indeterminate progress animations. 23 | */ 24 | final class BakedBezierInterpolator implements Interpolator { 25 | private static final BakedBezierInterpolator INSTANCE = new BakedBezierInterpolator(); 26 | 27 | public final static BakedBezierInterpolator getInstance() { 28 | return INSTANCE; 29 | } 30 | 31 | /** 32 | * Use getInstance instead of instantiating. 33 | */ 34 | private BakedBezierInterpolator() { 35 | super(); 36 | } 37 | 38 | /** 39 | * Lookup table values. 40 | * Generated using a Bezier curve from (0,0) to (1,1) with control points: 41 | * P0 (0,0) 42 | * P1 (0.4, 0) 43 | * P2 (0.2, 1.0) 44 | * P3 (1.0, 1.0) 45 | * 46 | * Values sampled with x at regular intervals between 0 and 1. 47 | */ 48 | private static final float[] VALUES = new float[] { 49 | 0.0f, 0.0002f, 0.0009f, 0.0019f, 0.0036f, 0.0059f, 0.0086f, 0.0119f, 0.0157f, 0.0209f, 50 | 0.0257f, 0.0321f, 0.0392f, 0.0469f, 0.0566f, 0.0656f, 0.0768f, 0.0887f, 0.1033f, 0.1186f, 51 | 0.1349f, 0.1519f, 0.1696f, 0.1928f, 0.2121f, 0.237f, 0.2627f, 0.2892f, 0.3109f, 0.3386f, 52 | 0.3667f, 0.3952f, 0.4241f, 0.4474f, 0.4766f, 0.5f, 0.5234f, 0.5468f, 0.5701f, 0.5933f, 53 | 0.6134f, 0.6333f, 0.6531f, 0.6698f, 0.6891f, 0.7054f, 0.7214f, 0.7346f, 0.7502f, 0.763f, 54 | 0.7756f, 0.7879f, 0.8f, 0.8107f, 0.8212f, 0.8326f, 0.8415f, 0.8503f, 0.8588f, 0.8672f, 55 | 0.8754f, 0.8833f, 0.8911f, 0.8977f, 0.9041f, 0.9113f, 0.9165f, 0.9232f, 0.9281f, 0.9328f, 56 | 0.9382f, 0.9434f, 0.9476f, 0.9518f, 0.9557f, 0.9596f, 0.9632f, 0.9662f, 0.9695f, 0.9722f, 57 | 0.9753f, 0.9777f, 0.9805f, 0.9826f, 0.9847f, 0.9866f, 0.9884f, 0.9901f, 0.9917f, 0.9931f, 58 | 0.9944f, 0.9955f, 0.9964f, 0.9973f, 0.9981f, 0.9986f, 0.9992f, 0.9995f, 0.9998f, 1.0f, 1.0f 59 | }; 60 | 61 | private static final float STEP_SIZE = 1.0f / (VALUES.length - 1); 62 | 63 | @Override 64 | public float getInterpolation(float input) { 65 | if (input >= 1.0f) { 66 | return 1.0f; 67 | } 68 | 69 | if (input <= 0f) { 70 | return 0f; 71 | } 72 | 73 | int position = Math.min( 74 | (int) (input * (VALUES.length - 1)), 75 | VALUES.length - 2); 76 | 77 | float quantized = position * STEP_SIZE; 78 | float difference = input - quantized; 79 | float weight = difference / STEP_SIZE; 80 | 81 | return VALUES[position] + weight * (VALUES[position + 1] - VALUES[position]); 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/java/com/ottd/libs/ui/CommonRecyclerAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.ui 2 | 3 | import android.support.v7.widget.RecyclerView 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import com.ottd.base.topic.CommonViewHolder 8 | 9 | /** 10 | * Created by enzowei on 2018/2/9. 11 | */ 12 | class CommonRecyclerAdapter(build: CommonRecyclerAdapter.() -> Unit) : RecyclerView.Adapter() { 13 | private lateinit var onLayout: (viewType: Int) -> Int 14 | private lateinit var onItem: (position: Int) -> T 15 | private var onCount: (() -> Int)? = null 16 | private lateinit var onBind: View.(T) -> Unit 17 | 18 | init { 19 | build() 20 | } 21 | 22 | fun onLayout(onLayout: (viewType: Int) -> Int) { 23 | this.onLayout = onLayout 24 | } 25 | 26 | fun onItem(onItem: (position: Int) -> T) { 27 | this.onItem = onItem 28 | } 29 | 30 | fun onBind(onBind: View.(T) -> Unit) { 31 | this.onBind = onBind 32 | } 33 | 34 | fun onCount(onCount: () -> Int) { 35 | this.onCount = onCount 36 | } 37 | 38 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CommonViewHolder = 39 | CommonViewHolder(LayoutInflater.from(parent.context).inflate(onLayout(viewType), parent, false)) 40 | 41 | override fun onBindViewHolder(holder: CommonViewHolder, position: Int) { 42 | holder.bind(onItem(position), onBind) 43 | } 44 | 45 | override fun getItemCount(): Int = 46 | onCount?.invoke() ?: 0 47 | 48 | } -------------------------------------------------------------------------------- /LibUIUtils/src/main/java/com/ottd/libs/ui/CommonViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.ottd.base.topic 2 | 3 | import android.support.v7.widget.RecyclerView 4 | import android.view.View 5 | 6 | /** 7 | * Created by enzowei on 2017/12/5. 8 | */ 9 | class CommonViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) { 10 | inline fun bind(item: T, onBind: View.(T) -> Unit) = itemView.onBind(item) 11 | } -------------------------------------------------------------------------------- /LibUIUtils/src/main/java/com/ottd/libs/ui/OnPullListener.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.ui; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * Created by Cmad on 2015/5/12. 7 | */ 8 | public interface OnPullListener { 9 | public void onPulling(View headview); 10 | public void onCanRefreshing(View headview); 11 | public void onRefreshing(View headview); 12 | } 13 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/java/com/ottd/libs/ui/ResourceUtils.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.ui; 2 | 3 | import android.content.Context; 4 | import android.graphics.drawable.Drawable; 5 | 6 | /** 7 | * Created by zixie on 2018/1/24. 8 | */ 9 | 10 | public class ResourceUtils { 11 | 12 | public static Drawable getUsefulDrawable(Context context, int id){ 13 | Drawable drawable = context.getResources().getDrawable(id); 14 | drawable.setBounds(0, 0, drawable.getMinimumWidth(),drawable.getMinimumHeight()); 15 | return drawable; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/java/com/ottd/libs/ui/ToastUtil.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.ui; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import android.widget.Toast; import com.ottd.libs.thread.ThreadManager; public class ToastUtil { public static void show(final Context ctx, final String toastInfo, final int duration){ View contentView = LayoutInflater.from(ctx).inflate(R.layout.com_bihe0832_common_toast, null); final View layout = contentView.findViewById(R.id.bihe0832_common_custom_toast_layout_id); TextView toastText = (TextView) layout.findViewById(R.id.bihe0832_common_toastText); toastText.setText(toastInfo); ThreadManager.getInstance().runOnUIThread(new Runnable() { @Override public void run() { Toast toast = new Toast(ctx); toast.setDuration(duration); toast.setView(layout); toast.show(); } }); } public static void showLong(final Context ctx,final String toastInfo){ show(ctx,toastInfo,Toast.LENGTH_LONG); } public static void showShort(final Context ctx,final String toastInfo){ show(ctx,toastInfo,Toast.LENGTH_SHORT); } } -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/drawable/bihe0832_common_swipe_indicator_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/LibUIUtils/src/main/res/drawable/bihe0832_common_swipe_indicator_arrow.png -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/drawable/com_bihe0832_common_toast_corner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/drawable/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/LibUIUtils/src/main/res/drawable/icon.png -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/layout/com_bihe0832_common_swipe_refresh.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 16 | 17 | 23 | 24 | 32 | 33 | 34 | 40 | 41 | 49 | 50 | 59 | 60 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/layout/com_bihe0832_common_toast.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 30 | 31 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/values/com_bihe0832.common_swipe_res.xml: -------------------------------------------------------------------------------- 1 | 2 | 24dp 3 | 12dp 4 | 5 | 下拉刷新 6 | 松开刷新 7 | 正在刷新 8 | 上次更新时间 %1$s 9 | 10 | 11 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/values/com_bihe0832.common_toast_res.xml: -------------------------------------------------------------------------------- 1 | 2 | #DFDFDF 3 | #20242b 4 | 5dp 5 | 20dp 6 | 8dp 7 | 8 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /LibUIUtils/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 展开 4 | 收起 5 | 6 | -------------------------------------------------------------------------------- /LibUtils/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | clean.doFirst { 20 | delete "build" 21 | } 22 | 23 | //导出aar 24 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 25 | from 'build/outputs/aar/' + module.name + '-release.aar' 26 | into "./../libs/" 27 | } 28 | 29 | apply from: './../build_maven.gradle' 30 | 31 | dependencies { 32 | compile fileTree(include: ['*.jar'], dir: 'libs') 33 | } 34 | 35 | -------------------------------------------------------------------------------- /LibUtils/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/android/os/SystemProperties.java: -------------------------------------------------------------------------------- 1 | package android.os; 2 | 3 | 4 | public class SystemProperties 5 | { 6 | public static final int PROP_NAME_MAX = 31; 7 | public static final int PROP_VALUE_MAX = 255; 8 | 9 | public static native String native_get(String paramString); 10 | 11 | public static native String native_get(String paramString1, String paramString2); 12 | 13 | public static native int native_get_int(String paramString, int paramInt); 14 | 15 | public static native long native_get_long(String paramString, long paramLong); 16 | 17 | public static native boolean native_get_boolean(String paramString, boolean paramBoolean); 18 | 19 | public static native void native_set(String paramString1, String paramString2); 20 | 21 | public static String get(String key) 22 | { 23 | if (key.length() > 31) { 24 | throw new IllegalArgumentException("key.length > 31"); 25 | } 26 | return native_get(key); 27 | } 28 | 29 | public static String get(String key, String def) { 30 | if (key.length() > 31) { 31 | throw new IllegalArgumentException("key.length > 31"); 32 | } 33 | return native_get(key, def); 34 | } 35 | 36 | public static int getInt(String key, int def) 37 | { 38 | if (key.length() > 31) { 39 | throw new IllegalArgumentException("key.length > 31"); 40 | } 41 | return native_get_int(key, def); 42 | } 43 | 44 | public static long getLong(String key, long def) { 45 | if (key.length() > 31) { 46 | throw new IllegalArgumentException("key.length > 31"); 47 | } 48 | return native_get_long(key, def); 49 | } 50 | 51 | public static boolean getBoolean(String key, boolean def) { 52 | if (key.length() > 31) { 53 | throw new IllegalArgumentException("key.length > 31"); 54 | } 55 | return native_get_boolean(key, def); 56 | } 57 | 58 | public static void set(String key, String val) { 59 | if (key.length() > 31) { 60 | throw new IllegalArgumentException("key.length > 31"); 61 | } 62 | if ((val != null) && (val.length() > 255)) { 63 | throw new IllegalArgumentException("val.length > 255"); 64 | } 65 | native_set(key, val); 66 | } 67 | } -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/APKUtils.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils; 2 | 3 | import android.content.Context; 4 | import android.content.pm.PackageInfo; 5 | import android.content.pm.PackageManager; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Created by zixie on 2017/9/15. 11 | */ 12 | 13 | public class APKUtils { 14 | 15 | /** 16 | * 获取APP版本号 17 | */ 18 | public static int getAppVersionCode(Context context) { 19 | PackageManager pm = context.getPackageManager(); 20 | try { 21 | PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0); 22 | return pi == null ? 0 : pi.versionCode; 23 | } catch (PackageManager.NameNotFoundException e) { 24 | e.printStackTrace(); 25 | } 26 | return 0; 27 | } 28 | 29 | public static String getAppVersionName(Context context) { 30 | PackageManager pm = context.getPackageManager(); 31 | try { 32 | PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0); 33 | return pi == null ? "" : pi.versionName; 34 | } catch (PackageManager.NameNotFoundException e) { 35 | e.printStackTrace(); 36 | } 37 | return ""; 38 | } 39 | 40 | public static String getAppName(Context context) { 41 | PackageManager pm = context.getPackageManager(); 42 | try { 43 | PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0); 44 | return pi == null ? "" : pi.applicationInfo.loadLabel(pm).toString(); 45 | } catch (PackageManager.NameNotFoundException e) { 46 | e.printStackTrace(); 47 | }catch (Exception e){ 48 | e.printStackTrace(); 49 | } 50 | return ""; 51 | } 52 | 53 | public static PackageInfo getApkInfoByPackageName(Context ctx, String packageName) { 54 | String pkgName = packageName.trim(); 55 | PackageManager pm = ctx.getPackageManager(); 56 | List packageList = pm.getInstalledPackages(0); 57 | 58 | if (null == packageList) { 59 | return null; 60 | } 61 | 62 | for (PackageInfo item : packageList) { 63 | if (item.applicationInfo.packageName.equalsIgnoreCase(pkgName)) { 64 | return item; 65 | } 66 | } 67 | return null; 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/CommonUtils.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils; 2 | 3 | import android.graphics.Bitmap; 4 | 5 | import java.io.ByteArrayOutputStream; 6 | 7 | /** 8 | * 常用工具类 9 | */ 10 | public class CommonUtils { 11 | 12 | /** 13 | * 返回bitmap的数组大小 14 | * 15 | * @param bm 16 | * @return 17 | */ 18 | public static byte[] bitmap2Bytes(Bitmap bm) { 19 | if (bm == null) { 20 | return null; 21 | } 22 | ByteArrayOutputStream baos = new ByteArrayOutputStream(); 23 | bm.compress(Bitmap.CompressFormat.PNG, 100, baos); 24 | return baos.toByteArray(); 25 | } 26 | 27 | /** 28 | * 解析字符串为整数, 转换出错返回指定默认值 29 | * 30 | * @param str 31 | * @param defaultValue 32 | * @return 33 | */ 34 | public static int parseInt(String str, int defaultValue) { 35 | int value = defaultValue; 36 | 37 | if(!TextUtils.ckIsEmpty(str)){ 38 | try { 39 | value = Integer.parseInt(str); 40 | } catch (Exception e) { 41 | e.printStackTrace(); 42 | } 43 | } 44 | 45 | return value; 46 | } 47 | 48 | /** 49 | * 解析字符串为整数, 转换出错返回指定默认值 50 | * 51 | * @param str 52 | * @param defaultValue 53 | * @return 54 | */ 55 | public static long parseLong(String str, long defaultValue) { 56 | long value = defaultValue; 57 | if(!TextUtils.ckIsEmpty(str)){ 58 | try { 59 | value = Long.parseLong(str); 60 | } catch (Exception e) { 61 | e.printStackTrace(); 62 | } 63 | } 64 | 65 | return value; 66 | } 67 | 68 | /** 69 | * 解析字符串为整数, 转换出错返回指定默认值 70 | * 71 | * @param str 72 | * @param defaultValue 73 | * @return 74 | */ 75 | public static boolean parseBoolean(String str, boolean defaultValue) { 76 | boolean value = defaultValue; 77 | if(!TextUtils.ckIsEmpty(str)){ 78 | try { 79 | value = Boolean.parseBoolean(str); 80 | } catch (Exception e) { 81 | e.printStackTrace(); 82 | } 83 | } 84 | return value; 85 | } 86 | 87 | } 88 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/HexUtils.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils; 2 | 3 | public class HexUtils { 4 | private static final char[] digits = new char[]{'0', '1', '2', '3', '4',// 5 | '5', '6', '7', '8', '9',// 6 | 'A', 'B', 'C', 'D', 'E',// 7 | 'F'}; 8 | 9 | public static final byte[] emptybytes = new byte[0]; 10 | 11 | /** 12 | * 将单个字节转成Hex String 13 | * 14 | * @param b 字节 15 | * @return String Hex String 16 | */ 17 | public static String byte2HexStr(byte b) { 18 | char[] buf = new char[2]; 19 | buf[1] = digits[b & 0xF]; 20 | b = (byte) (b >>> 4); 21 | buf[0] = digits[b & 0xF]; 22 | return new String(buf); 23 | } 24 | 25 | /** 26 | * 将字节数组转成Hex String 27 | * 28 | * @param b 29 | * @return String 30 | */ 31 | public static String bytes2HexStr(byte[] bytes) { 32 | if (bytes == null || bytes.length == 0) { 33 | return null; 34 | } 35 | 36 | char[] buf = new char[2 * bytes.length]; 37 | for (int i = 0; i < bytes.length; i++) { 38 | byte b = bytes[i]; 39 | buf[2 * i + 1] = digits[b & 0xF]; 40 | b = (byte) (b >>> 4); 41 | buf[2 * i + 0] = digits[b & 0xF]; 42 | } 43 | return new String(buf); 44 | } 45 | 46 | /** 47 | * 将单个hex Str转换成字节 48 | * 49 | * @param str 50 | * @return byte 51 | */ 52 | public static byte hexStr2Byte(String str) { 53 | if (str != null && str.length() == 1) { 54 | return char2Byte(str.charAt(0)); 55 | } else { 56 | return 0; 57 | } 58 | } 59 | 60 | /** 61 | * 字符到字节 62 | * 63 | * @param ch 64 | * @return byte 65 | */ 66 | public static byte char2Byte(char ch) { 67 | if (ch >= '0' && ch <= '9') { 68 | return (byte) (ch - '0'); 69 | } else if (ch >= 'a' && ch <= 'f') { 70 | return (byte) (ch - 'a' + 10); 71 | } else if (ch >= 'A' && ch <= 'F') { 72 | return (byte) (ch - 'A' + 10); 73 | } else { 74 | return 0; 75 | } 76 | } 77 | 78 | public static byte[] hexStr2Bytes(String str) { 79 | if (str == null || str.equals("")) { 80 | return emptybytes; 81 | } 82 | 83 | byte[] bytes = new byte[str.length() / 2]; 84 | for (int i = 0; i < bytes.length; i++) { 85 | char high = str.charAt(i * 2); 86 | char low = str.charAt(i * 2 + 1); 87 | bytes[i] = (byte) (char2Byte(high) * 16 + char2Byte(low)); 88 | } 89 | return bytes; 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/KVPair.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils; 2 | 3 | /** 4 | * Created by zixie on 2017/7/24. 5 | */ 6 | 7 | public class KVPair { 8 | public int key; 9 | public String value; 10 | 11 | @Override 12 | public String toString(){ 13 | return "key:"+ key + ";value:" + value; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/MathUtils.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils;zixie 2 | 3 | /** 4 | * @author zixie 5 | */ 6 | public class MathUtils { 7 | 8 | /** 9 | * 获取两个数字区间的随机数 10 | * 11 | * @param min 下限 12 | * @param max 上限 13 | * @return 最终数 14 | */ 15 | public static int getRandNumByLimit(int min, int max) { 16 | return (int) java.lang.Math.round(java.lang.Math.random() * (max - min) + min); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/TimeUtils.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils; 2 | 3 | /** 4 | * Created by zixie on 2017/11/10. 5 | */ 6 | 7 | public class TimeUtils { 8 | 9 | public static String getDateCompareResult(long oldTimestamp){ 10 | long minute = 1000 * 60; 11 | long hour = minute * 60; 12 | long day = hour * 24; 13 | long month = day * 30; 14 | long year = month * 12; 15 | long currentTimestamp = System.currentTimeMillis(); 16 | long diffValue = currentTimestamp - oldTimestamp; 17 | long yearC = diffValue / year; 18 | long monthC = diffValue / month; 19 | long weekC = diffValue / (7 * day); 20 | long dayC = diffValue / day; 21 | long hourC = diffValue / hour; 22 | long minC = diffValue / minute; 23 | if (yearC > 0) { 24 | return yearC + "年前"; 25 | } else if (monthC > 0) { 26 | return monthC + "月前"; 27 | } else if (weekC > 0) { 28 | return weekC + "周前"; 29 | } else if (dayC > 0) { 30 | return dayC + "天前"; 31 | } else if (hourC > 0) { 32 | return hourC + "小时前"; 33 | } else if (minC > 0) { 34 | return minC + "分钟前"; 35 | } else if (diffValue > 0) { 36 | return diffValue/1000 + "秒前"; 37 | } else { 38 | return "不久前"; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/URLUtils.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils; 2 | 3 | import java.io.UnsupportedEncodingException; 4 | import java.net.MalformedURLException; 5 | import java.net.URL; 6 | import java.net.URLEncoder; 7 | 8 | /** 9 | * Created by zixie on 16/11/21. 10 | */ 11 | public class URLUtils { 12 | 13 | public static final String HTTP_REQ_ENTITY_START = "?"; 14 | public static final String HTTP_REQ_ENTITY_MERGE = "="; 15 | public static final String HTTP_REQ_ENTITY_JOIN = "&"; 16 | 17 | /** 18 | * @param source 19 | * 传入带参数的url,如:http://www.qq.com/ui/oa/test.html?name=hao&id=123 20 | * @return 去掉参数的url,如:http://www.qq.com/ui/oa/test.html 21 | */ 22 | public static String getNoQueryUrl(String source) { 23 | String dest = null; 24 | try { 25 | URL sUrl = new URL(source); 26 | URL dUrl = new URL(sUrl.getProtocol(), sUrl.getHost(), 27 | sUrl.getPort(), sUrl.getPath()); 28 | dest = dUrl.toString(); 29 | } catch (MalformedURLException e) { 30 | e.printStackTrace(); 31 | } 32 | return dest; 33 | } 34 | 35 | public static String getUrlEncodeValue(String origValue) { 36 | if (origValue == null) { 37 | origValue = ""; 38 | } 39 | return encode(origValue); 40 | 41 | } 42 | 43 | public static String encode(String value) { 44 | String encoded = ""; 45 | try { 46 | encoded = URLEncoder.encode(value, "UTF-8"); 47 | } catch (UnsupportedEncodingException ignore) { 48 | } 49 | StringBuffer buf = new StringBuffer(encoded.length()); 50 | char focus; 51 | for (int i = 0; i < encoded.length(); i++) { 52 | focus = encoded.charAt(i); 53 | if (focus == '*') { 54 | buf.append("%2A"); 55 | } else if (focus == '+') { 56 | buf.append("%20"); 57 | } else if (focus == '%' && (i + 1) < encoded.length() 58 | && encoded.charAt(i + 1) == '7' 59 | && encoded.charAt(i + 2) == 'E') { 60 | buf.append('~'); 61 | i += 2; 62 | } else { 63 | buf.append(focus); 64 | } 65 | } 66 | return buf.toString(); 67 | } 68 | 69 | 70 | public static String marge(String url, String para) { 71 | if(TextUtils.ckIsEmpty(url)){ 72 | return ""; 73 | } 74 | if(url.contains(HTTP_REQ_ENTITY_START)){ 75 | url += HTTP_REQ_ENTITY_JOIN; 76 | }else { 77 | url += HTTP_REQ_ENTITY_START; 78 | } 79 | if(!TextUtils.ckIsEmpty(para)){ 80 | url += para; 81 | } 82 | return url; 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/device/APN.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils.device; 2 | 3 | public enum APN { 4 | 5 | UN_DETECT(0), WIFI(1), CMWAP(2), CMNET(3), UNIWAP(4), UNINET(5), WAP3G(6), 6 | NET3G(7), CTWAP(8), CTNET(9), UNKNOWN(10), UNKNOW_WAP(11), NO_NETWORK(12), WAP4G(13), NET4G(14); 7 | 8 | 9 | private int value = 0; 10 | private String mValueStr = ""; 11 | private APN(int val) { 12 | this.value = val; 13 | switch (val){ 14 | case 1: 15 | this.mValueStr = "wifi"; 16 | break; 17 | case 2: 18 | this.mValueStr = "cmwap"; 19 | break; 20 | case 3: 21 | this.mValueStr = "cmnet"; 22 | break; 23 | case 4: 24 | this.mValueStr = "uniwap"; 25 | break; 26 | case 5: 27 | this.mValueStr = "uninet"; 28 | break; 29 | case 6: 30 | this.mValueStr = "3gwap"; 31 | break; 32 | case 7: 33 | this.mValueStr = "3gnet"; 34 | break; 35 | case 8: 36 | this.mValueStr = "ctwap"; 37 | break; 38 | case 9: 39 | this.mValueStr = "ctnet"; 40 | break; 41 | case 10: 42 | this.mValueStr = "unknow"; 43 | break; 44 | case 11: 45 | this.mValueStr = "wap"; 46 | break; 47 | case 12: 48 | this.mValueStr = "net"; 49 | break; 50 | case 13: 51 | this.mValueStr = "4gwap"; 52 | break; 53 | case 14: 54 | this.mValueStr = "4gnet"; 55 | break; 56 | default: 57 | this.mValueStr = "unknow"; 58 | } 59 | } 60 | 61 | public byte getByteValue(){ 62 | return (byte)this.value; 63 | } 64 | 65 | public String getStringValue(){ 66 | return this.mValueStr; 67 | } 68 | 69 | } 70 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/device/ManufacturerUtil.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils.device; 2 | 3 | import android.os.Build; 4 | import android.os.SystemProperties; 5 | 6 | import com.ottd.libs.utils.TextUtils; 7 | 8 | 9 | /** 10 | * Created by zixie on 2017/10/31. 11 | */ 12 | 13 | public class ManufacturerUtil { 14 | 15 | public static boolean isHuawei() { 16 | String manufacturer = SystemProperties.get("ro.product.manufacturer", null); 17 | if (TextUtils.replaceBlank(manufacturer.toLowerCase()).contains("huawei")) { 18 | return true; 19 | } 20 | 21 | String fingerprint = SystemProperties.get("ro.build.fingerprint", null); 22 | if (TextUtils.replaceBlank(fingerprint.toLowerCase()).contains("huawei")) { 23 | return true; 24 | } 25 | return false; 26 | } 27 | 28 | public static boolean isOppo() { 29 | try { 30 | String manufacturer = Build.MANUFACTURER; 31 | if (!android.text.TextUtils.isEmpty(manufacturer) && manufacturer.toLowerCase().contains("oppo")) { 32 | return true; 33 | } 34 | 35 | String fingerprint = Build.FINGERPRINT; 36 | if (!android.text.TextUtils.isEmpty(fingerprint) && fingerprint.toLowerCase().contains("oppo")) { 37 | return true; 38 | } 39 | } catch (Exception e) { 40 | e.printStackTrace(); 41 | } 42 | 43 | return false; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /LibUtils/src/main/java/com/ottd/libs/utils/device/NetInfo.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.utils.device; 2 | 3 | 4 | public class NetInfo { 5 | 6 | public APN apn = APN.UN_DETECT; 7 | 8 | public String networkOperator = ""; 9 | 10 | public int networkType = -1; 11 | 12 | public boolean isWap = false; 13 | 14 | public String bssid = ""; // 路由器mac地址 15 | 16 | public String ssid = ""; // wifi名称 17 | 18 | } 19 | -------------------------------------------------------------------------------- /LibWebview/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 5 | buildToolsVersion rootProject.ext.android.buildToolsVersion 6 | 7 | defaultConfig { 8 | minSdkVersion rootProject.ext.android.minSdkVersion as int 9 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 10 | versionName rootProject.ext.android.versionName 11 | versionCode rootProject.ext.android.versionCode as int 12 | } 13 | 14 | lintOptions { 15 | abortOnError false 16 | } 17 | } 18 | 19 | clean.doFirst { 20 | delete "build" 21 | } 22 | 23 | //导出aar 24 | task copyAAR(type: Copy, dependsOn: "assembleRelease") { 25 | from 'build/outputs/aar/' + module.name + '-release.aar' 26 | into "./../libs/" 27 | } 28 | 29 | apply from: './../build_maven.gradle' 30 | 31 | dependencies { 32 | compile fileTree(include: ['*.jar'], dir: 'libs') 33 | 34 | compile "$rootProject.ext.ExtLib.publishGroupID:LibThread:+" 35 | compile "$rootProject.ext.ExtLib.publishGroupID:LibUIUtils:+" 36 | compile "$rootProject.ext.ExtLib.publishGroupID:LibLogger:+" 37 | compile "$rootProject.ext.ExtLib.publishGroupID:LibUtils:+" 38 | } -------------------------------------------------------------------------------- /LibWebview/libs/tbs_sdk_thirdapp_v3.2.0.1104_43200_sharewithdownload_withfilereader_withoutGame_obfs_20170609_115346.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/LibWebview/libs/tbs_sdk_thirdapp_v3.2.0.1104_43200_sharewithdownload_withfilereader_withoutGame_obfs_20170609_115346.jar -------------------------------------------------------------------------------- /LibWebview/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /LibWebview/src/main/java/com/ottd/libs/web/X5ObserWebView.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.web; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import com.tencent.smtt.sdk.WebView; 7 | 8 | /** 9 | * Created by zixie on 2017/7/21. 10 | */ 11 | 12 | public class X5ObserWebView extends WebView { 13 | private OnScrollChangedCallback mOnScrollChangedCallback; 14 | 15 | public X5ObserWebView(final Context context) { 16 | super(context); 17 | } 18 | 19 | public X5ObserWebView(final Context context, final AttributeSet attrs) { 20 | super(context, attrs); 21 | } 22 | 23 | 24 | @Override 25 | protected void onScrollChanged(final int l, final int t, final int oldl, final int oldt) { 26 | super.onScrollChanged(l, t, oldl, oldt); 27 | if (mOnScrollChangedCallback != null) mOnScrollChangedCallback.onScroll(l, t); 28 | } 29 | 30 | public void setOnScrollChangedCallback(final OnScrollChangedCallback onScrollChangedCallback) { 31 | mOnScrollChangedCallback = onScrollChangedCallback; 32 | } 33 | 34 | 35 | public interface OnScrollChangedCallback { 36 | void onScroll(int l, int t); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /LibWebview/src/main/java/com/ottd/libs/web/jsbridge/JsResult.java: -------------------------------------------------------------------------------- 1 | package com.ottd.libs.web.jsbridge; 2 | 3 | public class JsResult { 4 | 5 | 6 | public static final int Result_OK = 0; 7 | 8 | public static final int Result_Fail = -1; 9 | 10 | public static final int Code_None = -2; 11 | 12 | public static final int Code_Java_Exception = -3; 13 | 14 | public static final int Code_IllegalArgument = -4; 15 | 16 | public static final int AUTHORIZE_FAIL = -5; 17 | 18 | public static final int SERVER_BUSY = -6;//服务器返回失败 19 | 20 | public static final int Code_Busy = -100; 21 | 22 | public static final int NOT_SUPPORT = -7; //非BrowserActivity不支持这个调用 23 | 24 | public static final int NOT_INSTALLED = -8 ; //未安装或未安装特定版本应用 25 | 26 | public static final int MID_INVALID = -9 ; //mid不合法 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /Main/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'kotlin-android' 3 | 4 | apply plugin: 'kotlin-android-extensions' 5 | 6 | apply plugin: 'kotlin-kapt' 7 | 8 | android { 9 | 10 | compileSdkVersion rootProject.ext.android.compileSdkVersion as int 11 | buildToolsVersion rootProject.ext.android.buildToolsVersion 12 | 13 | defaultConfig { 14 | applicationId rootProject.ext.android.applicationId 15 | minSdkVersion rootProject.ext.android.minSdkVersion as int 16 | targetSdkVersion rootProject.ext.android.targetSdkVersion as int 17 | versionName rootProject.ext.android.versionName 18 | versionCode rootProject.ext.android.versionCode as int 19 | vectorDrawables.useSupportLibrary = true 20 | multiDexEnabled false 21 | 22 | manifestPlaceholders = [ 23 | MTA_APPKEY : "AK76E4VLVA8M", 24 | MTA_CHANNEL: "zixie" 25 | ] 26 | 27 | ndk { 28 | abiFilters 'armeabi' 29 | } 30 | } 31 | 32 | lintOptions { 33 | abortOnError false 34 | } 35 | } 36 | 37 | clean.doFirst { 38 | delete "build" 39 | } 40 | 41 | dependencies { 42 | implementation project(':BasePermission') 43 | } 44 | -------------------------------------------------------------------------------- /Main/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 12 | 13 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 40 | 44 | 45 | 48 | 49 | 54 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /Main/src/main/assets/author.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 摇吧开发者 15 | 16 | 17 | 59 | 60 | 61 |

62 |
63 | 子勰随笔
64 |

扫一扫,关注开发者微信公众号!

65 |
66 |
67 |
68 | 82 |
83 | 84 |
85 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /Main/src/main/assets/conf.ini: -------------------------------------------------------------------------------- 1 | ;Readhub相关配置 2 | ;=========================== 3 | ;首页话题浏览方式:1为列表,2为摘要 4 | READHUB_TOPIC_TYPE=2 -------------------------------------------------------------------------------- /Main/src/main/assets/css/global.css: -------------------------------------------------------------------------------- 1 | @charset "utf-8"; 2 | /* code@bihe832.com */ 3 | body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;list-style:none;} 4 | fieldset,img{border:0;} 5 | 6 | h1, 7 | span, 8 | h3, 9 | h4, 10 | h5, 11 | h6, 12 | p, 13 | blockquote { 14 | margin: 0; 15 | padding: 0; 16 | } 17 | 18 | @font-face{font-family:Helvetica Neue For Number;src:local("Helvetica Neue");unicode-range:u+30-39} 19 | -------------------------------------------------------------------------------- /Main/src/main/assets/zixie_shi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/assets/zixie_shi.jpg -------------------------------------------------------------------------------- /Main/src/main/java/com/bihe0832/readhub/SplashActivity.java: -------------------------------------------------------------------------------- 1 | package com.bihe0832.readhub; 2 | 3 | 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.os.Handler; 7 | import android.support.v4.app.FragmentActivity; 8 | 9 | import com.bihe0832.readhub.main.MainActivity; 10 | 11 | 12 | /** 13 | * @author code@bihe0832.com 14 | */ 15 | public class SplashActivity extends FragmentActivity { 16 | 17 | @Override 18 | protected void onCreate(Bundle savedInstanceState) { 19 | super.onCreate(savedInstanceState); 20 | setContentView(R.layout.com_bihe0832_activity_splash); 21 | startApp(getIntent()); 22 | } 23 | 24 | private void startApp(final Intent intent) { 25 | new Handler().postDelayed(new Runnable() { 26 | @Override 27 | public void run() { 28 | intent.setClass(SplashActivity.this, MainActivity.class); 29 | SplashActivity.this.startActivity(intent); 30 | SplashActivity.this.finish(); 31 | } 32 | }, 2000); 33 | } 34 | } 35 | 36 | 37 | -------------------------------------------------------------------------------- /Main/src/main/java/com/bihe0832/readhub/about/AboutActivity.kt: -------------------------------------------------------------------------------- 1 | package com.bihe0832.readhub.about 2 | 3 | import android.content.Intent 4 | import android.os.Build 5 | import android.os.Bundle 6 | import android.support.v7.app.AppCompatActivity 7 | import android.view.WindowManager 8 | import com.bihe0832.readhub.R 9 | import com.bihe0832.readhub.webview.WebviewActivity 10 | import com.ottd.libs.framework.OttdFramework 11 | import com.ottd.libs.framework.network.ReadHubApi 12 | import com.ottd.libs.logger.OttdLog 13 | import com.ottd.libs.utils.APKUtils 14 | import kotlinx.android.synthetic.main.com_bihe0832_readhub_about_activity.* 15 | import okhttp3.MediaType 16 | import okhttp3.RequestBody 17 | import topic.network.enqueue 18 | 19 | 20 | class AboutActivity : AppCompatActivity() { 21 | 22 | private var isClicked = false 23 | override fun onCreate(savedInstanceState: Bundle?) { 24 | super.onCreate(savedInstanceState) 25 | 26 | setContentView(R.layout.com_bihe0832_readhub_about_activity) 27 | titleBar.title = resources.getString(R.string.app_name)//设置主标题 28 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 29 | val localLayoutParams = window.attributes 30 | localLayoutParams.flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS or localLayoutParams.flags 31 | } 32 | setSupportActionBar(titleBar) 33 | supportActionBar?.setDisplayHomeAsUpEnabled(true) 34 | titleBar.setNavigationOnClickListener { finish() } 35 | 36 | aboutReadhub.text = "Readhub V" + APKUtils.getAppVersionName(this) + "." + APKUtils.getAppVersionCode(this) 37 | 38 | aboutReadhubFunc.setOnClickListener{ 39 | if(!isClicked){ 40 | isClicked = true 41 | WebviewActivity.openNewWeb(getString(R.string.menu_key_about_func), getString(R.string.link_version)) 42 | } 43 | } 44 | 45 | aboutReadhubUpdate.setOnClickListener{ 46 | OttdFramework.getInstance().checkUpdate(this,false) 47 | } 48 | 49 | aboutReadhubShare.setOnClickListener{ 50 | val sendIntent = Intent() 51 | sendIntent.action = Intent.ACTION_SEND 52 | sendIntent.flags = Intent.FLAG_ACTIVITY_NEW_TASK 53 | sendIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.share_text)) 54 | sendIntent.type = "text/plain" 55 | OttdFramework.getInstance().applicationContext.startActivity(sendIntent) 56 | } 57 | } 58 | 59 | override fun onResume() { 60 | super.onResume() 61 | isClicked = false 62 | } 63 | 64 | 65 | } 66 | 67 | -------------------------------------------------------------------------------- /Main/src/main/java/com/bihe0832/readhub/news/viewmodel/NewsListViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.bihe0832.readhub.news.viewmodel 2 | 3 | import android.arch.lifecycle.MutableLiveData 4 | import android.arch.lifecycle.ViewModel 5 | import android.util.Log 6 | import com.ottd.libs.framework.model.NewsList 7 | import com.ottd.libs.framework.network.ReadHubApi 8 | import topic.network.enqueue 9 | 10 | /** 11 | * Created by enzowei on 2018/2/5. 12 | */ 13 | class NewsListViewModel : ViewModel() { 14 | val newsList = MutableLiveData() 15 | val error = MutableLiveData() 16 | fun getNewsList(lastCursor: Long = System.currentTimeMillis(), pageSize: Int = 10) { 17 | ReadHubApi.apiService.news(lastCursor, pageSize).enqueue { 18 | onResponse { _, response -> 19 | Log.d("NewsListViewModel", "onResponse:${response?.body()?.pageSize}") 20 | response?.let { 21 | newsList.value = it.body() 22 | } 23 | } 24 | onFailure { _, t -> 25 | if (t == null) { 26 | error.value = "Unknow Error" 27 | } else { 28 | Log.e("NewsListViewModel", t.localizedMessage) 29 | error.value = t.toString() 30 | } 31 | } 32 | } 33 | } 34 | 35 | fun getTechNewsList(lastCursor: Long = System.currentTimeMillis(), pageSize: Int = 10) { 36 | ReadHubApi.apiService.techNews(lastCursor, pageSize).enqueue { 37 | onResponse { _, response -> 38 | Log.d("NewsListViewModel", "onResponse:${response?.body()?.pageSize}") 39 | response?.let { 40 | newsList.value = it.body() 41 | } 42 | } 43 | onFailure { _, t -> 44 | if (t == null) { 45 | error.value = "Unknow Error" 46 | } else { 47 | Log.e("NewsListViewModel", t.localizedMessage) 48 | error.value = t.toString() 49 | } 50 | } 51 | } 52 | } 53 | 54 | fun getBlockchainNewsList(lastCursor: Long = System.currentTimeMillis(), pageSize: Int = 10) { 55 | ReadHubApi.apiService.blockchain(lastCursor, pageSize).enqueue { 56 | onResponse { _, response -> 57 | Log.d("NewsListViewModel", "onResponse:${response?.body()?.pageSize}") 58 | response?.let { 59 | newsList.value = it.body() 60 | } 61 | } 62 | onFailure { _, t -> 63 | if (t == null) { 64 | error.value = "Unknow Error" 65 | } else { 66 | Log.e("NewsListViewModel", t.localizedMessage) 67 | error.value = t.toString() 68 | } 69 | } 70 | } 71 | } 72 | } -------------------------------------------------------------------------------- /Main/src/main/java/com/bihe0832/readhub/topic/viewmodel/TopicViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.bihe0832.readhub.topic.viewmodel 2 | 3 | import android.arch.lifecycle.MutableLiveData 4 | import android.arch.lifecycle.ViewModel 5 | import android.util.Log 6 | import com.ottd.libs.framework.model.TopicDetail 7 | import com.ottd.libs.framework.model.TopicList 8 | import com.ottd.libs.framework.network.ReadHubApi 9 | import topic.network.enqueue 10 | 11 | 12 | const val DEFAULT_PAGE_SIZE_TOPIC = 5 13 | const val DEFAULT_CURSOR_TOPIC = "" 14 | 15 | class TopicViewModel : ViewModel() { 16 | 17 | val topicList by lazy { MutableLiveData() } 18 | val topicDetail by lazy { MutableLiveData() } 19 | val error by lazy { MutableLiveData() } 20 | 21 | fun getTopicList(lastCursor: String = DEFAULT_CURSOR_TOPIC, pageSize: Int = DEFAULT_PAGE_SIZE_TOPIC) { 22 | 23 | ReadHubApi.apiService.topic(lastCursor, pageSize).enqueue { 24 | onResponse { _, response -> 25 | Log.d("getNewsList", "onResponse:${response?.body()?.pageSize}") 26 | response?.let { 27 | topicList.value = it.body() 28 | } 29 | } 30 | onFailure { _, t -> 31 | if (t == null) { 32 | error.value = "Unknow Error" 33 | } else { 34 | Log.e("getNewsList", t.localizedMessage) 35 | error.value = t.toString() 36 | } 37 | } 38 | } 39 | } 40 | 41 | fun getTopicDetail(id: String) { 42 | ReadHubApi.apiService.topicDetail(id).enqueue { 43 | onResponse { _, response -> 44 | Log.d("getTopicDetail", "onResponse:${response?.body()?.id}") 45 | response?.let { 46 | topicDetail.value = it.body() 47 | } 48 | } 49 | onFailure { _, t -> 50 | if (t == null) { 51 | error.value = "Unknow Error" 52 | } else { 53 | Log.e("getTopicDetail", t.localizedMessage) 54 | error.value = t.toString() 55 | } 56 | } 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /Main/src/main/res/drawable/black_dot.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /Main/src/main/res/drawable/com_bihe0832_bottombar_shadow_up.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/com_bihe0832_bottombar_shadow_up.9.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/com_bihe0832_common_msg_bubble.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /Main/src/main/res/drawable/com_bihe0832_readhub_boder.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /Main/src/main/res/drawable/ic_account_circle_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/ic_account_circle_white_24dp.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/ic_keyboard_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/ic_keyboard_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/ic_keyboard_arrow_right_black_24dp.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/ic_open_in_new_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/ic_open_in_new_black_24dp.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/ic_share_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/ic_share_white_24dp.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/ic_star_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/ic_star_black_24dp.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/ic_view_carousel_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/ic_view_carousel_black_24dp.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/if_icon_news.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/if_icon_news.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/share_footer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/share_footer.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/share_header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/Main/src/main/res/drawable/share_header.png -------------------------------------------------------------------------------- /Main/src/main/res/drawable/timeline_dot.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/activity_topic_detail_news_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 19 | 20 | 32 | 33 | 46 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/com_bihe0832_activity_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 23 | 24 | 36 | 37 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/com_bihe0832_readhub_main_activity.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | 29 | 30 | 31 | 32 | 33 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/com_bihe0832_readhub_main_fragment_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 18 | 19 | 25 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/com_bihe0832_web_activity.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 15 | 16 | 17 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/com_bihe0832_webview_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | 17 | 18 | 22 | 23 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/fragment_news_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 17 | 18 | 23 | 24 | 25 | 42 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/fragment_news_tab.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 18 | 19 | 28 | 29 | 38 | 39 | 48 | 49 | 50 | 51 | 59 | 60 | 68 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/fragment_topic_item_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 27 | 28 | 39 | 40 | -------------------------------------------------------------------------------- /Main/src/main/res/layout/fragment_topic_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | 19 | 20 | 21 | 38 | -------------------------------------------------------------------------------- /Main/src/main/res/menu/com_tencent_jygame_app_share_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /Main/src/main/res/values/card_res.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 20dp 4 | 16dp 5 | @color/primary_text 6 | @dimen/text_size_16 7 | 8sp 8 | @color/primary_text 9 | @dimen/text_size_14 10 | 10sp 11 | 12 | 16dp 13 | 10dp 14 | 15 | #ffffff 16 | 17 | @color/primary_text 18 | @dimen/text_size_16 19 | 7sp 20 | 21 | 8dp 22 | @color/secondary_text 23 | @dimen/text_size_12 24 | 25 | @dimen/text_size_14 26 | @color/secondary_text 27 | 10sp 28 | 29 | 10dp 30 | @dimen/card_tips_textsize 31 | 20dp 32 | 2dp 33 | #ff678bb4 34 | 35 | #ff678bb4 36 | @dimen/text_size_12 37 | 38 | 50dp 39 | 40 | #73bebebe 41 | 0.5dp 42 | 43 | -------------------------------------------------------------------------------- /Main/src/main/res/values/me_res.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 16dp 5 | 6 | 16dp 7 | @dimen/text_size_14 8 | 9 | 8dp 10 | 50dp 11 | @dimen/text_size_16 12 | 13 | 24dp 14 | 15 | 26 | 27 | -------------------------------------------------------------------------------- /Main/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /build.conf: -------------------------------------------------------------------------------- 1 | LibThread 2 | LibUIUtils 3 | LibUtils 4 | LibLogger 5 | LibConfig 6 | LibCache 7 | LibCrash 8 | LibNetwork 9 | LibWebview 10 | LibAdapter 11 | Framework_core 12 | Main -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | 4 | buildscript { 5 | apply from: 'config.gradle' 6 | repositories { 7 | maven { url './../libs/' } 8 | jcenter() 9 | google() 10 | maven { url 'http://maven.aliyun.com/nexus/content/groups/public' } 11 | maven { url 'https://jitpack.io' } 12 | } 13 | dependencies { 14 | classpath 'com.android.tools.build:gradle:3.0.1' 15 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$rootProject.ext.kotlin_version" 16 | } 17 | } 18 | 19 | allprojects { 20 | repositories { 21 | maven { url './../libs/' } 22 | jcenter() 23 | google() 24 | maven { url 'http://maven.aliyun.com/nexus/content/groups/public'} 25 | maven { url 'https://jitpack.io' } 26 | } 27 | } -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #函数定义,检测执行结果 3 | function checkResult() { 4 | result=$? 5 | echo "result : $result" 6 | if [ $result -eq 0 ];then 7 | echo "checkResult: execCommand succ" 8 | else 9 | echo "checkResult: execCommand failed" 10 | exit $result 11 | fi 12 | } 13 | 14 | echo "********build mkdir bin *******" 15 | 16 | localPath=`pwd` 17 | echo $localPath 18 | #创建打包目录 19 | if [ ! -d "./bin" ]; then 20 | mkdir $localPath/bin 21 | fi 22 | 23 | #进入打包目录并清空目录 24 | cd $localPath/bin && rm -rf * && cd $localPath 25 | version=`git rev-list HEAD --count` 26 | 27 | # 删除本地可能存在的依赖库 28 | # rm -fr $localPath/libs/* 29 | # # 构建基本依赖库 30 | # echo "********APK build libs*******" 31 | # cat build.conf | grep Lib | xargs -I {} /bin/bash ./build_lib.sh {} 32 | 33 | 34 | # 调整依赖库 35 | # cat build.conf | grep -v Lib | xargs -I {} echo "include ':{}'" > ./settings.gradle 36 | 37 | # exit 38 | 39 | #关闭本地测试 40 | src="IS_TEST_VERSION = true" 41 | dst="IS_TEST_VERSION = false" 42 | cat $localPath/Framework_core/src/main/java/com/ottd/libs/framework/OttdFramework.java | sed "s/$src/$dst/g" > $localPath/bin/OttdFramework.java 43 | mv -f $localPath/bin/OttdFramework.java $localPath/Framework_core/src/main/java/com/ottd/libs/framework/OttdFramework.java 44 | 45 | echo "********APK build test start gradlew *******" 46 | #返回上层目录启动构建 47 | chmod +x $localPath/gradlew 48 | cd $localPath && ./gradlew clean 49 | cd $localPath && ./gradlew build 50 | checkResult 51 | 52 | timeinfo=`date +'%Y%m%d-%H%M'` 53 | echo "********copy apk *******" 54 | cp $localPath/Main/build/outputs/apk/debug/Main-debug.apk $localPath/bin/readhub_debug_${version}_${timeinfo}.apk 55 | cp $localPath/Main/build/outputs/apk/release/Main-release-unsigned.apk $localPath/bin/readhub_release_${version}_unsigned_${timeinfo}.apk 56 | $ANDROID_HOME/build-tools/25.0.2/apksigner sign --ks $localPath/debug.keystore --ks-pass pass:android --out $localPath/bin/readhub_release_${version}_${timeinfo}.apk $localPath/bin/readhub_release_${version}_unsigned_${timeinfo}.apk 57 | checkResult 58 | cp $localPath/bin/readhub_release_${version}_${timeinfo}.apk $localPath/demo/readhub_release_newer.apk -------------------------------------------------------------------------------- /build_lib.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # author zixie 3 | 4 | #函数定义,检测执行结果 5 | function checkResult() { 6 | result=$? 7 | echo "result : $result" 8 | if [ $result -eq 0 ];then 9 | echo "checkResult: execCommand succ" 10 | else 11 | echo "checkResult: execCommand failed" 12 | exit $result 13 | fi 14 | } 15 | 16 | deleteempty() { 17 | find ${1:-.} -mindepth 1 -maxdepth 1 -type d | while read -r dir 18 | do 19 | if [[ -z "$(find "$dir" -mindepth 1 -type f)" ]] >/dev/null 20 | then 21 | echo "$dir" 22 | rm -rf ${dir} 2>&- && echo "Empty, Deleted!" || echo "Delete error" 23 | fi 24 | if [ -d ${dir} ] 25 | then 26 | deleteempty "$dir" 27 | fi 28 | done 29 | } 30 | 31 | 32 | 33 | libName=$1 34 | echo "include ':$1'" > ./settings.gradle && ./gradlew clean build uploadArchives 35 | -------------------------------------------------------------------------------- /build_maven.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'maven' 2 | 3 | uploadArchives { 4 | repositories.mavenDeployer { 5 | repository(url: "file://" + rootDir.toString() + "/libs/") 6 | pom.project { 7 | groupId rootProject.ext.ExtLib.publishGroupID 8 | artifactId module.name 9 | version rootProject.ext.ExtLib.publishVersionName 10 | } 11 | } 12 | } 13 | 14 | //以下代码会生成jar包源文件,如果是不开源码,请不要输入这段 15 | //aar包内包含注释 16 | task androidSourcesJar(type: Jar) { 17 | classifier = 'sources' 18 | from android.sourceSets.main.java.sourceFiles 19 | } 20 | 21 | artifacts { 22 | archives androidSourcesJar 23 | } -------------------------------------------------------------------------------- /config.gradle: -------------------------------------------------------------------------------- 1 | def cmd = 'git rev-list HEAD --count' 2 | def gitVersion = cmd.execute().text.trim().toInteger() 3 | ext { 4 | android = [ 5 | compileSdkVersion: 26, 6 | buildToolsVersion: "26.0.2", 7 | applicationId : "com.bihe0832.readhub", 8 | minSdkVersion : 14, 9 | targetSdkVersion : 25, 10 | versionCode : gitVersion, 11 | versionName : "2.0.3" 12 | ] 13 | 14 | ExtLib = [ 15 | publishGroupID: android.applicationId, 16 | publishVersionName : "0.0.2", 17 | ] 18 | 19 | kotlin_version = '1.2.10' 20 | android_support_version = '26.0.0-alpha1' 21 | 22 | } -------------------------------------------------------------------------------- /debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/debug.keystore -------------------------------------------------------------------------------- /demo/architecture.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/architecture.jpg -------------------------------------------------------------------------------- /demo/me.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/me.jpg -------------------------------------------------------------------------------- /demo/news.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/news.jpg -------------------------------------------------------------------------------- /demo/readhub.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/readhub.sketch -------------------------------------------------------------------------------- /demo/readhub_release_newer.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/readhub_release_newer.apk -------------------------------------------------------------------------------- /demo/readhub_release_newer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/readhub_release_newer.png -------------------------------------------------------------------------------- /demo/share.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/share.jpeg -------------------------------------------------------------------------------- /demo/topic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/topic.jpg -------------------------------------------------------------------------------- /demo/topic_detail.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/demo/topic_detail.jpg -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Feb 06 14:46:21 CST 2018 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip 7 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | fd47f8d5369e20f1688d992757d9f2b7 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | 84e9346d461adc2aad0ff8583e4195ee5df6d6bc -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 4d6dbaefde2f025b2d38149d157d2cec -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | f85851730b1111c119f5a54e73ad6e112e0e8706 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibAdapter 7 | 0.0.2 8 | aar 9 | 10 | 11 | com.android.support 12 | recyclerview-v7 13 | 26.0.0-alpha1 14 | compile 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 243829012691863af94060b40cd3f9b4 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/0.0.2/LibAdapter-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | edf64429e2a3404749832b90ff82919594274a3f -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibAdapter 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112651 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 0ceacd7e9baff5b7b01757d7511159c4 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibAdapter/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 388102d077c7586c8b0623ff2ce5656823992e76 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | a50bd8eafc8c0d148b156a7c3d0d35c2 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | a298b2d669117e6bbce3b6cd68cd8c728182f996 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 8df0c787f34452093f61f0d2856d868c -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 2605699b7f26740a0d783e54b462999988bb0c3d -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibCache 7 | 0.0.2 8 | aar 9 | 10 | 11 | com.bihe0832.readhub 12 | LibLogger 13 | + 14 | compile 15 | 16 | 17 | com.bihe0832.readhub 18 | LibUtils 19 | + 20 | compile 21 | 22 | 23 | com.android.support 24 | appcompat-v7 25 | 26.0.0-alpha1 26 | compile 27 | 28 | 29 | com.android.support 30 | support-v4 31 | 26.0.0-alpha1 32 | compile 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 98384ea26933223a26ed5af6b10847e7 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/0.0.2/LibCache-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | 27cba959cfc26c5d1a90304d4707005bd56f69da -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibCache 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112620 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 45c5d66052a18aa535974aef0bbfab18 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCache/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 0ef83606a9356559a06fe19635b80a04568b3386 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | e8935fff71f0ed871ed9197ee4d2560d -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | 13385e5a04bd72f9a3eaef660fb4d709d489b14b -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 70a051490bed73654a25807b90ad6886 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 275f246b33da049aa14a8fa31d286899245df2b1 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibConfig 7 | 0.0.2 8 | aar 9 | 10 | 11 | com.bihe0832.readhub 12 | LibLogger 13 | + 14 | compile 15 | 16 | 17 | com.bihe0832.readhub 18 | LibUtils 19 | + 20 | compile 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | b2fd7220d89fd69344c0d6077b798d9e -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/0.0.2/LibConfig-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | 5d4b68d751b00ab50ae1988653306e923f137541 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibConfig 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112613 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 842ca3d06bc75377724493d5af8caa1a -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibConfig/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 77594cde5adfe17cb9344645ff5f7618fcf71985 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | dcde765d936132502379d0183240bf17 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | 75132318f62bd838e2fa1776cdeb3c29f35e388d -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 31f6904ab61472210ab678fd61cb38b5 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 02eb6aa3fedefc341e1733204b84b8631609258e -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibCrash 7 | 0.0.2 8 | aar 9 | 10 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | de1929eb848719a9de3c0badad0c986b -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/0.0.2/LibCrash-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | 2728cc58c6a596c2fe5adbf4dcecbfd9cf14c314 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibCrash 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112623 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | fcdbe60c44e9d308dffa583009a66acb -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibCrash/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 930876723e38c241d1d98fee2f23d279f8a5da9f -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | 760938ff90c9d343e7736a71fff7d919 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | 8859881dbd90c488e9087165b53b82815330d79a -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 6d1731ad8cf4146eb50a54b5019d5ae2 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 20589d348aaa53a9919b3a89e0fa48cf6e44d307 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibLogger 7 | 0.0.2 8 | aar 9 | 10 | 11 | com.bihe0832.readhub 12 | LibUtils 13 | + 14 | compile 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 230c830f89ae70b174a2e7c4eec4f166 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/0.0.2/LibLogger-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | bd267b7fa19e12c1f863502825e0fcd6972689bc -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibLogger 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112610 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 780ae922bc50a235a08a2748b2cb767d -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibLogger/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 1a443540115d2a93f9ecd7adc0fe2a44401bb141 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | f357300793cf4fe2337790918fa3c86e -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | dbf5039cf460820c2e0f0388270950a7599e7157 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 323905a7897c1f6ee6b71fa6de8d9784 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 674e735f19b256d4f53804f59af1bad54b1bf510 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibNetwork 7 | 0.0.2 8 | aar 9 | 10 | 11 | com.bihe0832.readhub 12 | LibCache 13 | + 14 | compile 15 | 16 | 17 | org.jetbrains.kotlin 18 | kotlin-stdlib-jre7 19 | 1.2.10 20 | compile 21 | 22 | 23 | com.squareup.okhttp3 24 | okhttp 25 | 3.9.1 26 | compile 27 | 28 | 29 | com.squareup.okhttp3 30 | logging-interceptor 31 | 3.8.0 32 | compile 33 | 34 | 35 | com.google.code.gson 36 | gson 37 | 2.8.2 38 | compile 39 | 40 | 41 | com.squareup.retrofit2 42 | retrofit 43 | 2.3.0 44 | compile 45 | 46 | 47 | com.squareup.retrofit2 48 | converter-gson 49 | 2.3.0 50 | compile 51 | 52 | 53 | com.github.enzowyf 54 | okhttp4k 55 | 0.1.0 56 | compile 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 277a116e40f57d38521e319ec2609bff -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/0.0.2/LibNetwork-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | af4aeed391ef9c6c89eb3ada7b65b5c8456ff721 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibNetwork 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112635 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 73f17b0680a5d6c02e6412c58fe09403 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibNetwork/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | c1dcc552eafc5790352933cb0f28fa145ecea34e -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | ec41ad2c51840db3a69aa191871470f5 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | f3eea3a8976d0081803ee860396149fbfee64f00 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 541d5c68995644bd57173f48f0fa21f4 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 8da9879efc7f486d5122c47b69b1a614f8691f41 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibThread 7 | 0.0.2 8 | aar 9 | 10 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 46518d2be57fec25480a8d01b9f371f8 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/0.0.2/LibThread-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | 1d90318e68f68e98e24d2e5606a948e0c25597c2 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibThread 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112535 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 28ef3372ec7acffdd94299a0080d5550 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibThread/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 5076ce0146a962fc2ee4f5ee7a84566501227352 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | 845cc53098e7e8506df6de66a963aba9 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | 13bf5a6547d9c10c4981449043229587f6df0692 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 6918f97a7adef586fb7323734354617a -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 5d65868a272f6e6835b7df03a95435ec9331be0a -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibUIUtils 7 | 0.0.2 8 | aar 9 | 10 | 11 | com.android.support 12 | appcompat-v7 13 | 26.0.0-alpha1 14 | compile 15 | 16 | 17 | com.android.support 18 | recyclerview-v7 19 | 26.0.0-alpha1 20 | compile 21 | 22 | 23 | com.bihe0832.readhub 24 | LibThread 25 | + 26 | compile 27 | 28 | 29 | org.jetbrains.kotlin 30 | kotlin-stdlib-jre7 31 | 1.2.10 32 | compile 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 164d4c001c87e8c5fad35431e6ae315f -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/0.0.2/LibUIUtils-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | 1c694ebe3f3c98120c93380ffd6a30be26869b1a -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibUIUtils 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112558 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 4f44b140a5610c6b77b058e9799e1139 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUIUtils/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 83fb65de8f78ae6980c0c470e0874d3d74f629d3 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | 7761c50d1d9e8f525cd0acae3eb565c1 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | f36f676df2e6c0041085db22da049b42677e8b76 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | 710baf311e096981029212188a3015b7 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 2a862d749b154fea60db15f4858c9f8a40e3a49e -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibUtils 7 | 0.0.2 8 | aar 9 | 10 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 257c680fe9c936c492170f4b26e1ff56 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/0.0.2/LibUtils-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | be9468ee20acd4903459a5effcc89a81064bceab -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibUtils 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112606 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 16e081e2ffaa5f00b6af4bdc4360fcac -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibUtils/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | f529d0c3e32dba539358b7cf541ed2956f70cb4e -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2-sources.jar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2-sources.jar.md5: -------------------------------------------------------------------------------- 1 | a6b1986e03115b7582e4ed71773daaa0 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2-sources.jar.sha1: -------------------------------------------------------------------------------- 1 | a2b6388b692645a337d72020179cde32590509a7 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bihe0832/readhub-android/b410f8b740a148117efe367cf6f857e61ba955e6/libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2.aar -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2.aar.md5: -------------------------------------------------------------------------------- 1 | a4c6843d67b76fa84e086dfec3b1d6f0 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2.aar.sha1: -------------------------------------------------------------------------------- 1 | 73943a408824dd598b7f19dfd75e00967aaa9ccb -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2.pom: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | com.bihe0832.readhub 6 | LibWebview 7 | 0.0.2 8 | aar 9 | 10 | 11 | com.bihe0832.readhub 12 | LibThread 13 | + 14 | compile 15 | 16 | 17 | com.bihe0832.readhub 18 | LibUIUtils 19 | + 20 | compile 21 | 22 | 23 | com.bihe0832.readhub 24 | LibLogger 25 | + 26 | compile 27 | 28 | 29 | com.bihe0832.readhub 30 | LibUtils 31 | + 32 | compile 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2.pom.md5: -------------------------------------------------------------------------------- 1 | 786ba3fb64c25510be699209ba5fac10 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/0.0.2/LibWebview-0.0.2.pom.sha1: -------------------------------------------------------------------------------- 1 | eb60ec08f9b04b423fc5f5e027c9e2d48c58eabe -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/maven-metadata.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.bihe0832.readhub 4 | LibWebview 5 | 6 | 0.0.2 7 | 8 | 0.0.2 9 | 10 | 20180307112645 11 | 12 | 13 | -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/maven-metadata.xml.md5: -------------------------------------------------------------------------------- 1 | 30a11f983badfb314ae4d493aebe1f65 -------------------------------------------------------------------------------- /libs/com/bihe0832/readhub/LibWebview/maven-metadata.xml.sha1: -------------------------------------------------------------------------------- 1 | 7f62d2f08e9f01c4279d3e43944e0ac5e428f407 -------------------------------------------------------------------------------- /proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -optimizationpasses 5 2 | -dontusemixedcaseclassnames 3 | -dontskipnonpubliclibraryclasses 4 | -dontpreverify 5 | -dontoptimize 6 | -ignorewarning 7 | -verbose 8 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 9 | 10 | -keep public class * extends android.app.Activity 11 | -keep public class * extends android.app.Application 12 | -keep public class * extends android.app.Service 13 | -keep public class * extends android.content.BroadcastReceiver 14 | -keep public class * extends android.content.ContentProvider 15 | -keep public class * extends android.app.backup.BackupAgentHelper 16 | -keep public class * extends android.preference.Preference 17 | -keep public class com.android.vending.licensing.ILicensingService 18 | 19 | -keepclasseswithmembernames class * { 20 | native ; 21 | } 22 | 23 | -keepclasseswithmembernames class * { 24 | public (android.content.Context, android.util.AttributeSet); 25 | } 26 | 27 | -keepclasseswithmembernames class * { 28 | public (android.content.Context, android.util.AttributeSet, int); 29 | } 30 | 31 | 32 | -keepclassmembers enum * { 33 | public static **[] values(); 34 | public static ** valueOf(java.lang.String); 35 | } 36 | 37 | -keep class * implements android.os.Parcelable { 38 | public static final android.os.Parcelable$Creator *; 39 | } 40 | 41 | -dontwarn java.nio.file.Files 42 | -dontwarn java.nio.file.Path 43 | -dontwarn java.nio.file.OpenOption 44 | -dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':Framework_core' 2 | include ':Main' 3 | include ':BasePermission' 4 | --------------------------------------------------------------------------------