├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── 119.gif ├── 120.gif ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── chs │ │ └── leisure │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── chs │ │ │ └── leisure │ │ │ ├── App.java │ │ │ ├── Constant.java │ │ │ ├── MainActivity.java │ │ │ ├── base │ │ │ ├── BaseActivity.java │ │ │ ├── BaseAdapter.java │ │ │ ├── BaseFragment.java │ │ │ ├── BasePresenter.java │ │ │ ├── BaseView.java │ │ │ ├── OnItemClickListener.java │ │ │ └── ViewHolder.java │ │ │ ├── model │ │ │ ├── Bean │ │ │ │ ├── NewsEntity.java │ │ │ │ └── PictureEntity.java │ │ │ ├── NewsService.java │ │ │ ├── PictureService.java │ │ │ └── impl │ │ │ │ └── BusinessTask.java │ │ │ ├── ui │ │ │ ├── WebDetailActivity.java │ │ │ ├── about │ │ │ │ └── FourFragment.java │ │ │ ├── found │ │ │ │ └── ThirdFragment.java │ │ │ ├── news │ │ │ │ ├── FirstFragment.java │ │ │ │ ├── NewFragment.java │ │ │ │ ├── NewsContract.java │ │ │ │ └── NewsPresenter.java │ │ │ └── picture │ │ │ │ ├── PictureContract.java │ │ │ │ ├── PicturePresenter.java │ │ │ │ └── SecondFragment.java │ │ │ ├── utils │ │ │ ├── ActivityUtils.java │ │ │ ├── DensityUtil.java │ │ │ ├── FileUtils.java │ │ │ ├── GsonUtil.java │ │ │ ├── HttpUtils.java │ │ │ ├── LogUtils.java │ │ │ ├── SystemBarTintManager.java │ │ │ └── scalars │ │ │ │ ├── ScalarRequestBodyConverter.java │ │ │ │ ├── ScalarResponseBodyConverters.java │ │ │ │ └── ScalarsConverterFactory.java │ │ │ └── widget │ │ │ ├── LoadMoreRecyclerView.java │ │ │ └── RecycleViewDivider.java │ └── res │ │ ├── layout │ │ ├── activity_main.xml │ │ ├── activity_web_view.xml │ │ ├── bottom.xml │ │ ├── fragment_first.xml │ │ ├── fragment_news.xml │ │ ├── fragment_second.xml │ │ ├── item_fragment_news.xml │ │ ├── item_pictures.xml │ │ └── listview_footer.xml │ │ ├── menu │ │ └── menu_main.xml │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_overflow.png │ │ ├── pic_loading.png │ │ ├── tab_comprehensive_icon.png │ │ ├── tab_comprehensive_pressed_icon.png │ │ ├── tab_found_icon.png │ │ ├── tab_found_pressed_icon.png │ │ ├── tab_me_icon.png │ │ ├── tab_me_pressed_icon.png │ │ ├── tab_move_icon.png │ │ └── tab_move_pressed_icon.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── chs │ └── leisure │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── ptr-lib ├── .idea │ ├── .name │ ├── compiler.xml │ ├── copyright │ │ └── profiles_settings.xml │ ├── encodings.xml │ ├── gradle.xml │ ├── libraries │ │ ├── clog_1_0_2.xml │ │ ├── cube_sdk_1_0_44_39_SNAPSHOT.xml │ │ └── support_v4_r7.xml │ ├── misc.xml │ ├── modules.xml │ ├── runConfigurations.xml │ └── workspace.xml ├── AndroidManifest.xml ├── build.gradle ├── build │ ├── generated │ │ └── source │ │ │ ├── buildConfig │ │ │ ├── androidTest │ │ │ │ └── debug │ │ │ │ │ └── in │ │ │ │ │ └── srain │ │ │ │ │ └── cube │ │ │ │ │ └── views │ │ │ │ │ └── ptr │ │ │ │ │ └── test │ │ │ │ │ └── BuildConfig.java │ │ │ ├── debug │ │ │ │ └── in │ │ │ │ │ └── srain │ │ │ │ │ └── cube │ │ │ │ │ └── views │ │ │ │ │ └── ptr │ │ │ │ │ └── BuildConfig.java │ │ │ └── release │ │ │ │ └── in │ │ │ │ └── srain │ │ │ │ └── cube │ │ │ │ └── views │ │ │ │ └── ptr │ │ │ │ └── BuildConfig.java │ │ │ └── r │ │ │ ├── androidTest │ │ │ └── debug │ │ │ │ └── in │ │ │ │ └── srain │ │ │ │ └── cube │ │ │ │ └── views │ │ │ │ └── ptr │ │ │ │ ├── R.java │ │ │ │ └── test │ │ │ │ └── R.java │ │ │ ├── debug │ │ │ └── in │ │ │ │ └── srain │ │ │ │ └── cube │ │ │ │ └── views │ │ │ │ └── ptr │ │ │ │ └── R.java │ │ │ └── release │ │ │ └── in │ │ │ └── srain │ │ │ └── cube │ │ │ └── views │ │ │ └── ptr │ │ │ └── R.java │ ├── intermediates │ │ ├── blame │ │ │ └── res │ │ │ │ └── androidTest │ │ │ │ └── debug │ │ │ │ ├── multi │ │ │ │ ├── values-zh.json │ │ │ │ └── values.json │ │ │ │ └── single │ │ │ │ ├── drawable-xhdpi-v4.json │ │ │ │ └── layout.json │ │ ├── bundles │ │ │ ├── debug │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── R.txt │ │ │ │ ├── aapt │ │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── classes.jar │ │ │ │ └── res │ │ │ │ │ ├── drawable-xhdpi-v4 │ │ │ │ │ └── ptr_rotate_arrow.png │ │ │ │ │ ├── layout │ │ │ │ │ ├── cube_ptr_classic_default_header.xml │ │ │ │ │ └── cube_ptr_simple_loading.xml │ │ │ │ │ ├── values-zh │ │ │ │ │ └── values-zh.xml │ │ │ │ │ └── values │ │ │ │ │ └── values.xml │ │ │ └── release │ │ │ │ ├── AndroidManifest.xml │ │ │ │ ├── R.txt │ │ │ │ ├── aapt │ │ │ │ └── AndroidManifest.xml │ │ │ │ ├── classes.jar │ │ │ │ └── res │ │ │ │ ├── drawable-xhdpi-v4 │ │ │ │ └── ptr_rotate_arrow.png │ │ │ │ ├── layout │ │ │ │ ├── cube_ptr_classic_default_header.xml │ │ │ │ └── cube_ptr_simple_loading.xml │ │ │ │ ├── values-zh │ │ │ │ └── values-zh.xml │ │ │ │ └── values │ │ │ │ └── values.xml │ │ ├── classes │ │ │ ├── debug │ │ │ │ └── in │ │ │ │ │ └── srain │ │ │ │ │ └── cube │ │ │ │ │ └── views │ │ │ │ │ └── ptr │ │ │ │ │ ├── BuildConfig.class │ │ │ │ │ ├── PtrClassicDefaultHeader$1.class │ │ │ │ │ ├── PtrClassicDefaultHeader$LastUpdateTimeUpdater.class │ │ │ │ │ ├── PtrClassicDefaultHeader.class │ │ │ │ │ ├── PtrClassicFrameLayout.class │ │ │ │ │ ├── PtrDefaultHandler.class │ │ │ │ │ ├── PtrFrameLayout$1.class │ │ │ │ │ ├── PtrFrameLayout$2.class │ │ │ │ │ ├── PtrFrameLayout$LayoutParams.class │ │ │ │ │ ├── PtrFrameLayout$ScrollChecker.class │ │ │ │ │ ├── PtrFrameLayout.class │ │ │ │ │ ├── PtrHandler.class │ │ │ │ │ ├── PtrUIHandler.class │ │ │ │ │ ├── PtrUIHandlerHolder.class │ │ │ │ │ ├── PtrUIHandlerHook.class │ │ │ │ │ ├── R$attr.class │ │ │ │ │ ├── R$drawable.class │ │ │ │ │ ├── R$id.class │ │ │ │ │ ├── R$layout.class │ │ │ │ │ ├── R$string.class │ │ │ │ │ ├── R$styleable.class │ │ │ │ │ ├── R.class │ │ │ │ │ ├── header │ │ │ │ │ ├── MaterialHeader$1.class │ │ │ │ │ ├── MaterialHeader$2.class │ │ │ │ │ ├── MaterialHeader$3.class │ │ │ │ │ ├── MaterialHeader.class │ │ │ │ │ ├── MaterialProgressDrawable$1.class │ │ │ │ │ ├── MaterialProgressDrawable$2.class │ │ │ │ │ ├── MaterialProgressDrawable$3.class │ │ │ │ │ ├── MaterialProgressDrawable$4.class │ │ │ │ │ ├── MaterialProgressDrawable$5.class │ │ │ │ │ ├── MaterialProgressDrawable$EndCurveInterpolator.class │ │ │ │ │ ├── MaterialProgressDrawable$OvalShadow.class │ │ │ │ │ ├── MaterialProgressDrawable$Ring.class │ │ │ │ │ ├── MaterialProgressDrawable$StartCurveInterpolator.class │ │ │ │ │ ├── MaterialProgressDrawable.class │ │ │ │ │ ├── StoreHouseBarItem.class │ │ │ │ │ ├── StoreHouseHeader$1.class │ │ │ │ │ ├── StoreHouseHeader$AniController.class │ │ │ │ │ ├── StoreHouseHeader.class │ │ │ │ │ └── StoreHousePath.class │ │ │ │ │ ├── indicator │ │ │ │ │ ├── PtrIndicator.class │ │ │ │ │ └── PtrTensionIndicator.class │ │ │ │ │ └── util │ │ │ │ │ ├── PtrCLog.class │ │ │ │ │ └── PtrLocalDisplay.class │ │ │ └── release │ │ │ │ └── in │ │ │ │ └── srain │ │ │ │ └── cube │ │ │ │ └── views │ │ │ │ └── ptr │ │ │ │ ├── BuildConfig.class │ │ │ │ ├── PtrClassicDefaultHeader$1.class │ │ │ │ ├── PtrClassicDefaultHeader$LastUpdateTimeUpdater.class │ │ │ │ ├── PtrClassicDefaultHeader.class │ │ │ │ ├── PtrClassicFrameLayout.class │ │ │ │ ├── PtrDefaultHandler.class │ │ │ │ ├── PtrFrameLayout$1.class │ │ │ │ ├── PtrFrameLayout$2.class │ │ │ │ ├── PtrFrameLayout$LayoutParams.class │ │ │ │ ├── PtrFrameLayout$ScrollChecker.class │ │ │ │ ├── PtrFrameLayout.class │ │ │ │ ├── PtrHandler.class │ │ │ │ ├── PtrUIHandler.class │ │ │ │ ├── PtrUIHandlerHolder.class │ │ │ │ ├── PtrUIHandlerHook.class │ │ │ │ ├── R$attr.class │ │ │ │ ├── R$drawable.class │ │ │ │ ├── R$id.class │ │ │ │ ├── R$layout.class │ │ │ │ ├── R$string.class │ │ │ │ ├── R$styleable.class │ │ │ │ ├── R.class │ │ │ │ ├── header │ │ │ │ ├── MaterialHeader$1.class │ │ │ │ ├── MaterialHeader$2.class │ │ │ │ ├── MaterialHeader$3.class │ │ │ │ ├── MaterialHeader.class │ │ │ │ ├── MaterialProgressDrawable$1.class │ │ │ │ ├── MaterialProgressDrawable$2.class │ │ │ │ ├── MaterialProgressDrawable$3.class │ │ │ │ ├── MaterialProgressDrawable$4.class │ │ │ │ ├── MaterialProgressDrawable$5.class │ │ │ │ ├── MaterialProgressDrawable$EndCurveInterpolator.class │ │ │ │ ├── MaterialProgressDrawable$OvalShadow.class │ │ │ │ ├── MaterialProgressDrawable$Ring.class │ │ │ │ ├── MaterialProgressDrawable$StartCurveInterpolator.class │ │ │ │ ├── MaterialProgressDrawable.class │ │ │ │ ├── StoreHouseBarItem.class │ │ │ │ ├── StoreHouseHeader$1.class │ │ │ │ ├── StoreHouseHeader$AniController.class │ │ │ │ ├── StoreHouseHeader.class │ │ │ │ └── StoreHousePath.class │ │ │ │ ├── indicator │ │ │ │ ├── PtrIndicator.class │ │ │ │ └── PtrTensionIndicator.class │ │ │ │ └── util │ │ │ │ ├── PtrCLog.class │ │ │ │ └── PtrLocalDisplay.class │ │ ├── incremental-safeguard │ │ │ ├── debug │ │ │ │ └── tag.txt │ │ │ └── release │ │ │ │ └── tag.txt │ │ ├── incremental │ │ │ ├── compileDebugAidl │ │ │ │ └── dependency.store │ │ │ ├── compileDebugAndroidTestAidl │ │ │ │ └── dependency.store │ │ │ ├── compileReleaseAidl │ │ │ │ └── dependency.store │ │ │ ├── mergeDebugAndroidTestAssets │ │ │ │ └── merger.xml │ │ │ ├── mergeDebugAndroidTestResources │ │ │ │ └── merger.xml │ │ │ ├── mergeDebugAndroidTestShaders │ │ │ │ └── merger.xml │ │ │ ├── mergeDebugAssets │ │ │ │ └── merger.xml │ │ │ ├── mergeDebugJniLibFolders │ │ │ │ └── merger.xml │ │ │ ├── mergeDebugShaders │ │ │ │ └── merger.xml │ │ │ ├── mergeReleaseAssets │ │ │ │ └── merger.xml │ │ │ ├── mergeReleaseJniLibFolders │ │ │ │ └── merger.xml │ │ │ ├── mergeReleaseShaders │ │ │ │ └── merger.xml │ │ │ ├── packageDebugResources │ │ │ │ └── merger.xml │ │ │ └── packageReleaseResources │ │ │ │ └── merger.xml │ │ ├── manifest │ │ │ └── androidTest │ │ │ │ └── debug │ │ │ │ └── AndroidManifest.xml │ │ ├── res │ │ │ ├── merged │ │ │ │ └── androidTest │ │ │ │ │ └── debug │ │ │ │ │ ├── drawable-xhdpi-v4 │ │ │ │ │ └── ptr_rotate_arrow.png │ │ │ │ │ ├── layout │ │ │ │ │ ├── cube_ptr_classic_default_header.xml │ │ │ │ │ └── cube_ptr_simple_loading.xml │ │ │ │ │ ├── values-zh │ │ │ │ │ └── values-zh.xml │ │ │ │ │ └── values │ │ │ │ │ └── values.xml │ │ │ └── resources-debug-androidTest.ap_ │ │ └── symbols │ │ │ └── androidTest │ │ │ └── debug │ │ │ └── R.txt │ └── outputs │ │ └── aar │ │ ├── ptr-lib-debug.aar │ │ └── ptr-lib-release.aar ├── checkstyle.xml ├── gradle-mvn-push.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs │ ├── clog-1.0.2-sources.jar │ └── clog-1.0.2.jar ├── local.properties ├── pom.xml ├── res │ ├── drawable-xhdpi │ │ └── ptr_rotate_arrow.png │ ├── layout │ │ ├── cube_ptr_classic_default_header.xml │ │ └── cube_ptr_simple_loading.xml │ ├── values-zh │ │ └── cube_ptr_string.xml │ └── values │ │ ├── cube_ptr_attrs.xml │ │ └── cube_ptr_string.xml └── src │ └── in │ └── srain │ └── cube │ └── views │ └── ptr │ ├── PtrClassicDefaultHeader.java │ ├── PtrClassicFrameLayout.java │ ├── PtrDefaultHandler.java │ ├── PtrFrameLayout.java │ ├── PtrHandler.java │ ├── PtrUIHandler.java │ ├── PtrUIHandlerHolder.java │ ├── PtrUIHandlerHook.java │ ├── header │ ├── MaterialHeader.java │ ├── MaterialProgressDrawable.java │ ├── StoreHouseBarItem.java │ ├── StoreHouseHeader.java │ └── StoreHousePath.java │ ├── indicator │ ├── PtrIndicator.java │ └── PtrTensionIndicator.java │ └── util │ ├── PtrCLog.java │ └── PtrLocalDisplay.java └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | Leisure -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 24 | 25 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /119.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/119.gif -------------------------------------------------------------------------------- /120.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/120.gif -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Leisure 2 | 闲暇就是没事的时候看的 ^^
3 | 闲暇客户端RxJava+Retrofit+Butterknife+MVP 4 | 5 | 一个练习的项目持续更新中 6 | 用到的知识点:
7 | [RxJava](https://github.com/ReactiveX/RxJava)
8 | [Retrofit](https://github.com/square/retrofit)
9 | [ButterKnife](https://github.com/JakeWharton/butterknife)
10 | [MVP参考了google官方案例](https://github.com/googlesamples/android-architecture)
11 | 使用[Ultra-Pull-To-Refresh](https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh) 12 | 封装了下RecycleView使其具有下拉刷新和滑倒底部加载功能
13 | [Glide](https://github.com/bumptech/glide)进行图片缓存

14 | 15 | 效果图:
16 | ![img](https://github.com/chsmy/Leisure/blob/master/119.gif) 17 | ![img](https://github.com/chsmy/Leisure/blob/master/120.gif) -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion "23.0.2" 6 | 7 | defaultConfig { 8 | applicationId "com.chs.leisure" 9 | minSdkVersion 15 10 | targetSdkVersion 23 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | testCompile 'junit:junit:4.12' 25 | compile 'com.android.support:appcompat-v7:23.3.0' 26 | compile 'io.reactivex:rxjava:1.1.1' 27 | compile 'io.reactivex:rxandroid:1.1.0' 28 | compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4' 29 | compile 'com.google.code.gson:gson:2.6.2' 30 | compile 'com.squareup.okhttp3:okhttp:3.2.0' 31 | compile 'com.squareup.okio:okio:1.6.0' 32 | compile 'com.squareup.retrofit2:converter-gson:2.0.0' 33 | compile 'com.squareup.retrofit2:adapter-rxjava:2.0.0' 34 | compile 'com.android.support:design:23.3.0' 35 | compile 'com.android.support:recyclerview-v7:23.3.0' 36 | compile 'com.jakewharton:butterknife:7.0.1' 37 | compile 'com.android.support:cardview-v7:23.3.0' 38 | compile 'com.github.bumptech.glide:glide:3.7.0' 39 | compile project(':ptr-lib') 40 | } 41 | -------------------------------------------------------------------------------- /app/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 D:\AndroidTools\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 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/chs/leisure/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/App.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure; 2 | 3 | import android.app.Application; 4 | 5 | 6 | /** 7 | * 作者:chs on 2016/4/25 16:15 8 | * 邮箱:657083984@qq.com 9 | */ 10 | public class App extends Application { 11 | 12 | @Override 13 | public void onCreate() { 14 | super.onCreate(); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/Constant.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure; 2 | 3 | /** 4 | * 作者:chs on 2016/4/26 10:43 5 | * 邮箱:657083984@qq.com 6 | */ 7 | public class Constant { 8 | public static String BasePictureUrl = "http://www.tngou.net/tnfs/api/"; 9 | public static String BaseNewsUrl = "http://apis.baidu.com/txapi/"; 10 | public static String PIC_HEAD = "http://tnfs.tngou.net/image";//图片链接的前面部分 11 | public static String PIC_WEB = "http://www.tngou.net/tnfs/show/";//图片链接的WEB网址 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/base/BaseActivity.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.base; 2 | 3 | import android.annotation.TargetApi; 4 | import android.app.Activity; 5 | import android.os.Build; 6 | import android.os.Bundle; 7 | import android.support.v7.app.AppCompatActivity; 8 | import android.view.Window; 9 | import android.view.WindowManager; 10 | 11 | import com.chs.leisure.R; 12 | import com.chs.leisure.utils.SystemBarTintManager; 13 | 14 | import butterknife.ButterKnife; 15 | 16 | /** 17 | * 作者:chs on 2016/4/25 16:32 18 | * 邮箱:657083984@qq.com 19 | */ 20 | public class BaseActivity extends AppCompatActivity { 21 | @Override 22 | protected void onCreate(Bundle savedInstanceState) { 23 | super.onCreate(savedInstanceState); 24 | initStatusBar(); 25 | } 26 | 27 | @Override 28 | protected void onDestroy() { 29 | super.onDestroy(); 30 | ButterKnife.unbind(this); 31 | } 32 | 33 | private void initStatusBar() { 34 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 35 | setTranslucentStatus(true); 36 | } 37 | 38 | SystemBarTintManager tintManager = new SystemBarTintManager(this); 39 | tintManager.setStatusBarTintEnabled(true); 40 | tintManager.setNavigationBarTintEnabled(true); 41 | tintManager.setStatusBarTintColor(getResources().getColor(R.color.colorPrimaryDark)); 42 | } 43 | 44 | @TargetApi(19) 45 | private void setTranslucentStatus(boolean on) { 46 | Window win = getWindow(); 47 | WindowManager.LayoutParams winParams = win.getAttributes(); 48 | final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; 49 | if (on) { 50 | winParams.flags |= bits; 51 | } else { 52 | winParams.flags &= ~bits; 53 | } 54 | win.setAttributes(winParams); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/base/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.base; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | import android.support.v4.app.Fragment; 6 | 7 | import butterknife.ButterKnife; 8 | 9 | /** 10 | * 作者:chs on 2016/4/25 16:32 11 | * 邮箱:657083984@qq.com 12 | */ 13 | public abstract class BaseFragment extends Fragment { 14 | @Override 15 | public void onCreate(@Nullable Bundle savedInstanceState) { 16 | super.onCreate(savedInstanceState); 17 | } 18 | /** Fragment当前状态是否可见 */ 19 | protected boolean isVisible; 20 | 21 | 22 | @Override 23 | public void setUserVisibleHint(boolean isVisibleToUser) { 24 | super.setUserVisibleHint(isVisibleToUser); 25 | 26 | if(getUserVisibleHint()) { 27 | isVisible = true; 28 | onVisible(); 29 | } else { 30 | isVisible = false; 31 | onInvisible(); 32 | } 33 | } 34 | /** 35 | * 可见 36 | */ 37 | protected void onVisible() { 38 | lazyLoad(); 39 | } 40 | 41 | /** 42 | * 不可见 43 | */ 44 | protected void onInvisible() { 45 | 46 | 47 | } 48 | 49 | /** 50 | * 延迟加载 51 | * 子类必须重写此方法 52 | */ 53 | protected abstract void lazyLoad(); 54 | @Override 55 | public void onDestroy() { 56 | super.onDestroy(); 57 | ButterKnife.unbind(this); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/base/BasePresenter.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.base; 2 | 3 | /** 4 | * 作者:chs on 2016/4/26 09:49 5 | * 邮箱:657083984@qq.com 6 | */ 7 | public interface BasePresenter { 8 | void start(int page); 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/base/BaseView.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.base; 2 | 3 | /** 4 | * 作者:chs on 2016/4/26 09:48 5 | * 邮箱:657083984@qq.com 6 | */ 7 | public interface BaseView { 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/base/OnItemClickListener.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.base; 2 | 3 | import android.view.View; 4 | import android.view.ViewGroup; 5 | 6 | public interface OnItemClickListener 7 | { 8 | void onItemClick(ViewGroup parent, View view, T t, int position); 9 | boolean onItemLongClick(ViewGroup parent, View view, T t, int position); 10 | } -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/model/Bean/NewsEntity.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.model.Bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 作者:chs on 2016/4/28 10:33 7 | * 邮箱:657083984@qq.com 8 | */ 9 | public class NewsEntity { 10 | /** 11 | * code : 200 12 | * msg : success 13 | * newslist : [{"ctime":"2016-04-28 10:40","title":"意大利中国女留学生欲轻生 美国警长跨国相救(图)","description":"网易社会","picUrl":"http://s.cimg.163.com/catchpic/6/62/627EEFFC52F2A42C06A30B1EE6DC8B69.jpg.119x83.jpg","url":"http://news.163.com/16/0428/10/BLO065H800014JB6.html#f=slist"},{"ctime":"2016-04-28 10:40","title":"小学生被校车轧倒身亡 警方:肇事司机已刑拘","description":"网易社会","picUrl":"http://s.cimg.163.com/catchpic/B/B6/B65B600F3A30D2D681F5051C4E6328A7.jpg.119x83.jpg","url":"http://news.163.com/16/0428/10/BLO067V000011229.html#f=slist"},{"ctime":"2016-04-28 10:42","title":"芜湖麦当劳砍人案追踪:军事迷砍伤军事迷","description":"网易社会","picUrl":"http://s.cimg.163.com/cnews/2016/4/28/201604281038236a66a_550.jpg.119x83.jpg","url":"http://news.163.com/16/0428/10/BLO0BA0000011229.html#f=slist"},{"ctime":"2016-04-28 10:43","title":"大学生公益调查:近六成人称若参加公益后没人知道就不","description":"网易社会","picUrl":"http://s.cimg.163.com/catchpic/8/8E/8ED23EF109BAFE26CDD714D7299B9325.jpg.119x83.jpg","url":"http://news.163.com/16/0428/10/BLO0C0HM00014AED.html#f=slist"},{"ctime":"2016-04-28 09:08","title":"延安路高架早高峰飘浓烟 原是一旁工地焚烧垃圾(组图)","description":"网易社会","picUrl":"http://s.cimg.163.com/catchpic/2/2C/2C6DAF27881ECF6B021EA5F5EE040482.jpg.119x83.jpg","url":"http://news.163.com/16/0428/09/BLNQUM8J00014AEE.html#f=slist"},{"ctime":"2016-04-28 09:11","title":"湖师大、湖大女厕接连发现有人泼粪水 警方调查","description":"网易社会","picUrl":"http://s.cimg.163.com/catchpic/9/97/9725B4D399668D2C73BF46A7AC8382A9.jpg.119x83.jpg","url":"http://news.163.com/16/0428/09/BLNR3EQ100014AEE.html#f=slist"},{"ctime":"2016-04-28 09:16","title":"女公务员实名举报村主任:骗我生孩子罚款加骚扰","description":"网易社会","picUrl":"http://s.cimg.163.com/cnews/2016/4/28/2016042809131562383_550.jpg.119x83.jpg","url":"http://news.163.com/16/0428/09/BLNRC5ST00011229.html#f=slist"},{"ctime":"2016-04-28 09:33","title":"杭州协警礼为奇被授予一等治安荣誉奖章(图)","description":"网易社会","picUrl":"http://s.cimg.163.com/catchpic/2/29/297E75D7C2D7BE744F2292D66250AD95.png.119x83.jpg","url":"http://news.163.com/16/0428/09/BLNSBH340001124J.html#f=slist"},{"ctime":"2016-04-28 09:33","title":"3岁女童称脚底遭老师牙签扎 幼儿园:蚊子咬的","description":"网易社会","picUrl":"http://s.cimg.163.com/cnews/2016/4/28/201604280931173ce1a_550.jpg.119x83.jpg","url":"http://news.163.com/16/0428/09/BLNSCOF800011229.html#f=slist"},{"ctime":"2016-04-28 09:44","title":"广东警方缴获碰瓷团队专用高级轿车28台(图)","description":"网易社会","picUrl":"http://s.cimg.163.com/catchpic/4/49/49FB978602BE4D0080BF7811136D88E6.jpg.119x83.jpg","url":"http://news.163.com/16/0428/09/BLNSVG910001124J.html#f=slist"}] 14 | */ 15 | 16 | private int code; 17 | private String msg; 18 | /** 19 | * ctime : 2016-04-28 10:40 20 | * title : 意大利中国女留学生欲轻生 美国警长跨国相救(图) 21 | * description : 网易社会 22 | * picUrl : http://s.cimg.163.com/catchpic/6/62/627EEFFC52F2A42C06A30B1EE6DC8B69.jpg.119x83.jpg 23 | * url : http://news.163.com/16/0428/10/BLO065H800014JB6.html#f=slist 24 | */ 25 | 26 | private List newslist; 27 | 28 | public int getCode() { 29 | return code; 30 | } 31 | 32 | public void setCode(int code) { 33 | this.code = code; 34 | } 35 | 36 | public String getMsg() { 37 | return msg; 38 | } 39 | 40 | public void setMsg(String msg) { 41 | this.msg = msg; 42 | } 43 | 44 | public List getNewslist() { 45 | return newslist; 46 | } 47 | 48 | public void setNewslist(List newslist) { 49 | this.newslist = newslist; 50 | } 51 | 52 | public static class NewslistEntity { 53 | private String ctime; 54 | private String title; 55 | private String description; 56 | private String picUrl; 57 | private String url; 58 | 59 | public String getCtime() { 60 | return ctime; 61 | } 62 | 63 | public void setCtime(String ctime) { 64 | this.ctime = ctime; 65 | } 66 | 67 | public String getTitle() { 68 | return title; 69 | } 70 | 71 | public void setTitle(String title) { 72 | this.title = title; 73 | } 74 | 75 | public String getDescription() { 76 | return description; 77 | } 78 | 79 | public void setDescription(String description) { 80 | this.description = description; 81 | } 82 | 83 | public String getPicUrl() { 84 | return picUrl; 85 | } 86 | 87 | public void setPicUrl(String picUrl) { 88 | this.picUrl = picUrl; 89 | } 90 | 91 | public String getUrl() { 92 | return url; 93 | } 94 | 95 | public void setUrl(String url) { 96 | this.url = url; 97 | } 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/model/NewsService.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.model; 2 | 3 | import retrofit2.http.GET; 4 | import retrofit2.http.Query; 5 | import rx.Observable; 6 | 7 | /** 8 | * 作者:chs on 2016/4/28 10:35 9 | * 邮箱:657083984@qq.com 10 | */ 11 | public interface NewsService { 12 | @GET("social/social") 13 | Observable getSocial(@Query("page") int page, @Query("num") int rows); 14 | @GET("tiyu/tiyu") 15 | Observable getSport(@Query("page") int page, @Query("num") int rows); 16 | @GET("keji/keji") 17 | Observable getTechnology(@Query("page") int page, @Query("num") int rows); 18 | @GET("world/world") 19 | Observable getWorld(@Query("page") int page, @Query("num") int rows); 20 | @GET("huabian/newtop") 21 | Observable getRecreation(@Query("page") int page, @Query("num") int rows); 22 | @GET("qiwen/qiwen") 23 | Observable getRemarkable(@Query("page") int page, @Query("num") int rows); 24 | @GET("health/health") 25 | Observable getHealth(@Query("page") int page, @Query("num") int rows); 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/model/PictureService.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.model; 2 | 3 | import com.chs.leisure.model.Bean.PictureEntity; 4 | 5 | import retrofit2.http.GET; 6 | import retrofit2.http.Query; 7 | import rx.Observable; 8 | 9 | /** 10 | * 作者:chs on 2016/4/26 10:21 11 | * 邮箱:657083984@qq.com 12 | */ 13 | public interface PictureService { 14 | @GET("list") 15 | Observable getPictures(@Query("page") int page,@Query("rows") int rows); 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/model/impl/BusinessTask.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.model.impl; 2 | 3 | import com.chs.leisure.model.Bean.PictureEntity; 4 | import com.chs.leisure.model.NewsService; 5 | import com.chs.leisure.model.PictureService; 6 | import com.chs.leisure.utils.HttpUtils; 7 | 8 | import rx.Observable; 9 | import rx.Scheduler; 10 | import rx.Subscriber; 11 | import rx.android.schedulers.AndroidSchedulers; 12 | import rx.schedulers.Schedulers; 13 | 14 | /** 15 | * 作者:chs on 2016/4/26 10:39 16 | * 邮箱:657083984@qq.com 17 | */ 18 | public class BusinessTask { 19 | 20 | public void getPictureList(Subscriber subscriber, int currentPage) { 21 | HttpUtils.getInstance().initRetrofit().create(PictureService.class).getPictures(currentPage, 10) 22 | .subscribeOn(Schedulers.io()) 23 | .unsubscribeOn(Schedulers.io()) 24 | .observeOn(AndroidSchedulers.mainThread()) 25 | .subscribe(subscriber); 26 | } 27 | 28 | public void geNewsList(Subscriber subscriber, int currentPage, int type) { 29 | NewsService newsService = HttpUtils.getInstance().initRetrofitWithHeader().create(NewsService.class); 30 | Observable observable = null; 31 | switch (type) { 32 | case 0: 33 | observable = newsService.getSocial(currentPage, 10); 34 | break; 35 | case 1: 36 | observable = newsService.getSport(currentPage, 10); 37 | break; 38 | case 2: 39 | observable = newsService.getTechnology(currentPage, 10); 40 | break; 41 | case 3: 42 | observable = newsService.getWorld(currentPage, 10); 43 | break; 44 | case 4: 45 | observable = newsService.getRecreation(currentPage, 10); 46 | break; 47 | case 5: 48 | observable = newsService.getRemarkable(currentPage, 10); 49 | break; 50 | case 6: 51 | observable = newsService.getHealth(currentPage, 10); 52 | break; 53 | } 54 | if (observable != null) { 55 | observable 56 | .subscribeOn(Schedulers.io()) 57 | .unsubscribeOn(Schedulers.io()) 58 | .observeOn(AndroidSchedulers.mainThread()) 59 | .subscribe(subscriber); 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/ui/WebDetailActivity.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.ui; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | import android.view.View; 6 | import android.webkit.WebChromeClient; 7 | import android.webkit.WebSettings; 8 | import android.webkit.WebView; 9 | import android.webkit.WebViewClient; 10 | import android.widget.FrameLayout; 11 | import android.widget.ProgressBar; 12 | 13 | import com.chs.leisure.Constant; 14 | import com.chs.leisure.R; 15 | import com.chs.leisure.base.BaseActivity; 16 | 17 | import butterknife.Bind; 18 | import butterknife.ButterKnife; 19 | 20 | /** 21 | * 作者:chs on 2016/4/26 17:47 22 | * 邮箱:657083984@qq.com 23 | */ 24 | public class WebDetailActivity extends Activity { 25 | @Bind(R.id.web_view) 26 | WebView webView; 27 | @Bind(R.id.pb_bar) 28 | ProgressBar progressBar; 29 | @Bind(R.id.rl_content) 30 | FrameLayout rl_content; 31 | @Override 32 | protected void onCreate(Bundle savedInstanceState) { 33 | super.onCreate(savedInstanceState); 34 | setContentView(R.layout.activity_web_view); 35 | ButterKnife.bind(this); 36 | initView(); 37 | } 38 | 39 | private void initView() { 40 | String url = getIntent().getStringExtra("url"); 41 | WebSettings settings = webView.getSettings(); 42 | settings.setJavaScriptEnabled(true); 43 | settings.setLoadWithOverviewMode(true); 44 | settings.setAppCacheEnabled(true); 45 | settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); 46 | settings.setSupportZoom(true); 47 | webView.loadUrl(url); 48 | // webView.setWebChromeClient(new ChromeClient()); 49 | webView.setWebViewClient(new PicClient()); 50 | } 51 | 52 | 53 | @Override 54 | protected void onDestroy() { 55 | super.onDestroy(); 56 | if (webView != null) { 57 | rl_content.removeView(webView); 58 | webView.removeAllViews(); 59 | webView.destroy(); 60 | webView = null; 61 | } 62 | } 63 | // private class ChromeClient extends WebChromeClient { 64 | // @Override 65 | // public void onProgressChanged(WebView view, int newProgress) { 66 | // super.onProgressChanged(view, newProgress); 67 | // iView.showProgressBar(newProgress); 68 | // } 69 | // 70 | // @Override 71 | // public void onReceivedTitle(WebView view, String title) { 72 | // super.onReceivedTitle(view, title); 73 | // iView.setWebTitle(title); 74 | // } 75 | // } 76 | 77 | private class PicClient extends WebViewClient { 78 | @Override 79 | public boolean shouldOverrideUrlLoading(WebView view, String url) { 80 | if (url != null) view.loadUrl(url); 81 | return true; 82 | } 83 | 84 | @Override 85 | public void onPageFinished(WebView view, String url) { 86 | super.onPageFinished(view, url); 87 | if(progressBar!=null){ 88 | progressBar.setVisibility(View.GONE); 89 | } 90 | } 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/ui/about/FourFragment.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.ui.about; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | import android.support.v4.app.Fragment; 6 | import android.view.Gravity; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.TextView; 11 | 12 | import com.chs.leisure.base.BaseFragment; 13 | 14 | /** 15 | * 作者:chs on 2016/4/25 17:26 16 | * 邮箱:657083984@qq.com 17 | */ 18 | public class FourFragment extends BaseFragment { 19 | @Nullable 20 | @Override 21 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 22 | TextView textView = new TextView(getActivity()); 23 | textView.setText("FourFragment"); 24 | textView.setTextSize(30); 25 | textView.setGravity(Gravity.CENTER); 26 | return textView; 27 | } 28 | 29 | @Override 30 | protected void lazyLoad() { 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/ui/found/ThirdFragment.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.ui.found; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | import android.support.v4.app.Fragment; 6 | import android.view.Gravity; 7 | import android.view.LayoutInflater; 8 | import android.view.View; 9 | import android.view.ViewGroup; 10 | import android.widget.TextView; 11 | 12 | import com.chs.leisure.base.BaseFragment; 13 | 14 | /** 15 | * 作者:chs on 2016/4/25 17:26 16 | * 邮箱:657083984@qq.com 17 | */ 18 | public class ThirdFragment extends BaseFragment { 19 | @Nullable 20 | @Override 21 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 22 | TextView textView = new TextView(getActivity()); 23 | textView.setText("ThirdFragment"); 24 | textView.setTextSize(30); 25 | textView.setGravity(Gravity.CENTER); 26 | return textView; 27 | } 28 | 29 | @Override 30 | protected void lazyLoad() { 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/ui/news/FirstFragment.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.ui.news; 2 | 3 | import android.os.Bundle; 4 | import android.support.annotation.Nullable; 5 | import android.support.design.widget.TabLayout; 6 | import android.support.v4.app.Fragment; 7 | import android.support.v4.app.FragmentManager; 8 | import android.support.v4.app.FragmentStatePagerAdapter; 9 | import android.support.v4.view.ViewPager; 10 | import android.view.LayoutInflater; 11 | import android.view.View; 12 | import android.view.ViewGroup; 13 | 14 | import com.chs.leisure.R; 15 | import com.chs.leisure.base.BaseFragment; 16 | import com.chs.leisure.model.Bean.NewsEntity; 17 | 18 | import java.util.ArrayList; 19 | import java.util.List; 20 | 21 | import butterknife.Bind; 22 | import butterknife.ButterKnife; 23 | 24 | /** 25 | * 作者:chs on 2016/4/25 17:26 26 | * 邮箱:657083984@qq.com 27 | */ 28 | public class FirstFragment extends BaseFragment implements NewsContract.View { 29 | @Bind(R.id.tab_selector) 30 | TabLayout mTabSelector; 31 | @Bind(R.id.vp_news) 32 | ViewPager mViewPager; 33 | private List mFragmentList; 34 | private String[] mTitles = new String[]{"社会","体育","科技","世界","娱乐","奇闻","健康"}; 35 | private NewsPagerAdapter mAdapter; 36 | @Nullable 37 | @Override 38 | public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 39 | View view = inflater.inflate(R.layout.fragment_first, null); 40 | ButterKnife.bind(this,view); 41 | initData(); 42 | initView(); 43 | return view; 44 | } 45 | 46 | private void initData() { 47 | mFragmentList = new ArrayList<>(); 48 | mFragmentList.clear(); 49 | for(int i = 0;i { 13 | void showInfo(NewsEntity entity); 14 | } 15 | interface Presenter extends BasePresenter { 16 | void start(int page,int type); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/ui/picture/PictureContract.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.ui.picture; 2 | 3 | import com.chs.leisure.base.BasePresenter; 4 | import com.chs.leisure.base.BaseView; 5 | import com.chs.leisure.model.Bean.PictureEntity; 6 | 7 | /** 8 | * 作者:chs on 2016/4/26 09:57 9 | * 邮箱:657083984@qq.com 10 | */ 11 | public interface PictureContract { 12 | interface View extends BaseView{ 13 | void showInfo(PictureEntity entity); 14 | } 15 | interface Presenter extends BasePresenter{ 16 | 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/ui/picture/PicturePresenter.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.ui.picture; 2 | 3 | import android.text.TextUtils; 4 | 5 | import com.chs.leisure.model.Bean.PictureEntity; 6 | import com.chs.leisure.model.impl.BusinessTask; 7 | import com.chs.leisure.utils.GsonUtil; 8 | import com.chs.leisure.utils.LogUtils; 9 | 10 | import rx.Subscriber; 11 | 12 | /** 13 | * 作者:chs on 2016/4/26 10:12 14 | * 邮箱:657083984@qq.com 15 | */ 16 | public class PicturePresenter implements PictureContract.Presenter { 17 | private BusinessTask mPictureTask; 18 | private PictureContract.View mPictureView; 19 | 20 | public PicturePresenter( PictureContract.View pictureView) { 21 | this.mPictureView = pictureView; 22 | mPictureTask = new BusinessTask(); 23 | } 24 | 25 | @Override 26 | public void start(int page) { 27 | getPicList(page); 28 | } 29 | 30 | public void getPicList(int page){ 31 | mPictureTask.getPictureList(new Subscriber() { 32 | @Override 33 | public void onCompleted() { 34 | LogUtils.e("PicturePresenter","onCompleted"); 35 | } 36 | 37 | @Override 38 | public void onError(Throwable e) { 39 | LogUtils.e("PicturePresenter","onError"); 40 | } 41 | 42 | @Override 43 | public void onNext(String result) { 44 | if(!TextUtils.isEmpty(result)){ 45 | mPictureView.showInfo(GsonUtil.changeGsonToBean(result,PictureEntity.class)); 46 | } 47 | } 48 | },page); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/utils/ActivityUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2016, 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.chs.leisure.utils; 18 | 19 | import android.support.annotation.NonNull; 20 | import android.support.v4.app.Fragment; 21 | import android.support.v4.app.FragmentManager; 22 | import android.support.v4.app.FragmentTransaction; 23 | 24 | /** 25 | * This provides methods to help Activities load their UI. 26 | */ 27 | public class ActivityUtils { 28 | 29 | /** 30 | * The {@code fragment} is added to the container view with id {@code frameId}. The operation is 31 | * performed by the {@code fragmentManager}. 32 | * 33 | */ 34 | public static void addFragmentToActivity (@NonNull FragmentManager fragmentManager, 35 | @NonNull Fragment fragment, int frameId) { 36 | checkNotNull(fragmentManager); 37 | checkNotNull(fragment); 38 | FragmentTransaction transaction = fragmentManager.beginTransaction(); 39 | transaction.add(frameId, fragment); 40 | transaction.commit(); 41 | } 42 | public static T checkNotNull(T reference) { 43 | if (reference == null) { 44 | throw new NullPointerException(); 45 | } 46 | return reference; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/utils/DensityUtil.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.utils; 2 | 3 | import android.content.Context; 4 | 5 | public class DensityUtil { 6 | /** 7 | * 8 | */ 9 | public static int dip2px(Context context, float dpValue) { 10 | final float scale = context.getResources().getDisplayMetrics().density; 11 | return (int) (dpValue * scale + 0.5f); 12 | } 13 | 14 | /** 15 | * 16 | */ 17 | public static int px2dip(Context context, float pxValue) { 18 | final float scale = context.getResources().getDisplayMetrics().density; 19 | return (int) (pxValue / scale + 0.5f); 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/utils/GsonUtil.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.utils; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Map; 6 | 7 | import com.google.gson.Gson; 8 | import com.google.gson.JsonArray; 9 | import com.google.gson.JsonElement; 10 | import com.google.gson.JsonParser; 11 | import com.google.gson.reflect.TypeToken; 12 | 13 | public class GsonUtil { 14 | public static String createGsonString(Object object) { 15 | Gson gson = new Gson(); 16 | String gsonString = gson.toJson(object); 17 | return gsonString; 18 | } 19 | 20 | public static T changeGsonToBean(String gsonString, Class cls) { 21 | Gson gson = new Gson(); 22 | T t = gson.fromJson(gsonString, cls); 23 | return t; 24 | } 25 | 26 | public static List changeGsonToList(String gsonString, Class cls) { 27 | Gson gson = new Gson(); 28 | List list = gson.fromJson(gsonString, new TypeToken>() {}.getType()); 29 | return list; 30 | } 31 | public static List fromJsonArray(String json, Class clazz) throws Exception { 32 | List lst = new ArrayList(); 33 | 34 | JsonArray array = new JsonParser().parse(json).getAsJsonArray(); 35 | for(final JsonElement elem : array){ 36 | lst.add(new Gson().fromJson(elem, clazz)); 37 | } 38 | 39 | return lst; 40 | } 41 | public static List> changeGsonToListMaps( 42 | String gsonString) { 43 | List> list = null; 44 | Gson gson = new Gson(); 45 | list = gson.fromJson(gsonString, new TypeToken>>() { 46 | }.getType()); 47 | return list; 48 | } 49 | 50 | public static Map changeGsonToMaps(String gsonString) { 51 | Map map = null; 52 | Gson gson = new Gson(); 53 | map = gson.fromJson(gsonString, new TypeToken>() { 54 | }.getType()); 55 | return map; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/utils/HttpUtils.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.utils; 2 | 3 | import com.chs.leisure.Constant; 4 | import com.chs.leisure.utils.scalars.ScalarsConverterFactory; 5 | 6 | import java.io.IOException; 7 | import java.util.concurrent.TimeUnit; 8 | 9 | import okhttp3.Interceptor; 10 | import okhttp3.OkHttpClient; 11 | import okhttp3.Request; 12 | import okhttp3.Response; 13 | import retrofit2.Retrofit; 14 | import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory; 15 | import retrofit2.converter.gson.GsonConverterFactory; 16 | 17 | /** 18 | * 作者:chs on 2016/4/26 10:48 19 | * 邮箱:657083984@qq.com 20 | */ 21 | public class HttpUtils { 22 | 23 | private static final int DEFAULT_TIMEOUT = 5; 24 | 25 | private static HttpUtils mHttpUtils; 26 | //构造方法私有 27 | private HttpUtils() { 28 | 29 | } 30 | 31 | //获取单例 32 | public static HttpUtils getInstance(){ 33 | if(mHttpUtils==null){ 34 | synchronized (HttpUtils.class){ 35 | if(mHttpUtils==null){ 36 | mHttpUtils = new HttpUtils(); 37 | } 38 | } 39 | } 40 | return mHttpUtils; 41 | } 42 | public Retrofit initRetrofit(){ 43 | //手动创建一个OkHttpClient并设置超时时间 44 | OkHttpClient.Builder httpClientBuilder = new OkHttpClient.Builder(); 45 | httpClientBuilder.connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS); 46 | 47 | Retrofit retrofit = new Retrofit.Builder() 48 | .client(httpClientBuilder.build()) 49 | .addConverterFactory(ScalarsConverterFactory.create()) 50 | .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 51 | .baseUrl(Constant.BasePictureUrl) 52 | .build(); 53 | 54 | return retrofit; 55 | } 56 | public Retrofit initRetrofitWithHeader(){ 57 | Retrofit retrofit = new Retrofit.Builder() 58 | .client(genericClient()) 59 | .addConverterFactory(ScalarsConverterFactory.create()) 60 | .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) 61 | .baseUrl(Constant.BaseNewsUrl) 62 | .build(); 63 | return retrofit; 64 | } 65 | 66 | public static OkHttpClient genericClient() { 67 | OkHttpClient httpClient = new OkHttpClient.Builder() 68 | .addInterceptor(new Interceptor() { 69 | @Override 70 | public Response intercept(Chain chain) throws IOException { 71 | Request request = chain.request() 72 | .newBuilder() 73 | .addHeader("apikey", "2ffc3e48c7086e0e1faa003d781c0e69") 74 | .build(); 75 | return chain.proceed(request); 76 | } 77 | 78 | }) 79 | .connectTimeout(DEFAULT_TIMEOUT, TimeUnit.SECONDS) 80 | .build(); 81 | return httpClient; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/utils/scalars/ScalarRequestBodyConverter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2015 Square, Inc. 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 | package com.chs.leisure.utils.scalars; 17 | 18 | import java.io.IOException; 19 | import okhttp3.MediaType; 20 | import okhttp3.RequestBody; 21 | import retrofit2.Converter; 22 | 23 | final class ScalarRequestBodyConverter implements Converter { 24 | static final ScalarRequestBodyConverter INSTANCE = new ScalarRequestBodyConverter<>(); 25 | private static final MediaType MEDIA_TYPE = MediaType.parse("text/plain; charset=UTF-8"); 26 | 27 | private ScalarRequestBodyConverter() { 28 | } 29 | 30 | @Override public RequestBody convert(T value) throws IOException { 31 | return RequestBody.create(MEDIA_TYPE, String.valueOf(value)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/utils/scalars/ScalarResponseBodyConverters.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016 Square, Inc. 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 | package com.chs.leisure.utils.scalars; 17 | 18 | import java.io.IOException; 19 | import okhttp3.ResponseBody; 20 | import retrofit2.Converter; 21 | 22 | public final class ScalarResponseBodyConverters { 23 | private ScalarResponseBodyConverters() { 24 | } 25 | 26 | public static final class StringResponseBodyConverter implements Converter { 27 | static final StringResponseBodyConverter INSTANCE = new StringResponseBodyConverter(); 28 | 29 | @Override public String convert(ResponseBody value) throws IOException { 30 | return value.string(); 31 | } 32 | } 33 | 34 | public static final class BooleanResponseBodyConverter implements Converter { 35 | static final BooleanResponseBodyConverter INSTANCE = new BooleanResponseBodyConverter(); 36 | 37 | @Override public Boolean convert(ResponseBody value) throws IOException { 38 | return Boolean.valueOf(value.string()); 39 | } 40 | } 41 | 42 | public static final class ByteResponseBodyConverter implements Converter { 43 | static final ByteResponseBodyConverter INSTANCE = new ByteResponseBodyConverter(); 44 | 45 | @Override public Byte convert(ResponseBody value) throws IOException { 46 | return Byte.valueOf(value.string()); 47 | } 48 | } 49 | 50 | public static final class CharacterResponseBodyConverter implements Converter { 51 | static final CharacterResponseBodyConverter INSTANCE = new CharacterResponseBodyConverter(); 52 | 53 | @Override public Character convert(ResponseBody value) throws IOException { 54 | String body = value.string(); 55 | if (body.length() != 1) { 56 | throw new IOException( 57 | "Expected body of length 1 for Character conversion but was " + body.length()); 58 | } 59 | return body.charAt(0); 60 | } 61 | } 62 | 63 | public static final class DoubleResponseBodyConverter implements Converter { 64 | static final DoubleResponseBodyConverter INSTANCE = new DoubleResponseBodyConverter(); 65 | 66 | @Override public Double convert(ResponseBody value) throws IOException { 67 | return Double.valueOf(value.string()); 68 | } 69 | } 70 | 71 | public static final class FloatResponseBodyConverter implements Converter { 72 | static final FloatResponseBodyConverter INSTANCE = new FloatResponseBodyConverter(); 73 | 74 | @Override public Float convert(ResponseBody value) throws IOException { 75 | return Float.valueOf(value.string()); 76 | } 77 | } 78 | 79 | public static final class IntegerResponseBodyConverter implements Converter { 80 | static final IntegerResponseBodyConverter INSTANCE = new IntegerResponseBodyConverter(); 81 | 82 | @Override public Integer convert(ResponseBody value) throws IOException { 83 | return Integer.valueOf(value.string()); 84 | } 85 | } 86 | 87 | public static final class LongResponseBodyConverter implements Converter { 88 | static final LongResponseBodyConverter INSTANCE = new LongResponseBodyConverter(); 89 | 90 | @Override public Long convert(ResponseBody value) throws IOException { 91 | return Long.valueOf(value.string()); 92 | } 93 | } 94 | 95 | public static final class ShortResponseBodyConverter implements Converter { 96 | static final ShortResponseBodyConverter INSTANCE = new ShortResponseBodyConverter(); 97 | 98 | @Override public Short convert(ResponseBody value) throws IOException { 99 | return Short.valueOf(value.string()); 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/utils/scalars/ScalarsConverterFactory.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2015 Square, Inc. 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 | package com.chs.leisure.utils.scalars; 17 | 18 | import java.lang.annotation.Annotation; 19 | import java.lang.reflect.Type; 20 | import okhttp3.RequestBody; 21 | import okhttp3.ResponseBody; 22 | import retrofit2.Converter; 23 | import retrofit2.Retrofit; 24 | 25 | /** 26 | * A {@linkplain Converter.Factory converter} for strings and both primitives and their boxed types 27 | * to {@code text/plain} bodies. 28 | */ 29 | public final class ScalarsConverterFactory extends Converter.Factory { 30 | public static ScalarsConverterFactory create() { 31 | return new ScalarsConverterFactory(); 32 | } 33 | 34 | private ScalarsConverterFactory() { 35 | } 36 | 37 | @Override public Converter requestBodyConverter(Type type, 38 | Annotation[] parameterAnnotations, Annotation[] methodAnnotations, Retrofit retrofit) { 39 | if (type == String.class 40 | || type == boolean.class 41 | || type == Boolean.class 42 | || type == byte.class 43 | || type == Byte.class 44 | || type == char.class 45 | || type == Character.class 46 | || type == double.class 47 | || type == Double.class 48 | || type == float.class 49 | || type == Float.class 50 | || type == int.class 51 | || type == Integer.class 52 | || type == long.class 53 | || type == Long.class 54 | || type == short.class 55 | || type == Short.class) { 56 | return ScalarRequestBodyConverter.INSTANCE; 57 | } 58 | return null; 59 | } 60 | 61 | @Override 62 | public Converter responseBodyConverter(Type type, Annotation[] annotations, 63 | Retrofit retrofit) { 64 | if (type == String.class) { 65 | return ScalarResponseBodyConverters.StringResponseBodyConverter.INSTANCE; 66 | } 67 | if (type == Boolean.class || type == boolean.class) { 68 | return ScalarResponseBodyConverters.BooleanResponseBodyConverter.INSTANCE; 69 | } 70 | if (type == Byte.class || type == byte.class) { 71 | return ScalarResponseBodyConverters.ByteResponseBodyConverter.INSTANCE; 72 | } 73 | if (type == Character.class || type == char.class) { 74 | return ScalarResponseBodyConverters.CharacterResponseBodyConverter.INSTANCE; 75 | } 76 | if (type == Double.class || type == double.class) { 77 | return ScalarResponseBodyConverters.DoubleResponseBodyConverter.INSTANCE; 78 | } 79 | if (type == Float.class || type == float.class) { 80 | return ScalarResponseBodyConverters.FloatResponseBodyConverter.INSTANCE; 81 | } 82 | if (type == Integer.class || type == int.class) { 83 | return ScalarResponseBodyConverters.IntegerResponseBodyConverter.INSTANCE; 84 | } 85 | if (type == Long.class || type == long.class) { 86 | return ScalarResponseBodyConverters.LongResponseBodyConverter.INSTANCE; 87 | } 88 | if (type == Short.class || type == short.class) { 89 | return ScalarResponseBodyConverters.ShortResponseBodyConverter.INSTANCE; 90 | } 91 | return null; 92 | } 93 | } 94 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/widget/LoadMoreRecyclerView.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.widget; 2 | 3 | import android.content.Context; 4 | import android.support.annotation.Nullable; 5 | import android.support.design.widget.FloatingActionButton; 6 | import android.support.v7.widget.GridLayoutManager; 7 | import android.support.v7.widget.LinearLayoutManager; 8 | import android.support.v7.widget.RecyclerView; 9 | import android.support.v7.widget.StaggeredGridLayoutManager; 10 | import android.util.AttributeSet; 11 | import android.view.LayoutInflater; 12 | import android.view.View; 13 | import android.view.ViewGroup; 14 | import android.widget.LinearLayout; 15 | 16 | import com.chs.leisure.R; 17 | import com.chs.leisure.base.ViewHolder; 18 | 19 | import java.util.ArrayList; 20 | 21 | /** 22 | * 23 | * 添加加载更多功能 24 | * Created by chs . 25 | */ 26 | public class LoadMoreRecyclerView extends RecyclerView { 27 | 28 | private boolean isScrollingToBottom = true; 29 | private FloatingActionButton floatingActionButton; 30 | private LoadMoreListener mLoadingListener; 31 | private ArrayList mFootViews = new ArrayList<>(); 32 | 33 | public LoadMoreRecyclerView(Context context) { 34 | super(context); 35 | init(context); 36 | } 37 | 38 | public LoadMoreRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) { 39 | super(context, attrs, defStyle); 40 | init(context); 41 | } 42 | 43 | private void init(Context context) { 44 | View view = LayoutInflater.from(context).inflate(R.layout.listview_footer,null); 45 | LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 46 | view.setLayoutParams(lp); 47 | addFootView(view); 48 | mFootViews.get(0).setVisibility(GONE); 49 | } 50 | public void addFootView(final View view) { 51 | mFootViews.clear(); 52 | mFootViews.add(view); 53 | } 54 | public LoadMoreRecyclerView(Context context, @Nullable AttributeSet attrs) { 55 | super(context, attrs); 56 | init(context); 57 | } 58 | 59 | public void applyFloatingActionButton(FloatingActionButton floatingActionButton) { 60 | this.floatingActionButton = floatingActionButton; 61 | } 62 | 63 | public void setLoadMoreListener(LoadMoreListener loadMoreListener){ 64 | this.mLoadingListener = loadMoreListener; 65 | } 66 | 67 | @Override 68 | public void onScrolled(int dx, int dy) { 69 | isScrollingToBottom = dy > 0; 70 | if (floatingActionButton != null) { 71 | if (isScrollingToBottom) { 72 | if (floatingActionButton.isShown()) 73 | floatingActionButton.hide(); 74 | } else { 75 | if (!floatingActionButton.isShown()) 76 | floatingActionButton.show(); 77 | } 78 | } 79 | } 80 | 81 | @Override 82 | public void onScrollStateChanged(int state) { 83 | if (state == RecyclerView.SCROLL_STATE_IDLE && mLoadingListener != null) { 84 | LayoutManager layoutManager = getLayoutManager(); 85 | int lastVisibleItemPosition; 86 | if (layoutManager instanceof GridLayoutManager) { 87 | lastVisibleItemPosition = ((GridLayoutManager) layoutManager).findLastVisibleItemPosition(); 88 | } else if (layoutManager instanceof StaggeredGridLayoutManager) { 89 | int[] into = new int[((StaggeredGridLayoutManager) layoutManager).getSpanCount()]; 90 | ((StaggeredGridLayoutManager) layoutManager).findLastVisibleItemPositions(into); 91 | lastVisibleItemPosition = findMax(into); 92 | } else { 93 | lastVisibleItemPosition = ((LinearLayoutManager) layoutManager).findLastVisibleItemPosition(); 94 | } 95 | if (layoutManager.getChildCount() > 0 96 | && lastVisibleItemPosition >= layoutManager.getItemCount() - 1 && layoutManager.getItemCount() > layoutManager.getChildCount()) { 97 | View footView = mFootViews.get(0); 98 | footView.setVisibility(View.VISIBLE); 99 | mLoadingListener.onLoadMore(); 100 | } 101 | } 102 | } 103 | private int findMax(int[] lastPositions) { 104 | int max = lastPositions[0]; 105 | for (int value : lastPositions) { 106 | if (value > max) { 107 | max = value; 108 | } 109 | } 110 | return max; 111 | } 112 | public interface LoadMoreListener { 113 | void onLoadMore(); 114 | } 115 | } 116 | -------------------------------------------------------------------------------- /app/src/main/java/com/chs/leisure/widget/RecycleViewDivider.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure.widget; 2 | 3 | import android.content.Context; 4 | import android.content.res.TypedArray; 5 | import android.graphics.Canvas; 6 | import android.graphics.Rect; 7 | import android.graphics.drawable.Drawable; 8 | import android.support.v7.widget.RecyclerView; 9 | import android.view.View; 10 | 11 | /** 12 | * 作者:chs on 2016/2/2 15:20 13 | * 邮箱:657083984@qq.com 14 | */ 15 | public class RecycleViewDivider extends RecyclerView.ItemDecoration{ 16 | private Drawable drawable; 17 | public RecycleViewDivider(Context context) { 18 | // drawable = context.getResources().getDrawable(R.mipmap.list_divider); 19 | // drawable = context.getResources().getDrawable(R.drawable.shape); 20 | TypedArray array = context.obtainStyledAttributes(new int[]{android.R.attr.listDivider}); 21 | drawable = array.getDrawable(0); 22 | array.recycle(); 23 | } 24 | @Override 25 | public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) { 26 | super.onDraw(c, parent, state); 27 | drawVertical(c, parent); 28 | } 29 | 30 | private void drawVertical(Canvas canvas, RecyclerView parent) { 31 | int left = parent.getPaddingLeft(); 32 | int right = parent.getWidth()-parent.getPaddingRight(); 33 | View child; 34 | RecyclerView.LayoutParams layoutParams; 35 | int top; 36 | int bottom; 37 | int count = parent.getChildCount(); 38 | for(int i = 0;i 12 | 20 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_web_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/bottom.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 15 | 16 | 26 | 36 | 46 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_first.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | 17 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_news.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 17 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_second.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 17 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_fragment_news.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 19 | 20 | 29 | 30 | 38 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_pictures.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 14 | 18 | 19 | 27 | 28 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/listview_footer.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_overflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/ic_overflow.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/pic_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/pic_loading.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_comprehensive_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_comprehensive_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_comprehensive_pressed_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_comprehensive_pressed_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_found_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_found_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_found_pressed_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_found_pressed_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_me_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_me_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_me_pressed_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_me_pressed_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_move_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_move_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/tab_move_pressed_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxhdpi/tab_move_pressed_icon.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @color/red 5 | @color/blue 6 | @color/yellow 7 | @color/green 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | 8 | #00000000 9 | #FFFFFF 10 | #12AF4D 11 | #f9f9f9 12 | #bababa 13 | #f0f0f0 14 | 15 | 16 | #FFC93437 17 | #FF375BF1 18 | #FFF7D23E 19 | #FF34A350 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 10dp 6 | 7 | 8 | 86.0dip 9 | 60.0dip 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Leisure 3 | 4 | 5 | 新闻 6 | 美图 7 | 知识 8 | 关于 9 | 10 | 关于 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/test/java/com/chs/leisure/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.chs.leisure; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * To work on unit tests, switch the Test Artifact in the Build Variants view. 9 | */ 10 | public class ExampleUnitTest { 11 | @Test 12 | public void addition_isCorrect() throws Exception { 13 | assertEquals(4, 2 + 2); 14 | } 15 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:2.1.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | 21 | task clean(type: Delete) { 22 | delete rootProject.buildDir 23 | } 24 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 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-2.10-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 | -------------------------------------------------------------------------------- /ptr-lib/.idea/.name: -------------------------------------------------------------------------------- 1 | ptr-lib -------------------------------------------------------------------------------- /ptr-lib/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ptr-lib/.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /ptr-lib/.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /ptr-lib/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 24 | 25 | -------------------------------------------------------------------------------- /ptr-lib/.idea/libraries/clog_1_0_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ptr-lib/.idea/libraries/cube_sdk_1_0_44_39_SNAPSHOT.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /ptr-lib/.idea/libraries/support_v4_r7.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ptr-lib/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 19 | 20 | C:\Users\chs\AppData\Roaming\Subversion 21 | 22 | -------------------------------------------------------------------------------- /ptr-lib/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /ptr-lib/.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /ptr-lib/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ptr-lib/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 23 5 | buildToolsVersion '23.0.2' 6 | 7 | defaultConfig { 8 | minSdkVersion 8 9 | targetSdkVersion 23 10 | } 11 | 12 | lintOptions { 13 | abortOnError false 14 | } 15 | 16 | sourceSets { 17 | main { 18 | manifest.srcFile 'AndroidManifest.xml' 19 | java.srcDirs = ['src'] 20 | resources.srcDirs = ['resources'] 21 | res.srcDirs = ['res'] 22 | assets.srcDirs = ['assets'] 23 | // aidl.srcDirs = ['src'] 24 | // renderscript.srcDirs = ['src'] 25 | } 26 | 27 | androidTest.setRoot('tests') 28 | } 29 | } 30 | 31 | dependencies { 32 | } 33 | apply from: './gradle-mvn-push.gradle' 34 | -------------------------------------------------------------------------------- /ptr-lib/build/generated/source/buildConfig/androidTest/debug/in/srain/cube/views/ptr/test/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Automatically generated file. DO NOT MODIFY 3 | */ 4 | package in.srain.cube.views.ptr.test; 5 | 6 | public final class BuildConfig { 7 | public static final boolean DEBUG = Boolean.parseBoolean("true"); 8 | public static final String APPLICATION_ID = "in.srain.cube.views.ptr.test"; 9 | public static final String BUILD_TYPE = "debug"; 10 | public static final String FLAVOR = ""; 11 | public static final int VERSION_CODE = -1; 12 | public static final String VERSION_NAME = ""; 13 | } 14 | -------------------------------------------------------------------------------- /ptr-lib/build/generated/source/buildConfig/debug/in/srain/cube/views/ptr/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Automatically generated file. DO NOT MODIFY 3 | */ 4 | package in.srain.cube.views.ptr; 5 | 6 | public final class BuildConfig { 7 | public static final boolean DEBUG = Boolean.parseBoolean("true"); 8 | public static final String APPLICATION_ID = "in.srain.cube.views.ptr"; 9 | public static final String BUILD_TYPE = "debug"; 10 | public static final String FLAVOR = ""; 11 | public static final int VERSION_CODE = 1; 12 | public static final String VERSION_NAME = "1.0"; 13 | } 14 | -------------------------------------------------------------------------------- /ptr-lib/build/generated/source/buildConfig/release/in/srain/cube/views/ptr/BuildConfig.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Automatically generated file. DO NOT MODIFY 3 | */ 4 | package in.srain.cube.views.ptr; 5 | 6 | public final class BuildConfig { 7 | public static final boolean DEBUG = false; 8 | public static final String APPLICATION_ID = "in.srain.cube.views.ptr"; 9 | public static final String BUILD_TYPE = "release"; 10 | public static final String FLAVOR = ""; 11 | public static final int VERSION_CODE = 1; 12 | public static final String VERSION_NAME = "1.0"; 13 | } 14 | -------------------------------------------------------------------------------- /ptr-lib/build/generated/source/r/androidTest/debug/in/srain/cube/views/ptr/R.java: -------------------------------------------------------------------------------- 1 | /* AUTO-GENERATED FILE. DO NOT MODIFY. 2 | * 3 | * This class was automatically generated by the 4 | * aapt tool from the resource data it found. It 5 | * should not be modified by hand. 6 | */ 7 | package in.srain.cube.views.ptr; 8 | 9 | public final class R { 10 | public static final class attr { 11 | public static final int ptr_content = 0x7f010002; 12 | public static final int ptr_duration_to_close = 0x7f010005; 13 | public static final int ptr_duration_to_close_header = 0x7f010006; 14 | public static final int ptr_header = 0x7f010001; 15 | public static final int ptr_keep_header_when_refresh = 0x7f010008; 16 | public static final int ptr_pull_to_fresh = 0x7f010007; 17 | public static final int ptr_ratio_of_header_height_to_refresh = 0x7f010004; 18 | public static final int ptr_resistance = 0x7f010003; 19 | public static final int ptr_rotate_ani_time = 0x7f010000; 20 | } 21 | public static final class drawable { 22 | public static final int ptr_rotate_arrow = 0x7f020000; 23 | } 24 | public static final class id { 25 | public static final int ptr_classic_header_rotate_view = 0x7f050003; 26 | public static final int ptr_classic_header_rotate_view_header_last_update = 0x7f050002; 27 | public static final int ptr_classic_header_rotate_view_header_text = 0x7f050000; 28 | public static final int ptr_classic_header_rotate_view_header_title = 0x7f050001; 29 | public static final int ptr_classic_header_rotate_view_progressbar = 0x7f050004; 30 | } 31 | public static final class layout { 32 | public static final int cube_ptr_classic_default_header = 0x7f030000; 33 | public static final int cube_ptr_simple_loading = 0x7f030001; 34 | } 35 | public static final class string { 36 | public static final int cube_ptr_hours_ago = 0x7f040000; 37 | public static final int cube_ptr_last_update = 0x7f040001; 38 | public static final int cube_ptr_minutes_ago = 0x7f040002; 39 | public static final int cube_ptr_pull_down = 0x7f040003; 40 | public static final int cube_ptr_pull_down_to_refresh = 0x7f040004; 41 | public static final int cube_ptr_refresh_complete = 0x7f040005; 42 | public static final int cube_ptr_refreshing = 0x7f040006; 43 | public static final int cube_ptr_release_to_refresh = 0x7f040007; 44 | public static final int cube_ptr_seconds_ago = 0x7f040008; 45 | } 46 | public static final class styleable { 47 | public static final int[] PtrClassicHeader = { 0x7f010000 }; 48 | public static final int PtrClassicHeader_ptr_rotate_ani_time = 0; 49 | public static final int[] PtrFrameLayout = { 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008 }; 50 | public static final int PtrFrameLayout_ptr_content = 1; 51 | public static final int PtrFrameLayout_ptr_duration_to_close = 4; 52 | public static final int PtrFrameLayout_ptr_duration_to_close_header = 5; 53 | public static final int PtrFrameLayout_ptr_header = 0; 54 | public static final int PtrFrameLayout_ptr_keep_header_when_refresh = 7; 55 | public static final int PtrFrameLayout_ptr_pull_to_fresh = 6; 56 | public static final int PtrFrameLayout_ptr_ratio_of_header_height_to_refresh = 3; 57 | public static final int PtrFrameLayout_ptr_resistance = 2; 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/blame/res/androidTest/debug/single/drawable-xhdpi-v4.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "merged": "D:\\github\\Leisure\\ptr-lib\\build\\intermediates\\res\\merged\\androidTest\\debug\\drawable-xhdpi-v4\\ptr_rotate_arrow.png", 4 | "source": "D:\\github\\Leisure\\ptr-lib\\build\\intermediates\\bundles\\debug\\res\\drawable-xhdpi-v4\\ptr_rotate_arrow.png" 5 | } 6 | ] -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/blame/res/androidTest/debug/single/layout.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "merged": "D:\\github\\Leisure\\ptr-lib\\build\\intermediates\\res\\merged\\androidTest\\debug\\layout\\cube_ptr_simple_loading.xml", 4 | "source": "D:\\github\\Leisure\\ptr-lib\\build\\intermediates\\bundles\\debug\\res\\layout\\cube_ptr_simple_loading.xml" 5 | }, 6 | { 7 | "merged": "D:\\github\\Leisure\\ptr-lib\\build\\intermediates\\res\\merged\\androidTest\\debug\\layout\\cube_ptr_classic_default_header.xml", 8 | "source": "D:\\github\\Leisure\\ptr-lib\\build\\intermediates\\bundles\\debug\\res\\layout\\cube_ptr_classic_default_header.xml" 9 | } 10 | ] -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/R.txt: -------------------------------------------------------------------------------- 1 | int attr ptr_content 0x7f010002 2 | int attr ptr_duration_to_close 0x7f010005 3 | int attr ptr_duration_to_close_header 0x7f010006 4 | int attr ptr_header 0x7f010001 5 | int attr ptr_keep_header_when_refresh 0x7f010008 6 | int attr ptr_pull_to_fresh 0x7f010007 7 | int attr ptr_ratio_of_header_height_to_refresh 0x7f010004 8 | int attr ptr_resistance 0x7f010003 9 | int attr ptr_rotate_ani_time 0x7f010000 10 | int drawable ptr_rotate_arrow 0x7f020000 11 | int id ptr_classic_header_rotate_view 0x7f050003 12 | int id ptr_classic_header_rotate_view_header_last_update 0x7f050002 13 | int id ptr_classic_header_rotate_view_header_text 0x7f050000 14 | int id ptr_classic_header_rotate_view_header_title 0x7f050001 15 | int id ptr_classic_header_rotate_view_progressbar 0x7f050004 16 | int layout cube_ptr_classic_default_header 0x7f030000 17 | int layout cube_ptr_simple_loading 0x7f030001 18 | int string cube_ptr_hours_ago 0x7f040000 19 | int string cube_ptr_last_update 0x7f040001 20 | int string cube_ptr_minutes_ago 0x7f040002 21 | int string cube_ptr_pull_down 0x7f040003 22 | int string cube_ptr_pull_down_to_refresh 0x7f040004 23 | int string cube_ptr_refresh_complete 0x7f040005 24 | int string cube_ptr_refreshing 0x7f040006 25 | int string cube_ptr_release_to_refresh 0x7f040007 26 | int string cube_ptr_seconds_ago 0x7f040008 27 | int[] styleable PtrClassicHeader { 0x7f010000 } 28 | int styleable PtrClassicHeader_ptr_rotate_ani_time 0 29 | int[] styleable PtrFrameLayout { 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008 } 30 | int styleable PtrFrameLayout_ptr_content 1 31 | int styleable PtrFrameLayout_ptr_duration_to_close 4 32 | int styleable PtrFrameLayout_ptr_duration_to_close_header 5 33 | int styleable PtrFrameLayout_ptr_header 0 34 | int styleable PtrFrameLayout_ptr_keep_header_when_refresh 7 35 | int styleable PtrFrameLayout_ptr_pull_to_fresh 6 36 | int styleable PtrFrameLayout_ptr_ratio_of_header_height_to_refresh 3 37 | int styleable PtrFrameLayout_ptr_resistance 2 38 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/aapt/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/classes.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/bundles/debug/classes.jar -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/ptr_rotate_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/bundles/debug/res/drawable-xhdpi-v4/ptr_rotate_arrow.png -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/res/layout/cube_ptr_classic_default_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 17 | 18 | 24 | 25 | 32 | 33 | 34 | 40 | 41 | 47 | 48 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/res/layout/cube_ptr_simple_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/res/values-zh/values-zh.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |  小时之前 4 | 上次更新:  5 |  分钟之前 6 | 下拉 7 | 下拉刷新 8 | 更新完成. 9 | 加载中... 10 | 释放刷新 11 |  秒之前 12 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/debug/res/values/values.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |  hours ago 6 | last update:  7 |  minutes ago 8 | Pull Down 9 | Pull Down to Refresh 10 | Updated. 11 | Updating... 12 | Release To Refresh 13 |  seconds ago 14 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/R.txt: -------------------------------------------------------------------------------- 1 | int attr ptr_content 0x7f010002 2 | int attr ptr_duration_to_close 0x7f010005 3 | int attr ptr_duration_to_close_header 0x7f010006 4 | int attr ptr_header 0x7f010001 5 | int attr ptr_keep_header_when_refresh 0x7f010008 6 | int attr ptr_pull_to_fresh 0x7f010007 7 | int attr ptr_ratio_of_header_height_to_refresh 0x7f010004 8 | int attr ptr_resistance 0x7f010003 9 | int attr ptr_rotate_ani_time 0x7f010000 10 | int drawable ptr_rotate_arrow 0x7f020000 11 | int id ptr_classic_header_rotate_view 0x7f050003 12 | int id ptr_classic_header_rotate_view_header_last_update 0x7f050002 13 | int id ptr_classic_header_rotate_view_header_text 0x7f050000 14 | int id ptr_classic_header_rotate_view_header_title 0x7f050001 15 | int id ptr_classic_header_rotate_view_progressbar 0x7f050004 16 | int layout cube_ptr_classic_default_header 0x7f030000 17 | int layout cube_ptr_simple_loading 0x7f030001 18 | int string cube_ptr_hours_ago 0x7f040000 19 | int string cube_ptr_last_update 0x7f040001 20 | int string cube_ptr_minutes_ago 0x7f040002 21 | int string cube_ptr_pull_down 0x7f040003 22 | int string cube_ptr_pull_down_to_refresh 0x7f040004 23 | int string cube_ptr_refresh_complete 0x7f040005 24 | int string cube_ptr_refreshing 0x7f040006 25 | int string cube_ptr_release_to_refresh 0x7f040007 26 | int string cube_ptr_seconds_ago 0x7f040008 27 | int[] styleable PtrClassicHeader { 0x7f010000 } 28 | int styleable PtrClassicHeader_ptr_rotate_ani_time 0 29 | int[] styleable PtrFrameLayout { 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008 } 30 | int styleable PtrFrameLayout_ptr_content 1 31 | int styleable PtrFrameLayout_ptr_duration_to_close 4 32 | int styleable PtrFrameLayout_ptr_duration_to_close_header 5 33 | int styleable PtrFrameLayout_ptr_header 0 34 | int styleable PtrFrameLayout_ptr_keep_header_when_refresh 7 35 | int styleable PtrFrameLayout_ptr_pull_to_fresh 6 36 | int styleable PtrFrameLayout_ptr_ratio_of_header_height_to_refresh 3 37 | int styleable PtrFrameLayout_ptr_resistance 2 38 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/aapt/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/classes.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/bundles/release/classes.jar -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/res/drawable-xhdpi-v4/ptr_rotate_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/bundles/release/res/drawable-xhdpi-v4/ptr_rotate_arrow.png -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/res/layout/cube_ptr_classic_default_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 17 | 18 | 24 | 25 | 32 | 33 | 34 | 40 | 41 | 47 | 48 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/res/layout/cube_ptr_simple_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/res/values-zh/values-zh.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |  小时之前 4 | 上次更新:  5 |  分钟之前 6 | 下拉 7 | 下拉刷新 8 | 更新完成. 9 | 加载中... 10 | 释放刷新 11 |  秒之前 12 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/bundles/release/res/values/values.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |  hours ago 6 | last update:  7 |  minutes ago 8 | Pull Down 9 | Pull Down to Refresh 10 | Updated. 11 | Updating... 12 | Release To Refresh 13 |  seconds ago 14 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/BuildConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/BuildConfig.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicDefaultHeader$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicDefaultHeader$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicDefaultHeader$LastUpdateTimeUpdater.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicDefaultHeader$LastUpdateTimeUpdater.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicDefaultHeader.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicDefaultHeader.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicFrameLayout.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrClassicFrameLayout.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrDefaultHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrDefaultHandler.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$2.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$LayoutParams.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$LayoutParams.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$ScrollChecker.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout$ScrollChecker.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrFrameLayout.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrHandler.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrUIHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrUIHandler.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrUIHandlerHolder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrUIHandlerHolder.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrUIHandlerHook.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/PtrUIHandlerHook.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$attr.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$attr.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$drawable.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$drawable.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$id.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$id.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$layout.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$layout.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$string.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$string.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$styleable.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R$styleable.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/R.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader$2.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader$3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader$3.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialHeader.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$2.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$3.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$4.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$4.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$5.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$5.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$EndCurveInterpolator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$EndCurveInterpolator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$OvalShadow.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$OvalShadow.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$Ring.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$Ring.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$StartCurveInterpolator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable$StartCurveInterpolator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/MaterialProgressDrawable.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseBarItem.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseBarItem.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseHeader$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseHeader$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseHeader$AniController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseHeader$AniController.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseHeader.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHouseHeader.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHousePath.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/header/StoreHousePath.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/indicator/PtrIndicator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/indicator/PtrIndicator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/indicator/PtrTensionIndicator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/indicator/PtrTensionIndicator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/util/PtrCLog.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/util/PtrCLog.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/util/PtrLocalDisplay.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/debug/in/srain/cube/views/ptr/util/PtrLocalDisplay.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/BuildConfig.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/BuildConfig.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicDefaultHeader$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicDefaultHeader$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicDefaultHeader$LastUpdateTimeUpdater.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicDefaultHeader$LastUpdateTimeUpdater.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicDefaultHeader.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicDefaultHeader.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicFrameLayout.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrClassicFrameLayout.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrDefaultHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrDefaultHandler.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$2.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$LayoutParams.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$LayoutParams.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$ScrollChecker.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout$ScrollChecker.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrFrameLayout.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrHandler.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrUIHandler.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrUIHandler.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrUIHandlerHolder.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrUIHandlerHolder.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrUIHandlerHook.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/PtrUIHandlerHook.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$attr.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$attr.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$drawable.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$drawable.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$id.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$id.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$layout.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$layout.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$string.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$string.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$styleable.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R$styleable.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/R.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader$2.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader$3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader$3.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialHeader.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$2.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$2.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$3.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$3.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$4.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$4.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$5.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$5.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$EndCurveInterpolator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$EndCurveInterpolator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$OvalShadow.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$OvalShadow.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$Ring.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$Ring.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$StartCurveInterpolator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable$StartCurveInterpolator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/MaterialProgressDrawable.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseBarItem.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseBarItem.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseHeader$1.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseHeader$1.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseHeader$AniController.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseHeader$AniController.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseHeader.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHouseHeader.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHousePath.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/header/StoreHousePath.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/indicator/PtrIndicator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/indicator/PtrIndicator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/indicator/PtrTensionIndicator.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/indicator/PtrTensionIndicator.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/util/PtrCLog.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/util/PtrCLog.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/util/PtrLocalDisplay.class: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/classes/release/in/srain/cube/views/ptr/util/PtrLocalDisplay.class -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental-safeguard/debug/tag.txt: -------------------------------------------------------------------------------- 1 | incremental task execution -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental-safeguard/release/tag.txt: -------------------------------------------------------------------------------- 1 | incremental task execution -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/compileDebugAidl/dependency.store: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/compileDebugAndroidTestAidl/dependency.store: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/compileReleaseAidl/dependency.store: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeDebugAndroidTestAssets/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeDebugAndroidTestResources/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | Updating...Updated. hours agoRelease To RefreshPull Downlast update: Pull Down to Refresh seconds ago minutes ago 分钟之前上次更新: 下拉加载中... 小时之前 秒之前更新完成.释放刷新下拉刷新 -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeDebugAndroidTestShaders/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeDebugAssets/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeDebugShaders/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeReleaseAssets/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/mergeReleaseShaders/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/packageDebugResources/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Updating...Updated.Pull Down to RefreshRelease To Refresh seconds ago hours agoPull Downlast update:  minutes ago 分钟之前上次更新: 下拉加载中... 秒之前 小时之前更新完成.释放刷新下拉刷新 -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/incremental/packageReleaseResources/merger.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Updating...Updated.Pull Down to RefreshRelease To Refresh seconds ago hours agoPull Downlast update:  minutes ago 分钟之前上次更新: 下拉加载中... 秒之前 小时之前更新完成.释放刷新下拉刷新 -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/manifest/androidTest/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/res/merged/androidTest/debug/drawable-xhdpi-v4/ptr_rotate_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/res/merged/androidTest/debug/drawable-xhdpi-v4/ptr_rotate_arrow.png -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/res/merged/androidTest/debug/layout/cube_ptr_classic_default_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 17 | 18 | 24 | 25 | 32 | 33 | 34 | 40 | 41 | 47 | 48 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/res/merged/androidTest/debug/layout/cube_ptr_simple_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/res/merged/androidTest/debug/values-zh/values-zh.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 |  小时之前 4 | 上次更新:  5 |  分钟之前 6 | 下拉 7 | 下拉刷新 8 | 更新完成. 9 | 加载中... 10 | 释放刷新 11 |  秒之前 12 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/res/merged/androidTest/debug/values/values.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |  hours ago 6 | last update:  7 |  minutes ago 8 | Pull Down 9 | Pull Down to Refresh 10 | Updated. 11 | Updating... 12 | Release To Refresh 13 |  seconds ago 14 | -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/res/resources-debug-androidTest.ap_: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/intermediates/res/resources-debug-androidTest.ap_ -------------------------------------------------------------------------------- /ptr-lib/build/intermediates/symbols/androidTest/debug/R.txt: -------------------------------------------------------------------------------- 1 | int attr ptr_content 0x7f010002 2 | int attr ptr_duration_to_close 0x7f010005 3 | int attr ptr_duration_to_close_header 0x7f010006 4 | int attr ptr_header 0x7f010001 5 | int attr ptr_keep_header_when_refresh 0x7f010008 6 | int attr ptr_pull_to_fresh 0x7f010007 7 | int attr ptr_ratio_of_header_height_to_refresh 0x7f010004 8 | int attr ptr_resistance 0x7f010003 9 | int attr ptr_rotate_ani_time 0x7f010000 10 | int drawable ptr_rotate_arrow 0x7f020000 11 | int id ptr_classic_header_rotate_view 0x7f050003 12 | int id ptr_classic_header_rotate_view_header_last_update 0x7f050002 13 | int id ptr_classic_header_rotate_view_header_text 0x7f050000 14 | int id ptr_classic_header_rotate_view_header_title 0x7f050001 15 | int id ptr_classic_header_rotate_view_progressbar 0x7f050004 16 | int layout cube_ptr_classic_default_header 0x7f030000 17 | int layout cube_ptr_simple_loading 0x7f030001 18 | int string cube_ptr_hours_ago 0x7f040000 19 | int string cube_ptr_last_update 0x7f040001 20 | int string cube_ptr_minutes_ago 0x7f040002 21 | int string cube_ptr_pull_down 0x7f040003 22 | int string cube_ptr_pull_down_to_refresh 0x7f040004 23 | int string cube_ptr_refresh_complete 0x7f040005 24 | int string cube_ptr_refreshing 0x7f040006 25 | int string cube_ptr_release_to_refresh 0x7f040007 26 | int string cube_ptr_seconds_ago 0x7f040008 27 | int[] styleable PtrClassicHeader { 0x7f010000 } 28 | int styleable PtrClassicHeader_ptr_rotate_ani_time 0 29 | int[] styleable PtrFrameLayout { 0x7f010001, 0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008 } 30 | int styleable PtrFrameLayout_ptr_content 1 31 | int styleable PtrFrameLayout_ptr_duration_to_close 4 32 | int styleable PtrFrameLayout_ptr_duration_to_close_header 5 33 | int styleable PtrFrameLayout_ptr_header 0 34 | int styleable PtrFrameLayout_ptr_keep_header_when_refresh 7 35 | int styleable PtrFrameLayout_ptr_pull_to_fresh 6 36 | int styleable PtrFrameLayout_ptr_ratio_of_header_height_to_refresh 3 37 | int styleable PtrFrameLayout_ptr_resistance 2 38 | -------------------------------------------------------------------------------- /ptr-lib/build/outputs/aar/ptr-lib-debug.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/outputs/aar/ptr-lib-debug.aar -------------------------------------------------------------------------------- /ptr-lib/build/outputs/aar/ptr-lib-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/build/outputs/aar/ptr-lib-release.aar -------------------------------------------------------------------------------- /ptr-lib/gradle-mvn-push.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'maven' 2 | apply plugin: 'signing' 3 | 4 | def isReleaseBuild() { 5 | return VERSION_NAME.contains("SNAPSHOT") == false 6 | } 7 | 8 | def getReleaseRepositoryUrl() { 9 | return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL 10 | : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" 11 | } 12 | 13 | def getSnapshotRepositoryUrl() { 14 | return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL 15 | : "https://oss.sonatype.org/content/repositories/snapshots/" 16 | } 17 | 18 | def getRepositoryUsername() { 19 | return hasProperty('OSS_USERNAME') ? OSS_USERNAME : '' 20 | } 21 | 22 | def getRepositoryPassword() { 23 | return hasProperty('OSS_PWD') ? OSS_PWD : '' 24 | } 25 | 26 | afterEvaluate { project -> 27 | uploadArchives { 28 | repositories { 29 | mavenDeployer { 30 | beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } 31 | 32 | pom.groupId = POM_GROUP 33 | pom.artifactId = POM_ARTIFACT_ID 34 | pom.version = VERSION_NAME 35 | 36 | repository(url: getReleaseRepositoryUrl()) { 37 | authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) 38 | } 39 | snapshotRepository(url: getSnapshotRepositoryUrl()) { 40 | authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) 41 | } 42 | 43 | pom.project { 44 | name POM_NAME 45 | packaging POM_PACKAGING 46 | description POM_DESCRIPTION 47 | url POM_URL 48 | 49 | scm { 50 | url POM_SCM_URL 51 | connection POM_SCM_CONNECTION 52 | developerConnection POM_SCM_DEV_CONNECTION 53 | } 54 | 55 | licenses { 56 | license { 57 | name POM_LICENCE_NAME 58 | url POM_LICENCE_URL 59 | distribution POM_LICENCE_DIST 60 | } 61 | } 62 | 63 | issueManagement { 64 | system POM_ISSUE_SYSTEM 65 | url POM_ISSUE_URL 66 | } 67 | 68 | developers { 69 | developer { 70 | id POM_DEVELOPER_ID 71 | name POM_DEVELOPER_NAME 72 | } 73 | } 74 | } 75 | } 76 | } 77 | } 78 | 79 | signing { 80 | required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } 81 | sign configurations.archives 82 | } 83 | 84 | task apklib(type: Zip) { 85 | 86 | appendix = extension = 'apklib' 87 | 88 | from 'AndroidManifest.xml' 89 | into('res') { 90 | from 'res' 91 | } 92 | into('src') { 93 | from 'src' 94 | } 95 | } 96 | 97 | task androidJavadocs(type: Javadoc) { 98 | source = android.sourceSets.main.java.srcDirs 99 | classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 100 | } 101 | 102 | task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { 103 | classifier = 'javadoc' 104 | from androidJavadocs.destinationDir 105 | } 106 | 107 | task androidSourcesJar(type: Jar) { 108 | classifier = 'sources' 109 | from android.sourceSets.main.java.srcDirs 110 | } 111 | 112 | artifacts { 113 | archives androidSourcesJar 114 | archives androidJavadocsJar 115 | archives apklib 116 | } 117 | } 118 | -------------------------------------------------------------------------------- /ptr-lib/gradle.properties: -------------------------------------------------------------------------------- 1 | VERSION_NAME=1.0.11 2 | 3 | POM_GROUP=in.srain.cube 4 | POM_ARTIFACT_ID=ultra-ptr 5 | POM_PACKAGING=aar 6 | 7 | POM_NAME=Android Ultra Pull to Refresh 8 | POM_DESCRIPTION=Ultra Pull to Refresh Solution. 9 | 10 | POM_URL=https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh 11 | POM_SCM_URL=https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh 12 | POM_SCM_CONNECTION=scm:https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh.git 13 | POM_SCM_DEV_CONNECTION=scm:https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh.git 14 | 15 | POM_LICENCE_NAME=MIT 16 | POM_LICENCE_URL=http://opensource.org/licenses/MIT 17 | POM_LICENCE_DIST=repo 18 | POM_DEVELOPER_ID=liaohuqiu 19 | POM_DEVELOPER_NAME=liaohuqiu 20 | 21 | POM_ISSUE_SYSTEM=GitHub Issues 22 | POM_ISSUE_URL=https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh/issues 23 | -------------------------------------------------------------------------------- /ptr-lib/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /ptr-lib/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 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-2.10-all.zip 7 | -------------------------------------------------------------------------------- /ptr-lib/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 | -------------------------------------------------------------------------------- /ptr-lib/libs/clog-1.0.2-sources.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/libs/clog-1.0.2-sources.jar -------------------------------------------------------------------------------- /ptr-lib/libs/clog-1.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/libs/clog-1.0.2.jar -------------------------------------------------------------------------------- /ptr-lib/local.properties: -------------------------------------------------------------------------------- 1 | ## This file is automatically generated by Android Studio. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must *NOT* be checked into Version Control Systems, 5 | # as it contains information specific to your local configuration. 6 | # 7 | # Location of the SDK. This is only used by Gradle. 8 | # For customization when using a Version Control System, please read the 9 | # header note. 10 | #Wed Apr 27 10:23:45 CST 2016 11 | sdk.dir=D\:\\AndroidTools\\sdk 12 | -------------------------------------------------------------------------------- /ptr-lib/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | 7 | in.srain 8 | cube-parent-for-oss 9 | 1.0.1 10 | 11 | 12 | in.srain.cube 13 | ultra-ptr 14 | aar 15 | Ultra Pull to Refresh 16 | 1.0.11 17 | 18 | Ultra Pull to Refresh in Android 19 | https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh 20 | 2014 21 | 22 | 23 | https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh 24 | scm:git:git@github.com:liaohuqiu/android-Ultra-Pull-To-Refresh.git 25 | scm:git:git@github.com:liaohuqiu/android-Ultra-Pull-To-Refresh.git 26 | 27 | 28 | 29 | 30 | 31 | Huqiu Liao 32 | liaohuqiu@gmail.com 33 | liaohuqiu 34 | http://www.liaohuqiu.net 35 | +8 36 | 37 | developer 38 | 39 | 40 | 41 | 42 | 43 | 44 | MIT 45 | http://opensource.org/licenses/MIT 46 | repo 47 | 48 | 49 | 50 | 51 | Huqiu Liao 52 | http://www.liaohuqiu.net 53 | 54 | 55 | 56 | GitHub Issues 57 | https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh/issues 58 | 59 | 60 | 61 | 62 | com.google.android 63 | android 64 | 4.1.1.4 65 | provided 66 | 67 | 68 | 69 | 70 | 3.8.2 71 | 19 72 | 73 | 74 | 75 | ${project.artifactId} 76 | src/ 77 | 78 | 79 | org.apache.maven.plugins 80 | maven-compiler-plugin 81 | 82 | 1.6 83 | 1.6 84 | 85 | target/generated-sources/r/* 86 | 87 | 88 | 89 | 90 | 91 | com.jayway.maven.plugins.android.generation2 92 | android-maven-plugin 93 | true 94 | ${android.maven.plugin.version} 95 | 96 | 97 | ${android.compile.api_level} 98 | 99 | 100 | false 101 | 102 | 103 | 104 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /ptr-lib/res/drawable-xhdpi/ptr_rotate_arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chsmy/Leisure/7da9d135b70eaa5e4794a8ee3ef8df6da4285b77/ptr-lib/res/drawable-xhdpi/ptr_rotate_arrow.png -------------------------------------------------------------------------------- /ptr-lib/res/layout/cube_ptr_classic_default_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 9 | 10 | 17 | 18 | 24 | 25 | 32 | 33 | 34 | 40 | 41 | 47 | 48 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /ptr-lib/res/layout/cube_ptr_simple_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | -------------------------------------------------------------------------------- /ptr-lib/res/values-zh/cube_ptr_string.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 下拉 5 | 下拉刷新 6 | 释放刷新 7 | 加载中... 8 | 更新完成. 9 | 10 | 上次更新:  11 |  秒之前 12 |  分钟之前 13 |  小时之前 14 | 15 | -------------------------------------------------------------------------------- /ptr-lib/res/values/cube_ptr_attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /ptr-lib/res/values/cube_ptr_string.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Pull Down 5 | Pull Down to Refresh 6 | Release To Refresh 7 | Updating... 8 | Updated. 9 | 10 | last update:  11 |  seconds ago 12 |  minutes ago 13 |  hours ago 14 | 15 | -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/PtrClassicFrameLayout.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | 6 | import in.srain.cube.views.ptr.header.MaterialHeader; 7 | 8 | public class PtrClassicFrameLayout extends PtrFrameLayout { 9 | 10 | private MaterialHeader mPtrClassicHeader; 11 | 12 | public PtrClassicFrameLayout(Context context) { 13 | super(context); 14 | initViews(); 15 | } 16 | 17 | public PtrClassicFrameLayout(Context context, AttributeSet attrs) { 18 | super(context, attrs); 19 | initViews(); 20 | } 21 | 22 | public PtrClassicFrameLayout(Context context, AttributeSet attrs, int defStyle) { 23 | super(context, attrs, defStyle); 24 | initViews(); 25 | } 26 | 27 | private void initViews() { 28 | mPtrClassicHeader = new MaterialHeader(getContext()); 29 | setHeaderView(mPtrClassicHeader); 30 | addPtrUIHandler(mPtrClassicHeader); 31 | } 32 | 33 | public MaterialHeader getHeader() { 34 | return mPtrClassicHeader; 35 | } 36 | 37 | /** 38 | * Specify the last update time by this key string 39 | * 40 | * @param key 41 | */ 42 | public void setLastUpdateTimeKey(String key) { 43 | if (mPtrClassicHeader != null) { 44 | // mPtrClassicHeader.setLastUpdateTimeKey(key); 45 | } 46 | } 47 | 48 | /** 49 | * Using an object to specify the last update time. 50 | * 51 | * @param object 52 | */ 53 | public void setLastUpdateTimeRelateObject(Object object) { 54 | if (mPtrClassicHeader != null) { 55 | // mPtrClassicHeader.setLastUpdateTimeRelateObject(object); 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/PtrDefaultHandler.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr; 2 | 3 | import android.view.View; 4 | import android.widget.AbsListView; 5 | 6 | public abstract class PtrDefaultHandler implements PtrHandler { 7 | 8 | public static boolean canChildScrollUp(View view) { 9 | if (android.os.Build.VERSION.SDK_INT < 14) { 10 | if (view instanceof AbsListView) { 11 | final AbsListView absListView = (AbsListView) view; 12 | return absListView.getChildCount() > 0 13 | && (absListView.getFirstVisiblePosition() > 0 || absListView.getChildAt(0) 14 | .getTop() < absListView.getPaddingTop()); 15 | } else { 16 | return view.getScrollY() > 0; 17 | } 18 | } else { 19 | return view.canScrollVertically(-1); 20 | } 21 | } 22 | 23 | /** 24 | * Default implement for check can perform pull to refresh 25 | * 26 | * @param frame 27 | * @param content 28 | * @param header 29 | * @return 30 | */ 31 | public static boolean checkContentCanBePulledDown(PtrFrameLayout frame, View content, View header) { 32 | return !canChildScrollUp(content); 33 | } 34 | 35 | @Override 36 | public boolean checkCanDoRefresh(PtrFrameLayout frame, View content, View header) { 37 | return checkContentCanBePulledDown(frame, content, header); 38 | } 39 | } -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/PtrHandler.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr; 2 | 3 | import android.view.View; 4 | 5 | public interface PtrHandler { 6 | 7 | /** 8 | * Check can do refresh or not. For example the content is empty or the first child is in view. 9 | *

10 | * {@link in.srain.cube.views.ptr.PtrDefaultHandler#checkContentCanBePulledDown} 11 | */ 12 | public boolean checkCanDoRefresh(final PtrFrameLayout frame, final View content, final View header); 13 | 14 | /** 15 | * When refresh begin 16 | * 17 | * @param frame 18 | */ 19 | public void onRefreshBegin(final PtrFrameLayout frame); 20 | } -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/PtrUIHandler.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr; 2 | 3 | import in.srain.cube.views.ptr.indicator.PtrIndicator; 4 | 5 | /** 6 | * 7 | */ 8 | public interface PtrUIHandler { 9 | 10 | /** 11 | * When the content view has reached top and refresh has been completed, view will be reset. 12 | * 13 | * @param frame 14 | */ 15 | public void onUIReset(PtrFrameLayout frame); 16 | 17 | /** 18 | * prepare for loading 19 | * 20 | * @param frame 21 | */ 22 | public void onUIRefreshPrepare(PtrFrameLayout frame); 23 | 24 | /** 25 | * perform refreshing UI 26 | */ 27 | public void onUIRefreshBegin(PtrFrameLayout frame); 28 | 29 | /** 30 | * perform UI after refresh 31 | */ 32 | public void onUIRefreshComplete(PtrFrameLayout frame); 33 | 34 | public void onUIPositionChange(PtrFrameLayout frame, boolean isUnderTouch, byte status, PtrIndicator ptrIndicator); 35 | } 36 | -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/PtrUIHandlerHook.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr; 2 | 3 | /** 4 | * Run a hook runnable, the runnable will run only once. 5 | * After the runnable is done, call resume to resume. 6 | * Once run, call takeover will directory call the resume action 7 | */ 8 | public abstract class PtrUIHandlerHook implements Runnable { 9 | 10 | private Runnable mResumeAction; 11 | private static final byte STATUS_PREPARE = 0; 12 | private static final byte STATUS_IN_HOOK = 1; 13 | private static final byte STATUS_RESUMED = 2; 14 | private byte mStatus = STATUS_PREPARE; 15 | 16 | public void takeOver() { 17 | takeOver(null); 18 | } 19 | 20 | public void takeOver(Runnable resumeAction) { 21 | if (resumeAction != null) { 22 | mResumeAction = resumeAction; 23 | } 24 | switch (mStatus) { 25 | case STATUS_PREPARE: 26 | mStatus = STATUS_IN_HOOK; 27 | run(); 28 | break; 29 | case STATUS_IN_HOOK: 30 | break; 31 | case STATUS_RESUMED: 32 | resume(); 33 | break; 34 | } 35 | } 36 | 37 | public void reset() { 38 | mStatus = STATUS_PREPARE; 39 | } 40 | 41 | public void resume() { 42 | if (mResumeAction != null) { 43 | mResumeAction.run(); 44 | } 45 | mStatus = STATUS_RESUMED; 46 | } 47 | 48 | /** 49 | * Hook should always have a resume action, which is hooked by this hook. 50 | * 51 | * @param runnable 52 | */ 53 | public void setResumeAction(Runnable runnable) { 54 | mResumeAction = runnable; 55 | } 56 | } -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/header/StoreHouseBarItem.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr.header; 2 | 3 | import android.graphics.Canvas; 4 | import android.graphics.Paint; 5 | import android.graphics.PointF; 6 | import android.view.animation.Animation; 7 | import android.view.animation.Transformation; 8 | 9 | import java.util.Random; 10 | 11 | /** 12 | * Created by srain on 11/6/14. 13 | */ 14 | public class StoreHouseBarItem extends Animation { 15 | 16 | public PointF midPoint; 17 | public float translationX; 18 | public int index; 19 | 20 | private final Paint mPaint = new Paint(); 21 | private float mFromAlpha = 1.0f; 22 | private float mToAlpha = 0.4f; 23 | private PointF mCStartPoint; 24 | private PointF mCEndPoint; 25 | 26 | public StoreHouseBarItem(int index, PointF start, PointF end, int color, int lineWidth) { 27 | this.index = index; 28 | 29 | midPoint = new PointF((start.x + end.x) / 2, (start.y + end.y) / 2); 30 | 31 | mCStartPoint = new PointF(start.x - midPoint.x, start.y - midPoint.y); 32 | mCEndPoint = new PointF(end.x - midPoint.x, end.y - midPoint.y); 33 | 34 | setColor(color); 35 | setLineWidth(lineWidth); 36 | mPaint.setAntiAlias(true); 37 | mPaint.setStyle(Paint.Style.STROKE); 38 | } 39 | 40 | public void setLineWidth(int width) { 41 | mPaint.setStrokeWidth(width); 42 | } 43 | 44 | public void setColor(int color) { 45 | mPaint.setColor(color); 46 | } 47 | 48 | public void resetPosition(int horizontalRandomness) { 49 | Random random = new Random(); 50 | int randomNumber = -random.nextInt(horizontalRandomness) + horizontalRandomness; 51 | translationX = randomNumber; 52 | } 53 | 54 | @Override 55 | protected void applyTransformation(float interpolatedTime, Transformation t) { 56 | float alpha = mFromAlpha; 57 | alpha = alpha + ((mToAlpha - alpha) * interpolatedTime); 58 | setAlpha(alpha); 59 | } 60 | 61 | public void start(float fromAlpha, float toAlpha) { 62 | mFromAlpha = fromAlpha; 63 | mToAlpha = toAlpha; 64 | super.start(); 65 | } 66 | 67 | public void setAlpha(float alpha) { 68 | mPaint.setAlpha((int) (alpha * 255)); 69 | } 70 | 71 | public void draw(Canvas canvas) { 72 | canvas.drawLine(mCStartPoint.x, mCStartPoint.y, mCEndPoint.x, mCEndPoint.y, mPaint); 73 | } 74 | } -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/indicator/PtrTensionIndicator.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr.indicator; 2 | 3 | public class PtrTensionIndicator extends PtrIndicator { 4 | 5 | private float DRAG_RATE = 0.5f; 6 | private float mDownY; 7 | private float mDownPos; 8 | private float mOneHeight = 0; 9 | 10 | private float mCurrentDragPercent; 11 | 12 | private int mReleasePos; 13 | private float mReleasePercent = -1; 14 | 15 | @Override 16 | public void onPressDown(float x, float y) { 17 | super.onPressDown(x, y); 18 | mDownY = y; 19 | mDownPos = getCurrentPosY(); 20 | } 21 | 22 | @Override 23 | public void onRelease() { 24 | super.onRelease(); 25 | mReleasePos = getCurrentPosY(); 26 | mReleasePercent = mCurrentDragPercent; 27 | } 28 | 29 | @Override 30 | public void onUIRefreshComplete() { 31 | mReleasePos = getCurrentPosY(); 32 | mReleasePercent = getOverDragPercent(); 33 | } 34 | 35 | @Override 36 | public void setHeaderHeight(int height) { 37 | super.setHeaderHeight(height); 38 | mOneHeight = height * 4f / 5; 39 | } 40 | 41 | @Override 42 | protected void processOnMove(float currentX, float currentY, float offsetX, float offsetY) { 43 | 44 | if (currentY < mDownY) { 45 | super.processOnMove(currentX, currentY, offsetX, offsetY); 46 | return; 47 | } 48 | 49 | // distance from top 50 | final float scrollTop = (currentY - mDownY) * DRAG_RATE + mDownPos; 51 | final float currentDragPercent = scrollTop / mOneHeight; 52 | 53 | if (currentDragPercent < 0) { 54 | setOffset(offsetX, 0); 55 | return; 56 | } 57 | 58 | mCurrentDragPercent = currentDragPercent; 59 | 60 | // 0 ~ 1 61 | float boundedDragPercent = Math.min(1f, Math.abs(currentDragPercent)); 62 | float extraOS = scrollTop - mOneHeight; 63 | 64 | // 0 ~ 2 65 | // if extraOS lower than 0, which means scrollTop lower than onHeight, tensionSlingshotPercent will be 0. 66 | float tensionSlingshotPercent = Math.max(0, Math.min(extraOS, mOneHeight * 2) / mOneHeight); 67 | 68 | float tensionPercent = (float) ((tensionSlingshotPercent / 4) - Math.pow((tensionSlingshotPercent / 4), 2)) * 2f; 69 | float extraMove = (mOneHeight) * tensionPercent / 2; 70 | int targetY = (int) ((mOneHeight * boundedDragPercent) + extraMove); 71 | int change = targetY - getCurrentPosY(); 72 | 73 | setOffset(currentX, change); 74 | } 75 | 76 | private float offsetToTarget(float scrollTop) { 77 | 78 | // distance from top 79 | final float currentDragPercent = scrollTop / mOneHeight; 80 | 81 | mCurrentDragPercent = currentDragPercent; 82 | 83 | // 0 ~ 1 84 | float boundedDragPercent = Math.min(1f, Math.abs(currentDragPercent)); 85 | float extraOS = scrollTop - mOneHeight; 86 | 87 | // 0 ~ 2 88 | // if extraOS lower than 0, which means scrollTop lower than mOneHeight, tensionSlingshotPercent will be 0. 89 | float tensionSlingshotPercent = Math.max(0, Math.min(extraOS, mOneHeight * 2) / mOneHeight); 90 | 91 | float tensionPercent = (float) ((tensionSlingshotPercent / 4) - Math.pow((tensionSlingshotPercent / 4), 2)) * 2f; 92 | float extraMove = (mOneHeight) * tensionPercent / 2; 93 | int targetY = (int) ((mOneHeight * boundedDragPercent) + extraMove); 94 | 95 | return 0; 96 | } 97 | 98 | @Override 99 | public int getOffsetToKeepHeaderWhileLoading() { 100 | return getOffsetToRefresh(); 101 | } 102 | 103 | @Override 104 | public int getOffsetToRefresh() { 105 | return (int) mOneHeight; 106 | } 107 | 108 | public float getOverDragPercent() { 109 | if (isUnderTouch()) { 110 | return mCurrentDragPercent; 111 | } else { 112 | if (mReleasePercent <= 0) { 113 | return 1.0f * getCurrentPosY() / getOffsetToKeepHeaderWhileLoading(); 114 | } 115 | // after release 116 | return mReleasePercent * getCurrentPosY() / mReleasePos; 117 | } 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /ptr-lib/src/in/srain/cube/views/ptr/util/PtrLocalDisplay.java: -------------------------------------------------------------------------------- 1 | package in.srain.cube.views.ptr.util; 2 | 3 | import android.content.Context; 4 | import android.util.DisplayMetrics; 5 | import android.view.View; 6 | import android.view.WindowManager; 7 | 8 | public class PtrLocalDisplay { 9 | 10 | public static int SCREEN_WIDTH_PIXELS; 11 | public static int SCREEN_HEIGHT_PIXELS; 12 | public static float SCREEN_DENSITY; 13 | public static int SCREEN_WIDTH_DP; 14 | public static int SCREEN_HEIGHT_DP; 15 | 16 | public static void init(Context context) { 17 | if (context == null) { 18 | return; 19 | } 20 | DisplayMetrics dm = new DisplayMetrics(); 21 | WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 22 | wm.getDefaultDisplay().getMetrics(dm); 23 | SCREEN_WIDTH_PIXELS = dm.widthPixels; 24 | SCREEN_HEIGHT_PIXELS = dm.heightPixels; 25 | SCREEN_DENSITY = dm.density; 26 | SCREEN_WIDTH_DP = (int) (SCREEN_WIDTH_PIXELS / dm.density); 27 | SCREEN_HEIGHT_DP = (int) (SCREEN_HEIGHT_PIXELS / dm.density); 28 | } 29 | 30 | public static int dp2px(float dp) { 31 | final float scale = SCREEN_DENSITY; 32 | return (int) (dp * scale + 0.5f); 33 | } 34 | 35 | public static int designedDP2px(float designedDp) { 36 | if (SCREEN_WIDTH_DP != 320) { 37 | designedDp = designedDp * SCREEN_WIDTH_DP / 320f; 38 | } 39 | return dp2px(designedDp); 40 | } 41 | 42 | public static void setPadding(final View view, float left, float top, float right, float bottom) { 43 | view.setPadding(designedDP2px(left), dp2px(top), designedDP2px(right), dp2px(bottom)); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':ptr-lib' 2 | --------------------------------------------------------------------------------