├── .gitignore
├── .idea
├── .name
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── encodings.xml
├── gradle.xml
├── misc.xml
├── modules.xml
└── runConfigurations.xml
├── README.md
├── answer.gif
├── app
├── .gitignore
├── build.gradle
├── libs
│ └── fastjson-1.2.9.jar
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── com
│ │ └── example
│ │ └── zhangyipeng
│ │ └── anwerdemo
│ │ └── ApplicationTest.java
│ ├── main
│ ├── AndroidManifest.xml
│ ├── assets
│ │ ├── anwer.json
│ │ └── course.json
│ ├── java
│ │ └── com
│ │ │ └── example
│ │ │ └── zhangyipeng
│ │ │ └── anwerdemo
│ │ │ ├── AnswerReadActivity.java
│ │ │ ├── AnwerActivity.java
│ │ │ ├── CourseActivity.java
│ │ │ ├── MainActivity.java
│ │ │ ├── ReadActivity.java
│ │ │ ├── adapter
│ │ │ ├── AnimalsAdapter.java
│ │ │ ├── AnimalsHeadersAdapter.java
│ │ │ ├── CourseAdapter.java
│ │ │ ├── DividerDecoration.java
│ │ │ ├── LayoutAdapter.java
│ │ │ └── TopicAdapter.java
│ │ │ ├── bean
│ │ │ ├── AnwerInfo.java
│ │ │ ├── BaseInfo.java
│ │ │ ├── CourseSheetInfo.java
│ │ │ ├── QuestionEntry.java
│ │ │ └── QuestionList.java
│ │ │ ├── fragment
│ │ │ └── ReadFragment.java
│ │ │ ├── listener
│ │ │ └── RecyclerItemClickListener.java
│ │ │ └── view
│ │ │ ├── FixedSpeedScroller.java
│ │ │ ├── FlipperLayout.java
│ │ │ ├── MoveLinearLayout.java
│ │ │ └── ReaderViewPager.java
│ └── res
│ │ ├── drawable
│ │ ├── bg_shadow.xml
│ │ ├── bg_topic.xml
│ │ ├── bg_topic_no.xml
│ │ ├── bg_topic_ok.xml
│ │ └── shadow_right.png
│ │ ├── layout
│ │ ├── activity_anwer.xml
│ │ ├── activity_anwers_read.xml
│ │ ├── activity_course.xml
│ │ ├── activity_main.xml
│ │ ├── activity_read.xml
│ │ ├── anwer_item.xml
│ │ ├── course_item.xml
│ │ ├── course_text.xml
│ │ ├── fragment_read.xml
│ │ ├── head_item.xml
│ │ ├── item.xml
│ │ └── item_topic.xml
│ │ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── shadow_left.png
│ │ └── shadow_right.png
│ │ ├── mipmap-mdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ └── ic_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ ├── app.png
│ │ └── ic_launcher.png
│ │ ├── values-w820dp
│ │ └── dimens.xml
│ │ └── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── test
│ └── java
│ └── com
│ └── example
│ └── zhangyipeng
│ └── anwerdemo
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── lib
├── .gitignore
├── build.gradle
├── gradle.properties
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── lsjwzh
│ │ └── widget
│ │ └── recyclerviewpager
│ │ ├── FragmentStatePagerAdapter.java
│ │ ├── LoopRecyclerViewPager.java
│ │ ├── LoopRecyclerViewPagerAdapter.java
│ │ ├── RecyclerViewPager.java
│ │ ├── RecyclerViewPagerAdapter.java
│ │ └── ViewUtils.java
│ └── res
│ ├── layout
│ └── rvp_fragment_container.xml
│ └── values
│ └── attrs.xml
├── library
├── build.gradle
├── build
│ ├── generated
│ │ └── source
│ │ │ ├── buildConfig
│ │ │ ├── androidTest
│ │ │ │ └── debug
│ │ │ │ │ └── com
│ │ │ │ │ └── sothree
│ │ │ │ │ └── slidinguppanel
│ │ │ │ │ └── library
│ │ │ │ │ └── test
│ │ │ │ │ └── BuildConfig.java
│ │ │ ├── debug
│ │ │ │ └── com
│ │ │ │ │ └── sothree
│ │ │ │ │ └── slidinguppanel
│ │ │ │ │ └── library
│ │ │ │ │ └── BuildConfig.java
│ │ │ └── release
│ │ │ │ └── com
│ │ │ │ └── sothree
│ │ │ │ └── slidinguppanel
│ │ │ │ └── library
│ │ │ │ └── BuildConfig.java
│ │ │ └── r
│ │ │ ├── androidTest
│ │ │ └── debug
│ │ │ │ ├── android
│ │ │ │ └── support
│ │ │ │ │ └── v7
│ │ │ │ │ └── recyclerview
│ │ │ │ │ └── R.java
│ │ │ │ └── com
│ │ │ │ └── sothree
│ │ │ │ └── slidinguppanel
│ │ │ │ └── library
│ │ │ │ ├── R.java
│ │ │ │ └── test
│ │ │ │ └── R.java
│ │ │ ├── debug
│ │ │ ├── android
│ │ │ │ └── support
│ │ │ │ │ └── v7
│ │ │ │ │ └── recyclerview
│ │ │ │ │ └── R.java
│ │ │ └── com
│ │ │ │ └── sothree
│ │ │ │ └── slidinguppanel
│ │ │ │ └── library
│ │ │ │ └── R.java
│ │ │ └── release
│ │ │ ├── android
│ │ │ └── support
│ │ │ │ └── v7
│ │ │ │ └── recyclerview
│ │ │ │ └── R.java
│ │ │ └── com
│ │ │ └── sothree
│ │ │ └── slidinguppanel
│ │ │ └── library
│ │ │ └── R.java
│ ├── intermediates
│ │ ├── blame
│ │ │ └── res
│ │ │ │ ├── androidTest
│ │ │ │ └── debug
│ │ │ │ │ ├── multi
│ │ │ │ │ └── values.json
│ │ │ │ │ └── single
│ │ │ │ │ └── drawable.json
│ │ │ │ ├── debug
│ │ │ │ ├── multi
│ │ │ │ │ └── values.json
│ │ │ │ └── single
│ │ │ │ │ └── drawable.json
│ │ │ │ └── release
│ │ │ │ ├── multi
│ │ │ │ └── values.json
│ │ │ │ └── single
│ │ │ │ └── drawable.json
│ │ ├── bundles
│ │ │ ├── debug
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── R.txt
│ │ │ │ ├── aapt
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── classes.jar
│ │ │ │ └── res
│ │ │ │ │ ├── drawable
│ │ │ │ │ ├── above_shadow.xml
│ │ │ │ │ └── below_shadow.xml
│ │ │ │ │ └── values
│ │ │ │ │ └── values.xml
│ │ │ └── release
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── R.txt
│ │ │ │ ├── aapt
│ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── classes.jar
│ │ │ │ └── res
│ │ │ │ ├── drawable
│ │ │ │ ├── above_shadow.xml
│ │ │ │ └── below_shadow.xml
│ │ │ │ └── values
│ │ │ │ └── values.xml
│ │ ├── classes
│ │ │ ├── androidTest
│ │ │ │ └── debug
│ │ │ │ │ ├── android
│ │ │ │ │ └── support
│ │ │ │ │ │ └── v7
│ │ │ │ │ │ └── recyclerview
│ │ │ │ │ │ ├── R$attr.class
│ │ │ │ │ │ ├── R$dimen.class
│ │ │ │ │ │ ├── R$id.class
│ │ │ │ │ │ ├── R$styleable.class
│ │ │ │ │ │ └── R.class
│ │ │ │ │ └── com
│ │ │ │ │ └── sothree
│ │ │ │ │ └── slidinguppanel
│ │ │ │ │ └── library
│ │ │ │ │ ├── R$attr.class
│ │ │ │ │ ├── R$dimen.class
│ │ │ │ │ ├── R$drawable.class
│ │ │ │ │ ├── R$id.class
│ │ │ │ │ ├── R$styleable.class
│ │ │ │ │ ├── R.class
│ │ │ │ │ └── test
│ │ │ │ │ ├── BuildConfig.class
│ │ │ │ │ ├── R$attr.class
│ │ │ │ │ ├── R$dimen.class
│ │ │ │ │ ├── R$drawable.class
│ │ │ │ │ ├── R$id.class
│ │ │ │ │ ├── R$styleable.class
│ │ │ │ │ └── R.class
│ │ │ ├── debug
│ │ │ │ ├── android
│ │ │ │ │ └── support
│ │ │ │ │ │ └── v7
│ │ │ │ │ │ └── recyclerview
│ │ │ │ │ │ ├── R$attr.class
│ │ │ │ │ │ ├── R$dimen.class
│ │ │ │ │ │ ├── R$id.class
│ │ │ │ │ │ ├── R$styleable.class
│ │ │ │ │ │ └── R.class
│ │ │ │ └── com
│ │ │ │ │ └── sothree
│ │ │ │ │ └── slidinguppanel
│ │ │ │ │ ├── ScrollableViewHelper.class
│ │ │ │ │ ├── SlidingUpPanelLayout$1.class
│ │ │ │ │ ├── SlidingUpPanelLayout$2.class
│ │ │ │ │ ├── SlidingUpPanelLayout$DragHelperCallback.class
│ │ │ │ │ ├── SlidingUpPanelLayout$LayoutParams.class
│ │ │ │ │ ├── SlidingUpPanelLayout$PanelSlideListener.class
│ │ │ │ │ ├── SlidingUpPanelLayout$PanelState.class
│ │ │ │ │ ├── SlidingUpPanelLayout$SavedState$1.class
│ │ │ │ │ ├── SlidingUpPanelLayout$SavedState.class
│ │ │ │ │ ├── SlidingUpPanelLayout$SimplePanelSlideListener.class
│ │ │ │ │ ├── SlidingUpPanelLayout.class
│ │ │ │ │ ├── ViewDragHelper$1.class
│ │ │ │ │ ├── ViewDragHelper$2.class
│ │ │ │ │ ├── ViewDragHelper$Callback.class
│ │ │ │ │ ├── ViewDragHelper.class
│ │ │ │ │ └── library
│ │ │ │ │ ├── BuildConfig.class
│ │ │ │ │ ├── R$attr.class
│ │ │ │ │ ├── R$dimen.class
│ │ │ │ │ ├── R$drawable.class
│ │ │ │ │ ├── R$id.class
│ │ │ │ │ ├── R$styleable.class
│ │ │ │ │ └── R.class
│ │ │ └── release
│ │ │ │ ├── android
│ │ │ │ └── support
│ │ │ │ │ └── v7
│ │ │ │ │ └── recyclerview
│ │ │ │ │ ├── R$attr.class
│ │ │ │ │ ├── R$dimen.class
│ │ │ │ │ ├── R$id.class
│ │ │ │ │ ├── R$styleable.class
│ │ │ │ │ └── R.class
│ │ │ │ └── com
│ │ │ │ └── sothree
│ │ │ │ └── slidinguppanel
│ │ │ │ ├── ScrollableViewHelper.class
│ │ │ │ ├── SlidingUpPanelLayout$1.class
│ │ │ │ ├── SlidingUpPanelLayout$2.class
│ │ │ │ ├── SlidingUpPanelLayout$DragHelperCallback.class
│ │ │ │ ├── SlidingUpPanelLayout$LayoutParams.class
│ │ │ │ ├── SlidingUpPanelLayout$PanelSlideListener.class
│ │ │ │ ├── SlidingUpPanelLayout$PanelState.class
│ │ │ │ ├── SlidingUpPanelLayout$SavedState$1.class
│ │ │ │ ├── SlidingUpPanelLayout$SavedState.class
│ │ │ │ ├── SlidingUpPanelLayout$SimplePanelSlideListener.class
│ │ │ │ ├── SlidingUpPanelLayout.class
│ │ │ │ ├── ViewDragHelper$1.class
│ │ │ │ ├── ViewDragHelper$2.class
│ │ │ │ ├── ViewDragHelper$Callback.class
│ │ │ │ ├── ViewDragHelper.class
│ │ │ │ └── library
│ │ │ │ ├── BuildConfig.class
│ │ │ │ ├── R$attr.class
│ │ │ │ ├── R$dimen.class
│ │ │ │ ├── R$drawable.class
│ │ │ │ ├── R$id.class
│ │ │ │ ├── R$styleable.class
│ │ │ │ └── R.class
│ │ ├── exploded-aar
│ │ │ └── com.android.support
│ │ │ │ ├── recyclerview-v7
│ │ │ │ └── 23.1.1
│ │ │ │ │ ├── AndroidManifest.xml
│ │ │ │ │ ├── R.txt
│ │ │ │ │ ├── aapt
│ │ │ │ │ └── AndroidManifest.xml
│ │ │ │ │ ├── annotations.zip
│ │ │ │ │ ├── jars
│ │ │ │ │ └── classes.jar
│ │ │ │ │ └── res
│ │ │ │ │ └── values
│ │ │ │ │ └── values.xml
│ │ │ │ └── support-v4
│ │ │ │ └── 23.1.1
│ │ │ │ ├── AndroidManifest.xml
│ │ │ │ ├── aapt
│ │ │ │ └── AndroidManifest.xml
│ │ │ │ ├── aidl
│ │ │ │ └── android
│ │ │ │ │ └── support
│ │ │ │ │ └── v4
│ │ │ │ │ ├── media
│ │ │ │ │ ├── MediaMetadataCompat.aidl
│ │ │ │ │ ├── RatingCompat.aidl
│ │ │ │ │ └── session
│ │ │ │ │ │ ├── MediaSessionCompat.aidl
│ │ │ │ │ │ ├── ParcelableVolumeInfo.aidl
│ │ │ │ │ │ └── PlaybackStateCompat.aidl
│ │ │ │ │ └── os
│ │ │ │ │ └── ResultReceiver.aidl
│ │ │ │ ├── annotations.zip
│ │ │ │ └── jars
│ │ │ │ ├── classes.jar
│ │ │ │ └── libs
│ │ │ │ └── internal_impl-23.1.1.jar
│ │ ├── incremental
│ │ │ ├── compileDebugAidl
│ │ │ │ └── dependency.store
│ │ │ ├── compileDebugAndroidTestAidl
│ │ │ │ └── dependency.store
│ │ │ ├── compileReleaseAidl
│ │ │ │ └── dependency.store
│ │ │ ├── mergeDebugAndroidTestAssets
│ │ │ │ └── merger.xml
│ │ │ ├── mergeDebugAndroidTestResources
│ │ │ │ └── merger.xml
│ │ │ ├── mergeDebugAssets
│ │ │ │ └── merger.xml
│ │ │ ├── mergeDebugJniLibFolders
│ │ │ │ └── merger.xml
│ │ │ ├── mergeDebugResources
│ │ │ │ └── merger.xml
│ │ │ ├── mergeReleaseAssets
│ │ │ │ └── merger.xml
│ │ │ ├── mergeReleaseJniLibFolders
│ │ │ │ └── merger.xml
│ │ │ ├── mergeReleaseResources
│ │ │ │ └── merger.xml
│ │ │ ├── packageDebugResources
│ │ │ │ └── merger.xml
│ │ │ └── packageReleaseResources
│ │ │ │ └── merger.xml
│ │ ├── manifest
│ │ │ └── androidTest
│ │ │ │ └── debug
│ │ │ │ └── AndroidManifest.xml
│ │ ├── res
│ │ │ ├── merged
│ │ │ │ ├── androidTest
│ │ │ │ │ └── debug
│ │ │ │ │ │ ├── drawable
│ │ │ │ │ │ ├── above_shadow.xml
│ │ │ │ │ │ └── below_shadow.xml
│ │ │ │ │ │ └── values
│ │ │ │ │ │ └── values.xml
│ │ │ │ ├── debug
│ │ │ │ │ ├── drawable
│ │ │ │ │ │ ├── above_shadow.xml
│ │ │ │ │ │ └── below_shadow.xml
│ │ │ │ │ └── values
│ │ │ │ │ │ └── values.xml
│ │ │ │ └── release
│ │ │ │ │ ├── drawable
│ │ │ │ │ ├── above_shadow.xml
│ │ │ │ │ └── below_shadow.xml
│ │ │ │ │ └── values
│ │ │ │ │ └── values.xml
│ │ │ └── resources-debug-androidTest.ap_
│ │ └── symbols
│ │ │ └── androidTest
│ │ │ └── debug
│ │ │ └── R.txt
│ └── outputs
│ │ └── aar
│ │ ├── library-debug.aar
│ │ └── library-release.aar
├── gradle.properties
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── java
│ └── com
│ │ └── sothree
│ │ └── slidinguppanel
│ │ ├── ScrollableViewHelper.java
│ │ ├── SlidingUpPanelLayout.java
│ │ └── ViewDragHelper.java
│ └── res
│ ├── drawable
│ ├── above_shadow.xml
│ └── below_shadow.xml
│ └── values
│ └── attrs.xml
├── settings.gradle
└── sticky-head-library
├── .gitignore
├── build.gradle
├── gradle-maven-push.gradle
├── gradle.properties
├── proguard-rules.pro
└── src
├── androidTest
└── java
│ └── com
│ └── timehop
│ └── stickyheadersrecyclerview
│ └── ApplicationTest.java
└── main
├── AndroidManifest.xml
└── java
└── com
└── timehop
└── stickyheadersrecyclerview
├── HeaderPositionCalculator.java
├── ItemVisibilityAdapter.java
├── StickyRecyclerHeadersAdapter.java
├── StickyRecyclerHeadersDecoration.java
├── StickyRecyclerHeadersTouchListener.java
├── caching
├── HeaderProvider.java
└── HeaderViewCache.java
├── calculation
└── DimensionCalculator.java
├── rendering
└── HeaderRenderer.java
└── util
├── LinearLayoutOrientationProvider.java
└── OrientationProvider.java
/.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 | AnswerEffect
--------------------------------------------------------------------------------
/.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 |
28 |
29 |
--------------------------------------------------------------------------------
/.idea/misc.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 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | $USER_HOME$/.subversion
55 |
56 |
57 |
58 |
59 |
60 | 1.8
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # AnswerEffect
2 | 高仿驾考宝典翻页答题效果
3 |
4 | 
5 |
6 | License
7 | -------
8 |
9 | Copyright 2016 drakeet.
10 |
11 | Licensed under the Apache License, Version 2.0 (the "License");
12 | you may not use this file except in compliance with the License.
13 | You may obtain a copy of the License at
14 |
15 | http://www.apache.org/licenses/LICENSE-2.0
16 |
17 | Unless required by applicable law or agreed to in writing, software
18 | distributed under the License is distributed on an "AS IS" BASIS,
19 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 | See the License for the specific language governing permissions and
21 | limitations under the License.
22 |
--------------------------------------------------------------------------------
/answer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/answer.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.3"
6 |
7 | defaultConfig {
8 | applicationId "com.example.zhangyipeng.anwerdemo"
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(dir: 'libs', include: ['*.jar'])
24 | testCompile 'junit:junit:4.12'
25 | compile files('libs/fastjson-1.2.9.jar')
26 | // compile 'com.github.lsjwzh.RecyclerViewPager:lib:v1.1.0'
27 | // compile 'com.sothree.slidinguppanel:library:3.3.0'
28 | // compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:v1.8.5'
29 | // compile 'com.timehop.stickyheadersrecyclerview:library:0.4.3@aar'
30 | compile project(':library')
31 | compile project(':sticky-head-library')
32 | compile project(':lib')
33 | compile 'com.android.support:appcompat-v7:23.4.0'
34 | compile 'com.android.support:recyclerview-v7:23.4.0'
35 | compile 'com.google.android.gms:play-services-appindexing:8.1.0'
36 | compile 'com.android.support:support-v4:23.4.0'
37 | }
38 |
--------------------------------------------------------------------------------
/app/libs/fastjson-1.2.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/libs/fastjson-1.2.9.jar
--------------------------------------------------------------------------------
/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 /Users/zhangyipeng/Library/Android/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/example/zhangyipeng/anwerdemo/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo;
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 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
24 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/MainActivity.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo;
2 |
3 | import android.content.Intent;
4 | import android.os.Bundle;
5 | import android.support.v7.app.AppCompatActivity;
6 | import android.support.v7.widget.RecyclerView;
7 | import android.view.View;
8 |
9 | import com.example.zhangyipeng.anwerdemo.adapter.LayoutAdapter;
10 | import com.example.zhangyipeng.anwerdemo.adapter.TopicAdapter;
11 | import com.lsjwzh.widget.recyclerviewpager.RecyclerViewPager;
12 | import com.sothree.slidinguppanel.SlidingUpPanelLayout;
13 |
14 | public class MainActivity extends AppCompatActivity {
15 |
16 | private RecyclerViewPager mRecyclerView;
17 | private LayoutAdapter layoutAdapter;
18 | private SlidingUpPanelLayout mLayout;
19 | private TopicAdapter topicAdapter;
20 | private RecyclerView recyclerView;
21 |
22 | @Override
23 | protected void onCreate(Bundle savedInstanceState) {
24 | super.onCreate(savedInstanceState);
25 | setContentView(R.layout.activity_main);
26 |
27 |
28 | }
29 |
30 | public void zeroClick(View view) {
31 |
32 | startActivity(new Intent(this,ReadActivity.class));
33 | }
34 |
35 | public void oneClick(View view) {
36 |
37 | startActivity(new Intent(this,AnwerActivity.class));
38 | }
39 |
40 | public void twoClick(View view) {
41 |
42 | startActivity(new Intent(this,AnswerReadActivity.class));
43 | }
44 |
45 |
46 | public void threeClick(View view) {
47 | startActivity(new Intent(this,CourseActivity.class));
48 |
49 | }
50 |
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/adapter/AnimalsAdapter.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.adapter;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 |
5 | import java.util.ArrayList;
6 | import java.util.Arrays;
7 | import java.util.Collection;
8 |
9 |
10 | /**
11 | * Adapter holding a list of animal names of type String. Note that each item must be unique.
12 | */
13 | public abstract class AnimalsAdapter
14 | extends RecyclerView.Adapter {
15 | private ArrayList items = new ArrayList();
16 |
17 | public AnimalsAdapter() {
18 | setHasStableIds(true);
19 | }
20 |
21 | public void add(String object) {
22 | items.add(object);
23 | notifyDataSetChanged();
24 | }
25 |
26 | public void add(int index, String object) {
27 | items.add(index, object);
28 | notifyDataSetChanged();
29 | }
30 |
31 | public void addAll(Collection extends String> collection) {
32 | if (collection != null) {
33 | items.addAll(collection);
34 | notifyDataSetChanged();
35 | }
36 | }
37 |
38 |
39 | public void addAll(String... items) {
40 | addAll(Arrays.asList(items));
41 | }
42 |
43 | public void clear() {
44 | items.clear();
45 | notifyDataSetChanged();
46 | }
47 |
48 | public void remove(String object) {
49 | items.remove(object);
50 | notifyDataSetChanged();
51 | }
52 |
53 | public String getItem(int position) {
54 | return items.get(position);
55 | }
56 |
57 | @Override
58 | public long getItemId(int position) {
59 | return getItem(position).hashCode();
60 | }
61 |
62 | @Override
63 | public int getItemCount() {
64 | return items.size();
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/adapter/DividerDecoration.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.adapter;
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.LinearLayoutManager;
9 | import android.support.v7.widget.RecyclerView;
10 | import android.view.View;
11 |
12 |
13 | public class DividerDecoration extends RecyclerView.ItemDecoration {
14 |
15 | private static final int[] ATTRS = new int[]{
16 | android.R.attr.listDivider
17 | };
18 |
19 | public static final int HORIZONTAL_LIST = LinearLayoutManager.HORIZONTAL;
20 |
21 | public static final int VERTICAL_LIST = LinearLayoutManager.VERTICAL;
22 |
23 | private Drawable mDivider;
24 |
25 | public DividerDecoration(Context context) {
26 | final TypedArray a = context.obtainStyledAttributes(ATTRS);
27 | mDivider = a.getDrawable(0);
28 | a.recycle();
29 | }
30 |
31 | private int getOrientation(RecyclerView parent) {
32 | LinearLayoutManager layoutManager;
33 | try {
34 | layoutManager = (LinearLayoutManager) parent.getLayoutManager();
35 | } catch (ClassCastException e) {
36 | throw new IllegalStateException("DividerDecoration can only be used with a " +
37 | "LinearLayoutManager.", e);
38 | }
39 | return layoutManager.getOrientation();
40 | }
41 |
42 | @Override
43 | public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
44 | super.onDraw(c, parent, state);
45 |
46 | if (getOrientation(parent) == VERTICAL_LIST) {
47 | drawVertical(c, parent);
48 | } else {
49 | drawHorizontal(c, parent);
50 | }
51 | }
52 |
53 | public void drawVertical(Canvas c, RecyclerView parent) {
54 | final int left = parent.getPaddingLeft();
55 | final int right = parent.getWidth() - parent.getPaddingRight();
56 | final int recyclerViewTop = parent.getPaddingTop();
57 | final int recyclerViewBottom = parent.getHeight() - parent.getPaddingBottom();
58 | final int childCount = parent.getChildCount();
59 | for (int i = 0; i < childCount; i++) {
60 | final View child = parent.getChildAt(i);
61 | final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
62 | .getLayoutParams();
63 | final int top = Math.max(recyclerViewTop, child.getBottom() + params.bottomMargin);
64 | final int bottom = Math.min(recyclerViewBottom, top + mDivider.getIntrinsicHeight());
65 | mDivider.setBounds(left, top, right, bottom);
66 | mDivider.draw(c);
67 | }
68 | }
69 |
70 | public void drawHorizontal(Canvas c, RecyclerView parent) {
71 | final int top = parent.getPaddingTop();
72 | final int bottom = parent.getHeight() - parent.getPaddingBottom();
73 | final int recyclerViewLeft = parent.getPaddingLeft();
74 | final int recyclerViewRight = parent.getWidth() - parent.getPaddingRight();
75 | final int childCount = parent.getChildCount();
76 | for (int i = 0; i < childCount; i++) {
77 | final View child = parent.getChildAt(i);
78 | final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
79 | .getLayoutParams();
80 | final int left = Math.max(recyclerViewLeft, child.getRight() + params.rightMargin);
81 | final int right = Math.min(recyclerViewRight, left + mDivider.getIntrinsicHeight());
82 | mDivider.setBounds(left, top, right, bottom);
83 | mDivider.draw(c);
84 | }
85 | }
86 |
87 | @Override
88 | public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
89 | super.getItemOffsets(outRect, view, parent, state);
90 | if (getOrientation(parent) == VERTICAL_LIST) {
91 | outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
92 | } else {
93 | outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
94 | }
95 | }
96 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/adapter/LayoutAdapter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Lucas Rocha
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.example.zhangyipeng.anwerdemo.adapter;
18 |
19 | import android.content.Context;
20 | import android.support.v7.widget.RecyclerView;
21 | import android.view.LayoutInflater;
22 | import android.view.View;
23 | import android.view.ViewGroup;
24 | import android.widget.TextView;
25 | import android.widget.Toast;
26 |
27 | import com.example.zhangyipeng.anwerdemo.R;
28 | import com.example.zhangyipeng.anwerdemo.bean.AnwerInfo;
29 |
30 | import java.util.ArrayList;
31 | import java.util.List;
32 |
33 |
34 |
35 | public class LayoutAdapter extends RecyclerView.Adapter {
36 |
37 | private final Context mContext;
38 | private final RecyclerView mRecyclerView;
39 | private List datas;
40 |
41 | public static class SimpleViewHolder extends RecyclerView.ViewHolder {
42 | public final TextView title;
43 |
44 | public SimpleViewHolder(View view) {
45 | super(view);
46 | title = (TextView) view.findViewById(R.id.title);
47 | }
48 | }
49 |
50 | public LayoutAdapter(Context context, RecyclerView recyclerView) {
51 |
52 | mContext = context;
53 | mRecyclerView = recyclerView;
54 | }
55 |
56 | public void setDataList(List datas){
57 | this.datas = datas;
58 | notifyDataSetChanged();
59 | }
60 |
61 |
62 | @Override
63 | public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
64 | final View view = LayoutInflater.from(mContext).inflate(R.layout.item, parent, false);
65 | return new SimpleViewHolder(view);
66 | }
67 |
68 | @Override
69 | public void onBindViewHolder(SimpleViewHolder holder, int position) {
70 | AnwerInfo.DataBean.SubDataBean subDataBean = datas.get(position);
71 | holder.title.setText(subDataBean.getQuestionid()+". "+subDataBean.getQuestion()
72 | +"\n\nA."+subDataBean.getOptiona()
73 | +"\nB."+subDataBean.getOptionb()
74 | +"\nC."+subDataBean.getOptionc()
75 | +"\nD."+subDataBean.getOptiond()
76 | +"\n\n\n答案解析:"+subDataBean.getExplain()
77 | );
78 |
79 | final View itemView = holder.itemView;
80 |
81 | }
82 |
83 | @Override
84 | public int getItemCount() {
85 | return datas!=null?datas.size():0;
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/adapter/TopicAdapter.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.adapter;
2 |
3 | import android.content.Context;
4 | import android.content.res.Resources;
5 | import android.graphics.Color;
6 | import android.support.v7.widget.RecyclerView;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.Button;
11 | import android.widget.TextView;
12 |
13 | import com.example.zhangyipeng.anwerdemo.R;
14 |
15 | /**
16 | * Created by zhangyipeng on 16/6/30.
17 | */
18 | public class TopicAdapter extends RecyclerView.Adapter {
19 |
20 | private Context mContext;
21 | private final LayoutInflater inflater;
22 | private final Resources resources;
23 |
24 |
25 | public TopicAdapter(Context mContext) {
26 | this.mContext = mContext;
27 | inflater = LayoutInflater.from(mContext);
28 | resources = mContext.getResources();
29 |
30 | }
31 |
32 | @Override
33 | public TopicAdapter.TopicViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
34 |
35 | View view = inflater.inflate(R.layout.item_topic, parent, false);
36 | return new TopicViewHolder(view);
37 | }
38 |
39 | @Override
40 | public void onBindViewHolder(final TopicAdapter.TopicViewHolder holder, final int position) {
41 |
42 | holder.tv_id.setText((position + 1) + "");
43 | holder.tv_id.setTextColor(Color.parseColor("#b3afaf"));
44 | holder.tv_id.setBackgroundResource(R.drawable.bg_topic_no);
45 | if (prePosition == position) {
46 | holder.tv_id.setBackgroundResource(R.drawable.bg_topic_no);
47 | holder.tv_id.setTextColor(Color.parseColor("#b3afaf"));
48 |
49 | }
50 | if (curPosition == position) {
51 | holder.tv_id.setBackgroundResource(R.drawable.bg_topic_ok);
52 | holder.tv_id.setTextColor(Color.parseColor("#ffffff"));
53 | }
54 | holder.itemView.setOnClickListener(new View.OnClickListener() {
55 | @Override
56 | public void onClick(View v) {
57 | listener.onClick(holder, position);
58 | }
59 | });
60 | }
61 |
62 | private OnTopicClickListener listener;
63 |
64 | public void setOnTopicClickListener(OnTopicClickListener listener) {
65 | this.listener = listener;
66 | }
67 |
68 | private int curPosition;
69 |
70 | public void notifyCurPosition(int curPosition) {
71 | this.curPosition = curPosition;
72 | notifyItemChanged(curPosition);
73 | }
74 |
75 | private int prePosition;
76 |
77 | public void notifyPrePosition(int prePosition) {
78 | this.prePosition = prePosition;
79 | notifyItemChanged(prePosition);
80 | }
81 |
82 |
83 | public interface OnTopicClickListener {
84 | void onClick(TopicAdapter.TopicViewHolder holder, int position);
85 | }
86 |
87 | private int num;
88 |
89 | public void setDataNum(int num) {
90 | this.num = num;
91 | notifyDataSetChanged();
92 | }
93 |
94 |
95 | @Override
96 | public int getItemCount() {
97 | return num;
98 | }
99 |
100 |
101 | public static class TopicViewHolder extends RecyclerView.ViewHolder {
102 | public TextView tv_id;
103 |
104 | public TopicViewHolder(View itemView) {
105 | super(itemView);
106 | tv_id = (TextView) itemView.findViewById(R.id.tv_id);
107 | }
108 | }
109 | }
110 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/bean/BaseInfo.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.bean;
2 |
3 | /**
4 | * Created by zhangyipeng on 16/6/30.
5 | */
6 | public class BaseInfo {
7 |
8 | /**
9 | * code : 0
10 | * success : true
11 | * msg :
12 | */
13 |
14 | private int code;
15 | private String success;
16 | private String msg;
17 |
18 | public int getCode() {
19 | return code;
20 | }
21 |
22 | public void setCode(int code) {
23 | this.code = code;
24 | }
25 |
26 | public String getSuccess() {
27 | return success;
28 | }
29 |
30 | public void setSuccess(String success) {
31 | this.success = success;
32 | }
33 |
34 | public String getMsg() {
35 | return msg;
36 | }
37 |
38 | public void setMsg(String msg) {
39 | this.msg = msg;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/bean/QuestionEntry.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.bean;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * Created by zhangyipeng on 16/7/27.
7 | */
8 | public class QuestionEntry {
9 |
10 | /**
11 | * explain : “违反道路交通安全法”,违反法律法规即为违法行为。官方已无违章/违规的说法。
12 | * question : 驾驶机动车在道路上违反道路交通安全法的行为,属于什么行为?
13 | * questionid : 1
14 | * mediatype : 0
15 | * mediacontent :
16 | * optiontype : 1
17 | * answer : 2
18 | * chapterid : 1
19 | * answer_arr : ["2"]
20 | * answers : ["违章行为","违法行为","过失行为","违规行为"]
21 | */
22 |
23 | private String explain;
24 | private String question;
25 | private String questionid;
26 | private String mediatype;
27 | private String mediacontent;
28 | private String optiontype;
29 | private String answer;
30 | private String chapterid;
31 | private List answer_arr;
32 | private List answers;
33 |
34 | public String getExplain() {
35 | return explain;
36 | }
37 |
38 | public void setExplain(String explain) {
39 | this.explain = explain;
40 | }
41 |
42 | public String getQuestion() {
43 | return question;
44 | }
45 |
46 | public void setQuestion(String question) {
47 | this.question = question;
48 | }
49 |
50 | public String getQuestionid() {
51 | return questionid;
52 | }
53 |
54 | public void setQuestionid(String questionid) {
55 | this.questionid = questionid;
56 | }
57 |
58 | public String getMediatype() {
59 | return mediatype;
60 | }
61 |
62 | public void setMediatype(String mediatype) {
63 | this.mediatype = mediatype;
64 | }
65 |
66 | public String getMediacontent() {
67 | return mediacontent;
68 | }
69 |
70 | public void setMediacontent(String mediacontent) {
71 | this.mediacontent = mediacontent;
72 | }
73 |
74 | public String getOptiontype() {
75 | return optiontype;
76 | }
77 |
78 | public void setOptiontype(String optiontype) {
79 | this.optiontype = optiontype;
80 | }
81 |
82 | public String getAnswer() {
83 | return answer;
84 | }
85 |
86 | public void setAnswer(String answer) {
87 | this.answer = answer;
88 | }
89 |
90 | public String getChapterid() {
91 | return chapterid;
92 | }
93 |
94 | public void setChapterid(String chapterid) {
95 | this.chapterid = chapterid;
96 | }
97 |
98 | public List getAnswer_arr() {
99 | return answer_arr;
100 | }
101 |
102 | public void setAnswer_arr(List answer_arr) {
103 | this.answer_arr = answer_arr;
104 | }
105 |
106 | public List getAnswers() {
107 | return answers;
108 | }
109 |
110 | public void setAnswers(List answers) {
111 | this.answers = answers;
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/bean/QuestionList.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.bean;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * Created by zhangyipeng on 16/7/27.
7 | */
8 | public class QuestionList {
9 | private List questionList;
10 |
11 | public List getQuestionList() {
12 | return questionList;
13 | }
14 |
15 | public void setQuestionList(List questionList) {
16 | this.questionList = questionList;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/fragment/ReadFragment.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.fragment;
2 |
3 |
4 | import android.os.Bundle;
5 | import android.support.v4.app.Fragment;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 | import android.widget.TextView;
10 |
11 | import com.example.zhangyipeng.anwerdemo.R;
12 | import com.example.zhangyipeng.anwerdemo.bean.AnwerInfo;
13 |
14 | /**
15 | * A simple {@link Fragment} subclass.
16 | * Use the {@link ReadFragment#newInstance} factory method to
17 | * create an instance of this fragment.
18 | */
19 | public class ReadFragment extends Fragment {
20 | // TODO: Rename parameter arguments, choose names that match
21 | // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
22 | private static final String ARG_PARAM1 = "param1";
23 | private static final String ARG_PARAM2 = "param2";
24 |
25 | // TODO: Rename and change types of parameters
26 | private AnwerInfo.DataBean.SubDataBean subDataBean;
27 | private View view;
28 |
29 |
30 | public ReadFragment() {
31 | // Required empty public constructor
32 | }
33 |
34 | /**
35 | * Use this factory method to create a new instance of
36 | * this fragment using the provided parameters.
37 |
38 | * @return A new instance of fragment ReadFragment.
39 | */
40 | // TODO: Rename and change types and number of parameters
41 | public static ReadFragment newInstance(AnwerInfo.DataBean.SubDataBean subDataBean) {
42 | ReadFragment fragment = new ReadFragment();
43 | Bundle args = new Bundle();
44 | args.putSerializable(ARG_PARAM1, subDataBean);
45 | fragment.setArguments(args);
46 | return fragment;
47 | }
48 |
49 | @Override
50 | public void onCreate(Bundle savedInstanceState) {
51 | super.onCreate(savedInstanceState);
52 | if (getArguments() != null) {
53 | subDataBean = (AnwerInfo.DataBean.SubDataBean) getArguments().getSerializable(ARG_PARAM1);
54 | }
55 | }
56 |
57 | @Override
58 | public View onCreateView(LayoutInflater inflater, ViewGroup container,
59 | Bundle savedInstanceState) {
60 | view = inflater.inflate(R.layout.fragment_read, container, false);
61 |
62 | initView();
63 | // Inflate the layout for this fragment
64 | return view;
65 | }
66 |
67 | private void initView() {
68 | TextView tv_question = (TextView) view.findViewById(R.id.tv_question);
69 |
70 | tv_question.setText(subDataBean.getQuestionid()+". "+subDataBean.getQuestion()
71 | +"\n\nA."+subDataBean.getOptiona()
72 | +"\nB."+subDataBean.getOptionb()
73 | +"\nC."+subDataBean.getOptionc()
74 | +"\nD."+subDataBean.getOptiond()
75 | +"\n\n\n答案解析:"+subDataBean.getExplain()
76 | );
77 |
78 | }
79 |
80 | }
81 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/listener/RecyclerItemClickListener.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.listener;
2 |
3 | import android.content.Context;
4 | import android.support.v7.widget.RecyclerView;
5 | import android.view.GestureDetector;
6 | import android.view.MotionEvent;
7 | import android.view.View;
8 |
9 | public class RecyclerItemClickListener implements RecyclerView.OnItemTouchListener {
10 | private OnItemClickListener mListener;
11 |
12 | public interface OnItemClickListener {
13 | void onItemClick(View view, int position);
14 | }
15 |
16 | GestureDetector mGestureDetector;
17 |
18 | public RecyclerItemClickListener(Context context, OnItemClickListener listener) {
19 | mListener = listener;
20 | mGestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
21 | @Override public boolean onSingleTapUp(MotionEvent e) {
22 | return true;
23 | }
24 | });
25 | }
26 |
27 | @Override public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
28 | View childView = view.findChildViewUnder(e.getX(), e.getY());
29 | if (childView != null && mListener != null && mGestureDetector.onTouchEvent(e)) {
30 | mListener.onItemClick(childView, view.getChildAdapterPosition(childView));
31 | }
32 | return false;
33 | }
34 |
35 | @Override public void onTouchEvent(RecyclerView view, MotionEvent motionEvent) { }
36 |
37 | @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
38 | // do nothing
39 | }
40 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/view/FixedSpeedScroller.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.view;
2 |
3 | import android.content.Context;
4 | import android.view.animation.Interpolator;
5 | import android.widget.Scroller;
6 |
7 | public class FixedSpeedScroller extends Scroller {
8 | private int mDuration = 1500;
9 |
10 | public FixedSpeedScroller(Context context) {
11 | super(context);
12 | }
13 |
14 | public FixedSpeedScroller(Context context, Interpolator interpolator) {
15 | super(context, interpolator);
16 | }
17 |
18 | @Override
19 | public void startScroll(int startX, int startY, int dx, int dy, int duration) {
20 | // Ignore received duration, use fixed one instead
21 | super.startScroll(startX, startY, dx, dy, mDuration);
22 | }
23 |
24 | @Override
25 | public void startScroll(int startX, int startY, int dx, int dy) {
26 | // Ignore received duration, use fixed one instead
27 | super.startScroll(startX, startY, dx, dy, mDuration);
28 | }
29 |
30 | public void setmDuration(int time) {
31 | mDuration = time;
32 | }
33 |
34 | public int getmDuration() {
35 | return mDuration;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/view/MoveLinearLayout.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.view;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.view.View;
6 | import android.widget.LinearLayout;
7 | import android.widget.ScrollView;
8 | import android.widget.Scroller;
9 |
10 | /**
11 | * Created by zhangyipeng on 16/7/5.
12 | */
13 | public class MoveLinearLayout extends LinearLayout {
14 |
15 |
16 | private Scroller mScroller;
17 |
18 | public MoveLinearLayout(Context context) {
19 | this(context, null);
20 | }
21 |
22 | public MoveLinearLayout(Context context, AttributeSet attrs) {
23 | this(context, null, 0);
24 | }
25 |
26 | public MoveLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
27 | super(context, attrs, defStyleAttr);
28 |
29 | }
30 |
31 | public void setScroller(Scroller scroller){
32 | this.mScroller = scroller;
33 | }
34 |
35 | @Override
36 | public void computeScroll() {
37 | super.computeScroll();
38 | if (mScroller==null){
39 | return;
40 | }
41 |
42 | if(mScroller.computeScrollOffset()){
43 | scrollTo(mScroller.getCurrX(),mScroller.getCurrY());
44 | }
45 | invalidate();//必须要调用
46 |
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/example/zhangyipeng/anwerdemo/view/ReaderViewPager.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo.view;
2 |
3 | import android.content.Context;
4 | import android.support.v4.view.ViewPager;
5 | import android.util.AttributeSet;
6 | import android.util.Log;
7 | import android.view.View;
8 | import android.view.animation.DecelerateInterpolator;
9 |
10 | import java.lang.reflect.Field;
11 |
12 | /**
13 | * Created by zhangyipeng on 16/8/13.
14 | */
15 | public class ReaderViewPager extends ViewPager {
16 |
17 |
18 |
19 | public ReaderViewPager(Context context) {
20 | this(context, null);
21 | }
22 |
23 |
24 | public ReaderViewPager(Context context, AttributeSet attrs) {
25 | super(context, attrs);
26 | setReadEffect();
27 |
28 | setScrollerDuration();
29 | }
30 |
31 | private void setScrollerDuration() {
32 | try {
33 | Field field = ViewPager.class.getDeclaredField("mScroller");
34 | field.setAccessible(true);
35 | FixedSpeedScroller scroller = new FixedSpeedScroller(getContext(),
36 | new DecelerateInterpolator());
37 | field.set(this, scroller);
38 | scroller.setmDuration(300);
39 | } catch (Exception e) {
40 | Log.e("@", "", e);
41 | }
42 | }
43 |
44 |
45 | public void setReadEffect() {
46 | setPageTransformer(true, new PageTransformer() {
47 | private static final float MIN_SCALE = 0.75f;
48 |
49 | @Override
50 | public void transformPage(View view, float position) {
51 | Log.i("AAA", position + "");
52 | int pageWidth = view.getWidth();
53 | int pageHeight =view.getHeight();
54 |
55 | if (position < -1) { // [-Infinity,-1)
56 | // This page is way off-screen to the left.
57 | view.setAlpha(0);
58 |
59 | } else if (position <= 0) { // [-1,0]
60 | // Use the default slide transition when moving to the left page
61 | view.setAlpha(1);
62 | view.setTranslationX(0);
63 | view.setScaleX(1);
64 | view.setScaleY(1);
65 | Log.i("T", position + "");
66 |
67 | } else if (position <= 1) { // (0,1]
68 | Log.i("W", position + "");
69 | // Fade the page out.
70 | // view.setAlpha(1 - position);
71 | //
72 | // // Counteract the default slide transition
73 | view.setAlpha(1);
74 | view.setTranslationX(pageWidth * -position);
75 | //
76 | // // Scale the page down (between MIN_SCALE and 1)
77 | // float scaleFactor = MIN_SCALE
78 | // + (1 - MIN_SCALE) * (1 - Math.abs(position));
79 | // view.setScaleX(scaleFactor);
80 | // view.setScaleY(scaleFactor);
81 |
82 | } else { // (1,+Infinity]
83 | // This page is way off-screen to the right.
84 | view.setAlpha(0);
85 | }
86 |
87 |
88 | }
89 | });
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | -
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_topic.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
18 | -
19 |
23 |
24 |
25 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_topic_no.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_topic_ok.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/shadow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/drawable/shadow_right.png
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_course.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
16 |
22 |
23 |
24 |
30 |
31 |
32 |
38 |
39 |
40 |
41 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/anwer_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/course_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
18 |
19 |
25 |
26 |
27 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/course_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_read.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/head_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
19 |
20 |
26 |
27 |
28 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
14 |
21 |
22 |
30 |
31 |
32 |
33 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
52 |
53 |
54 |
55 |
62 |
63 |
64 |
65 |
66 |
74 |
75 |
81 |
82 |
90 |
91 |
92 |
104 |
105 |
106 |
107 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_topic.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/shadow_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/mipmap-hdpi/shadow_left.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/shadow_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/mipmap-hdpi/shadow_right.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/app/src/main/res/mipmap-xxxhdpi/app.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/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/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #3F51B5
4 | #303F9F
5 | #FF4081
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | AnswerEffect
3 |
4 |
5 | Hello blank fragment
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/test/java/com/example/zhangyipeng/anwerdemo/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.example.zhangyipeng.anwerdemo;
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 | mavenCentral()
7 | maven { url "https://jitpack.io" }
8 | }
9 | dependencies {
10 | classpath 'com.android.tools.build:gradle:2.0.0'
11 |
12 | // NOTE: Do not place your application dependencies here; they belong
13 | // in the individual module build.gradle files
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | jcenter()
20 | mavenCentral()
21 | maven { url "https://jitpack.io" }
22 |
23 | }
24 | }
25 |
26 | task clean(type: Delete) {
27 | delete rootProject.buildDir
28 | }
29 |
--------------------------------------------------------------------------------
/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/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/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 |
--------------------------------------------------------------------------------
/lib/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/lib/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 23
5 | buildToolsVersion '23.0.3'
6 | defaultConfig {
7 | minSdkVersion 7
8 | targetSdkVersion 23
9 | versionCode 27
10 | versionName "1.0.12"
11 | }
12 | buildTypes {
13 | release {
14 | minifyEnabled false
15 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
16 | }
17 | }
18 | productFlavors {
19 | }
20 | lintOptions {
21 | abortOnError false
22 | }
23 |
24 | }
25 |
26 | dependencies {
27 | compile fileTree(dir: 'libs', include: ['*.jar'])
28 | compile 'com.android.support:recyclerview-v7:23.3.0'
29 | }
30 |
--------------------------------------------------------------------------------
/lib/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=RecyclerViewPager Library
2 | POM_ARTIFACT_ID=recyclerviewpager
3 | POM_PACKAGING=aar
4 |
--------------------------------------------------------------------------------
/lib/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/lib/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/lib/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Apr 10 15:27:10 PDT 2013
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.2.1-all.zip
7 |
--------------------------------------------------------------------------------
/lib/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/panwenye/android_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 |
--------------------------------------------------------------------------------
/lib/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/src/main/java/com/lsjwzh/widget/recyclerviewpager/LoopRecyclerViewPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.lsjwzh.widget.recyclerviewpager;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 |
5 | import java.lang.reflect.Field;
6 |
7 | public class LoopRecyclerViewPagerAdapter
8 | extends RecyclerViewPagerAdapter {
9 |
10 | private Field mPositionField;
11 |
12 | public LoopRecyclerViewPagerAdapter(RecyclerViewPager viewPager, RecyclerView.Adapter adapter) {
13 | super(viewPager, adapter);
14 | }
15 |
16 | public int getActualItemCount() {
17 | return super.getItemCount();
18 | }
19 |
20 | public int getActualItemViewType(int position) {
21 | return super.getItemViewType(position);
22 | }
23 |
24 | public long getActualItemId(int position) {
25 | return super.getItemId(position);
26 | }
27 |
28 | @Override
29 | public int getItemCount() {
30 | return Integer.MAX_VALUE;
31 | }
32 |
33 | @Override
34 | public int getItemViewType(int position) {
35 | return super.getItemViewType(getActualPosition(position));
36 | }
37 |
38 | @Override
39 | public long getItemId(int position) {
40 | return super.getItemId(getActualPosition(position));
41 | }
42 |
43 | @Override
44 | public void onBindViewHolder(VH holder, int position) {
45 | super.onBindViewHolder(holder, getActualPosition(position));
46 | // because of getCurrentPosition may return ViewHolder‘s position,
47 | // so we must reset mPosition.
48 | if (mPositionField == null) {
49 | try {
50 | mPositionField = holder.getClass().getDeclaredField("mPosition");
51 | mPositionField.setAccessible(true);
52 | } catch (NoSuchFieldException e) {
53 | e.printStackTrace();
54 | }
55 | }
56 | try {
57 | mPositionField.set(holder, position);
58 | } catch (Exception e) {
59 | e.printStackTrace();
60 | }
61 | }
62 |
63 | public int getActualPosition(int position) {
64 | int actualPosition = position;
65 | if (position >= getActualItemCount()) {
66 | actualPosition = position % getActualItemCount();
67 | }
68 | return actualPosition;
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/lib/src/main/java/com/lsjwzh/widget/recyclerviewpager/RecyclerViewPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.lsjwzh.widget.recyclerviewpager;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 | import android.view.ViewGroup;
6 |
7 | /**
8 | * RecyclerViewPagerAdapter
9 | * Adapter wrapper.
10 | *
11 | * @author Green
12 | */
13 | public class RecyclerViewPagerAdapter extends RecyclerView.Adapter {
14 | private final RecyclerViewPager mViewPager;
15 | RecyclerView.Adapter mAdapter;
16 |
17 |
18 | public RecyclerViewPagerAdapter(RecyclerViewPager viewPager, RecyclerView.Adapter adapter) {
19 | mAdapter = adapter;
20 | mViewPager = viewPager;
21 | setHasStableIds(mAdapter.hasStableIds());
22 | }
23 |
24 | @Override
25 | public VH onCreateViewHolder(ViewGroup parent, int viewType) {
26 | return mAdapter.onCreateViewHolder(parent, viewType);
27 | }
28 |
29 | @Override
30 | public void registerAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
31 | super.registerAdapterDataObserver(observer);
32 | mAdapter.registerAdapterDataObserver(observer);
33 | }
34 |
35 | @Override
36 | public void unregisterAdapterDataObserver(RecyclerView.AdapterDataObserver observer) {
37 | super.unregisterAdapterDataObserver(observer);
38 | mAdapter.unregisterAdapterDataObserver(observer);
39 | }
40 |
41 | @Override
42 | public void onViewRecycled(VH holder) {
43 | super.onViewRecycled(holder);
44 | mAdapter.onViewRecycled(holder);
45 | }
46 |
47 | @Override
48 | public boolean onFailedToRecycleView(VH holder) {
49 | return mAdapter.onFailedToRecycleView(holder);
50 | }
51 |
52 | @Override
53 | public void onViewAttachedToWindow(VH holder) {
54 | super.onViewAttachedToWindow(holder);
55 | mAdapter.onViewAttachedToWindow(holder);
56 | }
57 |
58 | @Override
59 | public void onViewDetachedFromWindow(VH holder) {
60 | super.onViewDetachedFromWindow(holder);
61 | mAdapter.onViewDetachedFromWindow(holder);
62 | }
63 |
64 | @Override
65 | public void onAttachedToRecyclerView(RecyclerView recyclerView) {
66 | super.onAttachedToRecyclerView(recyclerView);
67 | mAdapter.onAttachedToRecyclerView(recyclerView);
68 | }
69 |
70 | @Override
71 | public void onDetachedFromRecyclerView(RecyclerView recyclerView) {
72 | super.onDetachedFromRecyclerView(recyclerView);
73 | mAdapter.onDetachedFromRecyclerView(recyclerView);
74 | }
75 |
76 | @Override
77 | public void onBindViewHolder(VH holder, int position) {
78 | mAdapter.onBindViewHolder(holder, position);
79 | final View itemView = holder.itemView;
80 | ViewGroup.LayoutParams lp;
81 | if (itemView.getLayoutParams() == null) {
82 | lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
83 | } else {
84 | lp = itemView.getLayoutParams();
85 | if (mViewPager.getLayoutManager().canScrollHorizontally()) {
86 | lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
87 | } else {
88 | lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
89 | }
90 | }
91 | itemView.setLayoutParams(lp);
92 | }
93 |
94 | @Override
95 | public void setHasStableIds(boolean hasStableIds) {
96 | super.setHasStableIds(hasStableIds);
97 | mAdapter.setHasStableIds(hasStableIds);
98 | }
99 |
100 | @Override
101 | public int getItemCount() {
102 | return mAdapter.getItemCount();
103 | }
104 |
105 | @Override
106 | public int getItemViewType(int position) {
107 | return mAdapter.getItemViewType(position);
108 | }
109 |
110 | @Override
111 | public long getItemId(int position) {
112 | return mAdapter.getItemId(position);
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/lib/src/main/java/com/lsjwzh/widget/recyclerviewpager/ViewUtils.java:
--------------------------------------------------------------------------------
1 | package com.lsjwzh.widget.recyclerviewpager;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 |
6 | public class ViewUtils {
7 |
8 | /**
9 | * Get center child in X Axes
10 | */
11 | public static View getCenterXChild(RecyclerView recyclerView) {
12 | int childCount = recyclerView.getChildCount();
13 | if (childCount > 0) {
14 | for (int i = 0; i < childCount; i++) {
15 | View child = recyclerView.getChildAt(i);
16 | if (isChildInCenterX(recyclerView, child)) {
17 | return child;
18 | }
19 | }
20 | }
21 | return null;
22 | }
23 |
24 | /**
25 | * Get position of center child in X Axes
26 | */
27 | public static int getCenterXChildPosition(RecyclerView recyclerView) {
28 | int childCount = recyclerView.getChildCount();
29 | if (childCount > 0) {
30 | for (int i = 0; i < childCount; i++) {
31 | View child = recyclerView.getChildAt(i);
32 | if (isChildInCenterX(recyclerView, child)) {
33 | return recyclerView.getChildAdapterPosition(child);
34 | }
35 | }
36 | }
37 | return childCount;
38 | }
39 |
40 | /**
41 | * Get center child in Y Axes
42 | */
43 | public static View getCenterYChild(RecyclerView recyclerView) {
44 | int childCount = recyclerView.getChildCount();
45 | if (childCount > 0) {
46 | for (int i = 0; i < childCount; i++) {
47 | View child = recyclerView.getChildAt(i);
48 | if (isChildInCenterY(recyclerView, child)) {
49 | return child;
50 | }
51 | }
52 | }
53 | return null;
54 | }
55 |
56 | /**
57 | * Get position of center child in Y Axes
58 | */
59 | public static int getCenterYChildPosition(RecyclerView recyclerView) {
60 | int childCount = recyclerView.getChildCount();
61 | if (childCount > 0) {
62 | for (int i = 0; i < childCount; i++) {
63 | View child = recyclerView.getChildAt(i);
64 | if (isChildInCenterY(recyclerView, child)) {
65 | return recyclerView.getChildAdapterPosition(child);
66 | }
67 | }
68 | }
69 | return childCount;
70 | }
71 |
72 | public static boolean isChildInCenterX(RecyclerView recyclerView, View view) {
73 | int childCount = recyclerView.getChildCount();
74 | int[] lvLocationOnScreen = new int[2];
75 | int[] vLocationOnScreen = new int[2];
76 | recyclerView.getLocationOnScreen(lvLocationOnScreen);
77 | int middleX = lvLocationOnScreen[0] + recyclerView.getWidth() / 2;
78 | if (childCount > 0) {
79 | view.getLocationOnScreen(vLocationOnScreen);
80 | if (vLocationOnScreen[0] <= middleX && vLocationOnScreen[0] + view.getWidth() >= middleX) {
81 | return true;
82 | }
83 | }
84 | return false;
85 | }
86 |
87 | public static boolean isChildInCenterY(RecyclerView recyclerView, View view) {
88 | int childCount = recyclerView.getChildCount();
89 | int[] lvLocationOnScreen = new int[2];
90 | int[] vLocationOnScreen = new int[2];
91 | recyclerView.getLocationOnScreen(lvLocationOnScreen);
92 | int middleY = lvLocationOnScreen[1] + recyclerView.getHeight() / 2;
93 | if (childCount > 0) {
94 | view.getLocationOnScreen(vLocationOnScreen);
95 | if (vLocationOnScreen[1] <= middleY && vLocationOnScreen[1] + view.getHeight() >= middleY) {
96 | return true;
97 | }
98 | }
99 | return false;
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/lib/src/main/res/layout/rvp_fragment_container.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/lib/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/library/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | repositories {
4 | mavenCentral()
5 | }
6 |
7 | dependencies {
8 | compile 'com.android.support:support-v4:23.1.1'
9 | compile 'com.android.support:support-annotations:23.1.1'
10 | compile 'com.android.support:recyclerview-v7:23.1.1'
11 | compile 'com.nineoldandroids:library:2.4.0'
12 | }
13 |
14 | android {
15 | compileSdkVersion 23
16 | buildToolsVersion "23.0.2"
17 | lintOptions {
18 | abortOnError false
19 | }
20 | }
21 |
22 | //apply from: '../maven_push.gradle'
--------------------------------------------------------------------------------
/library/build/generated/source/buildConfig/androidTest/debug/com/sothree/slidinguppanel/library/test/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Automatically generated file. DO NOT MODIFY
3 | */
4 | package com.sothree.slidinguppanel.library.test;
5 |
6 | public final class BuildConfig {
7 | public static final boolean DEBUG = Boolean.parseBoolean("true");
8 | public static final String APPLICATION_ID = "com.sothree.slidinguppanel.library.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 |
--------------------------------------------------------------------------------
/library/build/generated/source/buildConfig/debug/com/sothree/slidinguppanel/library/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Automatically generated file. DO NOT MODIFY
3 | */
4 | package com.sothree.slidinguppanel.library;
5 |
6 | public final class BuildConfig {
7 | public static final boolean DEBUG = Boolean.parseBoolean("true");
8 | public static final String APPLICATION_ID = "com.sothree.slidinguppanel.library";
9 | public static final String BUILD_TYPE = "debug";
10 | public static final String FLAVOR = "";
11 | public static final int VERSION_CODE = 15;
12 | public static final String VERSION_NAME = "3.3.0";
13 | }
14 |
--------------------------------------------------------------------------------
/library/build/generated/source/buildConfig/release/com/sothree/slidinguppanel/library/BuildConfig.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Automatically generated file. DO NOT MODIFY
3 | */
4 | package com.sothree.slidinguppanel.library;
5 |
6 | public final class BuildConfig {
7 | public static final boolean DEBUG = false;
8 | public static final String APPLICATION_ID = "com.sothree.slidinguppanel.library";
9 | public static final String BUILD_TYPE = "release";
10 | public static final String FLAVOR = "";
11 | public static final int VERSION_CODE = 15;
12 | public static final String VERSION_NAME = "3.3.0";
13 | }
14 |
--------------------------------------------------------------------------------
/library/build/generated/source/r/androidTest/debug/android/support/v7/recyclerview/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 android.support.v7.recyclerview;
8 |
9 | public final class R {
10 | public static final class attr {
11 | public static final int layoutManager = 0x7f010000;
12 | public static final int reverseLayout = 0x7f010002;
13 | public static final int spanCount = 0x7f010001;
14 | public static final int stackFromEnd = 0x7f010003;
15 | }
16 | public static final class dimen {
17 | public static final int item_touch_helper_max_drag_scroll_per_frame = 0x7f030000;
18 | }
19 | public static final class id {
20 | public static final int item_touch_helper_previous_elevation = 0x7f040000;
21 | }
22 | public static final class styleable {
23 | public static final int[] RecyclerView = { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 };
24 | public static final int RecyclerView_android_orientation = 0;
25 | public static final int RecyclerView_layoutManager = 1;
26 | public static final int RecyclerView_reverseLayout = 3;
27 | public static final int RecyclerView_spanCount = 2;
28 | public static final int RecyclerView_stackFromEnd = 4;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/library/build/generated/source/r/androidTest/debug/com/sothree/slidinguppanel/library/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 com.sothree.slidinguppanel.library;
8 |
9 | public final class R {
10 | public static final class attr {
11 | public static final int layoutManager = 0x7f010000;
12 | public static final int reverseLayout = 0x7f010002;
13 | public static final int spanCount = 0x7f010001;
14 | public static final int stackFromEnd = 0x7f010003;
15 | public static final int umanoAnchorPoint = 0x7f01000d;
16 | public static final int umanoClipPanel = 0x7f01000c;
17 | public static final int umanoDragView = 0x7f010009;
18 | public static final int umanoFadeColor = 0x7f010007;
19 | public static final int umanoFlingVelocity = 0x7f010008;
20 | public static final int umanoInitialState = 0x7f01000e;
21 | public static final int umanoOverlay = 0x7f01000b;
22 | public static final int umanoPanelHeight = 0x7f010004;
23 | public static final int umanoParallaxOffset = 0x7f010006;
24 | public static final int umanoScrollInterpolator = 0x7f01000f;
25 | public static final int umanoScrollableView = 0x7f01000a;
26 | public static final int umanoShadowHeight = 0x7f010005;
27 | }
28 | public static final class dimen {
29 | public static final int item_touch_helper_max_drag_scroll_per_frame = 0x7f030000;
30 | }
31 | public static final class drawable {
32 | public static final int above_shadow = 0x7f020000;
33 | public static final int below_shadow = 0x7f020001;
34 | }
35 | public static final class id {
36 | public static final int anchored = 0x7f040001;
37 | public static final int collapsed = 0x7f040002;
38 | public static final int expanded = 0x7f040003;
39 | public static final int hidden = 0x7f040004;
40 | public static final int item_touch_helper_previous_elevation = 0x7f040000;
41 | }
42 | public static final class styleable {
43 | public static final int[] RecyclerView = { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 };
44 | public static final int RecyclerView_android_orientation = 0;
45 | public static final int RecyclerView_layoutManager = 1;
46 | public static final int RecyclerView_reverseLayout = 3;
47 | public static final int RecyclerView_spanCount = 2;
48 | public static final int RecyclerView_stackFromEnd = 4;
49 | public static final int[] SlidingUpPanelLayout = { 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008, 0x7f010009, 0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f };
50 | public static final int SlidingUpPanelLayout_umanoAnchorPoint = 9;
51 | public static final int SlidingUpPanelLayout_umanoClipPanel = 8;
52 | public static final int SlidingUpPanelLayout_umanoDragView = 5;
53 | public static final int SlidingUpPanelLayout_umanoFadeColor = 3;
54 | public static final int SlidingUpPanelLayout_umanoFlingVelocity = 4;
55 | public static final int SlidingUpPanelLayout_umanoInitialState = 10;
56 | public static final int SlidingUpPanelLayout_umanoOverlay = 7;
57 | public static final int SlidingUpPanelLayout_umanoPanelHeight = 0;
58 | public static final int SlidingUpPanelLayout_umanoParallaxOffset = 2;
59 | public static final int SlidingUpPanelLayout_umanoScrollInterpolator = 11;
60 | public static final int SlidingUpPanelLayout_umanoScrollableView = 6;
61 | public static final int SlidingUpPanelLayout_umanoShadowHeight = 1;
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/library/build/generated/source/r/debug/android/support/v7/recyclerview/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 android.support.v7.recyclerview;
8 |
9 | public final class R {
10 | public static final class attr {
11 | public static final int layoutManager = 0x7f010000;
12 | public static final int reverseLayout = 0x7f010002;
13 | public static final int spanCount = 0x7f010001;
14 | public static final int stackFromEnd = 0x7f010003;
15 | }
16 | public static final class dimen {
17 | public static final int item_touch_helper_max_drag_scroll_per_frame = 0x7f030000;
18 | }
19 | public static final class id {
20 | public static final int item_touch_helper_previous_elevation = 0x7f040000;
21 | }
22 | public static final class styleable {
23 | public static final int[] RecyclerView = { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 };
24 | public static final int RecyclerView_android_orientation = 0;
25 | public static final int RecyclerView_layoutManager = 1;
26 | public static final int RecyclerView_reverseLayout = 3;
27 | public static final int RecyclerView_spanCount = 2;
28 | public static final int RecyclerView_stackFromEnd = 4;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/library/build/generated/source/r/release/android/support/v7/recyclerview/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 android.support.v7.recyclerview;
8 |
9 | public final class R {
10 | public static final class attr {
11 | public static final int layoutManager = 0x7f010000;
12 | public static final int reverseLayout = 0x7f010002;
13 | public static final int spanCount = 0x7f010001;
14 | public static final int stackFromEnd = 0x7f010003;
15 | }
16 | public static final class dimen {
17 | public static final int item_touch_helper_max_drag_scroll_per_frame = 0x7f030000;
18 | }
19 | public static final class id {
20 | public static final int item_touch_helper_previous_elevation = 0x7f040000;
21 | }
22 | public static final class styleable {
23 | public static final int[] RecyclerView = { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 };
24 | public static final int RecyclerView_android_orientation = 0;
25 | public static final int RecyclerView_layoutManager = 1;
26 | public static final int RecyclerView_reverseLayout = 3;
27 | public static final int RecyclerView_spanCount = 2;
28 | public static final int RecyclerView_stackFromEnd = 4;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/library/build/intermediates/blame/res/androidTest/debug/single/drawable.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/res/merged/androidTest/debug/drawable/below_shadow.xml",
4 | "source": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/bundles/debug/res/drawable/below_shadow.xml"
5 | },
6 | {
7 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/res/merged/androidTest/debug/drawable/above_shadow.xml",
8 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/bundles/debug/res/drawable/above_shadow.xml"
9 | },
10 | {
11 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/res/merged/androidTest/debug/drawable/below_shadow.xml",
12 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/bundles/debug/res/drawable/below_shadow.xml"
13 | },
14 | {
15 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/res/merged/androidTest/debug/drawable/above_shadow.xml",
16 | "source": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/bundles/debug/res/drawable/above_shadow.xml"
17 | },
18 | {
19 | "merged": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/res/merged/androidTest/debug/drawable/below_shadow.xml",
20 | "source": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/bundles/debug/res/drawable/below_shadow.xml"
21 | },
22 | {
23 | "merged": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/res/merged/androidTest/debug/drawable/above_shadow.xml",
24 | "source": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/bundles/debug/res/drawable/above_shadow.xml"
25 | },
26 | {
27 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/res/merged/androidTest/debug/drawable/below_shadow.xml",
28 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/bundles/debug/res/drawable/below_shadow.xml"
29 | },
30 | {
31 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/res/merged/androidTest/debug/drawable/above_shadow.xml",
32 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/bundles/debug/res/drawable/above_shadow.xml"
33 | }
34 | ]
--------------------------------------------------------------------------------
/library/build/intermediates/blame/res/debug/single/drawable.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/res/merged/debug/drawable/below_shadow.xml",
4 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/src/main/res/drawable/below_shadow.xml"
5 | },
6 | {
7 | "merged": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/res/merged/debug/drawable/above_shadow.xml",
8 | "source": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/src/main/res/drawable/above_shadow.xml"
9 | },
10 | {
11 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/res/merged/debug/drawable/below_shadow.xml",
12 | "source": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/src/main/res/drawable/below_shadow.xml"
13 | },
14 | {
15 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/res/merged/debug/drawable/below_shadow.xml",
16 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/src/main/res/drawable/below_shadow.xml"
17 | },
18 | {
19 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/res/merged/debug/drawable/above_shadow.xml",
20 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/src/main/res/drawable/above_shadow.xml"
21 | },
22 | {
23 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/res/merged/debug/drawable/above_shadow.xml",
24 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/src/main/res/drawable/above_shadow.xml"
25 | },
26 | {
27 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/res/merged/debug/drawable/above_shadow.xml",
28 | "source": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/src/main/res/drawable/above_shadow.xml"
29 | },
30 | {
31 | "merged": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/res/merged/debug/drawable/below_shadow.xml",
32 | "source": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/src/main/res/drawable/below_shadow.xml"
33 | }
34 | ]
--------------------------------------------------------------------------------
/library/build/intermediates/blame/res/release/single/drawable.json:
--------------------------------------------------------------------------------
1 | [
2 | {
3 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/res/merged/release/drawable/below_shadow.xml",
4 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/src/main/res/drawable/below_shadow.xml"
5 | },
6 | {
7 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/build/intermediates/res/merged/release/drawable/above_shadow.xml",
8 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnswerEffect/library/src/main/res/drawable/above_shadow.xml"
9 | },
10 | {
11 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/res/merged/release/drawable/above_shadow.xml",
12 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/src/main/res/drawable/above_shadow.xml"
13 | },
14 | {
15 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/build/intermediates/res/merged/release/drawable/below_shadow.xml",
16 | "source": "/Users/zhangyipeng/Documents/GITHUB/AnwerDemo/library/src/main/res/drawable/below_shadow.xml"
17 | },
18 | {
19 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/res/merged/release/drawable/below_shadow.xml",
20 | "source": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/src/main/res/drawable/below_shadow.xml"
21 | },
22 | {
23 | "merged": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/build/intermediates/res/merged/release/drawable/above_shadow.xml",
24 | "source": "/Users/zhangyipeng/Documents/GITHUB/AndroidSlidingUpPanel/library/src/main/res/drawable/above_shadow.xml"
25 | },
26 | {
27 | "merged": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/res/merged/release/drawable/above_shadow.xml",
28 | "source": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/src/main/res/drawable/above_shadow.xml"
29 | },
30 | {
31 | "merged": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/build/intermediates/res/merged/release/drawable/below_shadow.xml",
32 | "source": "/Users/zhangyipeng/QuxuecheAndroid/AnwerDemo/library/src/main/res/drawable/below_shadow.xml"
33 | }
34 | ]
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/debug/R.txt:
--------------------------------------------------------------------------------
1 | int attr layoutManager 0x7f010000
2 | int attr reverseLayout 0x7f010002
3 | int attr spanCount 0x7f010001
4 | int attr stackFromEnd 0x7f010003
5 | int attr umanoAnchorPoint 0x7f01000d
6 | int attr umanoClipPanel 0x7f01000c
7 | int attr umanoDragView 0x7f010009
8 | int attr umanoFadeColor 0x7f010007
9 | int attr umanoFlingVelocity 0x7f010008
10 | int attr umanoInitialState 0x7f01000e
11 | int attr umanoOverlay 0x7f01000b
12 | int attr umanoPanelHeight 0x7f010004
13 | int attr umanoParallaxOffset 0x7f010006
14 | int attr umanoScrollInterpolator 0x7f01000f
15 | int attr umanoScrollableView 0x7f01000a
16 | int attr umanoShadowHeight 0x7f010005
17 | int dimen item_touch_helper_max_drag_scroll_per_frame 0x7f030000
18 | int drawable above_shadow 0x7f020000
19 | int drawable below_shadow 0x7f020001
20 | int id anchored 0x7f040001
21 | int id collapsed 0x7f040002
22 | int id expanded 0x7f040003
23 | int id hidden 0x7f040004
24 | int id item_touch_helper_previous_elevation 0x7f040000
25 | int[] styleable RecyclerView { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 }
26 | int styleable RecyclerView_android_orientation 0
27 | int styleable RecyclerView_layoutManager 1
28 | int styleable RecyclerView_reverseLayout 3
29 | int styleable RecyclerView_spanCount 2
30 | int styleable RecyclerView_stackFromEnd 4
31 | int[] styleable SlidingUpPanelLayout { 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008, 0x7f010009, 0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f }
32 | int styleable SlidingUpPanelLayout_umanoAnchorPoint 9
33 | int styleable SlidingUpPanelLayout_umanoClipPanel 8
34 | int styleable SlidingUpPanelLayout_umanoDragView 5
35 | int styleable SlidingUpPanelLayout_umanoFadeColor 3
36 | int styleable SlidingUpPanelLayout_umanoFlingVelocity 4
37 | int styleable SlidingUpPanelLayout_umanoInitialState 10
38 | int styleable SlidingUpPanelLayout_umanoOverlay 7
39 | int styleable SlidingUpPanelLayout_umanoPanelHeight 0
40 | int styleable SlidingUpPanelLayout_umanoParallaxOffset 2
41 | int styleable SlidingUpPanelLayout_umanoScrollInterpolator 11
42 | int styleable SlidingUpPanelLayout_umanoScrollableView 6
43 | int styleable SlidingUpPanelLayout_umanoShadowHeight 1
44 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/debug/aapt/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/debug/classes.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/bundles/debug/classes.jar
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/debug/res/drawable/above_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/debug/res/drawable/below_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/debug/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/release/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/release/R.txt:
--------------------------------------------------------------------------------
1 | int attr layoutManager 0x7f010000
2 | int attr reverseLayout 0x7f010002
3 | int attr spanCount 0x7f010001
4 | int attr stackFromEnd 0x7f010003
5 | int attr umanoAnchorPoint 0x7f01000d
6 | int attr umanoClipPanel 0x7f01000c
7 | int attr umanoDragView 0x7f010009
8 | int attr umanoFadeColor 0x7f010007
9 | int attr umanoFlingVelocity 0x7f010008
10 | int attr umanoInitialState 0x7f01000e
11 | int attr umanoOverlay 0x7f01000b
12 | int attr umanoPanelHeight 0x7f010004
13 | int attr umanoParallaxOffset 0x7f010006
14 | int attr umanoScrollInterpolator 0x7f01000f
15 | int attr umanoScrollableView 0x7f01000a
16 | int attr umanoShadowHeight 0x7f010005
17 | int dimen item_touch_helper_max_drag_scroll_per_frame 0x7f030000
18 | int drawable above_shadow 0x7f020000
19 | int drawable below_shadow 0x7f020001
20 | int id anchored 0x7f040001
21 | int id collapsed 0x7f040002
22 | int id expanded 0x7f040003
23 | int id hidden 0x7f040004
24 | int id item_touch_helper_previous_elevation 0x7f040000
25 | int[] styleable RecyclerView { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 }
26 | int styleable RecyclerView_android_orientation 0
27 | int styleable RecyclerView_layoutManager 1
28 | int styleable RecyclerView_reverseLayout 3
29 | int styleable RecyclerView_spanCount 2
30 | int styleable RecyclerView_stackFromEnd 4
31 | int[] styleable SlidingUpPanelLayout { 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008, 0x7f010009, 0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f }
32 | int styleable SlidingUpPanelLayout_umanoAnchorPoint 9
33 | int styleable SlidingUpPanelLayout_umanoClipPanel 8
34 | int styleable SlidingUpPanelLayout_umanoDragView 5
35 | int styleable SlidingUpPanelLayout_umanoFadeColor 3
36 | int styleable SlidingUpPanelLayout_umanoFlingVelocity 4
37 | int styleable SlidingUpPanelLayout_umanoInitialState 10
38 | int styleable SlidingUpPanelLayout_umanoOverlay 7
39 | int styleable SlidingUpPanelLayout_umanoPanelHeight 0
40 | int styleable SlidingUpPanelLayout_umanoParallaxOffset 2
41 | int styleable SlidingUpPanelLayout_umanoScrollInterpolator 11
42 | int styleable SlidingUpPanelLayout_umanoScrollableView 6
43 | int styleable SlidingUpPanelLayout_umanoShadowHeight 1
44 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/release/aapt/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/release/classes.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/bundles/release/classes.jar
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/release/res/drawable/above_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/release/res/drawable/below_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/bundles/release/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$attr.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$dimen.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$id.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$styleable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R$styleable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/android/support/v7/recyclerview/R.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$attr.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$dimen.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$drawable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$id.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$styleable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R$styleable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/R.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/BuildConfig.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/BuildConfig.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$attr.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$dimen.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$drawable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$id.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$styleable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R$styleable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/androidTest/debug/com/sothree/slidinguppanel/library/test/R.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$attr.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$dimen.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$id.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$styleable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R$styleable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/android/support/v7/recyclerview/R.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ScrollableViewHelper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ScrollableViewHelper.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$1.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$2.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$DragHelperCallback.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$DragHelperCallback.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$LayoutParams.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$LayoutParams.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelSlideListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelSlideListener.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelState.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelState.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState$1.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$SimplePanelSlideListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout$SimplePanelSlideListener.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/SlidingUpPanelLayout.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper$1.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper$2.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper$Callback.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper$Callback.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/ViewDragHelper.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/BuildConfig.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/BuildConfig.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$attr.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$dimen.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$drawable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$id.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$styleable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R$styleable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/debug/com/sothree/slidinguppanel/library/R.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$attr.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$dimen.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$id.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$styleable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/android/support/v7/recyclerview/R$styleable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/android/support/v7/recyclerview/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/android/support/v7/recyclerview/R.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ScrollableViewHelper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ScrollableViewHelper.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$1.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$2.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$DragHelperCallback.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$DragHelperCallback.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$LayoutParams.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$LayoutParams.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelSlideListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelSlideListener.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelState.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$PanelState.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState$1.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$SavedState.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$SimplePanelSlideListener.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout$SimplePanelSlideListener.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/SlidingUpPanelLayout.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper$1.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper$1.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper$2.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper$2.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper$Callback.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper$Callback.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/ViewDragHelper.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/BuildConfig.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/BuildConfig.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$attr.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$attr.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$dimen.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$dimen.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$drawable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$drawable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$id.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$id.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$styleable.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R$styleable.class
--------------------------------------------------------------------------------
/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/classes/release/com/sothree/slidinguppanel/library/R.class
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/R.txt:
--------------------------------------------------------------------------------
1 | int attr layoutManager 0x7f010000
2 | int attr reverseLayout 0x7f010002
3 | int attr spanCount 0x7f010001
4 | int attr stackFromEnd 0x7f010003
5 | int dimen item_touch_helper_max_drag_scroll_per_frame 0x7f020000
6 | int id item_touch_helper_previous_elevation 0x7f030000
7 | int[] styleable RecyclerView { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 }
8 | int styleable RecyclerView_android_orientation 0
9 | int styleable RecyclerView_layoutManager 1
10 | int styleable RecyclerView_reverseLayout 3
11 | int styleable RecyclerView_spanCount 2
12 | int styleable RecyclerView_stackFromEnd 4
13 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/aapt/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/annotations.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/annotations.zip
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/jars/classes.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/jars/classes.jar
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.1.1/res/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 20dp
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/aapt/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/aidl/android/support/v4/media/MediaMetadataCompat.aidl:
--------------------------------------------------------------------------------
1 | /* Copyright 2014, The Android Open Source Project
2 | **
3 | ** Licensed under the Apache License, Version 2.0 (the "License");
4 | ** you may not use this file except in compliance with the License.
5 | ** You may obtain a copy of the License at
6 | **
7 | ** http://www.apache.org/licenses/LICENSE-2.0
8 | **
9 | ** Unless required by applicable law or agreed to in writing, software
10 | ** distributed under the License is distributed on an "AS IS" BASIS,
11 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | ** See the License for the specific language governing permissions and
13 | ** limitations under the License.
14 | */
15 |
16 | package android.support.v4.media;
17 |
18 | parcelable MediaMetadataCompat;
19 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/aidl/android/support/v4/media/RatingCompat.aidl:
--------------------------------------------------------------------------------
1 | /* Copyright 2014, The Android Open Source Project
2 | **
3 | ** Licensed under the Apache License, Version 2.0 (the "License");
4 | ** you may not use this file except in compliance with the License.
5 | ** You may obtain a copy of the License at
6 | **
7 | ** http://www.apache.org/licenses/LICENSE-2.0
8 | **
9 | ** Unless required by applicable law or agreed to in writing, software
10 | ** distributed under the License is distributed on an "AS IS" BASIS,
11 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | ** See the License for the specific language governing permissions and
13 | ** limitations under the License.
14 | */
15 |
16 | package android.support.v4.media;
17 |
18 | parcelable RatingCompat;
19 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/aidl/android/support/v4/media/session/MediaSessionCompat.aidl:
--------------------------------------------------------------------------------
1 | /* Copyright 2014, The Android Open Source Project
2 | **
3 | ** Licensed under the Apache License, Version 2.0 (the "License");
4 | ** you may not use this file except in compliance with the License.
5 | ** You may obtain a copy of the License at
6 | **
7 | ** http://www.apache.org/licenses/LICENSE-2.0
8 | **
9 | ** Unless required by applicable law or agreed to in writing, software
10 | ** distributed under the License is distributed on an "AS IS" BASIS,
11 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | ** See the License for the specific language governing permissions and
13 | ** limitations under the License.
14 | */
15 |
16 | package android.support.v4.media.session;
17 |
18 | parcelable MediaSessionCompat.Token;
19 | parcelable MediaSessionCompat.QueueItem;
20 | parcelable MediaSessionCompat.ResultReceiverWrapper;
21 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/aidl/android/support/v4/media/session/ParcelableVolumeInfo.aidl:
--------------------------------------------------------------------------------
1 | /* Copyright 2014, The Android Open Source Project
2 | **
3 | ** Licensed under the Apache License, Version 2.0 (the "License");
4 | ** you may not use this file except in compliance with the License.
5 | ** You may obtain a copy of the License at
6 | **
7 | ** http://www.apache.org/licenses/LICENSE-2.0
8 | **
9 | ** Unless required by applicable law or agreed to in writing, software
10 | ** distributed under the License is distributed on an "AS IS" BASIS,
11 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | ** See the License for the specific language governing permissions and
13 | ** limitations under the License.
14 | */
15 |
16 | package android.support.v4.media.session;
17 |
18 | parcelable ParcelableVolumeInfo;
19 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/aidl/android/support/v4/media/session/PlaybackStateCompat.aidl:
--------------------------------------------------------------------------------
1 | /* Copyright 2014, The Android Open Source Project
2 | **
3 | ** Licensed under the Apache License, Version 2.0 (the "License");
4 | ** you may not use this file except in compliance with the License.
5 | ** You may obtain a copy of the License at
6 | **
7 | ** http://www.apache.org/licenses/LICENSE-2.0
8 | **
9 | ** Unless required by applicable law or agreed to in writing, software
10 | ** distributed under the License is distributed on an "AS IS" BASIS,
11 | ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | ** See the License for the specific language governing permissions and
13 | ** limitations under the License.
14 | */
15 |
16 | package android.support.v4.media.session;
17 |
18 | parcelable PlaybackStateCompat;
19 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/aidl/android/support/v4/os/ResultReceiver.aidl:
--------------------------------------------------------------------------------
1 | /*
2 | ** Copyright 2015, 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 android.support.v4.os;
18 |
19 | parcelable ResultReceiver;
20 |
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/annotations.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/annotations.zip
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/jars/classes.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/jars/classes.jar
--------------------------------------------------------------------------------
/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/jars/libs/internal_impl-23.1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/exploded-aar/com.android.support/support-v4/23.1.1/jars/libs/internal_impl-23.1.1.jar
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/compileDebugAidl/dependency.store:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/compileDebugAndroidTestAidl/dependency.store:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/compileReleaseAidl/dependency.store:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/mergeDebugAndroidTestAssets/merger.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/mergeDebugAndroidTestResources/merger.xml:
--------------------------------------------------------------------------------
1 |
2 | 20dp
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/mergeDebugAssets/merger.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/mergeDebugResources/merger.xml:
--------------------------------------------------------------------------------
1 |
2 | 20dp
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/mergeReleaseAssets/merger.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/library/build/intermediates/incremental/mergeReleaseJniLibFolders/merger.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/library/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 |
--------------------------------------------------------------------------------
/library/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 |
--------------------------------------------------------------------------------
/library/build/intermediates/manifest/androidTest/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/androidTest/debug/drawable/above_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/androidTest/debug/drawable/below_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/androidTest/debug/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 20dp
6 |
7 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/debug/drawable/above_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/debug/drawable/below_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/debug/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 20dp
6 |
7 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/release/drawable/above_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/release/drawable/below_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/merged/release/values/values.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 20dp
6 |
7 |
--------------------------------------------------------------------------------
/library/build/intermediates/res/resources-debug-androidTest.ap_:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/intermediates/res/resources-debug-androidTest.ap_
--------------------------------------------------------------------------------
/library/build/intermediates/symbols/androidTest/debug/R.txt:
--------------------------------------------------------------------------------
1 | int attr layoutManager 0x7f010000
2 | int attr reverseLayout 0x7f010002
3 | int attr spanCount 0x7f010001
4 | int attr stackFromEnd 0x7f010003
5 | int attr umanoAnchorPoint 0x7f01000d
6 | int attr umanoClipPanel 0x7f01000c
7 | int attr umanoDragView 0x7f010009
8 | int attr umanoFadeColor 0x7f010007
9 | int attr umanoFlingVelocity 0x7f010008
10 | int attr umanoInitialState 0x7f01000e
11 | int attr umanoOverlay 0x7f01000b
12 | int attr umanoPanelHeight 0x7f010004
13 | int attr umanoParallaxOffset 0x7f010006
14 | int attr umanoScrollInterpolator 0x7f01000f
15 | int attr umanoScrollableView 0x7f01000a
16 | int attr umanoShadowHeight 0x7f010005
17 | int dimen item_touch_helper_max_drag_scroll_per_frame 0x7f030000
18 | int drawable above_shadow 0x7f020000
19 | int drawable below_shadow 0x7f020001
20 | int id anchored 0x7f040001
21 | int id collapsed 0x7f040002
22 | int id expanded 0x7f040003
23 | int id hidden 0x7f040004
24 | int id item_touch_helper_previous_elevation 0x7f040000
25 | int[] styleable RecyclerView { 0x010100c4, 0x7f010000, 0x7f010001, 0x7f010002, 0x7f010003 }
26 | int styleable RecyclerView_android_orientation 0
27 | int styleable RecyclerView_layoutManager 1
28 | int styleable RecyclerView_reverseLayout 3
29 | int styleable RecyclerView_spanCount 2
30 | int styleable RecyclerView_stackFromEnd 4
31 | int[] styleable SlidingUpPanelLayout { 0x7f010004, 0x7f010005, 0x7f010006, 0x7f010007, 0x7f010008, 0x7f010009, 0x7f01000a, 0x7f01000b, 0x7f01000c, 0x7f01000d, 0x7f01000e, 0x7f01000f }
32 | int styleable SlidingUpPanelLayout_umanoAnchorPoint 9
33 | int styleable SlidingUpPanelLayout_umanoClipPanel 8
34 | int styleable SlidingUpPanelLayout_umanoDragView 5
35 | int styleable SlidingUpPanelLayout_umanoFadeColor 3
36 | int styleable SlidingUpPanelLayout_umanoFlingVelocity 4
37 | int styleable SlidingUpPanelLayout_umanoInitialState 10
38 | int styleable SlidingUpPanelLayout_umanoOverlay 7
39 | int styleable SlidingUpPanelLayout_umanoPanelHeight 0
40 | int styleable SlidingUpPanelLayout_umanoParallaxOffset 2
41 | int styleable SlidingUpPanelLayout_umanoScrollInterpolator 11
42 | int styleable SlidingUpPanelLayout_umanoScrollableView 6
43 | int styleable SlidingUpPanelLayout_umanoShadowHeight 1
44 |
--------------------------------------------------------------------------------
/library/build/outputs/aar/library-debug.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/outputs/aar/library-debug.aar
--------------------------------------------------------------------------------
/library/build/outputs/aar/library-release.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zzyyppqq/AnswerEffect/79354828eb2f84793e5a9f8cc7a7d537bb4246b7/library/build/outputs/aar/library-release.aar
--------------------------------------------------------------------------------
/library/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=Android Sliding Up Panel Library
2 | POM_ARTIFACT_ID=library
3 | POM_PACKAGING=aar
4 |
--------------------------------------------------------------------------------
/library/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/library/src/main/java/com/sothree/slidinguppanel/ScrollableViewHelper.java:
--------------------------------------------------------------------------------
1 | package com.sothree.slidinguppanel;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 | import android.widget.ListView;
6 | import android.widget.ScrollView;
7 |
8 | /**
9 | * Helper class for determining the current scroll positions for scrollable views. Currently works
10 | * for ListView, ScrollView and RecyclerView, but the library users can override it to add support
11 | * for other views.
12 | */
13 | public class ScrollableViewHelper {
14 | /**
15 | * Returns the current scroll position of the scrollable view. If this method returns zero or
16 | * less, it means at the scrollable view is in a position such as the panel should handle
17 | * scrolling. If the method returns anything above zero, then the panel will let the scrollable
18 | * view handle the scrolling
19 | *
20 | * @param scrollableView the scrollable view
21 | * @param isSlidingUp whether or not the panel is sliding up or down
22 | * @return the scroll position
23 | */
24 | public int getScrollableViewScrollPosition(View scrollableView, boolean isSlidingUp) {
25 | if (scrollableView == null) return 0;
26 | if (scrollableView instanceof ScrollView) {
27 | if (isSlidingUp) {
28 | return scrollableView.getScrollY();
29 | } else {
30 | ScrollView sv = ((ScrollView) scrollableView);
31 | View child = sv.getChildAt(0);
32 | return (child.getBottom() - (sv.getHeight() + sv.getScrollY()));
33 | }
34 | } else if (scrollableView instanceof ListView && ((ListView) scrollableView).getChildCount() > 0) {
35 | ListView lv = ((ListView) scrollableView);
36 | if (lv.getAdapter() == null) return 0;
37 | if (isSlidingUp) {
38 | View firstChild = lv.getChildAt(0);
39 | // Approximate the scroll position based on the top child and the first visible item
40 | return lv.getFirstVisiblePosition() * firstChild.getHeight() - firstChild.getTop();
41 | } else {
42 | View lastChild = lv.getChildAt(lv.getChildCount() - 1);
43 | // Approximate the scroll position based on the bottom child and the last visible item
44 | return (lv.getAdapter().getCount() - lv.getLastVisiblePosition() - 1) * lastChild.getHeight() + lastChild.getBottom() - lv.getBottom();
45 | }
46 | } else if (scrollableView instanceof RecyclerView && ((RecyclerView) scrollableView).getChildCount() > 0) {
47 | RecyclerView rv = ((RecyclerView) scrollableView);
48 | RecyclerView.LayoutManager lm = rv.getLayoutManager();
49 | if (rv.getAdapter() == null) return 0;
50 | if (isSlidingUp) {
51 | View firstChild = rv.getChildAt(0);
52 | // Approximate the scroll position based on the top child and the first visible item
53 | return rv.getChildLayoutPosition(firstChild) * lm.getDecoratedMeasuredHeight(firstChild) - lm.getDecoratedTop(firstChild);
54 | } else {
55 | View lastChild = rv.getChildAt(rv.getChildCount() - 1);
56 | // Approximate the scroll position based on the bottom child and the last visible item
57 | return (rv.getAdapter().getItemCount() - 1) * lm.getDecoratedMeasuredHeight(lastChild) + lm.getDecoratedBottom(lastChild) - rv.getBottom();
58 | }
59 | } else {
60 | return 0;
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/library/src/main/res/drawable/above_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/src/main/res/drawable/below_shadow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/library/src/main/res/values/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 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':library', ':sticky-head-library', ':lib'
2 |
--------------------------------------------------------------------------------
/sticky-head-library/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/sticky-head-library/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 23
5 | buildToolsVersion '23.0.3'
6 |
7 | defaultConfig {
8 | minSdkVersion 9
9 | targetSdkVersion 23
10 | versionCode 1
11 | versionName '1.0.0'
12 | }
13 |
14 | }
15 |
16 | dependencies {
17 | compile "com.android.support:recyclerview-v7:23.3.0"
18 | }
19 |
20 | //apply from: 'gradle-maven-push.gradle'
21 |
22 | //afterEvaluate {
23 | // androidJavadocs.classpath += project.android.libraryVariants.toList().first().javaCompile.classpath
24 | //}
25 |
--------------------------------------------------------------------------------
/sticky-head-library/gradle-maven-push.gradle:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright 2013 Chris Banes
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 | apply plugin: 'maven'
18 | apply plugin: 'signing'
19 |
20 | def isReleaseBuild() {
21 | return VERSION_NAME.contains("SNAPSHOT") == false
22 | }
23 |
24 | def getReleaseRepositoryUrl() {
25 | return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL
26 | : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
27 | }
28 |
29 | def getSnapshotRepositoryUrl() {
30 | return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL
31 | : "https://oss.sonatype.org/content/repositories/snapshots/"
32 | }
33 |
34 | def getRepositoryUsername() {
35 | return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : ""
36 | }
37 |
38 | def getRepositoryPassword() {
39 | return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : ""
40 | }
41 |
42 | afterEvaluate { project ->
43 | uploadArchives {
44 | repositories {
45 | mavenDeployer {
46 | beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
47 |
48 | pom.groupId = GROUP
49 | pom.artifactId = POM_ARTIFACT_ID
50 | pom.version = VERSION_NAME
51 |
52 | repository(url: getReleaseRepositoryUrl()) {
53 | authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
54 | }
55 | snapshotRepository(url: getSnapshotRepositoryUrl()) {
56 | authentication(userName: getRepositoryUsername(), password: getRepositoryPassword())
57 | }
58 |
59 | pom.project {
60 | name POM_NAME
61 | packaging POM_PACKAGING
62 | description POM_DESCRIPTION
63 | url POM_URL
64 |
65 | scm {
66 | url POM_SCM_URL
67 | connection POM_SCM_CONNECTION
68 | developerConnection POM_SCM_DEV_CONNECTION
69 | }
70 |
71 | licenses {
72 | license {
73 | name POM_LICENCE_NAME
74 | url POM_LICENCE_URL
75 | distribution POM_LICENCE_DIST
76 | }
77 | }
78 |
79 | developers {
80 | developer {
81 | id POM_DEVELOPER_ID
82 | name POM_DEVELOPER_NAME
83 | }
84 | }
85 | }
86 | }
87 | }
88 | }
89 |
90 | signing {
91 | required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
92 | sign configurations.archives
93 | }
94 |
95 | task androidJavadocs(type: Javadoc) {
96 | source = android.sourceSets.main.java.srcDirs
97 | classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
98 | }
99 |
100 | task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
101 | classifier = 'javadoc'
102 | from androidJavadocs.destinationDir
103 | }
104 |
105 | task androidSourcesJar(type: Jar) {
106 | classifier = 'sources'
107 | from android.sourceSets.main.java.sourceFiles
108 | }
109 |
110 | artifacts {
111 | archives androidSourcesJar
112 | archives androidJavadocsJar
113 | }
114 | }
--------------------------------------------------------------------------------
/sticky-head-library/gradle.properties:
--------------------------------------------------------------------------------
1 | POM_NAME=Sticky Headers RecyclerView
2 | POM_ARTIFACT_ID=library
3 | POM_PACKAGING=jar
--------------------------------------------------------------------------------
/sticky-head-library/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 /Applications/Android Studio.app/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 |
--------------------------------------------------------------------------------
/sticky-head-library/src/androidTest/java/com/timehop/stickyheadersrecyclerview/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview;
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 | }
--------------------------------------------------------------------------------
/sticky-head-library/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/ItemVisibilityAdapter.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview;
2 |
3 | /**
4 | * ItemVisibilityAdapter provides a way for StickyRecyclerHeadersDecoration
5 | * to know if a row is visible or not. This comes into play if the
6 | * recyclerview's layout manager is set up to provide extra layout space (by
7 | * overriding getExtraLayoutSpace). In this case rows that aren't visible (yet)
8 | * will be bound and StickyRecyclerHeadersDecoration will need to know which
9 | * are visible to correctly calculate the row to base the sticky header on
10 | *
11 | * To use it you must pass an instance of a class that implements this
12 | * interface as a second argment StickyRecyclerHeadersDecoration's constructor.
13 | *
14 | */
15 | public interface ItemVisibilityAdapter {
16 |
17 | /**
18 | *
19 | * Return true the specified adapter position is visible, false otherwise
20 | *
21 | * The implementation of this method will typically return true if
22 | * the position is between the layout manager's findFirstVisibleItemPosition
23 | * and findLastVisibleItemPosition (inclusive).
24 | *
25 | * @param position the adapter position
26 | */
27 | boolean isPositionVisible(final int position);
28 | }
29 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/StickyRecyclerHeadersAdapter.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.ViewGroup;
5 |
6 | public interface StickyRecyclerHeadersAdapter {
7 | /**
8 | * Get the ID of the header associated with this item. For example, if your headers group
9 | * items by their first letter, you could return the character representation of the first letter.
10 | * Return a value < 0 if the view should not have a header (like, a header view or footer view)
11 | *
12 | * @param position the position of the view to get the header ID of
13 | * @return the header ID
14 | */
15 | long getHeaderId(int position);
16 |
17 | /**
18 | * Creates a new ViewHolder for a header. This works the same way onCreateViewHolder in
19 | * Recycler.Adapter, ViewHolders can be reused for different views. This is usually a good place
20 | * to inflate the layout for the header.
21 | *
22 | * @param parent the view to create a header view holder for
23 | * @return the view holder
24 | */
25 | VH onCreateHeaderViewHolder(ViewGroup parent);
26 |
27 | /**
28 | * Binds an existing ViewHolder to the specified adapter position.
29 | *
30 | * @param holder the view holder
31 | * @param position the adapter position
32 | */
33 | void onBindHeaderViewHolder(VH holder, int position);
34 |
35 | /**
36 | * @return the number of views in the adapter
37 | */
38 | int getItemCount();
39 | }
40 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/StickyRecyclerHeadersTouchListener.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.GestureDetector;
5 | import android.view.MotionEvent;
6 | import android.view.SoundEffectConstants;
7 | import android.view.View;
8 |
9 | public class StickyRecyclerHeadersTouchListener implements RecyclerView.OnItemTouchListener {
10 | private final GestureDetector mTapDetector;
11 | private final RecyclerView mRecyclerView;
12 | private final StickyRecyclerHeadersDecoration mDecor;
13 | private OnHeaderClickListener mOnHeaderClickListener;
14 |
15 | public interface OnHeaderClickListener {
16 | void onHeaderClick(View header, int position, long headerId);
17 | }
18 |
19 | public StickyRecyclerHeadersTouchListener(final RecyclerView recyclerView,
20 | final StickyRecyclerHeadersDecoration decor) {
21 | mTapDetector = new GestureDetector(recyclerView.getContext(), new SingleTapDetector());
22 | mRecyclerView = recyclerView;
23 | mDecor = decor;
24 | }
25 |
26 | public StickyRecyclerHeadersAdapter getAdapter() {
27 | if (mRecyclerView.getAdapter() instanceof StickyRecyclerHeadersAdapter) {
28 | return (StickyRecyclerHeadersAdapter) mRecyclerView.getAdapter();
29 | } else {
30 | throw new IllegalStateException("A RecyclerView with " +
31 | StickyRecyclerHeadersTouchListener.class.getSimpleName() +
32 | " requires a " + StickyRecyclerHeadersAdapter.class.getSimpleName());
33 | }
34 | }
35 |
36 |
37 | public void setOnHeaderClickListener(OnHeaderClickListener listener) {
38 | mOnHeaderClickListener = listener;
39 | }
40 |
41 | @Override
42 | public boolean onInterceptTouchEvent(RecyclerView view, MotionEvent e) {
43 | if (this.mOnHeaderClickListener != null) {
44 | boolean tapDetectorResponse = this.mTapDetector.onTouchEvent(e);
45 | if (tapDetectorResponse) {
46 | // Don't return false if a single tap is detected
47 | return true;
48 | }
49 | if (e.getAction() == MotionEvent.ACTION_DOWN) {
50 | int position = mDecor.findHeaderPositionUnder((int)e.getX(), (int)e.getY());
51 | return position != -1;
52 | }
53 | }
54 | return false;
55 | }
56 |
57 | @Override
58 | public void onTouchEvent(RecyclerView view, MotionEvent e) { /* do nothing? */ }
59 |
60 | @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
61 | // do nothing
62 | }
63 |
64 | private class SingleTapDetector extends GestureDetector.SimpleOnGestureListener {
65 | @Override
66 | public boolean onSingleTapUp(MotionEvent e) {
67 | int position = mDecor.findHeaderPositionUnder((int) e.getX(), (int) e.getY());
68 | if (position != -1) {
69 | View headerView = mDecor.getHeaderView(mRecyclerView, position);
70 | long headerId = getAdapter().getHeaderId(position);
71 | mOnHeaderClickListener.onHeaderClick(headerView, position, headerId);
72 | mRecyclerView.playSoundEffect(SoundEffectConstants.CLICK);
73 | headerView.onTouchEvent(e);
74 | return true;
75 | }
76 | return false;
77 | }
78 |
79 | @Override
80 | public boolean onDoubleTap(MotionEvent e) {
81 | return true;
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/caching/HeaderProvider.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview.caching;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 |
6 | /**
7 | * Implemented by objects that provide header views for decoration
8 | */
9 | public interface HeaderProvider {
10 |
11 | /**
12 | * Will provide a header view for a given position in the RecyclerView
13 | *
14 | * @param recyclerView that will display the header
15 | * @param position that will be headed by the header
16 | * @return a header view for the given position and list
17 | */
18 | public View getHeader(RecyclerView recyclerView, int position);
19 |
20 | /**
21 | * TODO: describe this functionality and its necessity
22 | */
23 | void invalidate();
24 | }
25 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/caching/HeaderViewCache.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview.caching;
2 |
3 | import android.support.v4.util.LongSparseArray;
4 | import android.support.v7.widget.LinearLayoutManager;
5 | import android.support.v7.widget.RecyclerView;
6 | import android.view.View;
7 | import android.view.ViewGroup;
8 |
9 | import com.timehop.stickyheadersrecyclerview.StickyRecyclerHeadersAdapter;
10 | import com.timehop.stickyheadersrecyclerview.util.OrientationProvider;
11 |
12 | /**
13 | * An implementation of {@link HeaderProvider} that creates and caches header views
14 | */
15 | public class HeaderViewCache implements HeaderProvider {
16 |
17 | private final StickyRecyclerHeadersAdapter mAdapter;
18 | private final LongSparseArray mHeaderViews = new LongSparseArray<>();
19 | private final OrientationProvider mOrientationProvider;
20 |
21 | public HeaderViewCache(StickyRecyclerHeadersAdapter adapter,
22 | OrientationProvider orientationProvider) {
23 | mAdapter = adapter;
24 | mOrientationProvider = orientationProvider;
25 | }
26 |
27 | @Override
28 | public View getHeader(RecyclerView parent, int position) {
29 | long headerId = mAdapter.getHeaderId(position);
30 |
31 | View header = mHeaderViews.get(headerId);
32 | if (header == null) {
33 | //TODO - recycle views
34 | RecyclerView.ViewHolder viewHolder = mAdapter.onCreateHeaderViewHolder(parent);
35 | mAdapter.onBindHeaderViewHolder(viewHolder, position);
36 | header = viewHolder.itemView;
37 | if (header.getLayoutParams() == null) {
38 | header.setLayoutParams(new ViewGroup.LayoutParams(
39 | ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
40 | }
41 |
42 | int widthSpec;
43 | int heightSpec;
44 |
45 | if (mOrientationProvider.getOrientation(parent) == LinearLayoutManager.VERTICAL) {
46 | widthSpec = View.MeasureSpec.makeMeasureSpec(parent.getWidth(), View.MeasureSpec.EXACTLY);
47 | heightSpec = View.MeasureSpec.makeMeasureSpec(parent.getHeight(), View.MeasureSpec.UNSPECIFIED);
48 | } else {
49 | widthSpec = View.MeasureSpec.makeMeasureSpec(parent.getWidth(), View.MeasureSpec.UNSPECIFIED);
50 | heightSpec = View.MeasureSpec.makeMeasureSpec(parent.getHeight(), View.MeasureSpec.EXACTLY);
51 | }
52 |
53 | int childWidth = ViewGroup.getChildMeasureSpec(widthSpec,
54 | parent.getPaddingLeft() + parent.getPaddingRight(), header.getLayoutParams().width);
55 | int childHeight = ViewGroup.getChildMeasureSpec(heightSpec,
56 | parent.getPaddingTop() + parent.getPaddingBottom(), header.getLayoutParams().height);
57 | header.measure(childWidth, childHeight);
58 | header.layout(0, 0, header.getMeasuredWidth(), header.getMeasuredHeight());
59 | mHeaderViews.put(headerId, header);
60 | }
61 | return header;
62 | }
63 |
64 | @Override
65 | public void invalidate() {
66 | mHeaderViews.clear();
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/calculation/DimensionCalculator.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview.calculation;
2 |
3 | import android.graphics.Rect;
4 | import android.view.View;
5 |
6 | import static android.view.ViewGroup.LayoutParams;
7 | import static android.view.ViewGroup.MarginLayoutParams;
8 |
9 | /**
10 | * Helper to calculate various view dimensions
11 | */
12 | public class DimensionCalculator {
13 |
14 | /**
15 | * Populates {@link Rect} with margins for any view.
16 | *
17 | *
18 | * @param margins rect to populate
19 | * @param view for which to get margins
20 | */
21 | public void initMargins(Rect margins, View view) {
22 | LayoutParams layoutParams = view.getLayoutParams();
23 |
24 | if (layoutParams instanceof MarginLayoutParams) {
25 | MarginLayoutParams marginLayoutParams = (MarginLayoutParams) layoutParams;
26 | initMarginRect(margins, marginLayoutParams);
27 | } else {
28 | margins.set(0, 0, 0, 0);
29 | }
30 | }
31 |
32 | /**
33 | * Converts {@link MarginLayoutParams} into a representative {@link Rect}.
34 | *
35 | * @param marginRect Rect to be initialized with margins coordinates, where
36 | * {@link MarginLayoutParams#leftMargin} is equivalent to {@link Rect#left}, etc.
37 | * @param marginLayoutParams margins to populate the Rect with
38 | */
39 | private void initMarginRect(Rect marginRect, MarginLayoutParams marginLayoutParams) {
40 | marginRect.set(
41 | marginLayoutParams.leftMargin,
42 | marginLayoutParams.topMargin,
43 | marginLayoutParams.rightMargin,
44 | marginLayoutParams.bottomMargin
45 | );
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/rendering/HeaderRenderer.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview.rendering;
2 |
3 | import android.graphics.Canvas;
4 | import android.graphics.Rect;
5 | import android.support.v7.widget.RecyclerView;
6 | import android.view.View;
7 | import android.widget.LinearLayout;
8 |
9 | import com.timehop.stickyheadersrecyclerview.calculation.DimensionCalculator;
10 | import com.timehop.stickyheadersrecyclerview.util.OrientationProvider;
11 |
12 | /**
13 | * Responsible for drawing headers to the canvas provided by the item decoration
14 | */
15 | public class HeaderRenderer {
16 |
17 | private final DimensionCalculator mDimensionCalculator;
18 | private final OrientationProvider mOrientationProvider;
19 |
20 | /**
21 | * The following field is used as a buffer for internal calculations. Its sole purpose is to avoid
22 | * allocating new Rect every time we need one.
23 | */
24 | private final Rect mTempRect = new Rect();
25 |
26 | public HeaderRenderer(OrientationProvider orientationProvider) {
27 | this(orientationProvider, new DimensionCalculator());
28 | }
29 |
30 | private HeaderRenderer(OrientationProvider orientationProvider,
31 | DimensionCalculator dimensionCalculator) {
32 | mOrientationProvider = orientationProvider;
33 | mDimensionCalculator = dimensionCalculator;
34 | }
35 |
36 | /**
37 | * Draws a header to a canvas, offsetting by some x and y amount
38 | *
39 | * @param recyclerView the parent recycler view for drawing the header into
40 | * @param canvas the canvas on which to draw the header
41 | * @param header the view to draw as the header
42 | * @param offset a Rect used to define the x/y offset of the header. Specify x/y offset by setting
43 | * the {@link Rect#left} and {@link Rect#top} properties, respectively.
44 | */
45 | public void drawHeader(RecyclerView recyclerView, Canvas canvas, View header, Rect offset) {
46 | canvas.save();
47 |
48 | if (recyclerView.getLayoutManager().getClipToPadding()) {
49 | // Clip drawing of headers to the padding of the RecyclerView. Avoids drawing in the padding
50 | initClipRectForHeader(mTempRect, recyclerView, header);
51 | canvas.clipRect(mTempRect);
52 | }
53 |
54 | canvas.translate(offset.left, offset.top);
55 |
56 | header.draw(canvas);
57 | canvas.restore();
58 | }
59 |
60 | /**
61 | * Initializes a clipping rect for the header based on the margins of the header and the padding of the
62 | * recycler.
63 | * FIXME: Currently right margin in VERTICAL orientation and bottom margin in HORIZONTAL
64 | * orientation are clipped so they look accurate, but the headers are not being drawn at the
65 | * correctly smaller width and height respectively.
66 | *
67 | * @param clipRect {@link Rect} for clipping a provided header to the padding of a recycler view
68 | * @param recyclerView for which to provide a header
69 | * @param header for clipping
70 | */
71 | private void initClipRectForHeader(Rect clipRect, RecyclerView recyclerView, View header) {
72 | mDimensionCalculator.initMargins(clipRect, header);
73 | if (mOrientationProvider.getOrientation(recyclerView) == LinearLayout.VERTICAL) {
74 | clipRect.set(
75 | recyclerView.getPaddingLeft(),
76 | recyclerView.getPaddingTop(),
77 | recyclerView.getWidth() - recyclerView.getPaddingRight() - clipRect.right,
78 | recyclerView.getHeight() - recyclerView.getPaddingBottom());
79 | } else {
80 | clipRect.set(
81 | recyclerView.getPaddingLeft(),
82 | recyclerView.getPaddingTop(),
83 | recyclerView.getWidth() - recyclerView.getPaddingRight(),
84 | recyclerView.getHeight() - recyclerView.getPaddingBottom() - clipRect.bottom);
85 | }
86 | }
87 |
88 | }
89 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/util/LinearLayoutOrientationProvider.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview.util;
2 |
3 | import android.support.v7.widget.LinearLayoutManager;
4 | import android.support.v7.widget.RecyclerView;
5 |
6 | /**
7 | * OrientationProvider for ReyclerViews who use a LinearLayoutManager
8 | */
9 | public class LinearLayoutOrientationProvider implements OrientationProvider {
10 |
11 | @Override
12 | public int getOrientation(RecyclerView recyclerView) {
13 | RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
14 | throwIfNotLinearLayoutManager(layoutManager);
15 | return ((LinearLayoutManager) layoutManager).getOrientation();
16 | }
17 |
18 | @Override
19 | public boolean isReverseLayout(RecyclerView recyclerView) {
20 | RecyclerView.LayoutManager layoutManager = recyclerView.getLayoutManager();
21 | throwIfNotLinearLayoutManager(layoutManager);
22 | return ((LinearLayoutManager) layoutManager).getReverseLayout();
23 | }
24 |
25 | private void throwIfNotLinearLayoutManager(RecyclerView.LayoutManager layoutManager){
26 | if (!(layoutManager instanceof LinearLayoutManager)) {
27 | throw new IllegalStateException("StickyListHeadersDecoration can only be used with a " +
28 | "LinearLayoutManager.");
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/sticky-head-library/src/main/java/com/timehop/stickyheadersrecyclerview/util/OrientationProvider.java:
--------------------------------------------------------------------------------
1 | package com.timehop.stickyheadersrecyclerview.util;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 |
5 | /**
6 | * Interface for getting the orientation of a RecyclerView from its LayoutManager
7 | */
8 | public interface OrientationProvider {
9 |
10 | public int getOrientation(RecyclerView recyclerView);
11 |
12 | public boolean isReverseLayout(RecyclerView recyclerView);
13 | }
14 |
--------------------------------------------------------------------------------