Showing preview only (874K chars total). Download the full file or copy to clipboard to get everything.
Repository: monkeywiiu/Discover
Branch: master
Commit: 7835a194633b
Files: 303
Total size: 770.0 KB
Directory structure:
gitextract_y2efyqy7/
├── .gitignore
├── .idea/
│ ├── compiler.xml
│ ├── copyright/
│ │ └── profiles_settings.xml
│ ├── inspectionProfiles/
│ │ └── Project_Default.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── runConfigurations.xml
│ └── vcs.xml
├── LICENSE
├── README.md
├── app/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── discover/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── assets/
│ │ │ └── litepal.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── discover/
│ │ │ ├── AuthorHomeActivity.java
│ │ │ ├── MainActivity.java
│ │ │ ├── ResultActivity.java
│ │ │ ├── SearchActivity.java
│ │ │ ├── TestActivity.java
│ │ │ ├── VideoDetailActivity.java
│ │ │ ├── ViewBigImageActivity.java
│ │ │ ├── adapter/
│ │ │ │ ├── AuthorPopAdapter.java
│ │ │ │ ├── CategoryPopAdapter.java
│ │ │ │ ├── FollowRecyclerAdapter.java
│ │ │ │ ├── ItemHelper.java
│ │ │ │ ├── LabelChooseAdapter.java
│ │ │ │ ├── LikeVideoRecyclerAdapter.java
│ │ │ │ ├── MyFragmentPagerAdapter.java
│ │ │ │ ├── PopReplyAdapter.java
│ │ │ │ ├── ReplyAdapter.java
│ │ │ │ ├── ResultAdapter.java
│ │ │ │ ├── SearchRecyclerAdapter.java
│ │ │ │ ├── SearchTagAdapter.java
│ │ │ │ ├── SelectTypeRecyclerAdapter.java
│ │ │ │ ├── VideoRecyclerAdapter.java
│ │ │ │ └── WelfareAdapter.java
│ │ │ ├── app/
│ │ │ │ ├── Constant.java
│ │ │ │ └── DiscoverApplication.java
│ │ │ ├── base/
│ │ │ │ ├── BaseFragment.java
│ │ │ │ └── baseadapter/
│ │ │ │ ├── BaseRecyclerAdapter.java
│ │ │ │ ├── BaseViewHolder.java
│ │ │ │ ├── OnItemClickListener.java
│ │ │ │ └── OnItemLongClickListener.java
│ │ │ ├── bean/
│ │ │ │ ├── AuthorDetailBean.java
│ │ │ │ ├── DetailBean/
│ │ │ │ │ ├── ACacheFindList.java
│ │ │ │ │ ├── Author.java
│ │ │ │ │ ├── CategoryInfo.java
│ │ │ │ │ ├── Cover.java
│ │ │ │ │ ├── Data.java
│ │ │ │ │ ├── FindCategory.java
│ │ │ │ │ ├── Footer.java
│ │ │ │ │ ├── Header.java
│ │ │ │ │ ├── ItemList.java
│ │ │ │ │ ├── PlayInfo.java
│ │ │ │ │ ├── Replies.java
│ │ │ │ │ ├── ReplyList.java
│ │ │ │ │ ├── SectionList.java
│ │ │ │ │ ├── Tags.java
│ │ │ │ │ ├── UrlList.java
│ │ │ │ │ ├── User.java
│ │ │ │ │ └── WebUrl.java
│ │ │ │ ├── GankBean.java
│ │ │ │ ├── HotEyeBean.java
│ │ │ │ ├── LitePalBean/
│ │ │ │ │ ├── Follow.java
│ │ │ │ │ ├── LabelType.java
│ │ │ │ │ ├── LikeVideo.java
│ │ │ │ │ └── SearchTag.java
│ │ │ │ ├── ResultBean.java
│ │ │ │ └── TestBean.java
│ │ │ ├── http/
│ │ │ │ ├── HttpClient.java
│ │ │ │ ├── RequestListener.java
│ │ │ │ └── cahe/
│ │ │ │ └── ACache.java
│ │ │ ├── model/
│ │ │ │ ├── AuthorVideoModel.java
│ │ │ │ ├── GankModel.java
│ │ │ │ ├── HotVideoModel.java
│ │ │ │ ├── ReplyModel.java
│ │ │ │ └── SearchModel.java
│ │ │ ├── ui/
│ │ │ │ ├── DiscoverFragment.java
│ │ │ │ ├── Personal/
│ │ │ │ │ ├── PersonalFragment.java
│ │ │ │ │ └── child/
│ │ │ │ │ ├── FollowFragment.java
│ │ │ │ │ └── LikeFragment.java
│ │ │ │ ├── RecyclerViewNoBugLinearLayoutManager.java
│ │ │ │ ├── Search/
│ │ │ │ │ ├── Author/
│ │ │ │ │ │ └── ItemFragment.java
│ │ │ │ │ └── SearchFragment.java
│ │ │ │ ├── Video/
│ │ │ │ │ └── VideoFragment.java
│ │ │ │ └── Welfare/
│ │ │ │ └── WelFareFragment.java
│ │ │ ├── utils/
│ │ │ │ ├── BindingUtil.java
│ │ │ │ ├── DebugUtil.java
│ │ │ │ ├── DensityUtil.java
│ │ │ │ ├── IntentManager.java
│ │ │ │ ├── LitePalUtil.java
│ │ │ │ ├── ShareUtil.java
│ │ │ │ └── TimeUtils.java
│ │ │ └── view/
│ │ │ ├── CustomView/
│ │ │ │ ├── CategoryPopupWindow.java
│ │ │ │ ├── CircleImageView.java
│ │ │ │ ├── DragFrameLayout.java
│ │ │ │ ├── FollowPopupWindow.java
│ │ │ │ ├── HackyViewPager.java
│ │ │ │ ├── LabelView.java
│ │ │ │ └── ReplyPopupWindow.java
│ │ │ └── test.java
│ │ └── res/
│ │ ├── anim/
│ │ │ ├── fade_in_bottom.xml
│ │ │ ├── fade_in_lt.xml
│ │ │ ├── fade_in_rt.xml
│ │ │ ├── fade_out_lb.xml
│ │ │ ├── fade_out_rb.xml
│ │ │ └── fade_out_top.xml
│ │ ├── drawable/
│ │ │ ├── bg_save_big_image.xml
│ │ │ ├── corner_view.xml
│ │ │ ├── ic_arrow_back_white_24px.xml
│ │ │ ├── ic_clear_black_24px.xml
│ │ │ ├── ic_heart_full_24dp_pink.xml
│ │ │ ├── ic_heart_hollow_24dp.xml
│ │ │ ├── item_figure.xml
│ │ │ ├── item_home.xml
│ │ │ ├── item_search.xml
│ │ │ └── item_smile.xml
│ │ ├── layout/
│ │ │ ├── activity_author_home.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_result.xml
│ │ │ ├── activity_search.xml
│ │ │ ├── activity_test.xml
│ │ │ ├── activity_video_detail.xml
│ │ │ ├── activity_view_big_image.xml
│ │ │ ├── author_card.xml
│ │ │ ├── bottom_bar.xml
│ │ │ ├── category_card.xml
│ │ │ ├── category_popup_window.xml
│ │ │ ├── follow_popup.xml
│ │ │ ├── footer_item_video.xml
│ │ │ ├── fragment_base.xml
│ │ │ ├── fragment_discover.xml
│ │ │ ├── fragment_follow.xml
│ │ │ ├── fragment_personal.xml
│ │ │ ├── fragment_personal_like.xml
│ │ │ ├── fragment_search.xml
│ │ │ ├── fragment_video.xml
│ │ │ ├── fragment_welfare.xml
│ │ │ ├── item_follow.xml
│ │ │ ├── item_movie_detail_header.xml
│ │ │ ├── item_reply.xml
│ │ │ ├── item_welfare.xml
│ │ │ ├── label_view.xml
│ │ │ ├── like_video_card.xml
│ │ │ ├── null_layout.xml
│ │ │ ├── recommend_author.xml
│ │ │ ├── recommend_category.xml
│ │ │ ├── reply_popup_window.xml
│ │ │ ├── search_tag.xml
│ │ │ ├── select_label_view.xml
│ │ │ ├── tag_header_new.xml
│ │ │ ├── tag_header_reco.xml
│ │ │ ├── test.xml
│ │ │ ├── test_cardview.xml
│ │ │ ├── video_card.xml
│ │ │ └── viewpager_very_image.xml
│ │ ├── values/
│ │ │ ├── attrs.xml
│ │ │ ├── colors.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ └── values-v21/
│ │ ├── dimens.xml
│ │ └── styles.xml
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── discover/
│ └── ExampleUnitTest.java
├── build.gradle
├── gradle/
│ └── wrapper/
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── librarys/
│ ├── http/
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── http/
│ │ │ └── ExampleInstrumentedTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── com/
│ │ │ │ └── example/
│ │ │ │ └── http/
│ │ │ │ └── HttpUtils.java
│ │ │ └── res/
│ │ │ └── values/
│ │ │ └── strings.xml
│ │ └── test/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── http/
│ │ └── ExampleUnitTest.java
│ ├── jiaozivideoplayer/
│ │ ├── .idea/
│ │ │ ├── compiler.xml
│ │ │ ├── copyright/
│ │ │ │ └── profiles_settings.xml
│ │ │ ├── gradle.xml
│ │ │ ├── misc.xml
│ │ │ ├── modules.xml
│ │ │ ├── runConfigurations.xml
│ │ │ └── workspace.xml
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── cn/
│ │ │ └── jzvd/
│ │ │ └── ApplicationTest.java
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── java/
│ │ │ │ └── cn/
│ │ │ │ └── jzvd/
│ │ │ │ ├── JZMediaInterface.java
│ │ │ │ ├── JZMediaManager.java
│ │ │ │ ├── JZMediaSystem.java
│ │ │ │ ├── JZResizeTextureView.java
│ │ │ │ ├── JZUserAction.java
│ │ │ │ ├── JZUserActionStandard.java
│ │ │ │ ├── JZUtils.java
│ │ │ │ ├── JZVideoPlayer.java
│ │ │ │ ├── JZVideoPlayerManager.java
│ │ │ │ └── JZVideoPlayerStandard.java
│ │ │ └── res/
│ │ │ ├── anim/
│ │ │ │ ├── quit_fullscreen.xml
│ │ │ │ └── start_fullscreen.xml
│ │ │ ├── drawable/
│ │ │ │ ├── jz_bottom_progress.xml
│ │ │ │ ├── jz_bottom_seek_progress.xml
│ │ │ │ ├── jz_bottom_seek_thumb.xml
│ │ │ │ ├── jz_click_back_selector.xml
│ │ │ │ ├── jz_click_back_tiny_selector.xml
│ │ │ │ ├── jz_click_pause_selector.xml
│ │ │ │ ├── jz_click_play_selector.xml
│ │ │ │ ├── jz_click_replay_selector.xml
│ │ │ │ ├── jz_click_share_selector.xml
│ │ │ │ ├── jz_dialog_progress.xml
│ │ │ │ ├── jz_dialog_progress_bg.xml
│ │ │ │ ├── jz_loading.xml
│ │ │ │ ├── jz_seek_thumb_normal.xml
│ │ │ │ ├── jz_seek_thumb_pressed.xml
│ │ │ │ ├── jz_volume_progress_bg.xml
│ │ │ │ └── retry_bg.xml
│ │ │ ├── layout/
│ │ │ │ ├── jz_dialog_brightness.xml
│ │ │ │ ├── jz_dialog_progress.xml
│ │ │ │ ├── jz_dialog_volume.xml
│ │ │ │ ├── jz_layout_clarity.xml
│ │ │ │ ├── jz_layout_clarity_item.xml
│ │ │ │ └── jz_layout_standard.xml
│ │ │ ├── values/
│ │ │ │ ├── colors.xml
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── ids.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── values-es/
│ │ │ │ └── strings.xml
│ │ │ ├── values-pt/
│ │ │ │ └── strings.xml
│ │ │ ├── values-tr/
│ │ │ │ └── strings.xml
│ │ │ └── values-zh/
│ │ │ └── strings.xml
│ │ └── test/
│ │ └── java/
│ │ └── cn/
│ │ └── jzvd/
│ │ └── ExampleUnitTest.java
│ ├── xrecyclerview/
│ │ ├── .gitignore
│ │ ├── build.gradle
│ │ ├── proguard-rules.pro
│ │ └── src/
│ │ ├── androidTest/
│ │ │ └── java/
│ │ │ └── com/
│ │ │ └── jcodecraeer/
│ │ │ └── xrecyclerview/
│ │ │ └── ApplicationTest.java
│ │ └── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── jcodecraeer/
│ │ │ └── xrecyclerview/
│ │ │ ├── AppBarStateChangeListener.java
│ │ │ ├── ArrowRefreshHeader.java
│ │ │ ├── BaseRefreshHeader.java
│ │ │ ├── CustomFooterViewCallBack.java
│ │ │ ├── ItemTouchHelperAdapter.java
│ │ │ ├── JellyView.java
│ │ │ ├── LoadingMoreFooter.java
│ │ │ ├── ProgressStyle.java
│ │ │ ├── SimpleItemTouchHelperCallback.java
│ │ │ ├── SimpleViewSwitcher.java
│ │ │ ├── XRecyclerView.java
│ │ │ └── progressindicator/
│ │ │ ├── AVLoadingIndicatorView.java
│ │ │ └── indicator/
│ │ │ ├── BallBeatIndicator.java
│ │ │ ├── BallClipRotateIndicator.java
│ │ │ ├── BallClipRotateMultipleIndicator.java
│ │ │ ├── BallClipRotatePulseIndicator.java
│ │ │ ├── BallGridBeatIndicator.java
│ │ │ ├── BallGridPulseIndicator.java
│ │ │ ├── BallPulseIndicator.java
│ │ │ ├── BallPulseRiseIndicator.java
│ │ │ ├── BallPulseSyncIndicator.java
│ │ │ ├── BallRotateIndicator.java
│ │ │ ├── BallScaleIndicator.java
│ │ │ ├── BallScaleMultipleIndicator.java
│ │ │ ├── BallScaleRippleIndicator.java
│ │ │ ├── BallScaleRippleMultipleIndicator.java
│ │ │ ├── BallSpinFadeLoaderIndicator.java
│ │ │ ├── BallTrianglePathIndicator.java
│ │ │ ├── BallZigZagDeflectIndicator.java
│ │ │ ├── BallZigZagIndicator.java
│ │ │ ├── BaseIndicatorController.java
│ │ │ ├── CubeTransitionIndicator.java
│ │ │ ├── LineScaleIndicator.java
│ │ │ ├── LineScalePartyIndicator.java
│ │ │ ├── LineScalePulseOutIndicator.java
│ │ │ ├── LineScalePulseOutRapidIndicator.java
│ │ │ ├── LineSpinFadeLoaderIndicator.java
│ │ │ ├── PacmanIndicator.java
│ │ │ ├── SemiCircleSpinIndicator.java
│ │ │ ├── SquareSpinIndicator.java
│ │ │ └── TriangleSkewSpinIndicator.java
│ │ └── res/
│ │ ├── drawable/
│ │ │ └── progressloading.xml
│ │ ├── drawable-hdpi/
│ │ │ └── progressbar.xml
│ │ ├── layout/
│ │ │ ├── listview_footer.xml
│ │ │ ├── listview_header.xml
│ │ │ └── pull_to_refresh_head.xml
│ │ ├── values/
│ │ │ ├── attrs.xml
│ │ │ ├── dimens.xml
│ │ │ └── strings.xml
│ │ └── values-zh/
│ │ └── strings.xml
│ └── zmenu/
│ ├── .gitignore
│ ├── build.gradle
│ ├── proguard-rules.pro
│ └── src/
│ ├── androidTest/
│ │ └── java/
│ │ └── com/
│ │ └── example/
│ │ └── zmenu/
│ │ └── ExampleInstrumentedTest.java
│ ├── main/
│ │ ├── AndroidManifest.xml
│ │ ├── java/
│ │ │ └── com/
│ │ │ └── example/
│ │ │ └── zmenu/
│ │ │ ├── FloatButton.java
│ │ │ ├── PUtils.java
│ │ │ ├── SnakeButtonLayout.java
│ │ │ └── ViewController.java
│ │ └── res/
│ │ └── values/
│ │ ├── colors.xml
│ │ └── strings.xml
│ └── test/
│ └── java/
│ └── com/
│ └── example/
│ └── zmenu/
│ └── ExampleUnitTest.java
└── settings.gradle
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
# Built application files
*.apk
*.ap_
# Files for the ART/Dalvik VM
*.dex
# Java class files
*.class
# Generated files
bin/
gen/
out/
# Gradle files
.gradle/
build/
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# Intellij
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/dictionaries
.idea/libraries
# Keystore files
*.jks
# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
# Google Services (e.g. APIs or Firebase)
google-services.json
# Freeline
freeline.py
freeline/
freeline_project_description.json
================================================
FILE: .idea/compiler.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<resourceExtensions />
<wildcardResourcePatterns>
<entry name="!?*.java" />
<entry name="!?*.form" />
<entry name="!?*.class" />
<entry name="!?*.groovy" />
<entry name="!?*.scala" />
<entry name="!?*.flex" />
<entry name="!?*.kt" />
<entry name="!?*.clj" />
<entry name="!?*.aj" />
</wildcardResourcePatterns>
<annotationProcessing>
<profile default="true" name="Default" enabled="false">
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
</project>
================================================
FILE: .idea/copyright/profiles_settings.xml
================================================
<component name="CopyrightManager">
<settings default="" />
</component>
================================================
FILE: .idea/inspectionProfiles/Project_Default.xml
================================================
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
<option name="TOP_LEVEL_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="INNER_CLASS_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="METHOD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
</value>
</option>
<option name="FIELD_OPTIONS">
<value>
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
<option name="REQUIRED_TAGS" value="" />
</value>
</option>
<option name="IGNORE_DEPRECATED" value="false" />
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
<option name="myAdditionalJavadocTags" value="parma" />
</inspection_tool>
</profile>
</component>
================================================
FILE: .idea/misc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="android.support.annotation.Nullable" />
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
<option name="myNullables">
<value>
<list size="4">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="4">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
</list>
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>1.8</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>
================================================
FILE: .idea/modules.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Discover.iml" filepath="$PROJECT_DIR$/Discover.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
<module fileurl="file://$PROJECT_DIR$/librarys/http/http.iml" filepath="$PROJECT_DIR$/librarys/http/http.iml" />
<module fileurl="file://$PROJECT_DIR$/librarys/jiaozivideoplayer/jiaozivideoplayer.iml" filepath="$PROJECT_DIR$/librarys/jiaozivideoplayer/jiaozivideoplayer.iml" />
<module fileurl="file://$PROJECT_DIR$/librarys/librarys.iml" filepath="$PROJECT_DIR$/librarys/librarys.iml" />
<module fileurl="file://$PROJECT_DIR$/librarys/xrecyclerview/xrecyclerview.iml" filepath="$PROJECT_DIR$/librarys/xrecyclerview/xrecyclerview.iml" />
<module fileurl="file://$PROJECT_DIR$/librarys/zmenu/zmenu.iml" filepath="$PROJECT_DIR$/librarys/zmenu/zmenu.iml" />
</modules>
</component>
</project>
================================================
FILE: .idea/runConfigurations.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
<option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
</set>
</option>
</component>
</project>
================================================
FILE: .idea/vcs.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: README.md
================================================
# Discover
一款模仿Tumblr UI,使用开眼api开发的符合Material Desgin阅读类的开源项目。项目采取的是MVVM-DataBinding + Rxjava2 + Retrofit架构开发。
# 截图
<img src="screenshot/1.gif" width="160" height="300"><img src="screenshot/2.gif" width="160" height="300"><img src="screenshot/3.gif" width="160" height="300">
# Thanks
[JiaoZiVideoPlayer](https://github.com/lipangit/JiaoZiVideoPlayer)
[开眼视频](http://www.kaiyanapp.com/)
# 声明
大部分api 数据都是来自开眼视频,数据接口均属于非正常渠道获取,请勿用于商业用途,原作公司拥有所有权利。
================================================
FILE: app/.gitignore
================================================
/build
================================================
FILE: app/build.gradle
================================================
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
defaultConfig {
applicationId "com.example.discover"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
renderscriptTargetApi 19
renderscriptSupportModeEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile project(':librarys:http')
compile project(':librarys:jiaozivideoplayer')
compile project(':librarys:xrecyclerview')
compile project(':librarys:zmenu')
compile 'com.android.support:appcompat-v7:26.1.0'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'org.litepal.android:core:1.6.1'
compile 'com.android.support:cardview-v7:26.1.0'
compile 'com.trello.rxlifecycle2:rxlifecycle:2.2.1'
compile 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.1'
compile 'com.jakewharton.rxbinding2:rxbinding-design:2.0.0'
compile 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0'
compile 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0'
compile 'com.jakewharton.rxbinding2:rxbinding-recyclerview-v7:2.0.0'
compile 'com.github.mmin18:realtimeblurview:1.1.0'
compile 'com.wang.avi:library:2.1.3'
compile 'com.hyman:flowlayout-lib:1.1.2'
testCompile 'junit:junit:4.12'
implementation 'com.github.chrisbanes:PhotoView:2.1.3'
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'
}
================================================
FILE: app/proguard-rules.pro
================================================
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in G:\Android\sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here:
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
================================================
FILE: app/src/androidTest/java/com/example/discover/ExampleInstrumentedTest.java
================================================
package com.example.discover;
import android.content.Context;
import android.support.test.InstrumentationRegistry;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
/**
* Instrumentation test, which will execute on an Android device.
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("com.example.discover", appContext.getPackageName());
}
}
================================================
FILE: app/src/main/AndroidManifest.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.discover">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<application
android:name=".app.DiscoverApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".TestActivity"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".AuthorHomeActivity"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".SearchActivity"
android:theme="@style/LightTheme" />
<activity
android:name=".ResultActivity"
android:theme="@style/LightTheme" />
<activity android:name=".VideoDetailActivity"
android:configChanges="orientation|screenSize|keyboardHidden"/>
<activity android:name=".ViewBigImageActivity"
android:screenOrientation="portrait"/>
</application>
</manifest>
================================================
FILE: app/src/main/assets/litepal.xml
================================================
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--
Define the database name of your application.
By default each database name should be end with .db.
If you didn't name your database end with .db,
LitePal would plus the suffix automatically for you.
For example:
<dbname value="demo" />
-->
<dbname value="Collection" />
<!--
Define the version of your database. Each time you want
to upgrade your database, the verstags tag would helps.
Modify the models you defined in the mapptags tag, and just
make the version value plus one, the upgrade of database
will be processed automatically without concern.
For example:
<version value="1" />
-->
<version value="9" />
<!--
Define your models in the list with mapptags tag, LitePal will
create tables for each mapping class. The supported fields
defined in models will be mapped into columns.
For example:
<list>
<mapping class="com.test.model.Reader" />
<mapping class="com.test.model.Magazine" />
</list>
-->
<list>
<mapping class="com.example.discover.bean.LitePalBean.LikeVideo"/>
<mapping class="com.example.discover.bean.LitePalBean.LabelType"/>
<mapping class="com.example.discover.bean.LitePalBean.Follow"/>
<mapping class="com.example.discover.bean.LitePalBean.SearchTag"/>
</list>
<!--
Define where the .db file should be. "internal" means the .db file
will be stored in the database folder of internal storage which no
one can access. "external" means the .db file will be stored in the
path to the directory on the primary external storage device where
the application can place persistent files it owns which everyone
can access. "internal" will act as default.
For example:
<storage value="external" />
-->
</litepal>
================================================
FILE: app/src/main/java/com/example/discover/AuthorHomeActivity.java
================================================
package com.example.discover;
import android.databinding.DataBindingUtil;
import android.graphics.Color;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.example.discover.adapter.MyFragmentPagerAdapter;
import com.example.discover.databinding.ActivityAuthorHomeBinding;
import com.example.discover.ui.DiscoverFragment;
import com.example.discover.ui.Search.Author.ItemFragment;
import com.example.discover.utils.DebugUtil;
import com.example.discover.utils.LitePalUtil;
import com.jakewharton.rxbinding2.view.RxView;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import cn.jzvd.JZVideoPlayer;
import io.reactivex.functions.Consumer;
public class AuthorHomeActivity extends AppCompatActivity {
private ActivityAuthorHomeBinding binding;
private int authorId;
private List<android.support.v4.app.Fragment> fragmentList;
private List<String> titleList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = DataBindingUtil.setContentView(this, R.layout.activity_author_home);
init();
initFragmentList();
loadViewPager();
}
private void init() {
authorId = getIntent().getIntExtra("AuthorId", 0);
boolean isFollowing = getIntent().getBooleanExtra("Following", false);
final String authorName = getIntent().getStringExtra("AuthorName");
final String authorDesc = getIntent().getStringExtra("AuthorDesc");
final String authorIcon = getIntent().getStringExtra("AuthorIcon");
final String authorBack = getIntent().getStringExtra("AuthorBack");
final int color = getIntent().getIntExtra("Color", 0);
//填充基本数据
binding.tvName.setText(authorName);
binding.toolbarId.setText(authorName);
binding.tvDesc.setText(authorDesc);
Glide.with(this).load(authorIcon).into(binding.ivHead);
Glide.with(this).load(authorBack).into(binding.ivBackground);
binding.blurView.setOverlayColor(color);
binding.tabItem.setBackgroundColor(color);
binding.supView.setBackgroundColor(color);
binding.ivHead.setBorderColor(color);
binding.llText.setBackgroundColor(color);
if (isFollowing) {
binding.attention.setVisibility(View.GONE);
}
//渐变
binding.appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
DebugUtil.debug("appbartest",appBarLayout.getY() + "//" + appBarLayout.getTotalScrollRange() + "//" + verticalOffset);
float offsetAlpha = (appBarLayout.getY() / appBarLayout.getTotalScrollRange());
binding.blurView.setAlpha( 2 * (offsetAlpha * -1));
binding.ivHead.setAlpha(1 - 3 * (offsetAlpha * - 1));
}
});
//点击事件
binding.ivBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
RxView.clicks(binding.attention)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
//点击关注
binding.attention.setVisibility(View.GONE);
LitePalUtil.addToFollow(authorId, authorName, authorDesc, authorIcon, color, authorBack);
Toast.makeText(AuthorHomeActivity.this, "你关注了作者", Toast.LENGTH_SHORT).show();
//待完善
}
});
}
private void initFragmentList() {
fragmentList = new ArrayList<>();
fragmentList.add(ItemFragment.newInstance("date", authorId)); //按日期排序
fragmentList.add(ItemFragment.newInstance("shareCount", authorId)); //按时间排序
titleList = new ArrayList<>();
titleList.add("按时间");
titleList.add("按热度");
}
private void loadViewPager() {
MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList, titleList);
binding.vpContent.setAdapter(adapter);
binding.vpContent.setOffscreenPageLimit(2);
binding.tabItem.setTabMode(TabLayout.MODE_FIXED);
binding.tabItem.setupWithViewPager(binding.vpContent);
}
@Override
protected void onDestroy() {
JZVideoPlayer.releaseAllVideos();
super.onDestroy();
}
@Override
public void onBackPressed() {
//全屏播放时退出全屏
if (JZVideoPlayer.backPress()) {
return;
}
System.gc();
super.onBackPressed();
}
}
================================================
FILE: app/src/main/java/com/example/discover/MainActivity.java
================================================
package com.example.discover;
import android.databinding.DataBindingUtil;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.design.widget.Snackbar;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.discover.adapter.MyFragmentPagerAdapter;
import com.example.discover.databinding.ActivityMainBinding;
import com.example.discover.ui.DiscoverFragment;
import com.example.discover.ui.Personal.PersonalFragment;
import com.example.discover.ui.Search.SearchFragment;
import com.example.discover.ui.Video.VideoFragment;
import com.example.discover.ui.Welfare.WelFareFragment;
import com.example.zmenu.PUtils;
import com.example.zmenu.SnakeButtonLayout;
import com.jakewharton.rxbinding2.view.RxView;
import org.litepal.tablemanager.Connector;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import cn.jzvd.JZVideoPlayer;
import io.reactivex.functions.Consumer;
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding mBinding;
private ViewPager mViewPager;
private ImageView mBottomItem1, mBottomItem2, mBottomItem3, mBottomItem4;
private List<Fragment> fragmentList;
private List<Integer> imageList;//XMenu的图片
private List<Integer> colorList;//XMenu的颜色
private static boolean isExit = false;
private static Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message message) {
isExit = false;
return true;
}
});
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//初始化XMenu(自己做的一个自定义控件 https://github.com/monkeywiiu/Xmenu)
initXMenu();
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
initBinding();
initFragmentList();
loadViewPager();
initBottomBar();
//创建litepal数据库
Connector.getDatabase();
}
public void initXMenu(){
initXMenuResource();
//设置图片和颜色
if (imageList != null && colorList != null){
PUtils.getInstance().setImagesAndColors(imageList, colorList);
}
//设置xMenu可见
PUtils.getInstance().setVisible(true);
//设置悬浮按钮的margin
PUtils.getInstance().setMargin((int) getResources().getDimension(R.dimen.xMenuMarginRight),
(int) getResources().getDimension(R.dimen.xMenuMarginBottom));
}
public void initXMenuResource() {
imageList = new ArrayList<>();
colorList = new ArrayList<>();
imageList.add(R.drawable.image1);
imageList.add(R.drawable.image2);
imageList.add(R.drawable.image3);
imageList.add(R.drawable.image4);
imageList.add(R.drawable.image5);
imageList.add(R.drawable.image6);
colorList.add(R.color.background1);
colorList.add(R.color.background2);
colorList.add(R.color.background3);
colorList.add(R.color.background4);
colorList.add(R.color.background5);
colorList.add(R.color.background6);
}
public void initBinding() {
mViewPager = mBinding.mainViewpager;
mBottomItem1 = mBinding.bottomBar.one;
mBottomItem2 = mBinding.bottomBar.two;
mBottomItem3 = mBinding.bottomBar.three;
mBottomItem4 = mBinding.bottomBar.four;
mBinding.snakeButton.setClickable(true);
mBinding.snakeButton.setOnTopViewClickListener(new SnakeButtonLayout.onTopViewClickListener() {
@Override
public void onclick() {
Toast.makeText(MainActivity.this, "click", Toast.LENGTH_SHORT).show();
}
});
}
public void initFragmentList() {
fragmentList = new ArrayList<>();
fragmentList.add(new VideoFragment()); //开眼视频页面
fragmentList.add(new SearchFragment());
fragmentList.add(new WelFareFragment());
fragmentList.add(new PersonalFragment());
}
public void loadViewPager(){
MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList);
mViewPager.setAdapter(adapter);
mViewPager.setOffscreenPageLimit(3);
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
if (position == 0) {
mBottomItem1.setSelected(true);
mBottomItem2.setSelected(false);
mBottomItem3.setSelected(false);
mBottomItem4.setSelected(false);
} else if (position == 1) {
mBottomItem2.setSelected(true);
mBottomItem1.setSelected(false);
mBottomItem3.setSelected(false);
mBottomItem4.setSelected(false);
} else if (position == 2) {
mBottomItem3.setSelected(true);
mBottomItem1.setSelected(false);
mBottomItem2.setSelected(false);
mBottomItem4.setSelected(false);
} else if (position == 3) {
mBottomItem4.setSelected(true);
mBottomItem1.setSelected(false);
mBottomItem2.setSelected(false);
mBottomItem3.setSelected(false);
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
public void initBottomBar() {
//设置bottom点击选中事件
mBottomItem1.setSelected(true);
mBottomItem1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomItem1.setSelected(true);
mBottomItem2.setSelected(false);
mBottomItem3.setSelected(false);
mBottomItem4.setSelected(false);
mViewPager.setCurrentItem(0);
}
});
mBottomItem2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomItem2.setSelected(true);
mBottomItem1.setSelected(false);
mBottomItem3.setSelected(false);
mBottomItem4.setSelected(false);
mViewPager.setCurrentItem(1);
}
});
mBottomItem3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomItem3.setSelected(true);
mBottomItem1.setSelected(false);
mBottomItem2.setSelected(false);
mBottomItem4.setSelected(false);
mViewPager.setCurrentItem(2);
}
});
mBottomItem4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mBottomItem4.setSelected(true);
mBottomItem1.setSelected(false);
mBottomItem2.setSelected(false);
mBottomItem3.setSelected(false);
mViewPager.setCurrentItem(3);
}
});
}
@Override
public void onBackPressed() {
//全屏播放时退出全屏
if (JZVideoPlayer.backPress()) {
return;
}
super.onBackPressed();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
if (!JZVideoPlayer.backPress()) {
exit();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
//双击退出
private void exit() {
if (!isExit) {
isExit = true;
Snackbar snackbar = Snackbar.make(mViewPager, "再按一次后退键退出程序", Snackbar.LENGTH_SHORT);
snackbar.getView().setBackgroundResource(R.color.colorAccent);
snackbar.show();
// 利用handler延迟发送更改状态信息
mHandler.sendEmptyMessageDelayed(0, 2000);
} else {
this.finish();
}
}
}
================================================
FILE: app/src/main/java/com/example/discover/ResultActivity.java
================================================
package com.example.discover;
import android.content.Intent;
import android.os.Handler;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.util.Pair;
import android.view.MenuItem;
import android.widget.ImageButton;
import android.widget.TextView;
import com.example.discover.adapter.ResultAdapter;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.bean.ResultBean;
import com.example.discover.http.RequestListener;
import com.example.discover.model.SearchModel;
import com.example.discover.utils.DebugUtil;
import com.jakewharton.rxbinding2.support.v7.widget.RxRecyclerView;
import com.jakewharton.rxbinding2.view.RxView;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.functions.Consumer;
public class ResultActivity extends RxAppCompatActivity {
private String keyword;
private int start = 1;
private boolean loading = false;
private ResultAdapter adapter;
private List<ItemList> resultList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
keyword = getIntent().getStringExtra(SearchActivity.KEYWORD);
init();
initRecyclerView();
showResult();
}
public void init() {
//设置toolbar
Toolbar toolbar = findViewById(R.id.toolbar);
TextView titleView = findViewById(R.id.title);
setSupportActionBar(toolbar);
ActionBar ab = getSupportActionBar();
if (ab != null)
ab.setDisplayHomeAsUpEnabled(true);
titleView.setText(keyword);
ImageButton searchBtn = findViewById(R.id.search_btn);
RxView.clicks(searchBtn)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
Intent intent = new Intent(ResultActivity.this, SearchActivity.class);
startActivity(intent);
}
});
}
public void initRecyclerView() {
RecyclerView resultRecyclerView = findViewById(R.id.rv_result);
final LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
resultRecyclerView.setLayoutManager(layoutManager);
adapter = new ResultAdapter(this, resultList);
resultRecyclerView.setAdapter(adapter);
//上拉加载
resultRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int lastVisibleItem = layoutManager.findLastVisibleItemPosition();
int totalItemCount = layoutManager.getItemCount();
DebugUtil.debug("resultTest", lastVisibleItem + " " + totalItemCount);
if (lastVisibleItem == totalItemCount - 5 && !loading) {
loading = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
showResult();
}
}, 1000);
}
}
});
}
public void showResult() {
SearchModel.showResult(this, keyword, start, new RequestListener() {
@Override
public void onSuccess(Object object) {
ResultBean resultBean = (ResultBean) object;
DebugUtil.debug("resultTest", "size" + resultBean.getItemList().size() +"start" +start);
resultList.addAll(resultBean.getItemList());
adapter.notifyDataSetChanged();
loading = false;
start += resultBean.getItemList().size();
}
@Override
public void onFailed(Throwable t) {
DebugUtil.debug("resultsss", "" + "failed");
}
@Override
public void onCompleted() {
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
}
================================================
FILE: app/src/main/java/com/example/discover/SearchActivity.java
================================================
package com.example.discover;
import android.content.Intent;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
import com.example.discover.adapter.SearchTagAdapter;
import com.example.discover.bean.DetailBean.Data;
import com.example.discover.bean.LitePalBean.SearchTag;
import com.example.discover.http.RequestListener;
import com.example.discover.model.SearchModel;
import com.example.discover.utils.DebugUtil;
import com.jakewharton.rxbinding2.view.RxView;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import org.litepal.crud.DataSupport;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.functions.Consumer;
public class SearchActivity extends RxAppCompatActivity {
public static String KEYWORD = "keyword";
private RecyclerView mTagRecyclerView;
private EditText searchEdit;
private SearchTagAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
initRecyclerView();
init();
loadTrendingTag();
onKeyListener();
}
private void init() {
List<String> tagList = new ArrayList<>();
searchEdit = findViewById(R.id.search_edit);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
ActionBar ab = getSupportActionBar();
if (ab != null)
ab.setDisplayHomeAsUpEnabled(true);
ImageButton clearButton = findViewById(R.id.clear_btn);
final EditText searchEdit = findViewById(R.id.search_edit);
RxView.clicks(clearButton)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
searchEdit.setText("");
}
});
//获取5个最新的搜索记录;
if (DataSupport.count(SearchTag.class) > 0) {
tagList.add("new");
List<SearchTag> list = DataSupport.limit(5).order("id desc").find(SearchTag.class);
if (list != null) {
for (SearchTag tag : list) {
tagList.add(tag.getTag());
}
//只保留5个tag
DataSupport.deleteAll(SearchTag.class);
for (int i = tagList.size() - 1; i > 0; i--) {
SearchTag searchTag = new SearchTag();
searchTag.setTag(tagList.get(i));
searchTag.save();
}
}
}
setAdapter(tagList);
}
private void initRecyclerView() {
LinearLayoutManager manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mTagRecyclerView = findViewById(R.id.rv_hot_tag);
mTagRecyclerView.setLayoutManager(manager);
}
private void setAdapter(List<String> list) {
adapter = new SearchTagAdapter(this);
DebugUtil.debug("trend", list.size() + "");
adapter.setItemClickListener(new SearchTagAdapter.onItemClickListener() {
@Override
public void onItemClick(String s) {
toResultActivity(s);
}
});
mTagRecyclerView.setAdapter(adapter);
adapter.addAll(list);
adapter.notifyDataSetChanged();
}
private void loadTrendingTag() {
SearchModel.showTrendingTag(this, new RequestListener() {
@Override
public void onSuccess(Object object) {
List<String> list = (List<String>) object;
List<String> tagList2 = new ArrayList<>();
tagList2.add("recommend");
tagList2.addAll(list);
adapter.addAll(tagList2);
adapter.notifyDataSetChanged();
}
@Override
public void onFailed(Throwable t) {
t.printStackTrace();
DebugUtil.debug("trend", "failed");
}
@Override
public void onCompleted() {
}
});
}
private void onKeyListener() {
searchEdit.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() != KeyEvent.ACTION_DOWN) return true;
if (keyCode == KeyEvent.KEYCODE_ENTER) {
if (searchEdit.getText().toString().isEmpty()) {
Toast.makeText(SearchActivity.this, "搜索不能为空", Toast.LENGTH_SHORT).show();
} else {
search(searchEdit.getText().toString());
}
} else if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
}
return false;
}
});
}
private void search(String key) {
DataSupport.deleteAll(SearchTag.class, "tag = ?", key);
SearchTag tag = new SearchTag();
tag.setTag(key);
tag.save();
toResultActivity(key);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home) {
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
public void toResultActivity(String key) {
Intent intent = new Intent(this, ResultActivity.class);
intent.putExtra(KEYWORD, key);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
}
================================================
FILE: app/src/main/java/com/example/discover/TestActivity.java
================================================
package com.example.discover;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
/**
* Created by monkeyWiiu on 2018/1/8.
*/
public class TestActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
}
}
================================================
FILE: app/src/main/java/com/example/discover/VideoDetailActivity.java
================================================
package com.example.discover;
import android.databinding.DataBindingUtil;
import android.os.Handler;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import com.bumptech.glide.Glide;
import com.example.discover.adapter.ReplyAdapter;
import com.example.discover.app.Constant;
import com.example.discover.app.DiscoverApplication;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.bean.DetailBean.Replies;
import com.example.discover.bean.DetailBean.ReplyList;
import com.example.discover.databinding.ItemMovieDetailHeaderBinding;
import com.example.discover.http.RequestListener;
import com.example.discover.model.ReplyModel;
import com.example.discover.utils.DebugUtil;
import com.example.discover.utils.IntentManager;
import com.example.discover.utils.LitePalUtil;
import com.jakewharton.rxbinding2.view.RxView;
import com.squareup.leakcanary.RefWatcher;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import cn.jzvd.JZVideoPlayer;
import cn.jzvd.JZVideoPlayerStandard;
import io.reactivex.functions.Consumer;
public class VideoDetailActivity extends RxAppCompatActivity {
private ItemList item;
private ItemMovieDetailHeaderBinding headerBinding;
private ReplyAdapter replyAdapter;
private LinearLayoutManager linearLayoutManager;
private List<ReplyList> replyLists = new ArrayList<>();
private boolean firstRequest = true;
private boolean loading = false;
private int lastSequence;
private RecyclerView replies;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video_detail);
init();
initJZPlayer();
loadReply();
}
public void init() {
item = (ItemList) getIntent().getSerializableExtra("item");
replies = findViewById(R.id.rv_replies);
linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false);
replies.setLayoutManager(linearLayoutManager);
View view =DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.item_movie_detail_header, replies, false).getRoot();
headerBinding = DataBindingUtil.getBinding(view);
headerBinding.setItem(item);
RxView.clicks(headerBinding.authorContent)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
JZVideoPlayer.releaseAllVideos();
IntentManager.fromDetailtoAuthor(headerBinding.authorContent.getContext(), item);
}
});
replyAdapter = new ReplyAdapter(replyLists, view);
replies.setAdapter(replyAdapter);
//上拉加载
replies.setOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
int totalItemCount = linearLayoutManager.getItemCount();
if (lastVisibleItem == totalItemCount - 5 && !loading) {
loading = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
loadReply();
}
}, 1000);
}
}
});
//点击收藏
headerBinding.collect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (item.getTag() == null) {
headerBinding.collect.setImageDrawable(getResources().getDrawable(R.drawable.ic_heart_full_24dp_pink));
//入库
LitePalUtil.addVideoToFavor(item.getData().getId(), item.getData().getTitle(), item.getData().getDescription(),
item.getData().getPlayUrl(), item.getData().getCover().getDetail(),item.getData().getAuthor().getName(),
item.getData().getAuthor().getId(),item.getData().getAuthor().getIcon(),item.getData().getAuthor().getDescription(),
(int) Constant.LabelMap.get(item.getData().getCategory()), item.getData().getCategory(), 0);
item.setTag("true");
} else if ("true".equals(item.getTag())){
headerBinding.collect.setImageDrawable(getResources().getDrawable(R.drawable.ic_heart_hollow_24dp));
//出库
LitePalUtil.deleteVideoFromFavor(item.getData().getId());
item.setTag(null);
}
}
});
}
public void initJZPlayer() {
JZVideoPlayerStandard videoPlayerStandard = findViewById(R.id.jz_player);
Glide.with(this).load(item.getData().getCover().getDetail())
.crossFade(800)
.placeholder(R.drawable.cross_image)
.error(R.drawable.cross_image)
.into(videoPlayerStandard.thumbImageView);
videoPlayerStandard.setUp(item.getData().getPlayUrl(), JZVideoPlayer.SCREEN_WINDOW_NORMAL, "");
videoPlayerStandard.backButton.setVisibility(View.VISIBLE);
videoPlayerStandard.backButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
public void loadReply() {
ReplyModel.showReplies(this, firstRequest, lastSequence, item.getData().getId(), new RequestListener() {
@Override
public void onSuccess(Object object) {
Replies reply = (Replies) object;
DebugUtil.debug("replylistss", reply.getReplyList().size() + "");
if (reply.getReplyList().size() > 0) {
replyLists.addAll(reply.getReplyList());
replyAdapter.notifyDataSetChanged();
lastSequence = reply.getReplyList().get(reply.getReplyList().size() - 1).getSequence();
firstRequest = false;
loading =false;
}
}
@Override
public void onFailed(Throwable t) {
}
@Override
public void onCompleted() {
}
});
}
@Override
protected void onDestroy() {
DebugUtil.debug("desss", "1");
//
setContentView(R.layout.null_layout);
RefWatcher refWatcher = DiscoverApplication.getRefWatcher(this);
refWatcher.watch(this);
super.onDestroy();
}
@Override
public void onBackPressed() {
//全屏播放时退出全屏
if (JZVideoPlayer.backPress()) {
return;
}
toFinish();
super.onBackPressed();
}
public void toFinish() {
DebugUtil.debug("ffff", "111");
replyLists = null;
replyAdapter = null;
System.gc();
}
}
================================================
FILE: app/src/main/java/com/example/discover/ViewBigImageActivity.java
================================================
package com.example.discover;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.FutureTarget;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.example.discover.utils.DebugUtil;
import com.github.chrisbanes.photoview.OnOutsidePhotoTapListener;
import com.github.chrisbanes.photoview.OnPhotoTapListener;
import com.github.chrisbanes.photoview.PhotoView;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.ExecutionException;
/**
* 查看大图,拖拽退出
* Created by monkeyWiiu on 2018/2/3.
*/
public class ViewBigImageActivity extends FragmentActivity implements OnPageChangeListener, OnPhotoTapListener, OnOutsidePhotoTapListener {
private static String[] PERMISSIONS_STORAGE = {
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE" };
// 保存图片
private TextView tv_save_big_image;
// 接收传过来的uri地址
List<String> imageuri;
// 接收穿过来当前选择的图片的数量
int code;
// 用于判断是头像还是文章图片 1:头像 2:文章大图
int selet;
// 用于管理图片的滑动
ViewPager very_image_viewpager;
// 当前页数
private int page;
/**
* 显示当前图片的页数
*/
TextView very_image_viewpager_text;
/**
* 用于判断是否是加载本地图片
*/
private boolean isLocal;
ViewPagerAdapter adapter;
/**
* 本应用图片的id
*/
private int imageId;
/**
* 是否是本应用中的图片
*/
private boolean isApp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_big_image);
verifyStoragePermissions(this);
getView();
}
public static void verifyStoragePermissions(Activity activity) {
try {
int permission = ActivityCompat.checkSelfPermission(activity, "android.permission.WRITE_EXTERNAL_STORAGE");
if (permission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, 1);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 保存图片至相册
*/
public static void saveImageToGallery(Context context, Bitmap bmp) {
// 首先保存图片
File appDir = new File(Environment.getExternalStorageDirectory(), "云阅相册");
if (!appDir.exists()) {
appDir.mkdirs();
}
String fileName = System.currentTimeMillis() + ".jpg";
File file = new File(appDir, fileName);
try {
FileOutputStream fos = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
// 其次把文件插入到系统图库
try {
MediaStore.Images.Media.insertImage(context.getContentResolver(),
file.getAbsolutePath(), fileName, null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 最后通知图库更新
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + file.getAbsoluteFile())));
}
/**
* Glide 获得图片缓存路径
*/
private String getImagePath(String imgUrl) {
String path = null;
FutureTarget<File> future = Glide.with(ViewBigImageActivity.this)
.load(imgUrl)
.downloadOnly(500, 500);
try {
File cacheFile = future.get();
path = cacheFile.getAbsolutePath();
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
return path;
}
/*
* 接收控件
*/
private void getView() {
/************************* 接收控件 ***********************/
very_image_viewpager_text = (TextView) findViewById(R.id.very_image_viewpager_text);
tv_save_big_image = (TextView) findViewById(R.id.tv_save_big_image);
very_image_viewpager = (ViewPager) findViewById(R.id.very_image_viewpager);
tv_save_big_image.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(ViewBigImageActivity.this, "开始下载图片", Toast.LENGTH_SHORT).show();
if (isApp) {// 本地图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), imageId);
if (bitmap != null) {
saveImageToGallery(ViewBigImageActivity.this, bitmap);
Toast.makeText(ViewBigImageActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
// Toast.makeText(ViewBigImageActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
}
} else {// 网络图片
final BitmapFactory.Options bmOptions = new BitmapFactory.Options();
new Thread(new Runnable() {
@Override
public void run() {
// 子线程获得图片路径
final String imagePath = getImagePath(imageuri.get(page));
Log.d("imagePathand", imagePath + ".." + imageuri.get(page));
// 主线程更新
ViewBigImageActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
if (imagePath != null) {
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, bmOptions);
if (bitmap != null) {
saveImageToGallery(ViewBigImageActivity.this, bitmap);
Toast.makeText(ViewBigImageActivity.this, "已保存至"+Environment.getExternalStorageDirectory().getAbsolutePath()+"/云阅相册", Toast.LENGTH_SHORT).show();
// Toast.makeText(ViewBigImageActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
}
}
}
});
}
}).start();
}
}
});
/************************* 接收传值 ***********************/
Bundle bundle = getIntent().getExtras();
code = bundle.getInt("code");
selet = bundle.getInt("selet");
isLocal = bundle.getBoolean("isLocal", false);
imageuri = bundle.getStringArrayList("imageuri");
/**是否是本应用中的图片*/
isApp = bundle.getBoolean("isApp", false);
/**本应用图片的id*/
imageId = bundle.getInt("id", 0);
/**
* 给viewpager设置适配器
*/
if (isApp) {
MyPageAdapter myPageAdapter = new MyPageAdapter();
very_image_viewpager.setAdapter(myPageAdapter);
very_image_viewpager.setEnabled(false);
} else {
adapter = new ViewPagerAdapter();
very_image_viewpager.setAdapter(adapter);
very_image_viewpager.setCurrentItem(code);
page = code;
very_image_viewpager.setOnPageChangeListener(this);
very_image_viewpager.setEnabled(false);
// 设定当前的页数和总页数
if (selet == 2) {
very_image_viewpager_text.setText((code + 1) + " / " + imageuri.size());
}
}
}
/**
* 本应用图片适配器
*/
class MyPageAdapter extends PagerAdapter {
@Override
public int getCount() {
return 1;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = getLayoutInflater().inflate(R.layout.viewpager_very_image, container, false);
PhotoView zoom_image_view = view.findViewById(R.id.zoom_image_view);
ProgressBar spinner = (ProgressBar) view.findViewById(R.id.loading);
spinner.setVisibility(View.GONE);
if (imageId != 0) {
zoom_image_view.setImageResource(imageId);
}
zoom_image_view.setOnPhotoTapListener(ViewBigImageActivity.this);
container.addView(view, 0);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = (View) object;
container.removeView(view);
}
}
/**
* ViewPager的适配器
*
* @author guolin
*/
class ViewPagerAdapter extends PagerAdapter {
LayoutInflater inflater;
ViewPagerAdapter() {
inflater = getLayoutInflater();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = inflater.inflate(R.layout.viewpager_very_image, container, false);
final PhotoView zoom_image_view = (PhotoView) view.findViewById(R.id.zoom_image_view);
final ProgressBar spinner = (ProgressBar) view.findViewById(R.id.loading);
// 保存网络图片的路径
String adapter_image_Entity = (String) getItem(position);
//TODO
String imageUrl;
if (isLocal) {
imageUrl = "file://" + adapter_image_Entity;
tv_save_big_image.setVisibility(View.GONE);
} else {
imageUrl = adapter_image_Entity;
}
spinner.setVisibility(View.VISIBLE);
spinner.setClickable(false);
Glide.with(ViewBigImageActivity.this).load(imageUrl)
.crossFade(700)
.listener(new RequestListener<String, GlideDrawable>() {
@Override
public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
Toast.makeText(getApplicationContext(), "资源加载异常", Toast.LENGTH_SHORT).show();
spinner.setVisibility(View.GONE);
return false;
}
//这个用于监听图片是否加载完成
@Override
public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
// Toast.makeText(getApplicationContext(), "图片加载完成", Toast.LENGTH_SHORT).show();
spinner.setVisibility(View.GONE);
/**这里应该是加载成功后图片的高*/
int height = zoom_image_view.getHeight();
int wHeight = getWindowManager().getDefaultDisplay().getHeight();
if (height > wHeight) {
zoom_image_view.setScaleType(ImageView.ScaleType.CENTER_CROP);
} else {
zoom_image_view.setScaleType(ImageView.ScaleType.FIT_CENTER);
}
return false;
}
}).into(zoom_image_view);
zoom_image_view.setOnPhotoTapListener(ViewBigImageActivity.this);
container.addView(view, 0);
return view;
}
@Override
public int getCount() {
if (imageuri == null || imageuri.size() == 0) {
return 0;
}
return imageuri.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
View view = (View) object;
container.removeView(view);
}
Object getItem(int position) {
return imageuri.get(position);
}
}
/**
* 下面是对Viewpager的监听
*/
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
/**
* 本方法主要监听viewpager滑动的时候的操作
*/
@Override
public void onPageSelected(int arg0) {
// 每当页数发生改变时重新设定一遍当前的页数和总页数
very_image_viewpager_text.setText((arg0 + 1) + " / " + imageuri.size());
page = arg0;
}
@Override
public void onPhotoTap(ImageView view, float x, float y) {
DebugUtil.debug("232323", "11");
onBackPressed();
}
@Override
public void onOutsidePhotoTap(ImageView imageView) {
}
@Override
public void onBackPressed() {
System.gc();
super.onBackPressed();
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/AuthorPopAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.ViewGroup;
import android.widget.Toast;
import com.example.discover.AuthorHomeActivity;
import com.example.discover.R;
import com.example.discover.app.Constant;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.databinding.AuthorCardBinding;
import com.example.discover.utils.IntentManager;
import com.jakewharton.rxbinding2.view.RxView;
import java.util.concurrent.TimeUnit;
import io.reactivex.functions.Consumer;
/**
* Created by monkeyWiiu on 2018/1/18.
*/
public class AuthorPopAdapter extends BaseRecyclerAdapter<ItemList> {
public AuthorPopAdapter(Context context) {
super(context);
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new AuthorCardHolder(parent, R.layout.author_card);
}
public class AuthorCardHolder extends BaseViewHolder<ItemList, AuthorCardBinding> {
public AuthorCardHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(final ItemList object, int position) {
RxView.clicks(itemViewBinding.cvEnter)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
//toAuthorHomeActivity(object);
IntentManager.toAuthorHomeActivity(mContext, object);
}
});
setBackGroundColor(itemViewBinding, object);
itemViewBinding.setItemList(object);
}
}
@Override
public int getItemCount() {
return mData.size();
}
public void setBackGroundColor(AuthorCardBinding binding, ItemList object) {
if (object.getData().getItemList().size() > 0) {
int color;
color = (Integer) Constant.LabelMap.get(object.getData().getItemList().get(0).getData().getCategory());
binding.cvAuthor.setCardBackgroundColor(color);
binding.cvImage.setCardBackgroundColor(color);
binding.civAvatar.setBorderColor(color);
}
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/CategoryPopAdapter.java
================================================
package com.example.discover.adapter;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.ActivityOptionsCompat;
import android.util.Pair;
import android.view.View;
import android.view.ViewGroup;
import com.example.discover.R;
import com.example.discover.VideoDetailActivity;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.databinding.CategoryCardBinding;
import com.example.discover.utils.IntentManager;
import com.jakewharton.rxbinding2.view.RxView;
import java.util.concurrent.TimeUnit;
import io.reactivex.functions.Consumer;
/**
* Created by monkeyWiiu on 2018/1/18.
*/
public class CategoryPopAdapter extends BaseRecyclerAdapter<ItemList> {
public CategoryPopAdapter(Context context ) {
super(context);
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new CateGoryCardHolder(parent, R.layout.category_card);
}
public class CateGoryCardHolder extends BaseViewHolder<ItemList, CategoryCardBinding> {
public CateGoryCardHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(final ItemList object, int position) {
//itemViewBinding.tvText.setText(object.getData().getTitle());
itemViewBinding.setItemList(object);
RxView.clicks(itemViewBinding.videoAlbum)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
IntentManager.toVideoDetailActivity((Activity) mContext, object, itemViewBinding.videoAlbum);
}
});
}
}
@Override
public int getItemCount() {
return mData.size();
}
/*private void toVideoDetailActivity(ItemList item, View view) {
Intent intent = new Intent(mContext, VideoDetailActivity.class);
intent.putExtra("item", item);
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(
mContext,
Pair.create(view, mContext.getString(R.string.transition_shot)),
Pair.create(view, mContext.getString(R.string.transition_shot_background))
);
mContext.startActivity(intent, options.toBundle());
}*/
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/FollowRecyclerAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import com.example.discover.AuthorHomeActivity;
import com.example.discover.R;
import com.example.discover.app.Constant;
import com.example.discover.base.BaseFragment;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.bean.LitePalBean.Follow;
import com.example.discover.databinding.FooterItemVideoBinding;
import com.example.discover.databinding.ItemFollowBinding;
import com.example.discover.utils.DebugUtil;
import com.example.discover.view.CustomView.FollowPopupWindow;
import org.litepal.crud.DataSupport;
/**
* Created by monkeyWiiu on 2018/1/26.
*/
public class FollowRecyclerAdapter extends BaseRecyclerAdapter<Follow> {
private final static int TYPE_CONTENT = 2;
private final static int TYPE_FOOTER = 3;
private FooterItemVideoBinding mFooterBinding;
private final static int LOAD_MORE = 1;
private final static int NO_MORE = 0;
private final static int STATE_NORMAL = -1;
private int mState = STATE_NORMAL;
public FollowRecyclerAdapter(Context context) {
super(context);
}
@Override
public int getItemViewType(int position) {
if (position + 1 == getItemCount()) {
return TYPE_FOOTER;
} else {
return TYPE_CONTENT;
}
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_CONTENT) {
return new FollowHolder(parent, R.layout.item_follow);
} else {
return new FooterHolder(parent, R.layout.footer_item_video);
}
}
public class FollowHolder extends BaseViewHolder<Follow, ItemFollowBinding> {
public FollowHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(final Follow object, final int position) {
itemViewBinding.setFollow(object);
itemViewBinding.selector.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FollowPopupWindow window = new FollowPopupWindow(v.getContext());
window.showPopupWindow(itemViewBinding.selector);
window.setPopItemClickListener(new FollowPopupWindow.PopItemClickListener() {
@Override
public void ItemClick() {
DataSupport.deleteAll(Follow.class, "authorId = ?", String.valueOf(object.getAuthorId()));
delete(position);
}
});
}
});
itemViewBinding.followItem.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
toAuthorHomeActivity(object);
}
});
}
}
private void toAuthorHomeActivity(Follow follow) {
Intent intent = new Intent(mContext, AuthorHomeActivity.class);
intent.putExtra("AuthorId", follow.getAuthorId());
intent.putExtra("AuthorName", follow.getAuthorName());
intent.putExtra("AuthorIcon", follow.getIconUrl());
intent.putExtra("AuthorDesc", follow.getAuthorDesc());
intent.putExtra("Color", follow.getBackgroundColor());
intent.putExtra("AuthorBack", follow.getBackgroundImage());
intent.putExtra("Following", true);
mContext.startActivity(intent);
}
public class FooterHolder extends BaseViewHolder<Object, FooterItemVideoBinding> {
public FooterHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(Object object, int position) {
mFooterBinding = itemViewBinding;
//itemViewBinding.loading.show();
}
}
public void updateStateLoad(boolean loading) {
if (loading) {
this.mState = LOAD_MORE;
}else {
this.mState = NO_MORE;
}
}
public boolean isLoading() {
if (this.mState == LOAD_MORE) {
return true;
} else
return false;
}
public void hideLoading() {
mFooterBinding.loading.hide();
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/ItemHelper.java
================================================
package com.example.discover.adapter;
/**
* Created by monkeyWiiu on 2018/1/14.
*/
public interface ItemHelper {
void onItemMove(int fromPosition, int toPosition);
void onItemDismiss(int position);
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/LabelChooseAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.discover.R;
import com.example.discover.app.Constant;
import com.example.discover.bean.LitePalBean.LabelType;
import com.example.discover.view.CustomView.LabelView;
import org.litepal.crud.DataSupport;
import org.w3c.dom.Text;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.zip.Inflater;
/**
* Created by monkeyWiiu on 2018/1/13.
*/
public class LabelChooseAdapter extends RecyclerView.Adapter<LabelChooseAdapter.MyViewHolder> {
private List<LabelType> savedList;
private HashMap mMap;
private List<String> mKeyList;
private Context mContext;
private ItemClickListener mListener;
public interface ItemClickListener {
void itemClick(String labelType);
}
public void setItemClickListener(ItemClickListener listener) {
this.mListener = listener;
}
public LabelChooseAdapter(List<String> list, HashMap map, Context context) {
this.mKeyList = list;
this.mMap = map;
this.mContext = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.label_view, parent, false);
MyViewHolder viewHolder = new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.labelView.setCardBackgroundColor((int)mMap.get(mKeyList.get(position)));
holder.textLabel.setText(mKeyList.get(position));
holder.labelView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
/*savedList = DataSupport.findAll(LabelType.class);
for (LabelType label : savedList) {
if (mKeyList.get(position).equals(label.getType())) {
return;
}
}
LabelType label = new LabelType();
label.setType(mKeyList.get(position));
label.save();*/
mListener.itemClick(mKeyList.get(position));
}
});
}
@Override
public int getItemCount() {
return mMap.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
private TextView textLabel;
private CardView labelView;
private MyViewHolder(View itemView) {
super(itemView);
textLabel = itemView.findViewById(R.id.tv_label);
labelView = itemView.findViewById(R.id.cv_choose_label);
}
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/LikeVideoRecyclerAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.example.discover.R;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.LitePalBean.LikeVideo;
import com.example.discover.databinding.FooterItemVideoBinding;
import com.example.discover.databinding.LikeVideoCardBinding;
import com.example.discover.utils.DebugUtil;
import com.example.discover.utils.IntentManager;
import com.example.discover.utils.ShareUtil;
import cn.jzvd.JZVideoPlayer;
/**
* Created by monkeyWiiu on 2018/1/5.
*/
public class LikeVideoRecyclerAdapter extends BaseRecyclerAdapter<LikeVideo> {
private final static int TYPE_CONTENT = 2;
private final static int TYPE_FOOTER = 3;
private final static int LOAD_MORE = 1;
private final static int NO_MORE = 0;
private final static int STATE_NORMAL = -1;
private int mState = STATE_NORMAL;
private FooterItemVideoBinding mFooterBinding;
public MyDeleteClickListener deleteListener;
public interface MyDeleteClickListener {
void onDelete(int position, int id);
}
public void setOnClickListener(MyDeleteClickListener listener){
this.deleteListener = listener;
}
public LikeVideoRecyclerAdapter(Context context) {
super(context);
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_CONTENT) {
return new LikeVideoHolder(parent, R.layout.like_video_card);
} else {
return new FooterHolder(parent, R.layout.footer_item_video);
}
}
@Override
public int getItemViewType(int position) {
if (position + 1 == getItemCount()) {
return TYPE_FOOTER;
} else {
return TYPE_CONTENT;
}
}
public class LikeVideoHolder extends BaseViewHolder<LikeVideo, LikeVideoCardBinding> {
public LikeVideoHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(LikeVideo likeVideo, int position) {
if (likeVideo != null) {
itemViewBinding.tvDesc.setText(likeVideo.getDescription());
itemViewBinding.jzVideoPlayer.setUp(likeVideo.getPlayUrl(), JZVideoPlayer.SCREEN_WINDOW_NORMAL, likeVideo.getTitle());
itemViewBinding.tvLabel.setText(likeVideo.getLabelText());
itemViewBinding.cvLabel.setCardBackgroundColor(likeVideo.getLabelColor());
Glide.with(mContext).load(likeVideo.getImageUrl())
.crossFade(800)
.placeholder(R.drawable.cross_image)
.error(R.drawable.cross_image)
.into(itemViewBinding.jzVideoPlayer.thumbImageView);
/*if (likeVideo.getSize() > 0) {
itemViewBinding.tvVideoSize.setText("视频大小" + likeVideo.getSize() + "MB");
}*/
Glide.with(mContext).load(likeVideo.getAuthorIcon())
.error(R.drawable.cross_image)
.into(itemViewBinding.headIcon);
}
//设置点击事件
setOnClick(itemViewBinding, likeVideo, position, likeVideo.getId());
}
}
public class FooterHolder extends BaseViewHolder<Object, FooterItemVideoBinding> {
public FooterHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(Object object, int position) {
mFooterBinding = itemViewBinding;
DebugUtil.debug("loading11", "yun");
//itemViewBinding.loading.show();
}
}
public void setOnClick(LikeVideoCardBinding binding, final LikeVideo likeVideo, final int position, final int videoId) {
//点击分享
final String shareText = likeVideo.getTitle() + likeVideo.getPlayUrl() + mContext.getString(R.string.share_from);
binding.ivShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ShareUtil.share(mContext, shareText);
}
});
//点击删除item
binding.ivClose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
deleteListener.onDelete(position, videoId);
}
});
//主页
binding.headIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
IntentManager.fromPersonalToAuthor(mContext, likeVideo);
}
});
//点击下载
}
public void updateStateLoad(boolean loading) {
if (loading) {
this.mState = LOAD_MORE;
}else {
this.mState = NO_MORE;
}
}
public boolean isLoading() {
if (this.mState == LOAD_MORE) {
return true;
} else
return false;
}
public void hideLoading() {
mFooterBinding.loading.hide();
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/MyFragmentPagerAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.List;
/**
* Created by Administrator on 2017/12/5 0005.
*/
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> mFragmentList;
private List<String> mTitleList;
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
mFragmentList = list;
}
public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list, List<String> titleList) {
super(fm);
mFragmentList = list;
mTitleList = titleList;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
if (mTitleList != null) {
return mTitleList.get(position);
} else
return "";
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/PopReplyAdapter.java
================================================
package com.example.discover.adapter;
import android.databinding.DataBindingUtil;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
import com.example.discover.R;
import com.example.discover.bean.DetailBean.ReplyList;
import com.example.discover.databinding.ItemReplyBinding;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/2/1.
*/
public class PopReplyAdapter extends RecyclerView.Adapter<PopReplyAdapter.Holder> {
private List<ReplyList> datas;
public PopReplyAdapter(List<ReplyList> datas) {
this.datas = datas;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
return new Holder(parent, R.layout.item_reply);
}
@Override
public void onBindViewHolder(Holder holder, int position) {
holder.replyBinding.setReply(datas.get(position));
holder.replyBinding.executePendingBindings();
}
@Override
public int getItemCount() {
return datas.size();
}
public class Holder extends RecyclerView.ViewHolder {
public ItemReplyBinding replyBinding;
public Holder(ViewGroup parent, int layoutId) {
super(DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),layoutId, parent, false).getRoot());
replyBinding = DataBindingUtil.getBinding(itemView);
}
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/ReplyAdapter.java
================================================
package com.example.discover.adapter;
import android.databinding.DataBindingUtil;
import android.support.v7.widget.RecyclerView;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.example.discover.R;
import com.example.discover.bean.DetailBean.ReplyList;
import com.example.discover.databinding.ItemReplyBinding;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/30.
*/
public class ReplyAdapter extends RecyclerView.Adapter {
private final static int HEADER = 0;
private final static int REPLY = 1;
private View description;
private List<ReplyList> datas;
public ReplyAdapter(List<ReplyList> data, View description) {
datas = data;
this.description = description;
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return HEADER;
} else
return REPLY;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
switch (viewType) {
case HEADER:
return new SimpleViewHolder(description);
case REPLY:
return new Holder(parent, R.layout.item_reply);
default:
return null;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if (getItemViewType(position) == REPLY) {
Holder replyHolder = (Holder)holder;
replyHolder.replyBinding.setReply(datas.get(position -1));
replyHolder.replyBinding.executePendingBindings();
}
}
@Override
public int getItemCount() {
int count = 1;
if (datas.size() > 0) count += datas.size();
return count;
}
public class Holder extends RecyclerView.ViewHolder {
public ItemReplyBinding replyBinding;
public Holder(ViewGroup parent, int layoutId) {
super(DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),layoutId, parent, false).getRoot());
replyBinding = DataBindingUtil.getBinding(itemView);
}
}
static class SimpleViewHolder extends RecyclerView.ViewHolder {
public SimpleViewHolder(View itemView) {
super(itemView);
}
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/ResultAdapter.java
================================================
package com.example.discover.adapter;
import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
import android.databinding.DataBindingUtil;
import android.support.v7.widget.RecyclerView;
import android.util.Pair;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.example.discover.R;
import com.example.discover.VideoDetailActivity;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.databinding.CategoryCardBinding;
import com.example.discover.utils.DebugUtil;
import com.example.discover.utils.DensityUtil;
import com.example.discover.utils.IntentManager;
import com.jakewharton.rxbinding2.view.RxView;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.zip.Inflater;
import io.reactivex.functions.Consumer;
/**
* Created by monkeyWiiu on 2018/1/29.
*/
public class ResultAdapter extends RecyclerView.Adapter<ResultAdapter.Holder> {
private List<ItemList> lists ;
private Activity mContext;
public ResultAdapter(Activity context, List<ItemList> lists) {
this.mContext = context;
this.lists = lists;
}
@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType) {
return new Holder(parent, R.layout.category_card);
}
@Override
public void onBindViewHolder(final Holder holder, final int position) {
holder.itemViewBinding.setItemList(lists.get(position));
//当数据改变时,binding会在下一帧去改变数据,如果我们需要立即改变,就去调用executePendingBindings方法。
holder.itemViewBinding.executePendingBindings();
RxView.clicks(holder.itemViewBinding.videoAlbum)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
IntentManager.toVideoDetailActivity(mContext, lists.get(position), holder.itemViewBinding.videoAlbum);
}
});
}
@Override
public int getItemCount() {
return lists.size();
}
public class Holder extends RecyclerView.ViewHolder {
private CategoryCardBinding itemViewBinding;
private Holder(ViewGroup parent, int layoutId) {
super(DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),layoutId, parent, false).getRoot());
itemViewBinding = DataBindingUtil.getBinding(itemView);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, DensityUtil.dip2px(200));
itemViewBinding.videoAlbum.setLayoutParams(layoutParams);
DebugUtil.debug("rerere", "bbb");
}
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/SearchRecyclerAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.view.ViewGroup;
import com.example.discover.R;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.bean.DetailBean.SectionList;
import com.example.discover.databinding.RecommendAuthorBinding;
import com.example.discover.databinding.RecommendCategoryBinding;
import com.example.discover.utils.DebugUtil;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/18.
*/
public class SearchRecyclerAdapter extends BaseRecyclerAdapter<Object> {
private static int TYPE_AUTHOR = 0;
private static int TYPE_CATEGORY = 1;
public SearchRecyclerAdapter(Context context) {
super(context);
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_AUTHOR) {
return new AuthorBindingHolder(parent, R.layout.recommend_author);
} else if (viewType == TYPE_CATEGORY) {
return new CategoryBindingHolder(parent, R.layout.recommend_category);
} else {
return null;
}
}
@Override
public int getItemViewType(int position) {
if (position == 0) {
return TYPE_AUTHOR;
} else {
return TYPE_CATEGORY;
}
}
public class AuthorBindingHolder extends BaseViewHolder<List<ItemList>, RecommendAuthorBinding>{
public AuthorBindingHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(List<ItemList> object, int position) {
DebugUtil.debug("objjt", object.size() + "");
itemViewBinding.setData(object);
}
}
public class CategoryBindingHolder extends BaseViewHolder<SectionList, RecommendCategoryBinding> {
private CategoryBindingHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(SectionList object, int position) {
if (object.getItemList().size() > 0) {
itemViewBinding.tvCategory.setText(object.getItemList().get(0).getData().getCategory());
}
itemViewBinding.setData(object.getItemList());
}
}
@Override
public int getItemCount() {
return mData.size();
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/SearchTagAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.example.discover.R;
import com.example.discover.ResultActivity;
import com.example.discover.SearchActivity;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.DetailBean.Data;
import com.example.discover.bean.LitePalBean.SearchTag;
import com.example.discover.databinding.SearchTagBinding;
import com.example.discover.databinding.TagHeaderNewBinding;
import com.example.discover.databinding.TagHeaderRecoBinding;
import com.example.discover.utils.DebugUtil;
import com.zhy.view.flowlayout.TagFlowLayout;
import org.litepal.crud.DataSupport;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/28.
*/
public class SearchTagAdapter extends BaseRecyclerAdapter<String> {
private static int HEADER_ONE = 0;
private static int HEADER_TWO = 1;
private static int TAG = 3;
private onItemClickListener itemClickListener;
public interface onItemClickListener {
void onItemClick(String s);
}
public void setItemClickListener(onItemClickListener listener) {
this.itemClickListener = listener;
}
public SearchTagAdapter(Context context) {
super(context);
}
@Override
public int getItemViewType(int position) {
if ("new".equals(mData.get(position))) {
return HEADER_ONE;
} else if ("recommend".equals(mData.get(position))) {
return HEADER_TWO;
}else {
return TAG;
}
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == HEADER_ONE) {
return new HeaderOneHolder(parent, R.layout.tag_header_new);
} else if (viewType == TAG) {
return new SearchTagHolder(parent, R.layout.search_tag);
} else if (viewType == HEADER_TWO) {
return new HeaderTwoHolder(parent, R.layout.tag_header_reco);
}
return null;
}
public class HeaderOneHolder extends BaseViewHolder<Object, TagHeaderNewBinding> {
private HeaderOneHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(Object object, int position) {
}
}
public class HeaderTwoHolder extends BaseViewHolder<Object, TagHeaderRecoBinding> {
private HeaderTwoHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(Object object, int position) {
}
}
public class SearchTagHolder extends BaseViewHolder<String, SearchTagBinding> {
private SearchTagHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(final String object, final int position) {
itemViewBinding.tvTag.setText(object);
if (position < DataSupport.count(SearchTag.class) + 1) {
DebugUtil.debug("tagposition", position + "//" + object);
itemViewBinding.delete.setVisibility(View.VISIBLE);
itemViewBinding.delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
delete(position);
DataSupport.deleteAll(SearchTag.class, "tag = ?", object);
if (DataSupport.count(SearchTag.class) == 0) {
delete(0);
}
}
});
} else {
itemViewBinding.delete.setVisibility(View.GONE);
}
itemViewBinding.itemTag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
itemClickListener.onItemClick(object);
}
});
}
}
@Override
public int getItemCount() {
return mData.size();
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/SelectTypeRecyclerAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.example.discover.R;
import com.example.discover.app.Constant;
import com.example.discover.view.CustomView.LabelView;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/13.
*/
public class SelectTypeRecyclerAdapter extends RecyclerView.Adapter<SelectTypeRecyclerAdapter.MyViewHolder> {
private List<String> mLabelList;
private Context mContext;
private ItemClickListener mListener;
public interface ItemClickListener {
void onLongItemLClick(int position);
}
public void setItemCLickListener(ItemClickListener listener) {
this.mListener = listener;
}
public SelectTypeRecyclerAdapter(List<String> list, Context context) {
this.mLabelList = list;
mContext = context;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.select_label_view, parent, false);
MyViewHolder viewHolder = new MyViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
holder.labelView.setCardBackgroundColor((int) Constant.LabelMap.get(mLabelList.get(position)));
holder.textLabel.setText(mLabelList.get(position));
holder.labelView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mListener.onLongItemLClick(position);
return false;
}
});
}
@Override
public int getItemCount() {
return mLabelList.size();
}
/**
* 拖拽移位
*
*/
/*@Override
public void onItemMove(int fromPosition, int toPosition) {
String prev = mLabelList.remove(fromPosition);
mLabelList.add(toPosition > fromPosition ? toPosition - 1 : toPosition, prev);
notifyItemMoved(fromPosition, toPosition);
}
@Override
public void onItemDismiss(int position) {
}*/
public class MyViewHolder extends RecyclerView.ViewHolder {
private TextView textLabel;
private CardView labelView;
public MyViewHolder(View itemView) {
super(itemView);
textLabel = itemView.findViewById(R.id.tv_label);
labelView = itemView.findViewById(R.id.cv_select_label);
}
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/VideoRecyclerAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import com.bumptech.glide.Glide;
import com.example.discover.R;
import com.example.discover.app.Constant;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.DetailBean.ItemList;
import com.example.discover.databinding.FooterItemVideoBinding;
import com.example.discover.databinding.VideoCardBinding;
import com.example.discover.model.HotVideoModel;
import com.example.discover.utils.DebugUtil;
import com.example.discover.utils.DensityUtil;
import com.example.discover.utils.IntentManager;
import com.example.discover.utils.LitePalUtil;
import com.example.discover.utils.ShareUtil;
import com.example.discover.view.CustomView.ReplyPopupWindow;
import com.jakewharton.rxbinding2.view.RxView;
import java.util.LinkedHashMap;
import java.util.concurrent.TimeUnit;
import cn.jzvd.JZVideoPlayer;
import cn.jzvd.JZVideoPlayerStandard;
import io.reactivex.functions.Consumer;
/**
* Created by Administrator on 2017/12/14 0014.
*/
public class VideoRecyclerAdapter extends BaseRecyclerAdapter<ItemList> {
private boolean isAuthor = false;
private int LOAD_MORE = 1;
private final static int NO_MORE = 0;
private final static int STATE_NORMAL = -1;
private final static int TYPE_FOOTER = 3;
private final static int TYPE_CONTENT = 2;
private int mState = STATE_NORMAL;
private int width = DensityUtil.getScreenWidth(mContext);//屏宽
private FooterItemVideoBinding mFooterBinding;
public VideoRecyclerAdapter(Context context) {
super(context);
}
public void setAuthor(boolean isAuthor) {
this.isAuthor = isAuthor;
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_CONTENT) {
return new VideoHolder(parent, R.layout.video_card);
}else {
return new FooterHolder(parent, R.layout.footer_item_video);
}
}
@Override
public int getItemViewType(int position) {
if (position + 1 == getItemCount()) {
DebugUtil.debug("footer", "true");
return TYPE_FOOTER;
} else {
return TYPE_CONTENT;
}
}
public void updateStateLoad(boolean loading) {
if (loading) {
this.mState = LOAD_MORE;
}else {
this.mState = NO_MORE;
}
}
public boolean isLoading() {
if (this.mState == LOAD_MORE) {
return true;
} else
return false;
}
public void hideLoading() {
mFooterBinding.loading.hide();
}
public class VideoHolder extends BaseViewHolder<ItemList, VideoCardBinding> {
private VideoHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(final ItemList list, final int position) {
//填充基础数据
//int videoSize = 0;
itemViewBinding.videoTitle.setText(list.getData().getTitle());
itemViewBinding.videoDesc.setText(list.getData().getDescription());
if (list.getData().getCover() != null) {
Glide.with(mContext).load(list.getData().getCover().getDetail())
.crossFade(800)
.placeholder(R.drawable.cross_image)
.error(R.drawable.cross_image)
.into(itemViewBinding.jzVideoPlayer.thumbImageView);
}
if (!isAuthor && list.getData().getAuthor() != null) {
Glide.with(mContext).load(list.getData().getAuthor().getIcon())
.error(R.drawable.cross_image)
.into(itemViewBinding.headIcon);
} else {
itemViewBinding.headIcon.setVisibility(View.GONE);
}
itemViewBinding.tvLabel.setText(list.getData().getCategory());
itemViewBinding.cvLabel.setCardBackgroundColor((int)Constant.LabelMap.get(list.getData().getCategory()));
//填充播放链接,playinfo有时候没有,playurl常有
if (list.getData().getPlayinfo().size() > 0) {
//设置窗口比列
int x = list.getData().getPlayinfo().get(0).getWidth();//获取视频的width
int y = list.getData().getPlayinfo().get(0).getHeight();//获取视频的height
int height = width * y / x; //根据视频比列获得视频控件的高
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height);
itemViewBinding.jzVideoPlayer.setLayoutParams(layoutParams);
//videoSize = list.getData().getPlayinfo().get(0).getUrlList().get(2).getSize()/1024/1024;
//itemViewBinding.tvVideoSize.setText("视频大小约" + videoSize+ "MB");
if (list.getData().getPlayinfo().size() == 1) { //标清||高清
itemViewBinding.jzVideoPlayer.setUp(list.getData().getPlayinfo().get(0).getUrlList().get(2).getUrl(),
JZVideoPlayer.SCREEN_WINDOW_NORMAL, "");
} else if (list.getData().getPlayinfo().size() > 1) { //标清&&高清
LinkedHashMap map = new LinkedHashMap();
Object[] objects = new Object[1];
for (int i = 0; i < list.getData().getPlayinfo().size(); i ++) {
map.put(list.getData().getPlayinfo().get(i).getName(),
list.getData().getPlayinfo().get(i).getUrlList().get(2).getUrl());
}
objects[0] = map;
itemViewBinding.jzVideoPlayer.setUp(objects , 0,
JZVideoPlayerStandard.SCREEN_WINDOW_NORMAL, "");
}
} else { //防止playinfo没有数据时播放地址无效
if (list.getData().getPlayUrl() != null) {
itemViewBinding.jzVideoPlayer.setUp(list.getData().getPlayUrl(), JZVideoPlayer.SCREEN_WINDOW_NORMAL, "");
}
}
if ("true".equals(list.getTag())) {
itemViewBinding.ivCollect.setImageDrawable(mContext.getResources().getDrawable(R.drawable.collected));
} else if (list.getTag() == null) {
itemViewBinding.ivCollect.setImageDrawable(mContext.getResources().getDrawable(R.drawable.collect));
}
//设置点击事件
setOnClick(list, itemViewBinding, position, 0);
}
}
public class FooterHolder extends BaseViewHolder<Object, FooterItemVideoBinding> {
public FooterHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(Object object, int position) {
DebugUtil.debug("loadingm", "11");
mFooterBinding = itemViewBinding;
itemViewBinding.loading.show();
}
}
private void setOnClick(final ItemList list, final VideoCardBinding binding, final int position, final int vSize) {
boolean isCollect = false;
final String shareText = list.getData().getTitle() + list.getData().getWebUrl().getForWeibo() + mContext.getString(R.string.share_from);
//点击分享 RXVIEW
binding.ivShare.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ShareUtil.share(mContext, shareText);
}
});
//展开评论
RxView.clicks(binding.ivComment)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
ReplyPopupWindow replyPopupWindow = new ReplyPopupWindow(mContext, list.getData().getId());
replyPopupWindow.showPopupWindow(binding.ivComment);
}
});
//点击收藏
binding.ivCollect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
binding.ivCollect.setImageDrawable(mContext.getResources().getDrawable(R.drawable.collect));
if (list.getTag() == null) {
binding.ivCollect.setImageDrawable(mContext.getResources().getDrawable(R.drawable.collected));
//存入数据库
LitePalUtil.addVideoToFavor(list.getData().getId(), list.getData().getTitle(), list.getData().getDescription(),
list.getData().getPlayUrl(), list.getData().getCover().getDetail(), list.getData().getAuthor().getName(),
list.getData().getAuthor().getId(), list.getData().getAuthor().getIcon(), list.getData().getAuthor().getDescription(),
(int)Constant.LabelMap.get(list.getData().getCategory()), list.getData().getCategory(), vSize);
list.setTag("true");
} else if ("true".equals(list.getTag())) {
binding.ivCollect.setImageDrawable(mContext.getResources().getDrawable(R.drawable.collect));
LitePalUtil.deleteVideoFromFavor(list.getData().getId());
list.setTag(null);
}
}
});
//跳转主页
RxView.clicks(binding.headIcon)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
IntentManager.fromDetailtoAuthor(mContext, list);
}
});
}
}
================================================
FILE: app/src/main/java/com/example/discover/adapter/WelfareAdapter.java
================================================
package com.example.discover.adapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.View;
import android.view.ViewGroup;
import com.example.discover.R;
import com.example.discover.base.baseadapter.BaseRecyclerAdapter;
import com.example.discover.base.baseadapter.BaseViewHolder;
import com.example.discover.bean.GankBean;
import com.example.discover.databinding.FooterItemVideoBinding;
import com.example.discover.databinding.ItemWelfareBinding;
import com.example.discover.utils.DebugUtil;
/**
* Created by monkeyWiiu on 2018/2/3.
*/
public class WelfareAdapter extends BaseRecyclerAdapter<GankBean.ResultBean> {
private int LOAD_MORE = 1;
private final static int TYPE_FOOTER = 3;
private final static int TYPE_CONTENT = 2;
private final static int STATE_NORMAL = -1;
private final static int NO_MORE = 0;
private int mState = STATE_NORMAL;
private FooterItemVideoBinding mFooterBinding;
public WelfareAdapter(Context context) {
super(context);
}
@Override
public int getItemViewType(int position) {
if (position + 1 == getItemCount()) {
DebugUtil.debug("footer", "true");
return TYPE_FOOTER;
} else {
return TYPE_CONTENT;
}
}
@Override
public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if (viewType == TYPE_CONTENT) {
return new ContentHolder(parent, R.layout.item_welfare);
}else {
return new FooterHolder(parent, R.layout.footer_item_video);
}
}
public class ContentHolder extends BaseViewHolder<GankBean.ResultBean, ItemWelfareBinding> {
public ContentHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(final GankBean.ResultBean object, final int position) {
itemViewBinding.setData(object);
itemViewBinding.executePendingBindings();
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (listener != null) {
listener.onClick(itemViewBinding.ivWelfare, object, position);
}
}
});
}
}
public class FooterHolder extends BaseViewHolder<Object, FooterItemVideoBinding> {
public FooterHolder(ViewGroup parent, int layoutId) {
super(parent, layoutId);
}
@Override
public void fillHolder(Object object, int position) {
DebugUtil.debug("loadingm", "11");
mFooterBinding = itemViewBinding;
itemViewBinding.loading.show();
}
}
public boolean isLoading() {
if (this.mState == LOAD_MORE) {
return true;
} else
return false;
}
public void hideLoading() {
mFooterBinding.loading.hide();
}
public void updateStateLoad(boolean loading) {
if (loading) {
this.mState = LOAD_MORE;
}else {
this.mState = NO_MORE;
}
}
@Override
public void onViewAttachedToWindow(BaseViewHolder holder) {
super.onViewAttachedToWindow(holder);
if (isStaggeredGridLayout(holder)) {
handleLayoutIfStaggeredGridLayout(holder, holder.getLayoutPosition());
}
}
private boolean isStaggeredGridLayout(RecyclerView.ViewHolder holder) {
ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams();
if (layoutParams != null && layoutParams instanceof StaggeredGridLayoutManager.LayoutParams) {
return true;
}
return false;
}
protected void handleLayoutIfStaggeredGridLayout(RecyclerView.ViewHolder holder, int position) {
if (isFooter(position)) {
StaggeredGridLayoutManager.LayoutParams p = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams();
p.setFullSpan(true);
}
}
public boolean isFooter(int position) {
if (position + 1 == getItemCount()) {
DebugUtil.debug("footer", "true");
return true;
} else
return false;
}
}
================================================
FILE: app/src/main/java/com/example/discover/app/Constant.java
================================================
package com.example.discover.app;
import com.example.discover.R;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
/**
* Created by Administrator on 2017/12/12 0012.
*/
public class Constant {
public static final String EYE_VIDEO = "eye_video";
public static final String EYE_FIND = "eye_find";
public static final String GANK_WELFARE = "gank_welfare";
public static final HashMap LabelMap = new HashMap() {{
put("萌宠", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelCre));
put("搞笑", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelMusic));
put("游戏", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelTravel));
put("科普", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelScience));
put("集锦", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelFunny));
put("生活", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelFashion));
put("综艺", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelSport));
put("开胃", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelAnim));
put("预告", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelAd));
put("广告", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelAppetizing));
put("记录", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelLife));
put("时尚", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelDrama));
put("创意", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelNotice));
put("运动", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelVariety));
put("旅行", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelRecord));
put("剧情", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelGame));
put("动画", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelPet));
put("音乐", DiscoverApplication.getDiscoverApplication().getBaseContext().getResources().getColor(R.color.colorLabelVariety));
}};
public static final List<String> videoTypeList = new ArrayList<String>() {{
add("萌宠");
add("搞笑");
add("游戏");
add("科普");
add("集锦");
add("生活");
add("综艺");
add("开胃");
add("预告");
add("广告");
add("记录");
add("时尚");
add("创意");
add("运动");
add("旅行");
add("剧情");
add("动画");
add("音乐");
}};
}
================================================
FILE: app/src/main/java/com/example/discover/app/DiscoverApplication.java
================================================
package com.example.discover.app;
import android.app.Application;
import android.content.Context;
import com.example.discover.utils.DebugUtil;
import com.example.http.HttpUtils;
import com.squareup.haha.perflib.Instance;
import com.squareup.leakcanary.LeakCanary;
import com.squareup.leakcanary.RefWatcher;
import org.litepal.LitePal;
/**
* Created by Administrator on 2017/12/9 0009.
*/
public class DiscoverApplication extends Application {
private static DiscoverApplication discoverApplication;
private RefWatcher refWatcher;
public static DiscoverApplication getDiscoverApplication() {
return discoverApplication;
}
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
discoverApplication = this;
HttpUtils.getInstance().init(this, DebugUtil.DEBUG);
refWatcher = LeakCanary.install(this);
}
public static RefWatcher getRefWatcher(Context context) {
DiscoverApplication application = (DiscoverApplication) context.getApplicationContext();
return application.refWatcher;
}
}
================================================
FILE: app/src/main/java/com/example/discover/base/BaseFragment.java
================================================
package com.example.discover.base;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import com.example.discover.R;
import com.jakewharton.rxbinding2.view.RxView;
import com.trello.rxlifecycle2.components.support.RxFragment;
import com.wang.avi.AVLoadingIndicatorView;
import java.util.concurrent.TimeUnit;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.functions.Consumer;
/**
* Created by Administrator on 2017/12/5 0005.
*/
public abstract class BaseFragment<SV extends ViewDataBinding> extends RxFragment {
public SV bindingView;
public RelativeLayout container;
public AVLoadingIndicatorView avLoading;
private RelativeLayout rlLoading;
private RelativeLayout rlError;
public boolean isVisibile = false;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View ll = inflater.inflate(R.layout.fragment_base, null);
bindingView = DataBindingUtil.inflate(getActivity().getLayoutInflater(), setContentView(), null, false);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
bindingView.getRoot().setLayoutParams(params);
container = ll.findViewById(R.id.container);
container.addView(bindingView.getRoot());
return ll;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getUserVisibleHint()) {
isVisibile = true;
onVisible();
} else {
isVisibile = false;
}
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
avLoading = (AVLoadingIndicatorView) getView(R.id.av_loading);
rlLoading = (RelativeLayout) getView(R.id.rl_loading);
rlError = (RelativeLayout) getView(R.id.rl_error);
showLoading();
RxView.clicks(rlError)
.throttleFirst(1, TimeUnit.SECONDS)
.subscribe(new Consumer<Object>() {
@Override
public void accept(Object o) throws Exception {
Refresh();
}
});
}
public View getView(int id) {
return getView().findViewById(id);
}
public void onVisible() {
loadData();
}
public void onInvisible(){}
protected void loadData(){};
public abstract int setContentView();
@Override
public void onDestroy() {
super.onDestroy();
}
/**
* 加载中的状态
*/
protected void showLoading() {
if (rlLoading.getVisibility() == View.GONE) {
rlLoading.setVisibility(View.VISIBLE);
}
if (rlError.getVisibility() == View.VISIBLE) {
rlError.setVisibility(View.GONE);
}
}
/**
* 加载完成的状态
*/
protected void showContentView() {
if (rlError.getVisibility() == View.VISIBLE) {
rlLoading.setVisibility(View.GONE);
}
if (rlLoading.getVisibility() == View.VISIBLE) {
rlLoading.setVisibility(View.GONE);
}
}
/**
* 加载失败
*/
protected void Error() {
if (rlError.getVisibility() == View.GONE) {
rlError.setVisibility(View.VISIBLE);
}
}
/**
* 加载失败重新加载
*/
protected void Refresh() {
}
/*
//显示loading
public void showLoading() {
avLoading.show();
}
//隐藏loading
public void stopLoading() {
avLoading.hide();
}
*/
}
================================================
FILE: app/src/main/java/com/example/discover/base/baseadapter/BaseRecyclerAdapter.java
================================================
package com.example.discover.base.baseadapter;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import com.example.discover.utils.DebugUtil;
import java.util.ArrayList;
import java.util.List;
/**
* Created by Administrator on 2017/12/13 0013.
*/
public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapter<BaseViewHolder> {
protected OnItemClickListener<T> listener;
protected OnItemLongClickListener<T> onItemLongClickListener;
public List<T> mData = new ArrayList<>();
public Context mContext;
public BaseRecyclerAdapter(Context context) {
mContext = context;
}
@Override
public void onBindViewHolder(BaseViewHolder holder, int position) {
DebugUtil.debug("position11", position + "");
if (position == mData.size()) {
holder.baseFillHolder(null, position);
return;
}
holder.baseFillHolder(mData.get(position), position);
}
@Override
public int getItemCount() {
//考虑有footer的情况
return mData.size() + 1;
}
public void addAll(List<T> data) {
this.mData.addAll(data);
DebugUtil.debug("listSize", data.size() + "");
}
public void add(T data) {
this.mData.add(data);
}
public void clear() {
this.mData.clear();
}
public void delete(int position) {
if (this.mData != null && this.mData.size() > position) {
this.mData.remove(position);
}
notifyItemRemoved(position);
notifyItemRangeChanged(position, mData.size() - position);
}
public void setOnItemClickListener(OnItemClickListener<T> listener) {
this.listener = listener;
}
public void setOnItemLongClickListener(OnItemLongClickListener<T> onItemLongClickListener) {
this.onItemLongClickListener = onItemLongClickListener;
}
}
================================================
FILE: app/src/main/java/com/example/discover/base/baseadapter/BaseViewHolder.java
================================================
package com.example.discover.base.baseadapter;
import android.databinding.DataBindingUtil;
import android.databinding.ViewDataBinding;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.ViewGroup;
/**
* Created by Administrator on 2017/12/13 0013.
*/
public abstract class BaseViewHolder<T,H extends ViewDataBinding> extends RecyclerView.ViewHolder {
public H itemViewBinding;
public BaseViewHolder(ViewGroup parent, int layoutId) {
super(DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()),layoutId, parent, false).getRoot());
itemViewBinding = DataBindingUtil.getBinding(itemView);
}
public abstract void fillHolder(T object, int position);
/**
* 当数据改变时,binding会在下一帧去改变数据,如果我们需要立即改变,就去调用executePendingBindings方法。
*/
public void baseFillHolder(T object, int position) {
fillHolder(object, position);
itemViewBinding.executePendingBindings();
}
}
================================================
FILE: app/src/main/java/com/example/discover/base/baseadapter/OnItemClickListener.java
================================================
package com.example.discover.base.baseadapter;
import android.view.View;
/**
* Created by jingbin on 2016/3/2.
*/
public interface OnItemClickListener<T> {
public void onClick(View view, T t, int position);
}
================================================
FILE: app/src/main/java/com/example/discover/base/baseadapter/OnItemLongClickListener.java
================================================
package com.example.discover.base.baseadapter;
/**
* Created by jingbin on 16/7/4.
*/
public interface OnItemLongClickListener<T> {
public void onLongClick(T t, int position);
}
================================================
FILE: app/src/main/java/com/example/discover/bean/AuthorDetailBean.java
================================================
package com.example.discover.bean;
import com.example.discover.bean.DetailBean.ItemList;
import java.io.Serializable;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/25.
*/
public class AuthorDetailBean implements Serializable {
private List<ItemList> itemList;
public List<ItemList> getItemList() {
return itemList;
}
public void setItemList(List<ItemList> itemList) {
this.itemList = itemList;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/ACacheFindList.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/18.
*/
public class ACacheFindList implements Serializable {
private List<SectionList> scrollCardSection = new ArrayList<>() ;
private List<SectionList> videoSection = new ArrayList<>() ;
private List<SectionList> authorSection = new ArrayList<>() ;
public List<SectionList> getScrollCardSection() {
return scrollCardSection;
}
public void setScrollCardSection(List<SectionList> scrollCardSection) {
this.scrollCardSection = scrollCardSection;
}
public List<SectionList> getVideoSection() {
return videoSection;
}
public void setVideoSection(List<SectionList> videoSection) {
this.videoSection = videoSection;
}
public List<SectionList> getAuthorSection() {
return authorSection;
}
public void setAuthorSection(List<SectionList> authorSection) {
this.authorSection = authorSection;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Author.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class Author implements Serializable {
public int id;
public String icon;
public String name;
public String description;
public int videoNum;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public int getVideoNum() {
return videoNum;
}
public void setVideoNum(int videoNum) {
this.videoNum = videoNum;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/CategoryInfo.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class CategoryInfo implements Serializable {
public String dataType;
public int id;
public String name;
public String description;
public String headerImage;
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getHeaderImage() {
return headerImage;
}
public void setHeaderImage(String headerImage) {
this.headerImage = headerImage;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Cover.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class Cover implements Serializable {
public String feed;
public String detail;
public String blurred;
public String getFeed() {
return feed;
}
public void setFeed(String feed) {
this.feed = feed;
}
public String getDetail() {
return detail;
}
public void setDetail(String detail) {
this.detail = detail;
}
public String getBlurred() {
return blurred;
}
public void setBlurred(String blurred) {
this.blurred = blurred;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Data.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class Data implements Serializable {
public String dataType;
public int id;
public String title;
public String text;
public String description;
public String image;
public String actionUrl;
public boolean shade;
public Cover cover;
public String playUrl;
public String category;
public long duration;
public Header header;
public List<ItemList> itemList;
public Author author;
public String icon;
public List<Tags> tags;
public List<PlayInfo> playInfo;
public WebUrl webUrl;
public int getId() {
return id;
}
public String getActionUrl() {
return actionUrl;
}
public String getDescription() {
return description;
}
public String getTitle() {
return title;
}
public String getIcon() {
return icon;
}
public List<ItemList> getItemList() {
return itemList;
}
public String getPlayUrl() {
return playUrl;
}
public Author getAuthor() {
return author;
}
public Cover getCover() {
return cover;
}
public Header getHeader() {
return header;
}
public long getDuration() {
return duration;
}
public String getCategory() {
return category;
}
public String getDataType() {
return dataType;
}
public String getImage() {
return image;
}
public String getText() {
return text;
}
public List<PlayInfo> getPlayinfo() {
return playInfo;
}
public WebUrl getWebUrl() {
return webUrl;
}
public List<Tags> getTags() {
return tags;
}
public void setId(int id) {
this.id = id;
}
public void setActionUrl(String actionUrl) {
this.actionUrl = actionUrl;
}
public void setDescription(String description) {
this.description = description;
}
public void setTitle(String title) {
this.title = title;
}
public void setIcon(String icon) {
this.icon = icon;
}
public void setItemList(List<ItemList> itemList) {
this.itemList = itemList;
}
public void setPlayUrl(String playUrl) {
this.playUrl = playUrl;
}
public void setAuthor(Author author) {
this.author = author;
}
public void setCategory(String category) {
this.category = category;
}
public void setCover(Cover cover) {
this.cover = cover;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public void setDuration(long duration) {
this.duration = duration;
}
public void setHeader(Header header) {
this.header = header;
}
public void setImage(String image) {
this.image = image;
}
public void setShade(boolean shade) {
this.shade = shade;
}
public void setText(String text) {
this.text = text;
}
public void setPlayinfo(List<PlayInfo> list) {
this.playInfo = list;
}
public void setWebUrl(WebUrl webUrl) {
this.webUrl = webUrl;
}
public void setTags(List<Tags> tags) {
this.tags = tags;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/FindCategory.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class FindCategory implements Serializable{
public CategoryInfo categoryInfo;
public List<SectionList> sectionList;
public CategoryInfo getCategoryInfo() {
return categoryInfo;
}
public void setCategoryInfo(CategoryInfo categoryInfo) {
this.categoryInfo = categoryInfo;
}
public List<SectionList> getSectionList() {
return sectionList;
}
public void setSectionList(List<SectionList> sectionList) {
this.sectionList = sectionList;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Footer.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class Footer implements Serializable {
public String type;
public Data data;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Header.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class Header implements Serializable {
public int id;
public String icon;
public String title;
public String subTitle;
public String description;
public String actionUrl;
public Data data;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSubTitle() {
return subTitle;
}
public void setSubTitle(String subTitle) {
this.subTitle = subTitle;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getActionUrl() {
return actionUrl;
}
public void setActionUrl(String actionUrl) {
this.actionUrl = actionUrl;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/ItemList.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class ItemList implements Serializable{
private String type;
private Data data;
private String tag;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/PlayInfo.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/23.
*/
public class PlayInfo implements Serializable {
/**
* height : 720
* width : 1280
* urlList : [{"name":"aliyun","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun","size":14871277},{"name":"qcloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=qcloud","size":14871277},{"name":"ucloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=ucloud","size":14871277}]
* name : 高清
* type : high
* url : http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun
*/
private int height;
private int width;
private String name;
private String type;
private String url;
private List<UrlList> urlList;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public List<UrlList> getUrlList() {
return urlList;
}
public void setUrlList(List<UrlList> urlList) {
this.urlList = urlList;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Replies.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
import java.util.List;
/**
* @author zsj
*/
public class Replies implements Serializable{
private List<ReplyList> replyList;
public List<ReplyList> getReplyList() {
return replyList;
}
public void setReplyList(List<ReplyList> replyList) {
this.replyList = replyList;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/ReplyList.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* @author zsj
*/
public class ReplyList implements Serializable {
public long id;
public int videoId;
public String videoTitle;
public int sequence;
public String message;
public long createTime;
public User user;
public int likeCount;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getVideoId() {
return videoId;
}
public void setVideoId(int videoId) {
this.videoId = videoId;
}
public int getLikeCount() {
return likeCount;
}
public void setLikeCount(int likeCount) {
this.likeCount = likeCount;
}
public int getSequence() {
return sequence;
}
public void setSequence(int sequence) {
this.sequence = sequence;
}
public long getCreateTime() {
return createTime;
}
public void setCreateTime(long createTime) {
this.createTime = createTime;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getVideoTitle() {
return videoTitle;
}
public void setVideoTitle(String videoTitle) {
this.videoTitle = videoTitle;
}
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/SectionList.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/17.
*/
public class SectionList implements Serializable {
public int id;
public String type;
public Header header;
public List<ItemList> itemList;
public Footer footer;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public Header getHeader() {
return header;
}
public void setHeader(Header header) {
this.header = header;
}
public List<ItemList> getItemList() {
return itemList;
}
public void setItemList(List<ItemList> itemList) {
this.itemList = itemList;
}
public Footer getFooter() {
return footer;
}
public void setFooter(Footer footer) {
this.footer = footer;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Tags.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/19.
*/
public class Tags implements Serializable {
private String name;
private String headerImage;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getHeaderImage() {
return headerImage;
}
public void setHeaderImage(String headerImage) {
this.headerImage = headerImage;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/UrlList.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/23.
*/
public class UrlList implements Serializable {
/**
* name : aliyun
* url : http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun
* size : 14871277
*/
private String name;
private String url;
private int size;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/User.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* @author zsj
*/
public class User implements Serializable {
public int uid;
public String nickname;
public String avatar;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/DetailBean/WebUrl.java
================================================
package com.example.discover.bean.DetailBean;
import java.io.Serializable;
/**
* Created by monkeyWiiu on 2018/1/23.
*/
public class WebUrl implements Serializable {
private String raw;
private String forWeibo;
public String getRaw() {
return raw;
}
public void setRaw(String raw) {
this.raw = raw;
}
public String getForWeibo() {
return forWeibo;
}
public void setForWeibo(String forWeibo) {
this.forWeibo = forWeibo;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/GankBean.java
================================================
package com.example.discover.bean;
import java.io.Serializable;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/2/3.
*/
public class GankBean implements Serializable {
private boolean error;
/**
* _id : 5832662b421aa929b0f34e99
* createdAt : 2016-11-21T11:12:43.567Z
* desc : 深入Android渲染机制
* publishedAt : 2016-11-24T11:40:53.615Z
* source : web
* type : Android
* url : http://blog.csdn.net/ccj659/article/details/53219288
* used : true
* who : Chauncey
*/
private List<ResultBean> results;
public static class ResultBean implements Serializable {
private String _id;
private String createdAt;
private String desc;
private String publishedAt;
private String source;
private String type;
private String url;
private boolean used;
private String who;
private List<String> images;
public String get_id() {
return _id;
}
public String getCreatedAt() {
return createdAt;
}
public String getDesc() {
return desc;
}
public String getPublishedAt() {
return publishedAt;
}
public String getSource() {
return source;
}
public String getType() {
return type;
}
public String getUrl() {
return url;
}
public boolean isUsed() {
return used;
}
public String getWho() {
return who;
}
@Override
public String toString() {
return "ResultsBean{" +
"who='" + who + '\'' +
", used=" + used +
", url='" + url + '\'' +
", type='" + type + '\'' +
", source='" + source + '\'' +
", publishedAt='" + publishedAt + '\'' +
", desc='" + desc + '\'' +
", createdAt='" + createdAt + '\'' +
", _id='" + _id + '\'' +
'}';
}
public List<String> getImages() {
return images;
}
}
public boolean isError() {
return error;
}
public List<ResultBean> getResults() {
return results;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/HotEyeBean.java
================================================
package com.example.discover.bean;
import com.example.discover.bean.DetailBean.ItemList;
import java.io.Serializable;
import java.util.List;
/**
* Created by Administrator on 2017/12/9 0009.
*/
public class HotEyeBean implements Serializable {
private List<ItemList> itemList;
public List<ItemList> getItemList() {
return itemList;
}
public void setItemList(List<ItemList> itemList) {
this.itemList = itemList;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/Follow.java
================================================
package com.example.discover.bean.LitePalBean;
import org.litepal.crud.DataSupport;
/**
* Created by monkeyWiiu on 2018/1/25.
*/
public class Follow extends DataSupport {
private int id;
public int authorId;
public String authorName;
public String authorDesc;
public String iconUrl;
private int backgroundColor;
private String backgroundImage;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAuthorId() {
return authorId;
}
public void setAuthorId(int authorId) {
this.authorId = authorId;
}
public String getAuthorName() {
return authorName;
}
public void setAuthorName(String authorName) {
this.authorName = authorName;
}
public String getAuthorDesc() {
return authorDesc;
}
public void setAuthorDesc(String authorDesc) {
this.authorDesc = authorDesc;
}
public String getIconUrl() {
return iconUrl;
}
public void setIconUrl(String iconUrl) {
this.iconUrl = iconUrl;
}
public int getBackgroundColor() {
return backgroundColor;
}
public void setBackgroundColor(int backgroundColor) {
this.backgroundColor = backgroundColor;
}
public String getBackgroundImage() {
return backgroundImage;
}
public void setBackgroundImage(String backgroundImage) {
this.backgroundImage = backgroundImage;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/LabelType.java
================================================
package com.example.discover.bean.LitePalBean;
import org.litepal.crud.DataSupport;
/**
* Created by monkeyWiiu on 2018/1/13.
*/
public class LabelType extends DataSupport {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/LikeVideo.java
================================================
package com.example.discover.bean.LitePalBean;
import org.litepal.crud.DataSupport;
/**
* Created by monkeyWiiu on 2017/12/31.
* id : 不变,与表中数据绑定
*/
public class LikeVideo extends DataSupport {
private int id;
private int videoId;
private String title;
private String description;
private String playUrl;
private String imageUrl;
private String authorName;
private int authorId;
private String authorIcon;
private String authorDesc;
private int labelColor;
private String labelText;
private int size;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getVideoId() {
return videoId;
}
public void setVideoId(int videoId) {
this.videoId = videoId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getPlayUrl() {
return playUrl;
}
public void setPlayUrl(String playUrl) {
this.playUrl = playUrl;
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getAuthorName() {
return authorName;
}
public void setAuthorName(String auhtorName) {
this.authorName = auhtorName;
}
public int getAuthorId() {
return authorId;
}
public void setAuthorId(int auhtorId) {
this.authorId = auhtorId;
}
public String getAuthorDesc() {
return authorDesc;
}
public void setAuthorDesc(String authorDesc) {
this.authorDesc = authorDesc;
}
public String getAuthorIcon() {
return authorIcon;
}
public void setAuthorIcon(String authorIcon) {
this.authorIcon = authorIcon;
}
public int getLabelColor() {
return labelColor;
}
public void setLabelColor(int labelColor) {
this.labelColor = labelColor;
}
public String getLabelText() {
return labelText;
}
public void setLabelText(String labelText) {
this.labelText = labelText;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/SearchTag.java
================================================
package com.example.discover.bean.LitePalBean;
import org.litepal.crud.DataSupport;
/**
* Created by monkeyWiiu on 2018/1/28.
*/
public class SearchTag extends DataSupport {
private String tag;
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/ResultBean.java
================================================
package com.example.discover.bean;
import com.example.discover.SearchActivity;
import com.example.discover.bean.DetailBean.ItemList;
import java.io.Serializable;
import java.util.List;
/**
* Created by monkeyWiiu on 2018/1/29.
*/
public class ResultBean implements Serializable {
private List<ItemList> itemList;
public List<ItemList> getItemList() {
return itemList;
}
public void setItemList(List<ItemList> itemList) {
}
}
================================================
FILE: app/src/main/java/com/example/discover/bean/TestBean.java
================================================
package com.example.discover.bean;
import java.util.List;
/**
* Created by Administrator on 2017/12/14 0014.
*/
public class TestBean {
/**
* itemList : [{"type":"video","data":{"dataType":"VideoBeanForClient","id":66374,"title":"太阳死亡后会变成什么,膨胀的红色巨人","slogan":null,"description":"有一天我们的太阳也会死亡吗?答案是的,但是我们不必担心,因为人类可能无法活到太阳死亡的那一天,或者在此之前,我们已经离开太阳系。","provider":{"name":"PGC","alias":"PGC","icon":""},"category":"科普","author":{"id":2098,"icon":"http://img.kaiyanapp.com/608dafdede807bd3748b582a32dc0a33.png?imageMogr2/quality/60/format/jpg","name":"火星人俱乐部","description":"科普趣味生活,亲子科学实验;北大老师陪你趣学科学;","link":"","latestReleaseTime":1513237731000,"videoNum":62,"adTrack":null,"follow":{"itemType":"author","itemId":2098,"followed":false},"shield":{"itemType":"author","itemId":2098,"shielded":false},"approvedNotReadyVideoCount":0,"ifPgc":true},"cover":{"feed":"http://img.kaiyanapp.com/9f4a7de9c2244499a95de914f22d76b4.png?imageMogr2/quality/60/format/jpg","detail":"http://img.kaiyanapp.com/9f4a7de9c2244499a95de914f22d76b4.png?imageMogr2/quality/60/format/jpg","blurred":"http://img.kaiyanapp.com/1661e0b22a0768be62510bcc934b2ac6.jpeg?imageMogr2/quality/60/format/jpg","sharing":null,"homepage":null},"playUrl":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=default&source=aliyun","thumbPlayUrl":null,"duration":137,"webUrl":{"raw":"http://www.eyepetizer.net/detail.html?vid=66374","forWeibo":"http://www.eyepetizer.net/detail.html?vid=66374"},"releaseTime":1513237731000,"library":"DEFAULT","playInfo":[{"height":720,"width":1280,"urlList":[{"name":"aliyun","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun","size":14871277},{"name":"qcloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=qcloud","size":14871277},{"name":"ucloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=ucloud","size":14871277}],"name":"高清","type":"high","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun"}],"consumption":{"collectionCount":0,"shareCount":2,"replyCount":0},"campaign":null,"waterMarks":null,"adTrack":null,"tags":[{"id":484,"name":"干货","actionUrl":"eyepetizer://tag/484/?title=%E5%B9%B2%E8%B4%A7","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/27856a0c2855246c31c19f7a8fd814ce.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/27856a0c2855246c31c19f7a8fd814ce.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"},{"id":546,"name":"宇宙","actionUrl":"eyepetizer://tag/546/?title=%E5%AE%87%E5%AE%99","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/7052c0f6e4267111b023d2541b1a7f07.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/7052c0f6e4267111b023d2541b1a7f07.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"},{"id":44,"name":"科普","actionUrl":"eyepetizer://tag/44/?title=%E7%A7%91%E6%99%AE","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/f2e7359e81e217782f32cc3d482b3284.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/f2e7359e81e217782f32cc3d482b3284.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"}],"type":"NORMAL","titlePgc":"太阳死亡后会变成什么,膨胀的红色巨人","descriptionPgc":"有一天我们的太阳也会死亡吗?答案是的,但是我们不必担心,因为人类可能无法活到太阳死亡的那一天,或者在此之前,我们已经离开太阳系。","remark":"太阳死亡后会变成什么?","idx":0,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"date":1513237731000,"promotion":null,"label":null,"labelList":[],"descriptionEditor":"","collected":false,"played":false,"subtitles":[],"lastViewTime":null,"playlists":null,"src":null},"tag":null,"id":0,"adIndex":-1},{"type":"video","data":{"dataType":"VideoBeanForClient","id":66371,"title":"Coronation Street 宣传广告:从今以后","slogan":null,"description":"由 ITV Coronation Street 带来的广告,展示了从以前到现在的工作场景,希望能够一直陪伴着他们所爱的人。","provider":{"name":"定制来源","alias":"CustomSrc","icon":""},"category":"广告","author":{"id":938,"icon":"http://img.kaiyanapp.com/e44ed5fcfa424ba35761ce5f1339bc16.jpeg?imageMogr2/quality/60/format/jpg","name":"欧美广告精选","description":"持续推送新奇、有趣、大开眼界的欧美创意广告","link":"","latestReleaseTime":1513237624000,"videoNum":194,"adTrack":null,"follow":{"itemType":"author","itemId":938,"followed":false},"shield":{"itemType":"author","itemId":938,"shielded":false},"approvedNotReadyVideoCount":0,"ifPgc":true},"cover":{"feed":"http://img.kaiyanapp.com/3c7f944f41df332164c73454abc51725.png?imageMogr2/quality/60/format/jpg","detail":"http://img.kaiyanapp.com/3c7f944f41df332164c73454abc51725.png?imageMogr2/quality/60/format/jpg","blurred":"http://img.kaiyanapp.com/d772b37fa86071c42ac9154e7fb21d4c.png?imageMogr2/quality/60/format/jpg","sharing":null,"homepage":null},"playUrl":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66371&editionType=default&source=aliyun","thumbPlayUrl":null,"duration":72,"webUrl":{"raw":"http://www.eyepetizer.net/detail.html?vid=66371","forWeibo":"http://www.eyepetizer.net/detail.html?vid=66371"},"releaseTime":1513237624000,"library":"DEFAULT","playInfo":[{"height":720,"width":1280,"urlList":[{"name":"aliyun","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66371&editionType=high&source=aliyun","size":10993795},{"name":"qcloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66371&editionType=high&source=qcloud","size":10993795},{"name":"ucloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66371&editionType=high&source=ucloud","size":10993795}],"name":"高清","type":"high","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66371&editionType=high&source=aliyun"}],"consumption":{"collectionCount":2,"shareCount":2,"replyCount":0},"campaign":null,"waterMarks":null,"adTrack":null,"tags":[{"id":711,"name":"欧美","actionUrl":"eyepetizer://tag/711/?title=%E6%AC%A7%E7%BE%8E","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/0cb9ec0ade8d938be0452e8ca2d621d0.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/0cb9ec0ade8d938be0452e8ca2d621d0.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"},{"id":136,"name":"温情","actionUrl":"eyepetizer://tag/136/?title=%E6%B8%A9%E6%83%85","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/0bc1dc78c631eae017ee69418303adc5.jpeg?imageMogr2/quality/100","headerImage":"http://img.kaiyanapp.com/0bc1dc78c631eae017ee69418303adc5.jpeg?imageMogr2/quality/100","tagRecType":"NORMAL"},{"id":16,"name":"广告","actionUrl":"eyepetizer://tag/16/?title=%E5%B9%BF%E5%91%8A","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/e41e74fe73882b552de00d95d56748d2.jpeg?imageMogr2/quality/60","headerImage":"http://img.kaiyanapp.com/3054658dbd559ac42c4c282e9cab7a32.jpeg?imageMogr2/quality/100","tagRecType":"NORMAL"},{"id":2,"name":"创意","actionUrl":"eyepetizer://tag/2/?title=%E5%88%9B%E6%84%8F","adTrack":null,"desc":"创意十足的style","bgPicture":"http://img.kaiyanapp.com/e6eee049dd13fe8ce0712a6f2648d7e2.jpeg?imageMogr2/quality/100","headerImage":"http://img.kaiyanapp.com/fdefdb34cbe3d2ac9964d306febe9025.jpeg?imageMogr2/quality/100","tagRecType":"NORMAL"}],"type":"NORMAL","titlePgc":"Coronation Street 宣传广告:从今以后","descriptionPgc":"由 ITV Coronation Street 带来的广告,展示了从以前到现在的工作场景,希望能够一直陪伴着他们所爱的人。","remark":null,"idx":0,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"date":1513237624000,"promotion":null,"label":null,"labelList":[],"descriptionEditor":"","collected":false,"played":false,"subtitles":[],"lastViewTime":null,"playlists":null,"src":null},"tag":null,"id":0,"adIndex":-1}]
* count : 2
* total : 0
* nextPageUrl : http://baobab.kaiyanapp.com/api/v4/discovery/hot?start=42&num=2
* adExist : false
*/
private int count;
private int total;
private String nextPageUrl;
private boolean adExist;
private List<ItemListBean> itemList;
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public String getNextPageUrl() {
return nextPageUrl;
}
public void setNextPageUrl(String nextPageUrl) {
this.nextPageUrl = nextPageUrl;
}
public boolean isAdExist() {
return adExist;
}
public void setAdExist(boolean adExist) {
this.adExist = adExist;
}
public List<ItemListBean> getItemList() {
return itemList;
}
public void setItemList(List<ItemListBean> itemList) {
this.itemList = itemList;
}
public static class ItemListBean {
/**
* type : video
* data : {"dataType":"VideoBeanForClient","id":66374,"title":"太阳死亡后会变成什么,膨胀的红色巨人","slogan":null,"description":"有一天我们的太阳也会死亡吗?答案是的,但是我们不必担心,因为人类可能无法活到太阳死亡的那一天,或者在此之前,我们已经离开太阳系。","provider":{"name":"PGC","alias":"PGC","icon":""},"category":"科普","author":{"id":2098,"icon":"http://img.kaiyanapp.com/608dafdede807bd3748b582a32dc0a33.png?imageMogr2/quality/60/format/jpg","name":"火星人俱乐部","description":"科普趣味生活,亲子科学实验;北大老师陪你趣学科学;","link":"","latestReleaseTime":1513237731000,"videoNum":62,"adTrack":null,"follow":{"itemType":"author","itemId":2098,"followed":false},"shield":{"itemType":"author","itemId":2098,"shielded":false},"approvedNotReadyVideoCount":0,"ifPgc":true},"cover":{"feed":"http://img.kaiyanapp.com/9f4a7de9c2244499a95de914f22d76b4.png?imageMogr2/quality/60/format/jpg","detail":"http://img.kaiyanapp.com/9f4a7de9c2244499a95de914f22d76b4.png?imageMogr2/quality/60/format/jpg","blurred":"http://img.kaiyanapp.com/1661e0b22a0768be62510bcc934b2ac6.jpeg?imageMogr2/quality/60/format/jpg","sharing":null,"homepage":null},"playUrl":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=default&source=aliyun","thumbPlayUrl":null,"duration":137,"webUrl":{"raw":"http://www.eyepetizer.net/detail.html?vid=66374","forWeibo":"http://www.eyepetizer.net/detail.html?vid=66374"},"releaseTime":1513237731000,"library":"DEFAULT","playInfo":[{"height":720,"width":1280,"urlList":[{"name":"aliyun","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun","size":14871277},{"name":"qcloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=qcloud","size":14871277},{"name":"ucloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=ucloud","size":14871277}],"name":"高清","type":"high","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun"}],"consumption":{"collectionCount":0,"shareCount":2,"replyCount":0},"campaign":null,"waterMarks":null,"adTrack":null,"tags":[{"id":484,"name":"干货","actionUrl":"eyepetizer://tag/484/?title=%E5%B9%B2%E8%B4%A7","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/27856a0c2855246c31c19f7a8fd814ce.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/27856a0c2855246c31c19f7a8fd814ce.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"},{"id":546,"name":"宇宙","actionUrl":"eyepetizer://tag/546/?title=%E5%AE%87%E5%AE%99","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/7052c0f6e4267111b023d2541b1a7f07.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/7052c0f6e4267111b023d2541b1a7f07.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"},{"id":44,"name":"科普","actionUrl":"eyepetizer://tag/44/?title=%E7%A7%91%E6%99%AE","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/f2e7359e81e217782f32cc3d482b3284.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/f2e7359e81e217782f32cc3d482b3284.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"}],"type":"NORMAL","titlePgc":"太阳死亡后会变成什么,膨胀的红色巨人","descriptionPgc":"有一天我们的太阳也会死亡吗?答案是的,但是我们不必担心,因为人类可能无法活到太阳死亡的那一天,或者在此之前,我们已经离开太阳系。","remark":"太阳死亡后会变成什么?","idx":0,"shareAdTrack":null,"favoriteAdTrack":null,"webAdTrack":null,"date":1513237731000,"promotion":null,"label":null,"labelList":[],"descriptionEditor":"","collected":false,"played":false,"subtitles":[],"lastViewTime":null,"playlists":null,"src":null}
* tag : null
* id : 0
* adIndex : -1
*/
private String type;
private DataBean data;
private Object tag;
private int id;
private int adIndex;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public Object getTag() {
return tag;
}
public void setTag(Object tag) {
this.tag = tag;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAdIndex() {
return adIndex;
}
public void setAdIndex(int adIndex) {
this.adIndex = adIndex;
}
public static class DataBean {
/**
* dataType : VideoBeanForClient
* id : 66374
* title : 太阳死亡后会变成什么,膨胀的红色巨人
* slogan : null
* description : 有一天我们的太阳也会死亡吗?答案是的,但是我们不必担心,因为人类可能无法活到太阳死亡的那一天,或者在此之前,我们已经离开太阳系。
* provider : {"name":"PGC","alias":"PGC","icon":""}
* category : 科普
* author : {"id":2098,"icon":"http://img.kaiyanapp.com/608dafdede807bd3748b582a32dc0a33.png?imageMogr2/quality/60/format/jpg","name":"火星人俱乐部","description":"科普趣味生活,亲子科学实验;北大老师陪你趣学科学;","link":"","latestReleaseTime":1513237731000,"videoNum":62,"adTrack":null,"follow":{"itemType":"author","itemId":2098,"followed":false},"shield":{"itemType":"author","itemId":2098,"shielded":false},"approvedNotReadyVideoCount":0,"ifPgc":true}
* cover : {"feed":"http://img.kaiyanapp.com/9f4a7de9c2244499a95de914f22d76b4.png?imageMogr2/quality/60/format/jpg","detail":"http://img.kaiyanapp.com/9f4a7de9c2244499a95de914f22d76b4.png?imageMogr2/quality/60/format/jpg","blurred":"http://img.kaiyanapp.com/1661e0b22a0768be62510bcc934b2ac6.jpeg?imageMogr2/quality/60/format/jpg","sharing":null,"homepage":null}
* playUrl : http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=default&source=aliyun
* thumbPlayUrl : null
* duration : 137
* webUrl : {"raw":"http://www.eyepetizer.net/detail.html?vid=66374","forWeibo":"http://www.eyepetizer.net/detail.html?vid=66374"}
* releaseTime : 1513237731000
* library : DEFAULT
* playInfo : [{"height":720,"width":1280,"urlList":[{"name":"aliyun","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun","size":14871277},{"name":"qcloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=qcloud","size":14871277},{"name":"ucloud","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=ucloud","size":14871277}],"name":"高清","type":"high","url":"http://baobab.kaiyanapp.com/api/v1/playUrl?vid=66374&editionType=high&source=aliyun"}]
* consumption : {"collectionCount":0,"shareCount":2,"replyCount":0}
* campaign : null
* waterMarks : null
* adTrack : null
* tags : [{"id":484,"name":"干货","actionUrl":"eyepetizer://tag/484/?title=%E5%B9%B2%E8%B4%A7","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/27856a0c2855246c31c19f7a8fd814ce.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/27856a0c2855246c31c19f7a8fd814ce.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"},{"id":546,"name":"宇宙","actionUrl":"eyepetizer://tag/546/?title=%E5%AE%87%E5%AE%99","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/7052c0f6e4267111b023d2541b1a7f07.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/7052c0f6e4267111b023d2541b1a7f07.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"},{"id":44,"name":"科普","actionUrl":"eyepetizer://tag/44/?title=%E7%A7%91%E6%99%AE","adTrack":null,"desc":null,"bgPicture":"http://img.kaiyanapp.com/f2e7359e81e217782f32cc3d482b3284.jpeg?imageMogr2/quality/60/format/jpg","headerImage":"http://img.kaiyanapp.com/f2e7359e81e217782f32cc3d482b3284.jpeg?imageMogr2/quality/60/format/jpg","tagRecType":"NORMAL"}]
* type : NORMAL
* titlePgc : 太阳死亡后会变成什么,膨胀的红色巨人
* descriptionPgc : 有一天我们的太阳也会死亡吗?答案是的,但是我们不必担心,因为人类可能无法活到太阳死亡的那一天,或者在此之前,我们已经离开太阳系。
* remark : 太阳死亡后会变成什么?
* idx : 0
* shareAdTrack : null
* favoriteAdTrack : null
* webAdTrack : null
* date : 1513237731000
* promotion : null
* label : null
* labelList : []
* descriptionEditor :
* collected : false
* played : false
* subtitles : []
* lastViewTime : null
* playlists : null
* src : null
*/
private String dataType;
private int id;
private String title;
private Object slogan;
private String description;
private ProviderBean provider;
private String category;
private AuthorBean author;
private CoverBean cover;
private String playUrl;
private Object thumbPlayUrl;
private int duration;
private WebUrlBean webUrl;
private long releaseTime;
private String library;
private ConsumptionBean consumption;
private Object campaign;
private Object waterMarks;
private Object adTrack;
private String type;
private String titlePgc;
private String descriptionPgc;
private String remark;
private int idx;
private Object shareAdTrack;
private Object favoriteAdTrack;
private Object webAdTrack;
private long date;
private Object promotion;
private Object label;
private String descriptionEditor;
private boolean collected;
private boolean played;
private Object lastViewTime;
private Object playlists;
private Object src;
private List<PlayInfoBean> playInfo;
private List<TagsBean> tags;
private List<?> labelList;
private List<?> subtitles;
public String getDataType() {
return dataType;
}
public void setDataType(String dataType) {
this.dataType = dataType;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public Object getSlogan() {
return slogan;
}
public void setSlogan(Object slogan) {
this.slogan = slogan;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public ProviderBean getProvider() {
return provider;
}
public void setProvider(ProviderBean provider) {
this.provider = provider;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public AuthorBean getAuthor() {
return author;
}
public void setAuthor(AuthorBean author) {
this.author = author;
}
public CoverBean getCover() {
return cover;
}
public void setCover(CoverBean cover) {
this.cover = cover;
}
public String getPlayUrl() {
return playUrl;
}
public void setPlayUrl(String playUrl) {
this.playUrl = playUrl;
}
public Object getThumbPlayUrl() {
return thumbPlayUrl;
}
public void setThumbPlayUrl(Object thumbPlayUrl) {
this.thumbPlayUrl = thumbPlayUrl;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public WebUrlBean getWebUrl() {
return webUrl;
}
public void setWebUrl(WebUrlBean webUrl) {
this.webUrl = webUrl;
}
public long getReleaseTime() {
return releaseTime;
}
public void setReleaseTime(long releaseTime) {
this.releaseTime = releaseTime;
}
public String getLibrary() {
return library;
}
public void setLibrary(String library) {
this.library = library;
}
public ConsumptionBean getConsumption() {
return consumption;
}
public void setConsumption(ConsumptionBean consumption) {
this.consumption = consumption;
}
public Object getCampaign() {
return campaign;
}
public void setCampaign(Object campaign) {
this.campaign = campaign;
}
public Object getWaterMarks() {
return waterMarks;
}
public void setWaterMarks(Object waterMarks) {
this.waterMarks = waterMarks;
}
public Object getAdTrack() {
return adTrack;
}
public void setAdTrack(Object adTrack) {
this.adTrack = adTrack;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getTitlePgc() {
return titlePgc;
}
public void setTitlePgc(String titlePgc) {
this.titlePgc = titlePgc;
}
public String getDescriptionPgc() {
return descriptionPgc;
}
public void setDescriptionPgc(String descriptionPgc) {
this.descriptionPgc = descriptionPgc;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
public int getIdx() {
return idx;
}
public void setIdx(int idx) {
this.idx = idx;
}
public Object getShareAdTrack() {
return shareAdTrack;
}
public void setShareAdTrack(Object shareAdTrack) {
this.shareAdTrack = shareAdTrack;
}
public Object getFavoriteAdTrack() {
return favoriteAdTrack;
}
public void setFavoriteAdTrack(Object favoriteAdTrack) {
this.favoriteAdTrack = favoriteAdTrack;
}
public Object getWebAdTrack() {
return webAdTrack;
}
public void setWebAdTrack(Object webAdTrack) {
this.webAdTrack = webAdTrack;
}
public long getDate() {
return date;
}
public void setDate(long date) {
this.date = date;
}
public Object getPromotion() {
return promotion;
}
public void setPromotion(Object promotion) {
this.promotion = promotion;
}
public Object getLabel() {
return label;
}
public void setLabel(Object label) {
this.label = label;
}
public String getDescriptionEditor() {
return descriptionEditor;
}
public void setDescriptionEditor(String descriptionEditor) {
this.descriptionEditor = descriptionEditor;
}
public boolean isCollected() {
return collected;
}
public void setCollected(boolean collected) {
this.collected = collected;
}
public boolean isPlayed() {
return played;
}
public void setPlayed(boolean played) {
this.played = played;
}
public Object getLastViewTime() {
return lastViewTime;
}
public void setLastViewTime(Object lastViewTime) {
this.lastViewTime = lastViewTime;
}
public Object getPlaylists() {
return playlists;
}
public void setPlaylists(Object playlists) {
this.playlists = playlists;
}
public Object getSrc() {
return src;
}
public void setSrc(Object src) {
this.src = src;
}
public List<PlayInfoBean> getPlayInfo() {
return playInfo;
}
public void setPlayInfo(List<PlayInfoBean> playInfo) {
this.playInfo = playInfo;
}
public List<TagsBean> getTags() {
return tags;
}
public void setTags(List<TagsBean> tags) {
this.tags = tags;
}
public List<?> getLabelList() {
return labelList;
}
public void setLabelList(List<?> labelList) {
this.labelList = labelList;
}
public List<?> getSubtitles() {
return subtitles;
}
public void setSubtitles(List<?> subtitles) {
this.subtitles = subtitles;
}
public static class ProviderBean {
/**
* name : PGC
* alias : PGC
* icon :
*/
private String name;
private String alias;
private String icon;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAlias() {
return alias;
}
p
gitextract_y2efyqy7/ ├── .gitignore ├── .idea/ │ ├── compiler.xml │ ├── copyright/ │ │ └── profiles_settings.xml │ ├── inspectionProfiles/ │ │ └── Project_Default.xml │ ├── misc.xml │ ├── modules.xml │ ├── runConfigurations.xml │ └── vcs.xml ├── LICENSE ├── README.md ├── app/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── example/ │ │ └── discover/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── assets/ │ │ │ └── litepal.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── discover/ │ │ │ ├── AuthorHomeActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── ResultActivity.java │ │ │ ├── SearchActivity.java │ │ │ ├── TestActivity.java │ │ │ ├── VideoDetailActivity.java │ │ │ ├── ViewBigImageActivity.java │ │ │ ├── adapter/ │ │ │ │ ├── AuthorPopAdapter.java │ │ │ │ ├── CategoryPopAdapter.java │ │ │ │ ├── FollowRecyclerAdapter.java │ │ │ │ ├── ItemHelper.java │ │ │ │ ├── LabelChooseAdapter.java │ │ │ │ ├── LikeVideoRecyclerAdapter.java │ │ │ │ ├── MyFragmentPagerAdapter.java │ │ │ │ ├── PopReplyAdapter.java │ │ │ │ ├── ReplyAdapter.java │ │ │ │ ├── ResultAdapter.java │ │ │ │ ├── SearchRecyclerAdapter.java │ │ │ │ ├── SearchTagAdapter.java │ │ │ │ ├── SelectTypeRecyclerAdapter.java │ │ │ │ ├── VideoRecyclerAdapter.java │ │ │ │ └── WelfareAdapter.java │ │ │ ├── app/ │ │ │ │ ├── Constant.java │ │ │ │ └── DiscoverApplication.java │ │ │ ├── base/ │ │ │ │ ├── BaseFragment.java │ │ │ │ └── baseadapter/ │ │ │ │ ├── BaseRecyclerAdapter.java │ │ │ │ ├── BaseViewHolder.java │ │ │ │ ├── OnItemClickListener.java │ │ │ │ └── OnItemLongClickListener.java │ │ │ ├── bean/ │ │ │ │ ├── AuthorDetailBean.java │ │ │ │ ├── DetailBean/ │ │ │ │ │ ├── ACacheFindList.java │ │ │ │ │ ├── Author.java │ │ │ │ │ ├── CategoryInfo.java │ │ │ │ │ ├── Cover.java │ │ │ │ │ ├── Data.java │ │ │ │ │ ├── FindCategory.java │ │ │ │ │ ├── Footer.java │ │ │ │ │ ├── Header.java │ │ │ │ │ ├── ItemList.java │ │ │ │ │ ├── PlayInfo.java │ │ │ │ │ ├── Replies.java │ │ │ │ │ ├── ReplyList.java │ │ │ │ │ ├── SectionList.java │ │ │ │ │ ├── Tags.java │ │ │ │ │ ├── UrlList.java │ │ │ │ │ ├── User.java │ │ │ │ │ └── WebUrl.java │ │ │ │ ├── GankBean.java │ │ │ │ ├── HotEyeBean.java │ │ │ │ ├── LitePalBean/ │ │ │ │ │ ├── Follow.java │ │ │ │ │ ├── LabelType.java │ │ │ │ │ ├── LikeVideo.java │ │ │ │ │ └── SearchTag.java │ │ │ │ ├── ResultBean.java │ │ │ │ └── TestBean.java │ │ │ ├── http/ │ │ │ │ ├── HttpClient.java │ │ │ │ ├── RequestListener.java │ │ │ │ └── cahe/ │ │ │ │ └── ACache.java │ │ │ ├── model/ │ │ │ │ ├── AuthorVideoModel.java │ │ │ │ ├── GankModel.java │ │ │ │ ├── HotVideoModel.java │ │ │ │ ├── ReplyModel.java │ │ │ │ └── SearchModel.java │ │ │ ├── ui/ │ │ │ │ ├── DiscoverFragment.java │ │ │ │ ├── Personal/ │ │ │ │ │ ├── PersonalFragment.java │ │ │ │ │ └── child/ │ │ │ │ │ ├── FollowFragment.java │ │ │ │ │ └── LikeFragment.java │ │ │ │ ├── RecyclerViewNoBugLinearLayoutManager.java │ │ │ │ ├── Search/ │ │ │ │ │ ├── Author/ │ │ │ │ │ │ └── ItemFragment.java │ │ │ │ │ └── SearchFragment.java │ │ │ │ ├── Video/ │ │ │ │ │ └── VideoFragment.java │ │ │ │ └── Welfare/ │ │ │ │ └── WelFareFragment.java │ │ │ ├── utils/ │ │ │ │ ├── BindingUtil.java │ │ │ │ ├── DebugUtil.java │ │ │ │ ├── DensityUtil.java │ │ │ │ ├── IntentManager.java │ │ │ │ ├── LitePalUtil.java │ │ │ │ ├── ShareUtil.java │ │ │ │ └── TimeUtils.java │ │ │ └── view/ │ │ │ ├── CustomView/ │ │ │ │ ├── CategoryPopupWindow.java │ │ │ │ ├── CircleImageView.java │ │ │ │ ├── DragFrameLayout.java │ │ │ │ ├── FollowPopupWindow.java │ │ │ │ ├── HackyViewPager.java │ │ │ │ ├── LabelView.java │ │ │ │ └── ReplyPopupWindow.java │ │ │ └── test.java │ │ └── res/ │ │ ├── anim/ │ │ │ ├── fade_in_bottom.xml │ │ │ ├── fade_in_lt.xml │ │ │ ├── fade_in_rt.xml │ │ │ ├── fade_out_lb.xml │ │ │ ├── fade_out_rb.xml │ │ │ └── fade_out_top.xml │ │ ├── drawable/ │ │ │ ├── bg_save_big_image.xml │ │ │ ├── corner_view.xml │ │ │ ├── ic_arrow_back_white_24px.xml │ │ │ ├── ic_clear_black_24px.xml │ │ │ ├── ic_heart_full_24dp_pink.xml │ │ │ ├── ic_heart_hollow_24dp.xml │ │ │ ├── item_figure.xml │ │ │ ├── item_home.xml │ │ │ ├── item_search.xml │ │ │ └── item_smile.xml │ │ ├── layout/ │ │ │ ├── activity_author_home.xml │ │ │ ├── activity_main.xml │ │ │ ├── activity_result.xml │ │ │ ├── activity_search.xml │ │ │ ├── activity_test.xml │ │ │ ├── activity_video_detail.xml │ │ │ ├── activity_view_big_image.xml │ │ │ ├── author_card.xml │ │ │ ├── bottom_bar.xml │ │ │ ├── category_card.xml │ │ │ ├── category_popup_window.xml │ │ │ ├── follow_popup.xml │ │ │ ├── footer_item_video.xml │ │ │ ├── fragment_base.xml │ │ │ ├── fragment_discover.xml │ │ │ ├── fragment_follow.xml │ │ │ ├── fragment_personal.xml │ │ │ ├── fragment_personal_like.xml │ │ │ ├── fragment_search.xml │ │ │ ├── fragment_video.xml │ │ │ ├── fragment_welfare.xml │ │ │ ├── item_follow.xml │ │ │ ├── item_movie_detail_header.xml │ │ │ ├── item_reply.xml │ │ │ ├── item_welfare.xml │ │ │ ├── label_view.xml │ │ │ ├── like_video_card.xml │ │ │ ├── null_layout.xml │ │ │ ├── recommend_author.xml │ │ │ ├── recommend_category.xml │ │ │ ├── reply_popup_window.xml │ │ │ ├── search_tag.xml │ │ │ ├── select_label_view.xml │ │ │ ├── tag_header_new.xml │ │ │ ├── tag_header_reco.xml │ │ │ ├── test.xml │ │ │ ├── test_cardview.xml │ │ │ ├── video_card.xml │ │ │ └── viewpager_very_image.xml │ │ ├── values/ │ │ │ ├── attrs.xml │ │ │ ├── colors.xml │ │ │ ├── dimens.xml │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── values-v21/ │ │ ├── dimens.xml │ │ └── styles.xml │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── discover/ │ └── ExampleUnitTest.java ├── build.gradle ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── librarys/ │ ├── http/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── http/ │ │ │ └── ExampleInstrumentedTest.java │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── com/ │ │ │ │ └── example/ │ │ │ │ └── http/ │ │ │ │ └── HttpUtils.java │ │ │ └── res/ │ │ │ └── values/ │ │ │ └── strings.xml │ │ └── test/ │ │ └── java/ │ │ └── com/ │ │ └── example/ │ │ └── http/ │ │ └── ExampleUnitTest.java │ ├── jiaozivideoplayer/ │ │ ├── .idea/ │ │ │ ├── compiler.xml │ │ │ ├── copyright/ │ │ │ │ └── profiles_settings.xml │ │ │ ├── gradle.xml │ │ │ ├── misc.xml │ │ │ ├── modules.xml │ │ │ ├── runConfigurations.xml │ │ │ └── workspace.xml │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── cn/ │ │ │ └── jzvd/ │ │ │ └── ApplicationTest.java │ │ ├── main/ │ │ │ ├── AndroidManifest.xml │ │ │ ├── java/ │ │ │ │ └── cn/ │ │ │ │ └── jzvd/ │ │ │ │ ├── JZMediaInterface.java │ │ │ │ ├── JZMediaManager.java │ │ │ │ ├── JZMediaSystem.java │ │ │ │ ├── JZResizeTextureView.java │ │ │ │ ├── JZUserAction.java │ │ │ │ ├── JZUserActionStandard.java │ │ │ │ ├── JZUtils.java │ │ │ │ ├── JZVideoPlayer.java │ │ │ │ ├── JZVideoPlayerManager.java │ │ │ │ └── JZVideoPlayerStandard.java │ │ │ └── res/ │ │ │ ├── anim/ │ │ │ │ ├── quit_fullscreen.xml │ │ │ │ └── start_fullscreen.xml │ │ │ ├── drawable/ │ │ │ │ ├── jz_bottom_progress.xml │ │ │ │ ├── jz_bottom_seek_progress.xml │ │ │ │ ├── jz_bottom_seek_thumb.xml │ │ │ │ ├── jz_click_back_selector.xml │ │ │ │ ├── jz_click_back_tiny_selector.xml │ │ │ │ ├── jz_click_pause_selector.xml │ │ │ │ ├── jz_click_play_selector.xml │ │ │ │ ├── jz_click_replay_selector.xml │ │ │ │ ├── jz_click_share_selector.xml │ │ │ │ ├── jz_dialog_progress.xml │ │ │ │ ├── jz_dialog_progress_bg.xml │ │ │ │ ├── jz_loading.xml │ │ │ │ ├── jz_seek_thumb_normal.xml │ │ │ │ ├── jz_seek_thumb_pressed.xml │ │ │ │ ├── jz_volume_progress_bg.xml │ │ │ │ └── retry_bg.xml │ │ │ ├── layout/ │ │ │ │ ├── jz_dialog_brightness.xml │ │ │ │ ├── jz_dialog_progress.xml │ │ │ │ ├── jz_dialog_volume.xml │ │ │ │ ├── jz_layout_clarity.xml │ │ │ │ ├── jz_layout_clarity_item.xml │ │ │ │ └── jz_layout_standard.xml │ │ │ ├── values/ │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── ids.xml │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ ├── values-es/ │ │ │ │ └── strings.xml │ │ │ ├── values-pt/ │ │ │ │ └── strings.xml │ │ │ ├── values-tr/ │ │ │ │ └── strings.xml │ │ │ └── values-zh/ │ │ │ └── strings.xml │ │ └── test/ │ │ └── java/ │ │ └── cn/ │ │ └── jzvd/ │ │ └── ExampleUnitTest.java │ ├── xrecyclerview/ │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src/ │ │ ├── androidTest/ │ │ │ └── java/ │ │ │ └── com/ │ │ │ └── jcodecraeer/ │ │ │ └── xrecyclerview/ │ │ │ └── ApplicationTest.java │ │ └── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── jcodecraeer/ │ │ │ └── xrecyclerview/ │ │ │ ├── AppBarStateChangeListener.java │ │ │ ├── ArrowRefreshHeader.java │ │ │ ├── BaseRefreshHeader.java │ │ │ ├── CustomFooterViewCallBack.java │ │ │ ├── ItemTouchHelperAdapter.java │ │ │ ├── JellyView.java │ │ │ ├── LoadingMoreFooter.java │ │ │ ├── ProgressStyle.java │ │ │ ├── SimpleItemTouchHelperCallback.java │ │ │ ├── SimpleViewSwitcher.java │ │ │ ├── XRecyclerView.java │ │ │ └── progressindicator/ │ │ │ ├── AVLoadingIndicatorView.java │ │ │ └── indicator/ │ │ │ ├── BallBeatIndicator.java │ │ │ ├── BallClipRotateIndicator.java │ │ │ ├── BallClipRotateMultipleIndicator.java │ │ │ ├── BallClipRotatePulseIndicator.java │ │ │ ├── BallGridBeatIndicator.java │ │ │ ├── BallGridPulseIndicator.java │ │ │ ├── BallPulseIndicator.java │ │ │ ├── BallPulseRiseIndicator.java │ │ │ ├── BallPulseSyncIndicator.java │ │ │ ├── BallRotateIndicator.java │ │ │ ├── BallScaleIndicator.java │ │ │ ├── BallScaleMultipleIndicator.java │ │ │ ├── BallScaleRippleIndicator.java │ │ │ ├── BallScaleRippleMultipleIndicator.java │ │ │ ├── BallSpinFadeLoaderIndicator.java │ │ │ ├── BallTrianglePathIndicator.java │ │ │ ├── BallZigZagDeflectIndicator.java │ │ │ ├── BallZigZagIndicator.java │ │ │ ├── BaseIndicatorController.java │ │ │ ├── CubeTransitionIndicator.java │ │ │ ├── LineScaleIndicator.java │ │ │ ├── LineScalePartyIndicator.java │ │ │ ├── LineScalePulseOutIndicator.java │ │ │ ├── LineScalePulseOutRapidIndicator.java │ │ │ ├── LineSpinFadeLoaderIndicator.java │ │ │ ├── PacmanIndicator.java │ │ │ ├── SemiCircleSpinIndicator.java │ │ │ ├── SquareSpinIndicator.java │ │ │ └── TriangleSkewSpinIndicator.java │ │ └── res/ │ │ ├── drawable/ │ │ │ └── progressloading.xml │ │ ├── drawable-hdpi/ │ │ │ └── progressbar.xml │ │ ├── layout/ │ │ │ ├── listview_footer.xml │ │ │ ├── listview_header.xml │ │ │ └── pull_to_refresh_head.xml │ │ ├── values/ │ │ │ ├── attrs.xml │ │ │ ├── dimens.xml │ │ │ └── strings.xml │ │ └── values-zh/ │ │ └── strings.xml │ └── zmenu/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── example/ │ │ └── zmenu/ │ │ └── ExampleInstrumentedTest.java │ ├── main/ │ │ ├── AndroidManifest.xml │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── zmenu/ │ │ │ ├── FloatButton.java │ │ │ ├── PUtils.java │ │ │ ├── SnakeButtonLayout.java │ │ │ └── ViewController.java │ │ └── res/ │ │ └── values/ │ │ ├── colors.xml │ │ └── strings.xml │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── zmenu/ │ └── ExampleUnitTest.java └── settings.gradle
SYMBOL INDEX (1568 symbols across 152 files)
FILE: app/src/androidTest/java/com/example/discover/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 17) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 19) | @Test
FILE: app/src/main/java/com/example/discover/AuthorHomeActivity.java
class AuthorHomeActivity (line 29) | public class AuthorHomeActivity extends AppCompatActivity {
method onCreate (line 36) | @Override
method init (line 46) | private void init() {
method initFragmentList (line 103) | private void initFragmentList() {
method loadViewPager (line 113) | private void loadViewPager() {
method onDestroy (line 122) | @Override
method onBackPressed (line 129) | @Override
FILE: app/src/main/java/com/example/discover/MainActivity.java
class MainActivity (line 38) | public class MainActivity extends AppCompatActivity {
method handleMessage (line 48) | @Override
method onCreate (line 55) | @Override
method initXMenu (line 71) | public void initXMenu(){
method initXMenuResource (line 87) | public void initXMenuResource() {
method initBinding (line 105) | public void initBinding() {
method initFragmentList (line 121) | public void initFragmentList() {
method loadViewPager (line 129) | public void loadViewPager(){
method initBottomBar (line 171) | public void initBottomBar() {
method onBackPressed (line 222) | @Override
method onKeyDown (line 232) | @Override
method exit (line 247) | private void exit() {
FILE: app/src/main/java/com/example/discover/ResultActivity.java
class ResultActivity (line 32) | public class ResultActivity extends RxAppCompatActivity {
method onCreate (line 39) | @Override
method init (line 49) | public void init() {
method initRecyclerView (line 72) | public void initRecyclerView() {
method showResult (line 102) | public void showResult() {
method onOptionsItemSelected (line 126) | @Override
FILE: app/src/main/java/com/example/discover/SearchActivity.java
class SearchActivity (line 34) | public class SearchActivity extends RxAppCompatActivity {
method onCreate (line 40) | @Override
method init (line 50) | private void init() {
method initRecyclerView (line 94) | private void initRecyclerView() {
method setAdapter (line 100) | private void setAdapter(List<String> list) {
method loadTrendingTag (line 113) | private void loadTrendingTag() {
method onKeyListener (line 139) | private void onKeyListener() {
method search (line 161) | private void search(String key) {
method onOptionsItemSelected (line 170) | @Override
method toResultActivity (line 179) | public void toResultActivity(String key) {
FILE: app/src/main/java/com/example/discover/TestActivity.java
class TestActivity (line 12) | public class TestActivity extends AppCompatActivity {
method onCreate (line 13) | @Override
FILE: app/src/main/java/com/example/discover/VideoDetailActivity.java
class VideoDetailActivity (line 38) | public class VideoDetailActivity extends RxAppCompatActivity {
method onCreate (line 50) | @Override
method init (line 60) | public void init() {
method initJZPlayer (line 129) | public void initJZPlayer() {
method loadReply (line 148) | public void loadReply() {
method onDestroy (line 177) | @Override
method onBackPressed (line 188) | @Override
method toFinish (line 198) | public void toFinish() {
FILE: app/src/main/java/com/example/discover/ViewBigImageActivity.java
class ViewBigImageActivity (line 50) | public class ViewBigImageActivity extends FragmentActivity implements On...
method onCreate (line 89) | @Override
method verifyStoragePermissions (line 98) | public static void verifyStoragePermissions(Activity activity) {
method saveImageToGallery (line 112) | public static void saveImageToGallery(Context context, Bitmap bmp) {
method getImagePath (line 147) | private String getImagePath(String imgUrl) {
method getView (line 165) | private void getView() {
class MyPageAdapter (line 251) | class MyPageAdapter extends PagerAdapter {
method getCount (line 253) | @Override
method isViewFromObject (line 258) | @Override
method instantiateItem (line 263) | @Override
method destroyItem (line 277) | @Override
class ViewPagerAdapter (line 289) | class ViewPagerAdapter extends PagerAdapter {
method ViewPagerAdapter (line 293) | ViewPagerAdapter() {
method instantiateItem (line 297) | @Override
method getCount (line 349) | @Override
method isViewFromObject (line 357) | @Override
method destroyItem (line 362) | @Override
method getItem (line 368) | Object getItem(int position) {
method onPageScrollStateChanged (line 376) | @Override
method onPageScrolled (line 380) | @Override
method onPageSelected (line 387) | @Override
method onPhotoTap (line 396) | @Override
method onOutsidePhotoTap (line 404) | @Override
method onBackPressed (line 409) | @Override
FILE: app/src/main/java/com/example/discover/adapter/AuthorPopAdapter.java
class AuthorPopAdapter (line 26) | public class AuthorPopAdapter extends BaseRecyclerAdapter<ItemList> {
method AuthorPopAdapter (line 28) | public AuthorPopAdapter(Context context) {
method onCreateViewHolder (line 32) | @Override
class AuthorCardHolder (line 37) | public class AuthorCardHolder extends BaseViewHolder<ItemList, AuthorC...
method AuthorCardHolder (line 38) | public AuthorCardHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 42) | @Override
method getItemCount (line 60) | @Override
method setBackGroundColor (line 65) | public void setBackGroundColor(AuthorCardBinding binding, ItemList obj...
FILE: app/src/main/java/com/example/discover/adapter/CategoryPopAdapter.java
class CategoryPopAdapter (line 30) | public class CategoryPopAdapter extends BaseRecyclerAdapter<ItemList> {
method CategoryPopAdapter (line 31) | public CategoryPopAdapter(Context context ) {
method onCreateViewHolder (line 36) | @Override
class CateGoryCardHolder (line 41) | public class CateGoryCardHolder extends BaseViewHolder<ItemList, Categ...
method CateGoryCardHolder (line 42) | public CateGoryCardHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 46) | @Override
method getItemCount (line 64) | @Override
FILE: app/src/main/java/com/example/discover/adapter/FollowRecyclerAdapter.java
class FollowRecyclerAdapter (line 27) | public class FollowRecyclerAdapter extends BaseRecyclerAdapter<Follow> {
method FollowRecyclerAdapter (line 36) | public FollowRecyclerAdapter(Context context) {
method getItemViewType (line 40) | @Override
method onCreateViewHolder (line 49) | @Override
class FollowHolder (line 59) | public class FollowHolder extends BaseViewHolder<Follow, ItemFollowBin...
method FollowHolder (line 60) | public FollowHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 64) | @Override
method toAuthorHomeActivity (line 93) | private void toAuthorHomeActivity(Follow follow) {
class FooterHolder (line 106) | public class FooterHolder extends BaseViewHolder<Object, FooterItemVid...
method FooterHolder (line 107) | public FooterHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 111) | @Override
method updateStateLoad (line 118) | public void updateStateLoad(boolean loading) {
method isLoading (line 127) | public boolean isLoading() {
method hideLoading (line 134) | public void hideLoading() {
FILE: app/src/main/java/com/example/discover/adapter/ItemHelper.java
type ItemHelper (line 7) | public interface ItemHelper {
method onItemMove (line 9) | void onItemMove(int fromPosition, int toPosition);
method onItemDismiss (line 11) | void onItemDismiss(int position);
FILE: app/src/main/java/com/example/discover/adapter/LabelChooseAdapter.java
class LabelChooseAdapter (line 28) | public class LabelChooseAdapter extends RecyclerView.Adapter<LabelChoose...
type ItemClickListener (line 35) | public interface ItemClickListener {
method itemClick (line 36) | void itemClick(String labelType);
method setItemClickListener (line 39) | public void setItemClickListener(ItemClickListener listener) {
method LabelChooseAdapter (line 42) | public LabelChooseAdapter(List<String> list, HashMap map, Context cont...
method onCreateViewHolder (line 48) | @Override
method onBindViewHolder (line 55) | @Override
method getItemCount (line 79) | @Override
class MyViewHolder (line 85) | public class MyViewHolder extends RecyclerView.ViewHolder {
method MyViewHolder (line 89) | private MyViewHolder(View itemView) {
FILE: app/src/main/java/com/example/discover/adapter/LikeVideoRecyclerAdapter.java
class LikeVideoRecyclerAdapter (line 24) | public class LikeVideoRecyclerAdapter extends BaseRecyclerAdapter<LikeVi...
type MyDeleteClickListener (line 37) | public interface MyDeleteClickListener {
method onDelete (line 38) | void onDelete(int position, int id);
method setOnClickListener (line 41) | public void setOnClickListener(MyDeleteClickListener listener){
method LikeVideoRecyclerAdapter (line 45) | public LikeVideoRecyclerAdapter(Context context) {
method onCreateViewHolder (line 49) | @Override
method getItemViewType (line 58) | @Override
class LikeVideoHolder (line 69) | public class LikeVideoHolder extends BaseViewHolder<LikeVideo, LikeVid...
method LikeVideoHolder (line 70) | public LikeVideoHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 74) | @Override
class FooterHolder (line 98) | public class FooterHolder extends BaseViewHolder<Object, FooterItemVid...
method FooterHolder (line 99) | public FooterHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 103) | @Override
method setOnClick (line 111) | public void setOnClick(LikeVideoCardBinding binding, final LikeVideo l...
method updateStateLoad (line 136) | public void updateStateLoad(boolean loading) {
method isLoading (line 145) | public boolean isLoading() {
method hideLoading (line 152) | public void hideLoading() {
FILE: app/src/main/java/com/example/discover/adapter/MyFragmentPagerAdapter.java
class MyFragmentPagerAdapter (line 14) | public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
method MyFragmentPagerAdapter (line 19) | public MyFragmentPagerAdapter(FragmentManager fm) {
method MyFragmentPagerAdapter (line 23) | public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list) {
method MyFragmentPagerAdapter (line 27) | public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> list,...
method getItem (line 33) | @Override
method getCount (line 38) | @Override
method getPageTitle (line 43) | @Override
FILE: app/src/main/java/com/example/discover/adapter/PopReplyAdapter.java
class PopReplyAdapter (line 18) | public class PopReplyAdapter extends RecyclerView.Adapter<PopReplyAdapte...
method PopReplyAdapter (line 22) | public PopReplyAdapter(List<ReplyList> datas) {
method onCreateViewHolder (line 25) | @Override
method onBindViewHolder (line 30) | @Override
method getItemCount (line 38) | @Override
class Holder (line 43) | public class Holder extends RecyclerView.ViewHolder {
method Holder (line 45) | public Holder(ViewGroup parent, int layoutId) {
FILE: app/src/main/java/com/example/discover/adapter/ReplyAdapter.java
class ReplyAdapter (line 23) | public class ReplyAdapter extends RecyclerView.Adapter {
method ReplyAdapter (line 32) | public ReplyAdapter(List<ReplyList> data, View description) {
method getItemViewType (line 36) | @Override
method onCreateViewHolder (line 44) | @Override
method onBindViewHolder (line 58) | @Override
method getItemCount (line 69) | @Override
class Holder (line 76) | public class Holder extends RecyclerView.ViewHolder {
method Holder (line 78) | public Holder(ViewGroup parent, int layoutId) {
class SimpleViewHolder (line 86) | static class SimpleViewHolder extends RecyclerView.ViewHolder {
method SimpleViewHolder (line 88) | public SimpleViewHolder(View itemView) {
FILE: app/src/main/java/com/example/discover/adapter/ResultAdapter.java
class ResultAdapter (line 39) | public class ResultAdapter extends RecyclerView.Adapter<ResultAdapter.Ho...
method ResultAdapter (line 44) | public ResultAdapter(Activity context, List<ItemList> lists) {
method onCreateViewHolder (line 48) | @Override
method onBindViewHolder (line 53) | @Override
method getItemCount (line 70) | @Override
class Holder (line 75) | public class Holder extends RecyclerView.ViewHolder {
method Holder (line 79) | private Holder(ViewGroup parent, int layoutId) {
FILE: app/src/main/java/com/example/discover/adapter/SearchRecyclerAdapter.java
class SearchRecyclerAdapter (line 21) | public class SearchRecyclerAdapter extends BaseRecyclerAdapter<Object> {
method SearchRecyclerAdapter (line 26) | public SearchRecyclerAdapter(Context context) {
method onCreateViewHolder (line 31) | @Override
method getItemViewType (line 42) | @Override
class AuthorBindingHolder (line 52) | public class AuthorBindingHolder extends BaseViewHolder<List<ItemList>...
method AuthorBindingHolder (line 53) | public AuthorBindingHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 57) | @Override
class CategoryBindingHolder (line 65) | public class CategoryBindingHolder extends BaseViewHolder<SectionList,...
method CategoryBindingHolder (line 66) | private CategoryBindingHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 70) | @Override
method getItemCount (line 83) | @Override
FILE: app/src/main/java/com/example/discover/adapter/SearchTagAdapter.java
class SearchTagAdapter (line 30) | public class SearchTagAdapter extends BaseRecyclerAdapter<String> {
type onItemClickListener (line 36) | public interface onItemClickListener {
method onItemClick (line 37) | void onItemClick(String s);
method setItemClickListener (line 40) | public void setItemClickListener(onItemClickListener listener) {
method SearchTagAdapter (line 43) | public SearchTagAdapter(Context context) {
method getItemViewType (line 47) | @Override
method onCreateViewHolder (line 58) | @Override
class HeaderOneHolder (line 70) | public class HeaderOneHolder extends BaseViewHolder<Object, TagHeaderN...
method HeaderOneHolder (line 71) | private HeaderOneHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 75) | @Override
class HeaderTwoHolder (line 81) | public class HeaderTwoHolder extends BaseViewHolder<Object, TagHeaderR...
method HeaderTwoHolder (line 83) | private HeaderTwoHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 87) | @Override
class SearchTagHolder (line 93) | public class SearchTagHolder extends BaseViewHolder<String, SearchTagB...
method SearchTagHolder (line 95) | private SearchTagHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 99) | @Override
method getItemCount (line 134) | @Override
FILE: app/src/main/java/com/example/discover/adapter/SelectTypeRecyclerAdapter.java
class SelectTypeRecyclerAdapter (line 21) | public class SelectTypeRecyclerAdapter extends RecyclerView.Adapter<Sele...
type ItemClickListener (line 27) | public interface ItemClickListener {
method onLongItemLClick (line 28) | void onLongItemLClick(int position);
method setItemCLickListener (line 31) | public void setItemCLickListener(ItemClickListener listener) {
method SelectTypeRecyclerAdapter (line 35) | public SelectTypeRecyclerAdapter(List<String> list, Context context) {
method onCreateViewHolder (line 39) | @Override
method onBindViewHolder (line 46) | @Override
method getItemCount (line 59) | @Override
class MyViewHolder (line 82) | public class MyViewHolder extends RecyclerView.ViewHolder {
method MyViewHolder (line 86) | public MyViewHolder(View itemView) {
FILE: app/src/main/java/com/example/discover/adapter/VideoRecyclerAdapter.java
class VideoRecyclerAdapter (line 37) | public class VideoRecyclerAdapter extends BaseRecyclerAdapter<ItemList> {
method VideoRecyclerAdapter (line 48) | public VideoRecyclerAdapter(Context context) {
method setAuthor (line 52) | public void setAuthor(boolean isAuthor) {
method onCreateViewHolder (line 55) | @Override
method getItemViewType (line 64) | @Override
method updateStateLoad (line 76) | public void updateStateLoad(boolean loading) {
method isLoading (line 84) | public boolean isLoading() {
method hideLoading (line 91) | public void hideLoading() {
class VideoHolder (line 95) | public class VideoHolder extends BaseViewHolder<ItemList, VideoCardBin...
method VideoHolder (line 96) | private VideoHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 99) | @Override
class FooterHolder (line 170) | public class FooterHolder extends BaseViewHolder<Object, FooterItemVid...
method FooterHolder (line 171) | public FooterHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 175) | @Override
method setOnClick (line 183) | private void setOnClick(final ItemList list, final VideoCardBinding bi...
FILE: app/src/main/java/com/example/discover/adapter/WelfareAdapter.java
class WelfareAdapter (line 21) | public class WelfareAdapter extends BaseRecyclerAdapter<GankBean.ResultB...
method WelfareAdapter (line 31) | public WelfareAdapter(Context context) {
method getItemViewType (line 35) | @Override
method onCreateViewHolder (line 46) | @Override
class ContentHolder (line 55) | public class ContentHolder extends BaseViewHolder<GankBean.ResultBean,...
method ContentHolder (line 56) | public ContentHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 60) | @Override
class FooterHolder (line 76) | public class FooterHolder extends BaseViewHolder<Object, FooterItemVid...
method FooterHolder (line 77) | public FooterHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 81) | @Override
method isLoading (line 89) | public boolean isLoading() {
method hideLoading (line 96) | public void hideLoading() {
method updateStateLoad (line 100) | public void updateStateLoad(boolean loading) {
method onViewAttachedToWindow (line 108) | @Override
method isStaggeredGridLayout (line 116) | private boolean isStaggeredGridLayout(RecyclerView.ViewHolder holder) {
method handleLayoutIfStaggeredGridLayout (line 124) | protected void handleLayoutIfStaggeredGridLayout(RecyclerView.ViewHold...
method isFooter (line 131) | public boolean isFooter(int position) {
FILE: app/src/main/java/com/example/discover/app/Constant.java
class Constant (line 14) | public class Constant {
FILE: app/src/main/java/com/example/discover/app/DiscoverApplication.java
class DiscoverApplication (line 18) | public class DiscoverApplication extends Application {
method getDiscoverApplication (line 22) | public static DiscoverApplication getDiscoverApplication() {
method onCreate (line 26) | @Override
method getRefWatcher (line 35) | public static RefWatcher getRefWatcher(Context context) {
FILE: app/src/main/java/com/example/discover/base/BaseFragment.java
class BaseFragment (line 28) | public abstract class BaseFragment<SV extends ViewDataBinding> extends R...
method onCreateView (line 36) | @Nullable
method setUserVisibleHint (line 48) | @Override
method onActivityCreated (line 59) | @Override
method getView (line 77) | public View getView(int id) {
method onVisible (line 81) | public void onVisible() {
method onInvisible (line 84) | public void onInvisible(){}
method loadData (line 85) | protected void loadData(){}
method setContentView (line 86) | public abstract int setContentView();
method onDestroy (line 90) | @Override
method showLoading (line 98) | protected void showLoading() {
method showContentView (line 109) | protected void showContentView() {
method Error (line 120) | protected void Error() {
method Refresh (line 129) | protected void Refresh() {
FILE: app/src/main/java/com/example/discover/base/baseadapter/BaseRecyclerAdapter.java
class BaseRecyclerAdapter (line 15) | public abstract class BaseRecyclerAdapter<T> extends RecyclerView.Adapte...
method BaseRecyclerAdapter (line 22) | public BaseRecyclerAdapter(Context context) {
method onBindViewHolder (line 26) | @Override
method getItemCount (line 37) | @Override
method addAll (line 43) | public void addAll(List<T> data) {
method add (line 49) | public void add(T data) {
method clear (line 52) | public void clear() {
method delete (line 56) | public void delete(int position) {
method setOnItemClickListener (line 65) | public void setOnItemClickListener(OnItemClickListener<T> listener) {
method setOnItemLongClickListener (line 69) | public void setOnItemLongClickListener(OnItemLongClickListener<T> onIt...
FILE: app/src/main/java/com/example/discover/base/baseadapter/BaseViewHolder.java
class BaseViewHolder (line 13) | public abstract class BaseViewHolder<T,H extends ViewDataBinding> extend...
method BaseViewHolder (line 16) | public BaseViewHolder(ViewGroup parent, int layoutId) {
method fillHolder (line 22) | public abstract void fillHolder(T object, int position);
method baseFillHolder (line 27) | public void baseFillHolder(T object, int position) {
FILE: app/src/main/java/com/example/discover/base/baseadapter/OnItemClickListener.java
type OnItemClickListener (line 8) | public interface OnItemClickListener<T> {
method onClick (line 9) | public void onClick(View view, T t, int position);
FILE: app/src/main/java/com/example/discover/base/baseadapter/OnItemLongClickListener.java
type OnItemLongClickListener (line 6) | public interface OnItemLongClickListener<T> {
method onLongClick (line 7) | public void onLongClick(T t, int position);
FILE: app/src/main/java/com/example/discover/bean/AuthorDetailBean.java
class AuthorDetailBean (line 12) | public class AuthorDetailBean implements Serializable {
method getItemList (line 16) | public List<ItemList> getItemList() {
method setItemList (line 20) | public void setItemList(List<ItemList> itemList) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/ACacheFindList.java
class ACacheFindList (line 11) | public class ACacheFindList implements Serializable {
method getScrollCardSection (line 16) | public List<SectionList> getScrollCardSection() {
method setScrollCardSection (line 20) | public void setScrollCardSection(List<SectionList> scrollCardSection) {
method getVideoSection (line 24) | public List<SectionList> getVideoSection() {
method setVideoSection (line 28) | public void setVideoSection(List<SectionList> videoSection) {
method getAuthorSection (line 32) | public List<SectionList> getAuthorSection() {
method setAuthorSection (line 36) | public void setAuthorSection(List<SectionList> authorSection) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Author.java
class Author (line 9) | public class Author implements Serializable {
method getId (line 16) | public int getId() {
method setId (line 20) | public void setId(int id) {
method getIcon (line 24) | public String getIcon() {
method setIcon (line 28) | public void setIcon(String icon) {
method getName (line 32) | public String getName() {
method setName (line 36) | public void setName(String name) {
method getDescription (line 40) | public String getDescription() {
method setDescription (line 44) | public void setDescription(String description) {
method getVideoNum (line 48) | public int getVideoNum() {
method setVideoNum (line 52) | public void setVideoNum(int videoNum) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/CategoryInfo.java
class CategoryInfo (line 9) | public class CategoryInfo implements Serializable {
method getDataType (line 17) | public String getDataType() {
method setDataType (line 21) | public void setDataType(String dataType) {
method getId (line 25) | public int getId() {
method setId (line 29) | public void setId(int id) {
method getName (line 33) | public String getName() {
method setName (line 37) | public void setName(String name) {
method getDescription (line 41) | public String getDescription() {
method setDescription (line 45) | public void setDescription(String description) {
method getHeaderImage (line 49) | public String getHeaderImage() {
method setHeaderImage (line 53) | public void setHeaderImage(String headerImage) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Cover.java
class Cover (line 9) | public class Cover implements Serializable {
method getFeed (line 14) | public String getFeed() {
method setFeed (line 18) | public void setFeed(String feed) {
method getDetail (line 22) | public String getDetail() {
method setDetail (line 26) | public void setDetail(String detail) {
method getBlurred (line 30) | public String getBlurred() {
method setBlurred (line 34) | public void setBlurred(String blurred) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Data.java
class Data (line 10) | public class Data implements Serializable {
method getId (line 31) | public int getId() {
method getActionUrl (line 35) | public String getActionUrl() {
method getDescription (line 39) | public String getDescription() {
method getTitle (line 43) | public String getTitle() {
method getIcon (line 47) | public String getIcon() {
method getItemList (line 51) | public List<ItemList> getItemList() {
method getPlayUrl (line 55) | public String getPlayUrl() {
method getAuthor (line 59) | public Author getAuthor() {
method getCover (line 63) | public Cover getCover() {
method getHeader (line 67) | public Header getHeader() {
method getDuration (line 71) | public long getDuration() {
method getCategory (line 75) | public String getCategory() {
method getDataType (line 79) | public String getDataType() {
method getImage (line 83) | public String getImage() {
method getText (line 87) | public String getText() {
method getPlayinfo (line 91) | public List<PlayInfo> getPlayinfo() {
method getWebUrl (line 95) | public WebUrl getWebUrl() {
method getTags (line 99) | public List<Tags> getTags() {
method setId (line 103) | public void setId(int id) {
method setActionUrl (line 107) | public void setActionUrl(String actionUrl) {
method setDescription (line 111) | public void setDescription(String description) {
method setTitle (line 115) | public void setTitle(String title) {
method setIcon (line 119) | public void setIcon(String icon) {
method setItemList (line 123) | public void setItemList(List<ItemList> itemList) {
method setPlayUrl (line 127) | public void setPlayUrl(String playUrl) {
method setAuthor (line 131) | public void setAuthor(Author author) {
method setCategory (line 135) | public void setCategory(String category) {
method setCover (line 139) | public void setCover(Cover cover) {
method setDataType (line 143) | public void setDataType(String dataType) {
method setDuration (line 147) | public void setDuration(long duration) {
method setHeader (line 151) | public void setHeader(Header header) {
method setImage (line 155) | public void setImage(String image) {
method setShade (line 159) | public void setShade(boolean shade) {
method setText (line 163) | public void setText(String text) {
method setPlayinfo (line 167) | public void setPlayinfo(List<PlayInfo> list) {
method setWebUrl (line 171) | public void setWebUrl(WebUrl webUrl) {
method setTags (line 175) | public void setTags(List<Tags> tags) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/FindCategory.java
class FindCategory (line 10) | public class FindCategory implements Serializable{
method getCategoryInfo (line 14) | public CategoryInfo getCategoryInfo() {
method setCategoryInfo (line 18) | public void setCategoryInfo(CategoryInfo categoryInfo) {
method getSectionList (line 22) | public List<SectionList> getSectionList() {
method setSectionList (line 26) | public void setSectionList(List<SectionList> sectionList) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Footer.java
class Footer (line 9) | public class Footer implements Serializable {
method getType (line 14) | public String getType() {
method setType (line 18) | public void setType(String type) {
method getData (line 22) | public Data getData() {
method setData (line 26) | public void setData(Data data) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Header.java
class Header (line 9) | public class Header implements Serializable {
method getId (line 18) | public int getId() {
method setId (line 22) | public void setId(int id) {
method getIcon (line 26) | public String getIcon() {
method setIcon (line 30) | public void setIcon(String icon) {
method getTitle (line 34) | public String getTitle() {
method setTitle (line 38) | public void setTitle(String title) {
method getSubTitle (line 42) | public String getSubTitle() {
method setSubTitle (line 46) | public void setSubTitle(String subTitle) {
method getDescription (line 50) | public String getDescription() {
method setDescription (line 54) | public void setDescription(String description) {
method getActionUrl (line 58) | public String getActionUrl() {
method setActionUrl (line 62) | public void setActionUrl(String actionUrl) {
method getData (line 66) | public Data getData() {
method setData (line 70) | public void setData(Data data) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/ItemList.java
class ItemList (line 9) | public class ItemList implements Serializable{
method getType (line 14) | public String getType() {
method setType (line 18) | public void setType(String type) {
method getData (line 22) | public Data getData() {
method setData (line 26) | public void setData(Data data) {
method getTag (line 30) | public String getTag() {
method setTag (line 34) | public void setTag(String tag) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/PlayInfo.java
class PlayInfo (line 10) | public class PlayInfo implements Serializable {
method getHeight (line 28) | public int getHeight() {
method setHeight (line 32) | public void setHeight(int height) {
method getWidth (line 36) | public int getWidth() {
method setWidth (line 40) | public void setWidth(int width) {
method getName (line 44) | public String getName() {
method setName (line 48) | public void setName(String name) {
method getType (line 52) | public String getType() {
method setType (line 56) | public void setType(String type) {
method getUrl (line 60) | public String getUrl() {
method setUrl (line 64) | public void setUrl(String url) {
method getUrlList (line 68) | public List<UrlList> getUrlList() {
method setUrlList (line 72) | public void setUrlList(List<UrlList> urlList) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Replies.java
class Replies (line 10) | public class Replies implements Serializable{
method getReplyList (line 14) | public List<ReplyList> getReplyList() {
method setReplyList (line 18) | public void setReplyList(List<ReplyList> replyList) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/ReplyList.java
class ReplyList (line 9) | public class ReplyList implements Serializable {
method getId (line 20) | public long getId() {
method setId (line 24) | public void setId(long id) {
method getVideoId (line 28) | public int getVideoId() {
method setVideoId (line 32) | public void setVideoId(int videoId) {
method getLikeCount (line 36) | public int getLikeCount() {
method setLikeCount (line 40) | public void setLikeCount(int likeCount) {
method getSequence (line 44) | public int getSequence() {
method setSequence (line 48) | public void setSequence(int sequence) {
method getCreateTime (line 52) | public long getCreateTime() {
method setCreateTime (line 56) | public void setCreateTime(long createTime) {
method getMessage (line 60) | public String getMessage() {
method setMessage (line 64) | public void setMessage(String message) {
method getVideoTitle (line 68) | public String getVideoTitle() {
method setVideoTitle (line 72) | public void setVideoTitle(String videoTitle) {
method setUser (line 76) | public void setUser(User user) {
method getUser (line 80) | public User getUser() {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/SectionList.java
class SectionList (line 10) | public class SectionList implements Serializable {
method getId (line 17) | public int getId() {
method setId (line 21) | public void setId(int id) {
method getType (line 25) | public String getType() {
method setType (line 29) | public void setType(String type) {
method getHeader (line 33) | public Header getHeader() {
method setHeader (line 37) | public void setHeader(Header header) {
method getItemList (line 41) | public List<ItemList> getItemList() {
method setItemList (line 45) | public void setItemList(List<ItemList> itemList) {
method getFooter (line 49) | public Footer getFooter() {
method setFooter (line 53) | public void setFooter(Footer footer) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/Tags.java
class Tags (line 9) | public class Tags implements Serializable {
method getName (line 13) | public String getName() {
method setName (line 17) | public void setName(String name) {
method getHeaderImage (line 21) | public String getHeaderImage() {
method setHeaderImage (line 25) | public void setHeaderImage(String headerImage) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/UrlList.java
class UrlList (line 9) | public class UrlList implements Serializable {
method getName (line 21) | public String getName() {
method setName (line 25) | public void setName(String name) {
method getUrl (line 29) | public String getUrl() {
method setUrl (line 33) | public void setUrl(String url) {
method getSize (line 37) | public int getSize() {
method setSize (line 41) | public void setSize(int size) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/User.java
class User (line 9) | public class User implements Serializable {
method getUid (line 15) | public int getUid() {
method setUid (line 19) | public void setUid(int uid) {
method getNickname (line 23) | public String getNickname() {
method setNickname (line 27) | public void setNickname(String nickname) {
method getAvatar (line 31) | public String getAvatar() {
method setAvatar (line 35) | public void setAvatar(String avatar) {
FILE: app/src/main/java/com/example/discover/bean/DetailBean/WebUrl.java
class WebUrl (line 9) | public class WebUrl implements Serializable {
method getRaw (line 14) | public String getRaw() {
method setRaw (line 18) | public void setRaw(String raw) {
method getForWeibo (line 22) | public String getForWeibo() {
method setForWeibo (line 26) | public void setForWeibo(String forWeibo) {
FILE: app/src/main/java/com/example/discover/bean/GankBean.java
class GankBean (line 10) | public class GankBean implements Serializable {
class ResultBean (line 27) | public static class ResultBean implements Serializable {
method get_id (line 41) | public String get_id() {
method getCreatedAt (line 45) | public String getCreatedAt() {
method getDesc (line 49) | public String getDesc() {
method getPublishedAt (line 53) | public String getPublishedAt() {
method getSource (line 57) | public String getSource() {
method getType (line 61) | public String getType() {
method getUrl (line 65) | public String getUrl() {
method isUsed (line 69) | public boolean isUsed() {
method getWho (line 73) | public String getWho() {
method toString (line 77) | @Override
method getImages (line 92) | public List<String> getImages() {
method isError (line 97) | public boolean isError() {
method getResults (line 101) | public List<ResultBean> getResults() {
FILE: app/src/main/java/com/example/discover/bean/HotEyeBean.java
class HotEyeBean (line 12) | public class HotEyeBean implements Serializable {
method getItemList (line 17) | public List<ItemList> getItemList() {
method setItemList (line 21) | public void setItemList(List<ItemList> itemList) {
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/Follow.java
class Follow (line 9) | public class Follow extends DataSupport {
method getId (line 18) | public int getId() {
method setId (line 22) | public void setId(int id) {
method getAuthorId (line 26) | public int getAuthorId() {
method setAuthorId (line 30) | public void setAuthorId(int authorId) {
method getAuthorName (line 34) | public String getAuthorName() {
method setAuthorName (line 38) | public void setAuthorName(String authorName) {
method getAuthorDesc (line 42) | public String getAuthorDesc() {
method setAuthorDesc (line 46) | public void setAuthorDesc(String authorDesc) {
method getIconUrl (line 50) | public String getIconUrl() {
method setIconUrl (line 54) | public void setIconUrl(String iconUrl) {
method getBackgroundColor (line 58) | public int getBackgroundColor() {
method setBackgroundColor (line 62) | public void setBackgroundColor(int backgroundColor) {
method getBackgroundImage (line 66) | public String getBackgroundImage() {
method setBackgroundImage (line 70) | public void setBackgroundImage(String backgroundImage) {
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/LabelType.java
class LabelType (line 9) | public class LabelType extends DataSupport {
method getType (line 13) | public String getType() {
method setType (line 17) | public void setType(String type) {
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/LikeVideo.java
class LikeVideo (line 10) | public class LikeVideo extends DataSupport {
method getId (line 26) | public int getId() {
method setId (line 30) | public void setId(int id) {
method getVideoId (line 34) | public int getVideoId() {
method setVideoId (line 38) | public void setVideoId(int videoId) {
method getTitle (line 42) | public String getTitle() {
method setTitle (line 46) | public void setTitle(String title) {
method getDescription (line 50) | public String getDescription() {
method setDescription (line 54) | public void setDescription(String description) {
method getPlayUrl (line 58) | public String getPlayUrl() {
method setPlayUrl (line 62) | public void setPlayUrl(String playUrl) {
method getImageUrl (line 66) | public String getImageUrl() {
method setImageUrl (line 70) | public void setImageUrl(String imageUrl) {
method getAuthorName (line 75) | public String getAuthorName() {
method setAuthorName (line 79) | public void setAuthorName(String auhtorName) {
method getAuthorId (line 83) | public int getAuthorId() {
method setAuthorId (line 87) | public void setAuthorId(int auhtorId) {
method getAuthorDesc (line 91) | public String getAuthorDesc() {
method setAuthorDesc (line 95) | public void setAuthorDesc(String authorDesc) {
method getAuthorIcon (line 99) | public String getAuthorIcon() {
method setAuthorIcon (line 103) | public void setAuthorIcon(String authorIcon) {
method getLabelColor (line 107) | public int getLabelColor() {
method setLabelColor (line 111) | public void setLabelColor(int labelColor) {
method getLabelText (line 115) | public String getLabelText() {
method setLabelText (line 119) | public void setLabelText(String labelText) {
method getSize (line 123) | public int getSize() {
method setSize (line 127) | public void setSize(int size) {
FILE: app/src/main/java/com/example/discover/bean/LitePalBean/SearchTag.java
class SearchTag (line 10) | public class SearchTag extends DataSupport {
method getTag (line 14) | public String getTag() {
method setTag (line 18) | public void setTag(String tag) {
FILE: app/src/main/java/com/example/discover/bean/ResultBean.java
class ResultBean (line 13) | public class ResultBean implements Serializable {
method getItemList (line 18) | public List<ItemList> getItemList() {
method setItemList (line 22) | public void setItemList(List<ItemList> itemList) {
FILE: app/src/main/java/com/example/discover/bean/TestBean.java
class TestBean (line 9) | public class TestBean {
method getCount (line 26) | public int getCount() {
method setCount (line 30) | public void setCount(int count) {
method getTotal (line 34) | public int getTotal() {
method setTotal (line 38) | public void setTotal(int total) {
method getNextPageUrl (line 42) | public String getNextPageUrl() {
method setNextPageUrl (line 46) | public void setNextPageUrl(String nextPageUrl) {
method isAdExist (line 50) | public boolean isAdExist() {
method setAdExist (line 54) | public void setAdExist(boolean adExist) {
method getItemList (line 58) | public List<ItemListBean> getItemList() {
method setItemList (line 62) | public void setItemList(List<ItemListBean> itemList) {
class ItemListBean (line 66) | public static class ItemListBean {
method getType (line 81) | public String getType() {
method setType (line 85) | public void setType(String type) {
method getData (line 89) | public DataBean getData() {
method setData (line 93) | public void setData(DataBean data) {
method getTag (line 97) | public Object getTag() {
method setTag (line 101) | public void setTag(Object tag) {
method getId (line 105) | public int getId() {
method setId (line 109) | public void setId(int id) {
method getAdIndex (line 113) | public int getAdIndex() {
method setAdIndex (line 117) | public void setAdIndex(int adIndex) {
class DataBean (line 121) | public static class DataBean {
method getDataType (line 206) | public String getDataType() {
method setDataType (line 210) | public void setDataType(String dataType) {
method getId (line 214) | public int getId() {
method setId (line 218) | public void setId(int id) {
method getTitle (line 222) | public String getTitle() {
method setTitle (line 226) | public void setTitle(String title) {
method getSlogan (line 230) | public Object getSlogan() {
method setSlogan (line 234) | public void setSlogan(Object slogan) {
method getDescription (line 238) | public String getDescription() {
method setDescription (line 242) | public void setDescription(String description) {
method getProvider (line 246) | public ProviderBean getProvider() {
method setProvider (line 250) | public void setProvider(ProviderBean provider) {
method getCategory (line 254) | public String getCategory() {
method setCategory (line 258) | public void setCategory(String category) {
method getAuthor (line 262) | public AuthorBean getAuthor() {
method setAuthor (line 266) | public void setAuthor(AuthorBean author) {
method getCover (line 270) | public CoverBean getCover() {
method setCover (line 274) | public void setCover(CoverBean cover) {
method getPlayUrl (line 278) | public String getPlayUrl() {
method setPlayUrl (line 282) | public void setPlayUrl(String playUrl) {
method getThumbPlayUrl (line 286) | public Object getThumbPlayUrl() {
method setThumbPlayUrl (line 290) | public void setThumbPlayUrl(Object thumbPlayUrl) {
method getDuration (line 294) | public int getDuration() {
method setDuration (line 298) | public void setDuration(int duration) {
method getWebUrl (line 302) | public WebUrlBean getWebUrl() {
method setWebUrl (line 306) | public void setWebUrl(WebUrlBean webUrl) {
method getReleaseTime (line 310) | public long getReleaseTime() {
method setReleaseTime (line 314) | public void setReleaseTime(long releaseTime) {
method getLibrary (line 318) | public String getLibrary() {
method setLibrary (line 322) | public void setLibrary(String library) {
method getConsumption (line 326) | public ConsumptionBean getConsumption() {
method setConsumption (line 330) | public void setConsumption(ConsumptionBean consumption) {
method getCampaign (line 334) | public Object getCampaign() {
method setCampaign (line 338) | public void setCampaign(Object campaign) {
method getWaterMarks (line 342) | public Object getWaterMarks() {
method setWaterMarks (line 346) | public void setWaterMarks(Object waterMarks) {
method getAdTrack (line 350) | public Object getAdTrack() {
method setAdTrack (line 354) | public void setAdTrack(Object adTrack) {
method getType (line 358) | public String getType() {
method setType (line 362) | public void setType(String type) {
method getTitlePgc (line 366) | public String getTitlePgc() {
method setTitlePgc (line 370) | public void setTitlePgc(String titlePgc) {
method getDescriptionPgc (line 374) | public String getDescriptionPgc() {
method setDescriptionPgc (line 378) | public void setDescriptionPgc(String descriptionPgc) {
method getRemark (line 382) | public String getRemark() {
method setRemark (line 386) | public void setRemark(String remark) {
method getIdx (line 390) | public int getIdx() {
method setIdx (line 394) | public void setIdx(int idx) {
method getShareAdTrack (line 398) | public Object getShareAdTrack() {
method setShareAdTrack (line 402) | public void setShareAdTrack(Object shareAdTrack) {
method getFavoriteAdTrack (line 406) | public Object getFavoriteAdTrack() {
method setFavoriteAdTrack (line 410) | public void setFavoriteAdTrack(Object favoriteAdTrack) {
method getWebAdTrack (line 414) | public Object getWebAdTrack() {
method setWebAdTrack (line 418) | public void setWebAdTrack(Object webAdTrack) {
method getDate (line 422) | public long getDate() {
method setDate (line 426) | public void setDate(long date) {
method getPromotion (line 430) | public Object getPromotion() {
method setPromotion (line 434) | public void setPromotion(Object promotion) {
method getLabel (line 438) | public Object getLabel() {
method setLabel (line 442) | public void setLabel(Object label) {
method getDescriptionEditor (line 446) | public String getDescriptionEditor() {
method setDescriptionEditor (line 450) | public void setDescriptionEditor(String descriptionEditor) {
method isCollected (line 454) | public boolean isCollected() {
method setCollected (line 458) | public void setCollected(boolean collected) {
method isPlayed (line 462) | public boolean isPlayed() {
method setPlayed (line 466) | public void setPlayed(boolean played) {
method getLastViewTime (line 470) | public Object getLastViewTime() {
method setLastViewTime (line 474) | public void setLastViewTime(Object lastViewTime) {
method getPlaylists (line 478) | public Object getPlaylists() {
method setPlaylists (line 482) | public void setPlaylists(Object playlists) {
method getSrc (line 486) | public Object getSrc() {
method setSrc (line 490) | public void setSrc(Object src) {
method getPlayInfo (line 494) | public List<PlayInfoBean> getPlayInfo() {
method setPlayInfo (line 498) | public void setPlayInfo(List<PlayInfoBean> playInfo) {
method getTags (line 502) | public List<TagsBean> getTags() {
method setTags (line 506) | public void setTags(List<TagsBean> tags) {
method getLabelList (line 510) | public List<?> getLabelList() {
method setLabelList (line 514) | public void setLabelList(List<?> labelList) {
method getSubtitles (line 518) | public List<?> getSubtitles() {
method setSubtitles (line 522) | public void setSubtitles(List<?> subtitles) {
class ProviderBean (line 526) | public static class ProviderBean {
method getName (line 537) | public String getName() {
method setName (line 541) | public void setName(String name) {
method getAlias (line 545) | public String getAlias() {
method setAlias (line 549) | public void setAlias(String alias) {
method getIcon (line 553) | public String getIcon() {
method setIcon (line 557) | public void setIcon(String icon) {
class AuthorBean (line 562) | public static class AuthorBean {
method getId (line 591) | public int getId() {
method setId (line 595) | public void setId(int id) {
method getIcon (line 599) | public String getIcon() {
method setIcon (line 603) | public void setIcon(String icon) {
method getName (line 607) | public String getName() {
method setName (line 611) | public void setName(String name) {
method getDescription (line 615) | public String getDescription() {
method setDescription (line 619) | public void setDescription(String description) {
method getLink (line 623) | public String getLink() {
method setLink (line 627) | public void setLink(String link) {
method getLatestReleaseTime (line 631) | public long getLatestReleaseTime() {
method setLatestReleaseTime (line 635) | public void setLatestReleaseTime(long latestReleaseTime) {
method getVideoNum (line 639) | public int getVideoNum() {
method setVideoNum (line 643) | public void setVideoNum(int videoNum) {
method getAdTrack (line 647) | public Object getAdTrack() {
method setAdTrack (line 651) | public void setAdTrack(Object adTrack) {
method getFollow (line 655) | public FollowBean getFollow() {
method setFollow (line 659) | public void setFollow(FollowBean follow) {
method getShield (line 663) | public ShieldBean getShield() {
method setShield (line 667) | public void setShield(ShieldBean shield) {
method getApprovedNotReadyVideoCount (line 671) | public int getApprovedNotReadyVideoCount() {
method setApprovedNotReadyVideoCount (line 675) | public void setApprovedNotReadyVideoCount(int approvedNotReadyVi...
method isIfPgc (line 679) | public boolean isIfPgc() {
method setIfPgc (line 683) | public void setIfPgc(boolean ifPgc) {
class FollowBean (line 687) | public static class FollowBean {
method getItemType (line 698) | public String getItemType() {
method setItemType (line 702) | public void setItemType(String itemType) {
method getItemId (line 706) | public int getItemId() {
method setItemId (line 710) | public void setItemId(int itemId) {
method isFollowed (line 714) | public boolean isFollowed() {
method setFollowed (line 718) | public void setFollowed(boolean followed) {
class ShieldBean (line 723) | public static class ShieldBean {
method getItemType (line 734) | public String getItemType() {
method setItemType (line 738) | public void setItemType(String itemType) {
method getItemId (line 742) | public int getItemId() {
method setItemId (line 746) | public void setItemId(int itemId) {
method isShielded (line 750) | public boolean isShielded() {
method setShielded (line 754) | public void setShielded(boolean shielded) {
class CoverBean (line 760) | public static class CoverBean {
method getFeed (line 775) | public String getFeed() {
method setFeed (line 779) | public void setFeed(String feed) {
method getDetail (line 783) | public String getDetail() {
method setDetail (line 787) | public void setDetail(String detail) {
method getBlurred (line 791) | public String getBlurred() {
method setBlurred (line 795) | public void setBlurred(String blurred) {
method getSharing (line 799) | public Object getSharing() {
method setSharing (line 803) | public void setSharing(Object sharing) {
method getHomepage (line 807) | public Object getHomepage() {
method setHomepage (line 811) | public void setHomepage(Object homepage) {
class WebUrlBean (line 816) | public static class WebUrlBean {
method getRaw (line 825) | public String getRaw() {
method setRaw (line 829) | public void setRaw(String raw) {
method getForWeibo (line 833) | public String getForWeibo() {
method setForWeibo (line 837) | public void setForWeibo(String forWeibo) {
class ConsumptionBean (line 842) | public static class ConsumptionBean {
method getCollectionCount (line 853) | public int getCollectionCount() {
method setCollectionCount (line 857) | public void setCollectionCount(int collectionCount) {
method getShareCount (line 861) | public int getShareCount() {
method setShareCount (line 865) | public void setShareCount(int shareCount) {
method getReplyCount (line 869) | public int getReplyCount() {
method setReplyCount (line 873) | public void setReplyCount(int replyCount) {
class PlayInfoBean (line 878) | public static class PlayInfoBean {
method getHeight (line 895) | public int getHeight() {
method setHeight (line 899) | public void setHeight(int height) {
method getWidth (line 903) | public int getWidth() {
method setWidth (line 907) | public void setWidth(int width) {
method getName (line 911) | public String getName() {
method setName (line 915) | public void setName(String name) {
method getType (line 919) | public String getType() {
method setType (line 923) | public void setType(String type) {
method getUrl (line 927) | public String getUrl() {
method setUrl (line 931) | public void setUrl(String url) {
method getUrlList (line 935) | public List<UrlListBean> getUrlList() {
method setUrlList (line 939) | public void setUrlList(List<UrlListBean> urlList) {
class UrlListBean (line 943) | public static class UrlListBean {
method getName (line 954) | public String getName() {
method setName (line 958) | public void setName(String name) {
method getUrl (line 962) | public String getUrl() {
method setUrl (line 966) | public void setUrl(String url) {
method getSize (line 970) | public int getSize() {
method setSize (line 974) | public void setSize(int size) {
class TagsBean (line 980) | public static class TagsBean {
method getId (line 1001) | public int getId() {
method setId (line 1005) | public void setId(int id) {
method getName (line 1009) | public String getName() {
method setName (line 1013) | public void setName(String name) {
method getActionUrl (line 1017) | public String getActionUrl() {
method setActionUrl (line 1021) | public void setActionUrl(String actionUrl) {
method getAdTrack (line 1025) | public Object getAdTrack() {
method setAdTrack (line 1029) | public void setAdTrack(Object adTrack) {
method getDesc (line 1033) | public Object getDesc() {
method setDesc (line 1037) | public void setDesc(Object desc) {
method getBgPicture (line 1041) | public String getBgPicture() {
method setBgPicture (line 1045) | public void setBgPicture(String bgPicture) {
method getHeaderImage (line 1049) | public String getHeaderImage() {
method setHeaderImage (line 1053) | public void setHeaderImage(String headerImage) {
method getTagRecType (line 1057) | public String getTagRecType() {
method setTagRecType (line 1061) | public void setTagRecType(String tagRecType) {
FILE: app/src/main/java/com/example/discover/http/HttpClient.java
type HttpClient (line 24) | public interface HttpClient {
class Builder (line 25) | class Builder {
method getEyeService (line 26) | public static HttpClient getEyeService() {
method getGankService (line 30) | public static HttpClient getGankService() {
method getEyeHot (line 41) | @GET("v4/discovery/hot")
method getEyeCateGory (line 49) | @GET("v3/categories/detail")
method getAuthorRelated (line 52) | @GET("v3/pgc/videos")
method getTrendingTag (line 55) | @GET("v3/queries/hot")
method getResult (line 58) | @GET("v1/search?num=10")
method fetchReplies (line 61) | @GET("v1/replies/video")
method fetchReplies (line 64) | @GET("v1/replies/video?num=10")
method getGankData (line 68) | @GET("data/{type}/{number}/{page}")
FILE: app/src/main/java/com/example/discover/http/RequestListener.java
type RequestListener (line 9) | public interface RequestListener {
method onSuccess (line 10) | void onSuccess(Object object);
method onFailed (line 12) | void onFailed(Throwable t);
method onCompleted (line 14) | void onCompleted();
FILE: app/src/main/java/com/example/discover/http/cahe/ACache.java
class ACache (line 53) | public class ACache {
method get (line 61) | public static ACache get(Context ctx) {
method get (line 65) | public static ACache get(Context ctx, String cacheName) {
method get (line 70) | public static ACache get(File cacheDir) {
method get (line 74) | public static ACache get(Context ctx, long max_zise, int max_count) {
method get (line 79) | public static ACache get(File cacheDir, long max_zise, int max_count) {
method myPid (line 88) | private static String myPid() {
method ACache (line 92) | private ACache(File cacheDir, long max_size, int max_count) {
method put (line 111) | public void put(String key, String value) {
method put (line 142) | public void put(String key, String value, int saveTime) {
method getAsString (line 152) | public String getAsString(String key) {
method put (line 198) | public void put(String key, JSONObject value) {
method put (line 212) | public void put(String key, JSONObject value, int saveTime) {
method getAsJSONObject (line 222) | public JSONObject getAsJSONObject(String key) {
method put (line 244) | public void put(String key, JSONArray value) {
method put (line 258) | public void put(String key, JSONArray value, int saveTime) {
method getAsJSONArray (line 268) | public JSONArray getAsJSONArray(String key) {
method put (line 290) | public void put(String key, byte[] value) {
method put (line 321) | public void put(String key, byte[] value, int saveTime) {
method getAsBinary (line 331) | public byte[] getAsBinary(String key) {
method put (line 374) | public void put(String key, Serializable value) {
method put (line 388) | public void put(String key, Serializable value, int saveTime) {
method getAsObject (line 417) | public Object getAsObject(String key) {
method put (line 460) | public void put(String key, Bitmap value) {
method put (line 474) | public void put(String key, Bitmap value, int saveTime) {
method getAsBitmap (line 484) | public Bitmap getAsBitmap(String key) {
method put (line 502) | public void put(String key, Drawable value) {
method put (line 516) | public void put(String key, Drawable value, int saveTime) {
method getAsDrawable (line 526) | public Drawable getAsDrawable(String key) {
method file (line 539) | public File file(String key) {
method remove (line 552) | public boolean remove(String key) {
method clear (line 559) | public void clear() {
class ACacheManager (line 568) | public class ACacheManager {
method ACacheManager (line 577) | private ACacheManager(File cacheDir, long sizeLimit, int countLimit) {
method calculateCacheSizeAndCacheCount (line 589) | private void calculateCacheSizeAndCacheCount() {
method put (line 610) | private void put(File file) {
method get (line 633) | private File get(String key) {
method newFile (line 642) | private File newFile(String key) {
method remove (line 646) | private boolean remove(String key) {
method clear (line 651) | private void clear() {
method removeNext (line 667) | private long removeNext() {
method calculateSize (line 697) | private long calculateSize(File file) {
class Utils (line 707) | private static class Utils {
method isDue (line 715) | private static boolean isDue(String str) {
method isDue (line 725) | private static boolean isDue(byte[] data) {
method newStringWithDateInfo (line 742) | private static String newStringWithDateInfo(int second, String strIn...
method newByteArrayWithDateInfo (line 746) | private static byte[] newByteArrayWithDateInfo(int second, byte[] da...
method clearDateInfo (line 754) | private static String clearDateInfo(String strInfo) {
method clearDateInfo (line 762) | private static byte[] clearDateInfo(byte[] data) {
method hasDateInfo (line 770) | private static boolean hasDateInfo(byte[] data) {
method getDateInfoFromDate (line 775) | private static String[] getDateInfoFromDate(byte[] data) {
method indexOf (line 785) | private static int indexOf(byte[] data, char c) {
method copyOfRange (line 794) | private static byte[] copyOfRange(byte[] original, int from, int to) {
method createDateInfo (line 806) | private static String createDateInfo(int second) {
method Bitmap2Bytes (line 817) | private static byte[] Bitmap2Bytes(Bitmap bm) {
method Bytes2Bimap (line 829) | private static Bitmap Bytes2Bimap(byte[] b) {
method drawable2Bitmap (line 839) | private static Bitmap drawable2Bitmap(Drawable drawable) {
method bitmap2Drawable (line 862) | @SuppressWarnings("deprecation")
FILE: app/src/main/java/com/example/discover/model/AuthorVideoModel.java
class AuthorVideoModel (line 21) | public class AuthorVideoModel {
method showVideo (line 23) | public static void showVideo(ItemFragment context, int start, int id, ...
FILE: app/src/main/java/com/example/discover/model/GankModel.java
class GankModel (line 18) | public class GankModel {
method loadGank (line 20) | public static void loadGank(String id, int num, int page, final Reques...
FILE: app/src/main/java/com/example/discover/model/HotVideoModel.java
class HotVideoModel (line 21) | public class HotVideoModel {
method showVideo (line 23) | public static void showVideo(VideoFragment context, int start, int num...
FILE: app/src/main/java/com/example/discover/model/ReplyModel.java
class ReplyModel (line 20) | public class ReplyModel {
method showReplies (line 22) | public static void showReplies(RxAppCompatActivity activity, boolean c...
FILE: app/src/main/java/com/example/discover/model/SearchModel.java
class SearchModel (line 34) | public class SearchModel {
method showDetail (line 37) | public static void showDetail(SearchFragment context, List<Integer> id...
method showTrendingTag (line 95) | public static void showTrendingTag(SearchActivity context, final Reque...
method showResult (line 122) | public static void showResult(ResultActivity context, String key, int ...
FILE: app/src/main/java/com/example/discover/ui/DiscoverFragment.java
class DiscoverFragment (line 24) | public class DiscoverFragment extends BaseFragment<FragmentDiscoverBindi...
method onActivityCreated (line 29) | @Override
method Test (line 40) | public StringBuffer Test() {
method loadData (line 48) | @Override
method setContentView (line 63) | @Override
FILE: app/src/main/java/com/example/discover/ui/Personal/PersonalFragment.java
class PersonalFragment (line 22) | public class PersonalFragment extends BaseFragment<FragmentPersonalBindi...
method onActivityCreated (line 27) | @Override
method setContentView (line 35) | @Override
method initFragmentList (line 39) | public void initFragmentList() {
method loadViewPager (line 50) | public void loadViewPager() {
FILE: app/src/main/java/com/example/discover/ui/Personal/child/FollowFragment.java
class FollowFragment (line 28) | public class FollowFragment extends BaseFragment<FragmentFollowBinding>{
method onActivityCreated (line 39) | @Override
method loadData (line 48) | @Override
method initRecyclerView (line 64) | private void initRecyclerView() {
method setAdapter (line 135) | private void setAdapter(List<Follow> list) {
method setContentView (line 144) | @Override
FILE: app/src/main/java/com/example/discover/ui/Personal/child/LikeFragment.java
class LikeFragment (line 30) | public class LikeFragment extends BaseFragment<FragmentPersonalLikeBindi...
method onActivityCreated (line 40) | @Override
method loadData (line 54) | @Override
method initRecyclerView (line 65) | public void initRecyclerView() {
method setAdapter (line 154) | public void setAdapter() {
method setContentView (line 159) | @Override
FILE: app/src/main/java/com/example/discover/ui/RecyclerViewNoBugLinearLayoutManager.java
class RecyclerViewNoBugLinearLayoutManager (line 12) | public class RecyclerViewNoBugLinearLayoutManager extends LinearLayoutMa...
method RecyclerViewNoBugLinearLayoutManager (line 15) | public RecyclerViewNoBugLinearLayoutManager(Context context) {
method RecyclerViewNoBugLinearLayoutManager (line 19) | public RecyclerViewNoBugLinearLayoutManager(Context context, int orien...
method RecyclerViewNoBugLinearLayoutManager (line 23) | public RecyclerViewNoBugLinearLayoutManager(Context context, Attribute...
method onLayoutChildren (line 28) | @Override
FILE: app/src/main/java/com/example/discover/ui/Search/Author/ItemFragment.java
class ItemFragment (line 37) | public class ItemFragment extends BaseFragment<FragmentVideoBinding> {
method newInstance (line 52) | public static ItemFragment newInstance(String strategy, int id) {
method onCreate (line 61) | @Override
method onActivityCreated (line 70) | @Override
method loadData (line 83) | @Override
method loadVideo (line 94) | public void loadVideo() {
method setContentView (line 139) | @Override
method initRecyclerView (line 144) | public void initRecyclerView() {
method setAdapter (line 193) | public void setAdapter(AuthorDetailBean authorDetailBean) {
method onPause (line 199) | @Override
FILE: app/src/main/java/com/example/discover/ui/Search/SearchFragment.java
class SearchFragment (line 51) | public class SearchFragment extends BaseFragment<FragmentSearchBinding> ...
method setContentView (line 66) | @Override
method onActivityCreated (line 71) | @Override
method loadData (line 87) | @Override
method initMainRecycler (line 106) | public void initMainRecycler() {
method setAdapterTest (line 157) | public void setAdapterTest(List<Object> objects) {
method init (line 165) | private void init() {
method loadDetail (line 190) | private void loadDetail() {
method clear (line 239) | public void clear() {
method getPrecessedData (line 246) | public List<Object> getPrecessedData() {
method initSelectTypeRecyclerView (line 258) | public void initSelectTypeRecyclerView() {
method onClick (line 301) | @Override
method loadSuccess (line 329) | public void loadSuccess() {
method showLoading (line 339) | public void showLoading() {
method loadError (line 347) | public void loadError() {
method getCategoryIdList (line 352) | private List<Integer> getCategoryIdList() {
FILE: app/src/main/java/com/example/discover/ui/Video/VideoFragment.java
class VideoFragment (line 34) | public class VideoFragment extends BaseFragment<FragmentVideoBinding> {
method onActivityCreated (line 46) | @Override
method loadData (line 58) | @Override
method loadVideo (line 76) | public void loadVideo() {
method setContentView (line 122) | @Override
method initRecyclerView (line 127) | public void initRecyclerView() {
method setAdapter (line 191) | public void setAdapter(HotEyeBean hotEyeBean) {
method Refresh (line 197) | @Override
method onPause (line 204) | @Override
FILE: app/src/main/java/com/example/discover/ui/Welfare/WelFareFragment.java
class WelFareFragment (line 33) | public class WelFareFragment extends BaseFragment<FragmentWelfareBinding> {
method onActivityCreated (line 44) | @Override
method loadData (line 53) | @Override
method showWelfare (line 76) | public void showWelfare() {
method initRecyclerView (line 127) | public void initRecyclerView() {
method setWelfareAdapter (line 178) | public void setWelfareAdapter(GankBean result) {
method setContentView (line 190) | @Override
FILE: app/src/main/java/com/example/discover/utils/BindingUtil.java
class BindingUtil (line 26) | public class BindingUtil {
method setAuthorData (line 28) | @BindingAdapter("authorData")
method setCategoryData (line 38) | @BindingAdapter("categoryData")
method setImage (line 49) | @BindingAdapter("imageUrl")
method setWelfareImage (line 58) | @BindingAdapter("welfareImageUrl")
method setCircleImage (line 65) | @BindingAdapter("circleImageUrl")
method setVisibility (line 75) | @BindingAdapter("visibility")
method setAuthorName (line 84) | @BindingAdapter("authorName")
method setTime (line 93) | @BindingAdapter("time")
method setType (line 99) | @BindingAdapter("type")
FILE: app/src/main/java/com/example/discover/utils/DebugUtil.java
class DebugUtil (line 12) | public class DebugUtil {
method toast (line 15) | public static void toast(Context context, String content) {
method debug (line 19) | public static void debug(String tag, String msg) {
method debug (line 25) | public static void debug(String msg) {
method error (line 31) | public static void error(String tag, String error) {
method error (line 39) | public static void error(String error) {
FILE: app/src/main/java/com/example/discover/utils/DensityUtil.java
class DensityUtil (line 13) | public class DensityUtil {
method getScreenWidth (line 15) | public static int getScreenWidth(Context context) {
method dip2px (line 24) | public static int dip2px(float dpValue) {
method px2dip (line 31) | public static int px2dip(float pxValue) {
method getActionBarSize (line 39) | public static int getActionBarSize() {
FILE: app/src/main/java/com/example/discover/utils/IntentManager.java
class IntentManager (line 29) | public class IntentManager {
method toVideoDetailActivity (line 31) | public static void toVideoDetailActivity(Activity context, ItemList it...
method toAuthorHomeActivity (line 49) | public static void toAuthorHomeActivity(Context context,ItemList list) {
method fromDetailtoAuthor (line 69) | public static void fromDetailtoAuthor(Context context, ItemList list) {
method fromPersonalToAuthor (line 87) | public static void fromPersonalToAuthor(Context context, LikeVideo lik...
method toBigImageActivity (line 100) | public static void toBigImageActivity(Activity context, View view, int...
FILE: app/src/main/java/com/example/discover/utils/LitePalUtil.java
class LitePalUtil (line 18) | public class LitePalUtil {
method getSelectLabel (line 20) | public static List<String> getSelectLabel() {
method addVideoToFavor (line 29) | public static void addVideoToFavor(int id, String title, String desc, ...
method deleteVideoFromFavor (line 48) | public static void deleteVideoFromFavor(int videoId) {
method addToFollow (line 52) | public static void addToFollow(int authorId, String authorName, String...
method deleteFromFollow (line 63) | public static void deleteFromFollow(int authorId) {
FILE: app/src/main/java/com/example/discover/utils/ShareUtil.java
class ShareUtil (line 12) | public class ShareUtil {
method share (line 14) | public static void share(Context context, String shareText) {
FILE: app/src/main/java/com/example/discover/utils/TimeUtils.java
class TimeUtils (line 4) | public class TimeUtils {
method TimeUtils (line 9) | private TimeUtils() {}
method millsToSec (line 11) | public static int millsToSec(int mills) {
method secToTime (line 15) | public static String secToTime(int time) {
method unitFormat (line 29) | private static String unitFormat(int i) {
FILE: app/src/main/java/com/example/discover/view/CustomView/CategoryPopupWindow.java
class CategoryPopupWindow (line 19) | public class CategoryPopupWindow extends PopupWindow {
type PopItemClickListener (line 23) | public interface PopItemClickListener {
method ItemClick (line 24) | void ItemClick(String labelType);
method setPopItemClickListener (line 27) | public void setPopItemClickListener(PopItemClickListener listener) {
method CategoryPopupWindow (line 30) | public CategoryPopupWindow(Context context) {
method showPopupWindow (line 64) | public void showPopupWindow(View parent) {
method initRecycler (line 73) | public void initRecycler(View view, Context context) {
FILE: app/src/main/java/com/example/discover/view/CustomView/CircleImageView.java
class CircleImageView (line 36) | public class CircleImageView extends android.support.v7.widget.AppCompat...
method CircleImageView (line 75) | public CircleImageView(Context context) {
method CircleImageView (line 81) | public CircleImageView(Context context, AttributeSet attrs) {
method CircleImageView (line 85) | public CircleImageView(Context context, AttributeSet attrs, int defSty...
method init (line 108) | private void init() {
method getScaleType (line 122) | @Override
method setScaleType (line 127) | @Override
method setAdjustViewBounds (line 134) | @Override
method onDraw (line 141) | @Override
method onSizeChanged (line 161) | @Override
method setPadding (line 167) | @Override
method setPaddingRelative (line 173) | @Override
method getBorderColor (line 179) | public int getBorderColor() {
method setBorderColor (line 183) | public void setBorderColor(@ColorInt int borderColor) {
method setBorderColorResource (line 196) | @Deprecated
method getCircleBackgroundColor (line 201) | public int getCircleBackgroundColor() {
method setCircleBackgroundColor (line 205) | public void setCircleBackgroundColor(@ColorInt int circleBackgroundCol...
method setCircleBackgroundColorResource (line 215) | public void setCircleBackgroundColorResource(@ColorRes int circleBackg...
method getFillColor (line 226) | @Deprecated
method setFillColor (line 239) | @Deprecated
method setFillColorResource (line 253) | @Deprecated
method getBorderWidth (line 258) | public int getBorderWidth() {
method setBorderWidth (line 262) | public void setBorderWidth(int borderWidth) {
method isBorderOverlay (line 271) | public boolean isBorderOverlay() {
method setBorderOverlay (line 275) | public void setBorderOverlay(boolean borderOverlay) {
method isDisableCircularTransformation (line 284) | public boolean isDisableCircularTransformation() {
method setDisableCircularTransformation (line 288) | public void setDisableCircularTransformation(boolean disableCircularTr...
method setImageBitmap (line 297) | @Override
method setImageDrawable (line 303) | @Override
method setImageResource (line 309) | @Override
method setImageURI (line 315) | @Override
method setColorFilter (line 321) | @Override
method getColorFilter (line 332) | @Override
method applyColorFilter (line 337) | private void applyColorFilter() {
method getBitmapFromDrawable (line 343) | private Bitmap getBitmapFromDrawable(Drawable drawable) {
method initializeBitmap (line 371) | private void initializeBitmap() {
method setup (line 380) | private void setup() {
method calculateBounds (line 426) | private RectF calculateBounds() {
method updateShaderMatrix (line 438) | private void updateShaderMatrix() {
class OutlineProvider (line 459) | @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
method getOutline (line 462) | @Override
FILE: app/src/main/java/com/example/discover/view/CustomView/DragFrameLayout.java
class DragFrameLayout (line 18) | public class DragFrameLayout extends FrameLayout {
method setDragScale (line 33) | public void setDragScale(boolean dragScale) {
method DragFrameLayout (line 37) | public DragFrameLayout(Context context, AttributeSet attrs) {
method init (line 42) | private void init() {
method onLayout (line 204) | @Override
method computeScroll (line 212) | @Override
method onInterceptTouchEvent (line 219) | @Override
method onTouchEvent (line 224) | @Override
method onDraw (line 230) | @Override
FILE: app/src/main/java/com/example/discover/view/CustomView/FollowPopupWindow.java
class FollowPopupWindow (line 21) | public class FollowPopupWindow extends PopupWindow {
type PopItemClickListener (line 24) | public interface PopItemClickListener {
method ItemClick (line 25) | void ItemClick();
method setPopItemClickListener (line 28) | public void setPopItemClickListener(PopItemClickListener listener) {
method FollowPopupWindow (line 31) | public FollowPopupWindow(Context context) {
method showPopupWindow (line 67) | public void showPopupWindow(View parent) {
method hide (line 76) | public void hide() {
FILE: app/src/main/java/com/example/discover/view/CustomView/HackyViewPager.java
class HackyViewPager (line 21) | public class HackyViewPager extends ViewPager {
method HackyViewPager (line 23) | public HackyViewPager(Context context) {
method HackyViewPager (line 27) | public HackyViewPager(Context context, AttributeSet attrs) {
method onInterceptTouchEvent (line 31) | @Override
FILE: app/src/main/java/com/example/discover/view/CustomView/LabelView.java
class LabelView (line 24) | public class LabelView extends View {
method LabelView (line 48) | public LabelView(Context context, AttributeSet attrs) {
method LabelView (line 52) | public LabelView(Context context) {
method LabelView (line 63) | public LabelView(Context context, AttributeSet attrs, int defStyle) {
method onMeasure (line 111) | @Override
method onDraw (line 145) | @Override
method setText (line 170) | public void setText(String text) {
method setBackground (line 175) | public void setBackground(int color) {
FILE: app/src/main/java/com/example/discover/view/CustomView/ReplyPopupWindow.java
class ReplyPopupWindow (line 45) | public class ReplyPopupWindow extends PopupWindow {
method ReplyPopupWindow (line 60) | public ReplyPopupWindow(Context context, int id) {
method showPopupWindow (line 113) | public void showPopupWindow(View parent) {
method initRecyclerView (line 122) | public void initRecyclerView(View view, Context context) {
method showReplies (line 152) | public void showReplies() {
method dismiss (line 205) | @Override
FILE: app/src/main/java/com/example/discover/view/test.java
class test (line 7) | public class test {
FILE: app/src/test/java/com/example/discover/ExampleUnitTest.java
class ExampleUnitTest (line 12) | public class ExampleUnitTest {
method addition_isCorrect (line 13) | @Test
FILE: librarys/http/src/androidTest/java/com/example/http/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 17) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 19) | @Test
FILE: librarys/http/src/main/java/com/example/http/HttpUtils.java
class HttpUtils (line 27) | public class HttpUtils {
method getInstance (line 40) | public static HttpUtils getInstance() {
method getEyeServer (line 52) | public <T> T getEyeServer(Class<T> a) {
method getGankServer (line 63) | public <T> T getGankServer(Class<T> a) {
method init (line 74) | public void init(Context context, boolean debug) {
method getBuilder (line 79) | public Retrofit.Builder getBuilder(String url) {
method getClient (line 88) | public OkHttpClient getClient() {
method getUnsafeOkHttpClient (line 99) | public OkHttpClient getUnsafeOkHttpClient() {
method getInterceptor (line 139) | private HttpLoggingInterceptor getInterceptor() {
FILE: librarys/http/src/test/java/com/example/http/ExampleUnitTest.java
class ExampleUnitTest (line 12) | public class ExampleUnitTest {
method addition_isCorrect (line 13) | @Test
FILE: librarys/jiaozivideoplayer/src/androidTest/java/cn/jzvd/ApplicationTest.java
class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
method ApplicationTest (line 10) | public ApplicationTest() {
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZMediaInterface.java
class JZMediaInterface (line 9) | public abstract class JZMediaInterface {
method start (line 20) | public abstract void start();
method prepare (line 22) | public abstract void prepare();
method pause (line 24) | public abstract void pause();
method isPlaying (line 26) | public abstract boolean isPlaying();
method seekTo (line 28) | public abstract void seekTo(long time);
method release (line 30) | public abstract void release();
method getCurrentPosition (line 32) | public abstract long getCurrentPosition();
method getDuration (line 34) | public abstract long getDuration();
method setSurface (line 36) | public abstract void setSurface(Surface surface);
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZMediaManager.java
class JZMediaManager (line 16) | public class JZMediaManager implements TextureView.SurfaceTextureListener {
method JZMediaManager (line 35) | public JZMediaManager() {
method instance (line 44) | public static JZMediaManager instance() {
method getDataSource (line 51) | public static Object[] getDataSource() {
method setDataSource (line 56) | public static void setDataSource(Object[] dataSourceObjects) {
method getCurrentDataSource (line 61) | public static Object getCurrentDataSource() {
method setCurrentDataSource (line 65) | public static void setCurrentDataSource(Object currentDataSource) {
method getCurrentPosition (line 69) | public static long getCurrentPosition() {
method getDuration (line 73) | public static long getDuration() {
method seekTo (line 77) | public static void seekTo(long time) {
method pause (line 81) | public static void pause() {
method start (line 85) | public static void start() {
method isPlaying (line 89) | public static boolean isPlaying() {
method releaseMediaPlayer (line 93) | public void releaseMediaPlayer() {
method prepare (line 99) | public void prepare() {
method onSurfaceTextureAvailable (line 106) | @Override
method onSurfaceTextureSizeChanged (line 117) | @Override
method onSurfaceTextureDestroyed (line 122) | @Override
method onSurfaceTextureUpdated (line 127) | @Override
class MediaHandler (line 133) | public class MediaHandler extends Handler {
method MediaHandler (line 134) | public MediaHandler(Looper looper) {
method handleMessage (line 138) | @Override
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZMediaSystem.java
class JZMediaSystem (line 14) | public class JZMediaSystem extends JZMediaInterface implements MediaPlay...
method start (line 18) | @Override
method prepare (line 23) | @Override
method pause (line 52) | @Override
method isPlaying (line 57) | @Override
method seekTo (line 62) | @Override
method release (line 67) | @Override
method getCurrentPosition (line 73) | @Override
method getDuration (line 79) | @Override
method setSurface (line 84) | @Override
method onPrepared (line 89) | @Override
method onCompletion (line 104) | @Override
method onBufferingUpdate (line 116) | @Override
method onSeekComplete (line 128) | @Override
method onError (line 140) | @Override
method onInfo (line 153) | @Override
method onVideoSizeChanged (line 170) | @Override
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZResizeTextureView.java
class JZResizeTextureView (line 17) | public class JZResizeTextureView extends TextureView {
method JZResizeTextureView (line 23) | public JZResizeTextureView(Context context) {
method JZResizeTextureView (line 29) | public JZResizeTextureView(Context context, AttributeSet attrs) {
method setVideoSize (line 35) | public void setVideoSize(int currentVideoWidth, int currentVideoHeight) {
method setRotation (line 43) | @Override
method onMeasure (line 51) | @Override
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZUserAction.java
type JZUserAction (line 7) | public interface JZUserAction {
method onEvent (line 27) | void onEvent(int type, Object url, int screen, Object... objects);
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZUserActionStandard.java
type JZUserActionStandard (line 7) | public interface JZUserActionStandard extends JZUserAction {
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZUtils.java
class JZUtils (line 24) | public class JZUtils {
method stringForTime (line 27) | public static String stringForTime(long timeMs) {
method isWifiConnected (line 50) | public static boolean isWifiConnected(Context context) {
method scanForActivity (line 62) | public static Activity scanForActivity(Context context) {
method getAppCompActivity (line 80) | public static AppCompatActivity getAppCompActivity(Context context) {
method setRequestedOrientation (line 90) | public static void setRequestedOrientation(Context context, int orient...
method getWindow (line 100) | public static Window getWindow(Context context) {
method dip2px (line 108) | public static int dip2px(Context context, float dpValue) {
method saveProgress (line 113) | public static void saveProgress(Context context, Object url, long prog...
method getSavedProgress (line 126) | public static long getSavedProgress(Context context, Object url) {
method clearSavedProgress (line 140) | public static void clearSavedProgress(Context context, String url) {
method getCurrentFromDataSource (line 152) | public static Object getCurrentFromDataSource(Object[] dataSourceObjec...
method getValueFromLinkedMap (line 160) | public static Object getValueFromLinkedMap(LinkedHashMap<String, Objec...
method dataSourceObjectsContainsUri (line 172) | public static boolean dataSourceObjectsContainsUri(Object[] dataSource...
method getKeyFromDataSource (line 180) | public static String getKeyFromDataSource(Object[] dataSourceObjects, ...
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZVideoPlayer.java
class JZVideoPlayer (line 39) | public abstract class JZVideoPlayer extends FrameLayout implements View....
method onAudioFocusChange (line 73) | @Override
method JZVideoPlayer (line 132) | public JZVideoPlayer(Context context) {
method JZVideoPlayer (line 137) | public JZVideoPlayer(Context context, AttributeSet attrs) {
method releaseAllVideos (line 142) | public static void releaseAllVideos() {
method startFullscreen (line 151) | public static void startFullscreen(Context context, Class _class, Stri...
method startFullscreen (line 159) | public static void startFullscreen(Context context, Class _class, Obje...
method backPress (line 187) | public static boolean backPress() {
method quitFullscreenOrTinyWindow (line 214) | public static void quitFullscreenOrTinyWindow() {
method showSupportActionBar (line 221) | @SuppressLint("RestrictedApi")
method hideSupportActionBar (line 235) | @SuppressLint("RestrictedApi")
method clearSavedProgress (line 250) | public static void clearSavedProgress(Context context, String url) {
method setJzUserAction (line 254) | public static void setJzUserAction(JZUserAction jzUserEvent) {
method goOnPlayOnResume (line 258) | public static void goOnPlayOnResume() {
method goOnPlayOnPause (line 268) | public static void goOnPlayOnPause() {
method onScrollAutoTiny (line 282) | public static void onScrollAutoTiny(AbsListView view, int firstVisible...
method onScrollReleaseAllVideos (line 307) | public static void onScrollReleaseAllVideos(AbsListView view, int firs...
method onChildViewAttachedToWindow (line 321) | public static void onChildViewAttachedToWindow(View view, int jzvdId) {
method onChildViewDetachedFromWindow (line 330) | public static void onChildViewDetachedFromWindow(View view) {
method setTextureViewRotation (line 343) | public static void setTextureViewRotation(int rotation) {
method setVideoImageDisplayType (line 349) | public static void setVideoImageDisplayType(int type) {
method getCurrentUrl (line 356) | public Object getCurrentUrl() {
method getLayoutId (line 360) | public abstract int getLayoutId();
method init (line 362) | public void init(Context context) {
method setUp (line 394) | public void setUp(String url, int screen, String objects) {
method setUp (line 402) | public void setUp(Object[] dataSourceObjects, int defaultUrlMapIndex, ...
method onClick (line 436) | @Override
method onTouch (line 481) | @Override
method startVideo (line 600) | public void startVideo() {
method onPrepared (line 616) | public void onPrepared() {
method setState (line 622) | public void setState(int state) {
method setState (line 626) | public void setState(int state, int urlMapIndex, int seekToInAdvance) {
method onStateNormal (line 652) | public void onStateNormal() {
method onStatePreparing (line 658) | public void onStatePreparing() {
method onStatePreparingChangingUrl (line 664) | public void onStatePreparingChangingUrl(int urlMapIndex, long seekToIn...
method onStatePrepared (line 673) | public void onStatePrepared() {//因为这个紧接着就会进入播放状态,所以不设置state
method onStatePlaying (line 685) | public void onStatePlaying() {
method onStatePause (line 691) | public void onStatePause() {
method onStateError (line 697) | public void onStateError() {
method onStateAutoComplete (line 703) | public void onStateAutoComplete() {
method onInfo (line 711) | public void onInfo(int what, int extra) {
method onError (line 715) | public void onError(int what, int extra) {
method onMeasure (line 725) | @Override
method onAutoCompletion (line 745) | public void onAutoCompletion() {
method onCompletion (line 761) | public void onCompletion() {
method release (line 786) | public void release() {
method initTextureView (line 801) | public void initTextureView() {
method addTextureView (line 807) | public void addTextureView() {
method removeTextureView (line 817) | public void removeTextureView() {
method clearFullscreenLayout (line 824) | public void clearFullscreenLayout() {
method clearFloatScreen (line 838) | public void clearFloatScreen() {
method onVideoSizeChanged (line 849) | public void onVideoSizeChanged() {
method startProgressTimer (line 859) | public void startProgressTimer() {
method cancelProgressTimer (line 867) | public void cancelProgressTimer() {
method setProgressAndText (line 876) | public void setProgressAndText(int progress, long position, long durat...
method setBufferProgress (line 885) | public void setBufferProgress(int bufferProgress) {
method resetProgressAndTime (line 889) | public void resetProgressAndTime() {
method getCurrentPositionWhenPlaying (line 896) | public long getCurrentPositionWhenPlaying() {
method getDuration (line 913) | public long getDuration() {
method onStartTrackingTouch (line 926) | @Override
method onStopTrackingTouch (line 937) | @Override
method onProgressChanged (line 954) | @Override
method startWindowFullscreen (line 958) | public void startWindowFullscreen() {
method startWindowTiny (line 994) | public void startWindowTiny() {
method isCurrentPlay (line 1026) | public boolean isCurrentPlay() {
method isCurrentJZVD (line 1031) | public boolean isCurrentJZVD() {
method playOnThisJzvd (line 1037) | public void playOnThisJzvd() {
method autoFullscreen (line 1049) | public void autoFullscreen(float x) {
method autoQuitFullscreen (line 1064) | public void autoQuitFullscreen() {
method onEvent (line 1074) | public void onEvent(int type) {
method setMediaInterface (line 1080) | public static void setMediaInterface(JZMediaInterface mediaInterface) {
method onSeekComplete (line 1085) | public void onSeekComplete() {
method showWifiDialog (line 1089) | public void showWifiDialog(int event) {
method showProgressDialog (line 1092) | public void showProgressDialog(float deltaX,
method dismissProgressDialog (line 1097) | public void dismissProgressDialog() {
method showVolumeDialog (line 1101) | public void showVolumeDialog(float deltaY, int volumePercent) {
method dismissVolumeDialog (line 1105) | public void dismissVolumeDialog() {
method showBrightnessDialog (line 1109) | public void showBrightnessDialog(int brightnessPercent) {
method dismissBrightnessDialog (line 1113) | public void dismissBrightnessDialog() {
class JZAutoFullscreenListener (line 1117) | public static class JZAutoFullscreenListener implements SensorEventLis...
method onSensorChanged (line 1118) | @Override
method onAccuracyChanged (line 1134) | @Override
class ProgressTimerTask (line 1139) | public class ProgressTimerTask extends TimerTask {
method run (line 1140) | @Override
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZVideoPlayerManager.java
class JZVideoPlayerManager (line 8) | public class JZVideoPlayerManager {
method getFirstFloor (line 13) | public static JZVideoPlayer getFirstFloor() {
method setFirstFloor (line 17) | public static void setFirstFloor(JZVideoPlayer jzVideoPlayer) {
method getSecondFloor (line 21) | public static JZVideoPlayer getSecondFloor() {
method setSecondFloor (line 25) | public static void setSecondFloor(JZVideoPlayer jzVideoPlayer) {
method getCurrentJzvd (line 29) | public static JZVideoPlayer getCurrentJzvd() {
method completeAll (line 36) | public static void completeAll() {
FILE: librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZVideoPlayerStandard.java
class JZVideoPlayerStandard (line 41) | public class JZVideoPlayerStandard extends JZVideoPlayer {
method onReceive (line 74) | public void onReceive(Context context, Intent intent) {
method JZVideoPlayerStandard (line 99) | public JZVideoPlayerStandard(Context context) {
method JZVideoPlayerStandard (line 103) | public JZVideoPlayerStandard(Context context, AttributeSet attrs) {
method init (line 107) | @Override
method setUp (line 131) | public void setUp(Object[] dataSourceObjects, int defaultUrlMapIndex, ...
method changeStartButtonSize (line 172) | public void changeStartButtonSize(int size) {
method getLayoutId (line 181) | @Override
method onStateNormal (line 186) | @Override
method onStatePreparing (line 192) | @Override
method onStatePreparingChangingUrl (line 198) | @Override
method onStatePlaying (line 205) | @Override
method onStatePause (line 211) | @Override
method onStateError (line 218) | @Override
method onStateAutoComplete (line 224) | @Override
method onTouch (line 232) | @Override
method onClick (line 267) | @Override
method showWifiDialog (line 354) | @Override
method onStartTrackingTouch (line 383) | @Override
method onStopTrackingTouch (line 389) | @Override
method onClickUiToggle (line 399) | public void onClickUiToggle() {
method setSystemTimeAndBattery (line 425) | public void setSystemTimeAndBattery() {
method onCLickUiToggleToClear (line 437) | public void onCLickUiToggleToClear() {
method setProgressAndText (line 461) | @Override
method setBufferProgress (line 467) | @Override
method resetProgressAndTime (line 473) | @Override
method changeUiToNormal (line 480) | public void changeUiToNormal() {
method changeUiToPreparing (line 498) | public void changeUiToPreparing() {
method changeUiToPlayingShow (line 517) | public void changeUiToPlayingShow() {
method changeUiToPlayingClear (line 536) | public void changeUiToPlayingClear() {
method changeUiToPauseShow (line 553) | public void changeUiToPauseShow() {
method changeUiToPauseClear (line 571) | public void changeUiToPauseClear() {
method changeUiToComplete (line 588) | public void changeUiToComplete() {
method changeUiToError (line 607) | public void changeUiToError() {
method setAllControlsVisiblity (line 626) | public void setAllControlsVisiblity(int topCon, int bottomCon, int sta...
method updateStartImage (line 637) | public void updateStartImage() {
method showProgressDialog (line 655) | @Override
method dismissProgressDialog (line 681) | @Override
method showVolumeDialog (line 689) | @Override
method dismissVolumeDialog (line 717) | @Override
method showBrightnessDialog (line 725) | @Override
method dismissBrightnessDialog (line 747) | @Override
method createDialogWithView (line 755) | public Dialog createDialogWithView(View localView) {
method startDismissControlViewTimer (line 769) | public void startDismissControlViewTimer() {
method cancelDismissControlViewTimer (line 776) | public void cancelDismissControlViewTimer() {
method onAutoCompletion (line 786) | @Override
method onCompletion (line 792) | @Override
method dissmissControlView (line 801) | public void dissmissControlView() {
class DismissControlViewTimerTask (line 824) | public class DismissControlViewTimerTask extends TimerTask {
method run (line 826) | @Override
FILE: librarys/jiaozivideoplayer/src/test/java/cn/jzvd/ExampleUnitTest.java
class ExampleUnitTest (line 10) | public class ExampleUnitTest {
method addition_isCorrect (line 11) | @Test
FILE: librarys/xrecyclerview/src/androidTest/java/com/jcodecraeer/xrecyclerview/ApplicationTest.java
class ApplicationTest (line 9) | public class ApplicationTest extends ApplicationTestCase<Application> {
method ApplicationTest (line 10) | public ApplicationTest() {
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/AppBarStateChangeListener.java
class AppBarStateChangeListener (line 9) | public abstract class AppBarStateChangeListener implements AppBarLayout....
type State (line 11) | public enum State {
method onOffsetChanged (line 19) | @Override
method onStateChanged (line 38) | public abstract void onStateChanged(AppBarLayout appBarLayout, State s...
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/ArrowRefreshHeader.java
class ArrowRefreshHeader (line 22) | public class ArrowRefreshHeader extends LinearLayout implements BaseRefr...
method ArrowRefreshHeader (line 39) | public ArrowRefreshHeader(Context context) {
method ArrowRefreshHeader (line 48) | public ArrowRefreshHeader(Context context, AttributeSet attrs) {
method initView (line 53) | private void initView() {
method setProgressStyle (line 90) | public void setProgressStyle(int style) {
method setArrowImageView (line 101) | public void setArrowImageView(int resid){
method setState (line 105) | public void setState(int state) {
method getState (line 150) | public int getState() {
method refreshComplete (line 154) | @Override
method setVisibleHeight (line 165) | public void setVisibleHeight(int height) {
method getVisibleHeight (line 172) | public int getVisibleHeight() {
method onMove (line 177) | @Override
method releaseAction (line 191) | @Override
method reset (line 218) | public void reset() {
method smoothScrollTo (line 227) | private void smoothScrollTo(int destHeight) {
method friendlyTime (line 240) | public static String friendlyTime(Date time) {
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/BaseRefreshHeader.java
type BaseRefreshHeader (line 6) | interface BaseRefreshHeader {
method onMove (line 13) | void onMove(float delta);
method releaseAction (line 15) | boolean releaseAction();
method refreshComplete (line 17) | void refreshComplete();
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/CustomFooterViewCallBack.java
type CustomFooterViewCallBack (line 15) | public interface CustomFooterViewCallBack {
method onLoadingMore (line 17) | void onLoadingMore(View yourFooterView);
method onLoadMoreComplete (line 18) | void onLoadMoreComplete(View yourFooterView);
method onSetNoMore (line 19) | void onSetNoMore(View yourFooterView,boolean noMore);
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/ItemTouchHelperAdapter.java
type ItemTouchHelperAdapter (line 9) | public interface ItemTouchHelperAdapter {
method onItemMove (line 24) | void onItemMove(int fromPosition, int toPosition);
method onItemDismiss (line 38) | void onItemDismiss(int position);
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/JellyView.java
class JellyView (line 18) | public class JellyView extends View implements BaseRefreshHeader{
method JellyView (line 27) | public JellyView(Context context) {
method JellyView (line 32) | public JellyView(Context context, AttributeSet attrs) {
method JellyView (line 37) | public JellyView(Context context, AttributeSet attrs, int defStyleAttr) {
method JellyView (line 42) | @SuppressWarnings("unused")
method init (line 49) | private void init() {
method setJellyColor (line 59) | public void setJellyColor(int jellyColor) {
method onDraw (line 63) | @Override
method setMinimumHeight (line 73) | @Override
method setJellyHeight (line 78) | public void setJellyHeight(int ribbonHeight) {
method getMinimumHeight (line 82) | @Override
method getJellyHeight (line 87) | public int getJellyHeight() {
method refreshComplete (line 92) | @Override
method onMove (line 97) | @Override
method releaseAction (line 104) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/LoadingMoreFooter.java
class LoadingMoreFooter (line 15) | public class LoadingMoreFooter extends LinearLayout {
method LoadingMoreFooter (line 27) | public LoadingMoreFooter(Context context) {
method LoadingMoreFooter (line 36) | public LoadingMoreFooter(Context context, AttributeSet attrs) {
method setLoadingHint (line 41) | public void setLoadingHint(String hint) {
method setNoMoreHint (line 45) | public void setNoMoreHint(String hint) {
method setLoadingDoneHint (line 49) | public void setLoadingDoneHint(String hint) {
method initView (line 53) | public void initView(){
method setProgressStyle (line 87) | public void setProgressStyle(int style) {
method setState (line 98) | public void setState(int state) {
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/ProgressStyle.java
class ProgressStyle (line 6) | public class ProgressStyle {
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/SimpleItemTouchHelperCallback.java
class SimpleItemTouchHelperCallback (line 13) | public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callb...
method SimpleItemTouchHelperCallback (line 20) | public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter adapter, X...
method isLongPressDragEnabled (line 25) | @Override
method isItemViewSwipeEnabled (line 30) | @Override
method getMovementFlags (line 35) | @Override
method onMove (line 43) | @Override
method onSwiped (line 53) | @Override
method onChildDraw (line 59) | @Override
method onSelectedChanged (line 71) | @Override
method clearView (line 81) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/SimpleViewSwitcher.java
class SimpleViewSwitcher (line 11) | public class SimpleViewSwitcher extends ViewGroup {
method SimpleViewSwitcher (line 13) | public SimpleViewSwitcher(Context context) {
method SimpleViewSwitcher (line 17) | public SimpleViewSwitcher(Context context, AttributeSet attrs) {
method SimpleViewSwitcher (line 21) | public SimpleViewSwitcher(Context context, AttributeSet attrs, int def...
method onMeasure (line 25) | @Override
method onLayout (line 41) | @Override
method setView (line 53) | public void setView(View view) {
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/XRecyclerView.java
class XRecyclerView (line 23) | public class XRecyclerView extends RecyclerView {
method XRecyclerView (line 53) | public XRecyclerView(Context context) {
method XRecyclerView (line 57) | public XRecyclerView(Context context, AttributeSet attrs) {
method XRecyclerView (line 61) | public XRecyclerView(Context context, AttributeSet attrs, int defStyle) {
method init (line 66) | private void init() {
method getDefaultFootView (line 77) | public LoadingMoreFooter getDefaultFootView(){
method setLimitNumberToCallLoadMore (line 88) | public void setLimitNumberToCallLoadMore(int limitNumberToCallLoadMore) {
method getFootView (line 92) | public View getFootView(){
method setFootViewText (line 96) | public void setFootViewText(String loading, String noMore) {
method addHeaderView (line 103) | public void addHeaderView(View view) {
method getHeaderViewByType (line 112) | private View getHeaderViewByType(int itemType) {
method isHeaderType (line 120) | private boolean isHeaderType(int itemViewType) {
method isReservedItemViewType (line 125) | private boolean isReservedItemViewType(int itemViewType) {
method setFootView (line 133) | @SuppressWarnings("all")
method loadMoreComplete (line 142) | public void loadMoreComplete() {
method setNoMore (line 153) | public void setNoMore(boolean noMore){
method refresh (line 164) | public void refresh() {
method reset (line 170) | public void reset(){
method refreshComplete (line 176) | public void refreshComplete() {
method setRefreshHeader (line 181) | public void setRefreshHeader(ArrowRefreshHeader refreshHeader) {
method setPullRefreshEnabled (line 185) | public void setPullRefreshEnabled(boolean enabled) {
method setLoadingMoreEnabled (line 189) | public void setLoadingMoreEnabled(boolean enabled) {
method setRefreshProgressStyle (line 198) | public void setRefreshProgressStyle(int style) {
method setLoadingMoreProgressStyle (line 205) | public void setLoadingMoreProgressStyle(int style) {
method setArrowImageView (line 212) | public void setArrowImageView(int resId) {
method setEmptyView (line 218) | public void setEmptyView(View emptyView) {
method getEmptyView (line 223) | public View getEmptyView() {
method setAdapter (line 227) | @Override
method getAdapter (line 236) | @Override
method setLayoutManager (line 244) | @Override
method notifyItemRemoved (line 267) | public<T> void notifyItemRemoved(List<T> listData,int position) {
method notifyItemInserted (line 278) | public void notifyItemInserted(int position) {
method notifyItemChanged (line 285) | public void notifyItemChanged(int position) {
method notifyItemChanged (line 292) | public void notifyItemChanged(int position,Object o) {
method getHeaders_includingRefreshCount (line 299) | private int getHeaders_includingRefreshCount(){
method onScrollStateChanged (line 305) | @Override
method onTouchEvent (line 343) | @Override
method findMax (line 376) | private int findMax(int[] lastPositions) {
method isOnTop (line 386) | private boolean isOnTop() {
class DataObserver (line 394) | private class DataObserver extends RecyclerView.AdapterDataObserver {
method onChanged (line 395) | @Override
method onItemRangeInserted (line 416) | @Override
method onItemRangeChanged (line 421) | @Override
method onItemRangeChanged (line 426) | @Override
method onItemRangeRemoved (line 431) | @Override
method onItemRangeMoved (line 436) | @Override
class WrapAdapter (line 442) | private class WrapAdapter extends RecyclerView.Adapter<ViewHolder> {
method WrapAdapter (line 446) | public WrapAdapter(RecyclerView.Adapter adapter) {
method getOriginalAdapter (line 450) | public RecyclerView.Adapter getOriginalAdapter(){
method isHeader (line 454) | public boolean isHeader(int position) {
method isFooter (line 458) | public boolean isFooter(int position) {
method isRefreshHeader (line 466) | public boolean isRefreshHeader(int position) {
method getHeadersCount (line 470) | public int getHeadersCount() {
method onCreateViewHolder (line 474) | @Override
method onBindViewHolder (line 486) | @Override
method onBindViewHolder (line 502) | @Override
method getItemCount (line 523) | @Override
method getItemViewType (line 533) | @Override
method getItemId (line 560) | @Override
method onAttachedToRecyclerView (line 571) | @Override
method onDetachedFromRecyclerView (line 588) | @Override
method onViewAttachedToWindow (line 593) | @Override
method onViewDetachedFromWindow (line 606) | @Override
method onViewRecycled (line 611) | @Override
method onFailedToRecycleView (line 616) | @Override
method unregisterAdapterDataObserver (line 621) | @Override
method registerAdapterDataObserver (line 626) | @Override
class SimpleViewHolder (line 631) | private class SimpleViewHolder extends RecyclerView.ViewHolder {
method SimpleViewHolder (line 632) | public SimpleViewHolder(View itemView) {
method setLoadingListener (line 638) | public void setLoadingListener(LoadingListener listener) {
type LoadingListener (line 642) | public interface LoadingListener {
method onRefresh (line 644) | void onRefresh();
method onLoadMore (line 646) | void onLoadMore();
method onAttachedToWindow (line 649) | @Override
class DividerItemDecoration (line 682) | public class DividerItemDecoration extends RecyclerView.ItemDecoration {
method DividerItemDecoration (line 693) | public DividerItemDecoration(Drawable divider) {
method onDraw (line 704) | @Override
method getItemOffsets (line 723) | @Override
method drawHorizontalDividers (line 747) | private void drawHorizontalDividers(Canvas canvas, RecyclerView pare...
method drawVerticalDividers (line 774) | private void drawVerticalDividers(Canvas canvas, RecyclerView parent) {
method scrollToPosition (line 796) | @Override
method onScrolled (line 805) | @Override
method setScrollAlphaChangeListener (line 825) | public void setScrollAlphaChangeListener(
type ScrollAlphaChangeListener (line 830) | public interface ScrollAlphaChangeListener{
method onAlphaChange (line 831) | void onAlphaChange(int alpha);
method setLimitHeight (line 832) | int setLimitHeight();
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/AVLoadingIndicatorView.java
class AVLoadingIndicatorView (line 79) | public class AVLoadingIndicatorView extends View{
method AVLoadingIndicatorView (line 157) | public AVLoadingIndicatorView(Context context) {
method AVLoadingIndicatorView (line 162) | public AVLoadingIndicatorView(Context context, AttributeSet attrs) {
method AVLoadingIndicatorView (line 167) | public AVLoadingIndicatorView(Context context, AttributeSet attrs, int...
method AVLoadingIndicatorView (line 173) | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
method init (line 179) | private void init(AttributeSet attrs, int defStyle) {
method setIndicatorId (line 191) | public void setIndicatorId(int indicatorId){
method setIndicatorColor (line 196) | public void setIndicatorColor(int color){
method applyIndicator (line 202) | private void applyIndicator(){
method onMeasure (line 292) | @Override
method measureDimension (line 299) | private int measureDimension(int defaultSize,int measureSpec){
method onDraw (line 313) | @Override
method onLayout (line 319) | @Override
method setVisibility (line 328) | @Override
method onDetachedFromWindow (line 340) | @Override
method onAttachedToWindow (line 346) | @Override
method drawIndicator (line 352) | void drawIndicator(Canvas canvas){
method applyAnimation (line 356) | void applyAnimation(){
method dp2px (line 360) | private int dp2px(int dpValue) {
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallBeatIndicator.java
class BallBeatIndicator (line 14) | public class BallBeatIndicator extends com.jcodecraeer.xrecyclerview.pro...
method draw (line 28) | @Override
method createAnimation (line 45) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallClipRotateIndicator.java
class BallClipRotateIndicator (line 15) | public class BallClipRotateIndicator extends BaseIndicatorController {
method draw (line 19) | @Override
method createAnimation (line 34) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallClipRotateMultipleIndicator.java
class BallClipRotateMultipleIndicator (line 15) | public class BallClipRotateMultipleIndicator extends BaseIndicatorContro...
method draw (line 20) | @Override
method createAnimation (line 54) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallClipRotatePulseIndicator.java
class BallClipRotatePulseIndicator (line 15) | public class BallClipRotatePulseIndicator extends BaseIndicatorController {
method draw (line 20) | @Override
method createAnimation (line 50) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallGridBeatIndicator.java
class BallGridBeatIndicator (line 14) | public class BallGridBeatIndicator extends BaseIndicatorController {
method draw (line 28) | @Override
method createAnimation (line 48) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallGridPulseIndicator.java
class BallGridPulseIndicator (line 14) | public class BallGridPulseIndicator extends BaseIndicatorController{
method draw (line 42) | @Override
method createAnimation (line 63) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallPulseIndicator.java
class BallPulseIndicator (line 14) | public class BallPulseIndicator extends BaseIndicatorController{
method draw (line 25) | @Override
method createAnimation (line 41) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallPulseRiseIndicator.java
class BallPulseRiseIndicator (line 16) | public class BallPulseRiseIndicator extends BaseIndicatorController{
method draw (line 18) | @Override
method createAnimation (line 29) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallPulseSyncIndicator.java
class BallPulseSyncIndicator (line 14) | public class BallPulseSyncIndicator extends BaseIndicatorController {
method draw (line 18) | @Override
method createAnimation (line 32) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallRotateIndicator.java
class BallRotateIndicator (line 15) | public class BallRotateIndicator extends BaseIndicatorController{
method draw (line 20) | @Override
method createAnimation (line 45) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallScaleIndicator.java
class BallScaleIndicator (line 15) | public class BallScaleIndicator extends BaseIndicatorController {
method draw (line 20) | @Override
method createAnimation (line 29) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallScaleMultipleIndicator.java
class BallScaleMultipleIndicator (line 15) | public class BallScaleMultipleIndicator extends BaseIndicatorController {
method draw (line 20) | @Override
method createAnimation (line 30) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallScaleRippleIndicator.java
class BallScaleRippleIndicator (line 15) | public class BallScaleRippleIndicator extends BallScaleIndicator {
method draw (line 18) | @Override
method createAnimation (line 25) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallScaleRippleMultipleIndicator.java
class BallScaleRippleMultipleIndicator (line 15) | public class BallScaleRippleMultipleIndicator extends BallScaleMultipleI...
method draw (line 18) | @Override
method createAnimation (line 25) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallSpinFadeLoaderIndicator.java
class BallSpinFadeLoaderIndicator (line 14) | public class BallSpinFadeLoaderIndicator extends BaseIndicatorController {
method draw (line 39) | @Override
method circleAt (line 62) | Point circleAt(int width,int height,float radius,double angle){
method createAnimation (line 68) | @Override
class Point (line 105) | final class Point{
method Point (line 109) | public Point(float x, float y){
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallTrianglePathIndicator.java
class BallTrianglePathIndicator (line 15) | public class BallTrianglePathIndicator extends BaseIndicatorController {
method draw (line 19) | @Override
method createAnimation (line 31) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallZigZagDeflectIndicator.java
class BallZigZagDeflectIndicator (line 13) | public class BallZigZagDeflectIndicator extends com.jcodecraeer.xrecycle...
method createAnimation (line 18) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BallZigZagIndicator.java
class BallZigZagIndicator (line 15) | public class BallZigZagIndicator extends BaseIndicatorController {
method draw (line 20) | @Override
method createAnimation (line 30) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/BaseIndicatorController.java
class BaseIndicatorController (line 12) | public abstract class BaseIndicatorController {
method setTarget (line 20) | public void setTarget(View target){
method getTarget (line 24) | public View getTarget(){
method getWidth (line 29) | public int getWidth(){
method getHeight (line 33) | public int getHeight(){
method postInvalidate (line 37) | public void postInvalidate(){
method draw (line 46) | public abstract void draw(Canvas canvas,Paint paint);
method createAnimation (line 51) | public abstract List<Animator> createAnimation();
method initAnimation (line 53) | public void initAnimation(){
method setAnimationStatus (line 64) | public void setAnimationStatus(AnimStatus animStatus){
type AnimStatus (line 93) | public enum AnimStatus{
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/CubeTransitionIndicator.java
class CubeTransitionIndicator (line 16) | public class CubeTransitionIndicator extends BaseIndicatorController {
method draw (line 21) | @Override
method createAnimation (line 36) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/LineScaleIndicator.java
class LineScaleIndicator (line 15) | public class LineScaleIndicator extends BaseIndicatorController {
method draw (line 25) | @Override
method createAnimation (line 39) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/LineScalePartyIndicator.java
class LineScalePartyIndicator (line 15) | public class LineScalePartyIndicator extends BaseIndicatorController {
method draw (line 25) | @Override
method createAnimation (line 39) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/LineScalePulseOutIndicator.java
class LineScalePulseOutIndicator (line 12) | public class LineScalePulseOutIndicator extends LineScaleIndicator {
method createAnimation (line 14) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/LineScalePulseOutRapidIndicator.java
class LineScalePulseOutRapidIndicator (line 12) | public class LineScalePulseOutRapidIndicator extends LineScaleIndicator {
method createAnimation (line 14) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/LineSpinFadeLoaderIndicator.java
class LineSpinFadeLoaderIndicator (line 11) | public class LineSpinFadeLoaderIndicator extends BallSpinFadeLoaderIndic...
method draw (line 14) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/PacmanIndicator.java
class PacmanIndicator (line 16) | public class PacmanIndicator extends BaseIndicatorController{
method draw (line 24) | @Override
method drawPacman (line 30) | private void drawPacman(Canvas canvas,Paint paint){
method drawCircle (line 54) | private void drawCircle(Canvas canvas, Paint paint) {
method createAnimation (line 60) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/SemiCircleSpinIndicator.java
class SemiCircleSpinIndicator (line 15) | public class SemiCircleSpinIndicator extends BaseIndicatorController {
method draw (line 18) | @Override
method createAnimation (line 24) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/SquareSpinIndicator.java
class SquareSpinIndicator (line 17) | public class SquareSpinIndicator extends BaseIndicatorController {
method draw (line 19) | @Override
method createAnimation (line 24) | @Override
FILE: librarys/xrecyclerview/src/main/java/com/jcodecraeer/xrecyclerview/progressindicator/indicator/TriangleSkewSpinIndicator.java
class TriangleSkewSpinIndicator (line 17) | public class TriangleSkewSpinIndicator extends BaseIndicatorController {
method draw (line 19) | @Override
method createAnimation (line 29) | @Override
FILE: librarys/zmenu/src/androidTest/java/com/example/zmenu/ExampleInstrumentedTest.java
class ExampleInstrumentedTest (line 17) | @RunWith(AndroidJUnit4.class)
method useAppContext (line 19) | @Test
FILE: librarys/zmenu/src/main/java/com/example/zmenu/FloatButton.java
class FloatButton (line 14) | public class FloatButton extends FloatingActionButton {
method FloatButton (line 18) | public FloatButton(Context context) {
method FloatButton (line 22) | public FloatButton(Context context, AttributeSet attrs) {
method FloatButton (line 26) | public FloatButton(Context context, AttributeSet attrs, int defStyleAt...
method setScreenX (line 66) | private void setScreenX(int screenX) {
method setScreenY (line 71) | private void setScreenY(int screenY) {
method stopAnimation (line 78) | public void stopAnimation() {
method onRelease (line 88) | public void onRelease(int xPos, int yPos) {
method setCurrentSpringPos (line 96) | public void setCurrentSpringPos(int xPos, int yPos) {
method getSpringX (line 101) | public Spring getSpringX() {
method getSpringY (line 105) | public Spring getSpringY() {
method getFollowerListenerX (line 109) | public SimpleSpringListener getFollowerListenerX() {
method getFollowerListenerY (line 113) | public SimpleSpringListener getFollowerListenerY() {
method setEndValue (line 117) | public void setEndValue(int x, int y) {
method setElevation (line 124) | @Override
FILE: librarys/zmenu/src/main/java/com/example/zmenu/PUtils.java
class PUtils (line 10) | public class PUtils {
method getInstance (line 19) | public static PUtils getInstance() {
method setImagesAndColors (line 31) | public void setImagesAndColors(List<Integer> imagelist , List<Integer...
method setMargin (line 36) | public void setMargin(int marginRight, int marginBottom) {
method setVisible (line 41) | public void setVisible(boolean isVisible) {
method getVisible (line 45) | public boolean getVisible() {
method getImages (line 48) | public static List<Integer> getImages() {
method getColors (line 52) | public static List<Integer> getColors() {
method getMarginRight (line 56) | public int getMarginRight() {
method getMarginBottom (line 60) | public int getMarginBottom(){
method setViewList (line 64) | public void setViewList(List<FloatButton> viewList) {
method getViewList (line 68) | public List<FloatButton> getViewList() {
FILE: librarys/zmenu/src/main/java/com/example/zmenu/SnakeButtonLayout.java
class SnakeButtonLayout (line 18) | public class SnakeButtonLayout extends RelativeLayout {
type onTopViewClickListener (line 31) | public interface onTopViewClickListener {
method onclick (line 32) | void onclick();
method SnakeButtonLayout (line 34) | public SnakeButtonLayout(Context context) {
method SnakeButtonLayout (line 38) | public SnakeButtonLayout(Context context, AttributeSet attrs) {
method onFinishInflate (line 47) | @Override
method initImagesAndColors (line 81) | public void initImagesAndColors() {
class MyViewDragCallBack (line 99) | public class MyViewDragCallBack extends ViewDragHelper.Callback {
method tryCaptureView (line 102) | @Override
method onViewPositionChanged (line 113) | @Override
method clampViewPositionVertical (line 119) | @Override
method clampViewPositionHorizontal (line 124) | @Override
method onViewReleased (line 129) | @Override
method getViewHorizontalDragRange (line 140) | @Override
method getViewVerticalDragRange (line 146) | @Override
method setClickable (line 154) | public void setClickable(boolean isClickable) {
method computeScroll (line 161) | @Override
method onInterceptTouchEvent (line 168) | @Override
method onTouchEvent (line 173) | @Override
method setOnTopViewClickListener (line 190) | public void setOnTopViewClickListener(onTopViewClickListener listener) {
method onLayout (line 202) | @Override
FILE: librarys/zmenu/src/main/java/com/example/zmenu/ViewController.java
class ViewController (line 11) | public class ViewController {
method ViewController (line 15) | public ViewController() {
method getInstance (line 19) | public static ViewController getInstance() {
method init (line 22) | public void init(List<FloatButton> list) {
method setOriginPos (line 37) | public void setOriginPos(int xPos, int yPos) {
method onRelease (line 47) | public void onRelease(FloatButton topView) {
FILE: librarys/zmenu/src/test/java/com/example/zmenu/ExampleUnitTest.java
class ExampleUnitTest (line 12) | public class ExampleUnitTest {
method addition_isCorrect (line 13) | @Test
Condensed preview — 303 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (859K chars).
[
{
"path": ".gitignore",
"chars": 760,
"preview": "# Built application files\n*.apk\n*.ap_\n\n# Files for the ART/Dalvik VM\n*.dex\n\n# Java class files\n*.class\n\n# Generated file"
},
{
"path": ".idea/compiler.xml",
"chars": 686,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"CompilerConfiguration\">\n <resourceExt"
},
{
"path": ".idea/copyright/profiles_settings.xml",
"chars": 74,
"preview": "<component name=\"CopyrightManager\">\n <settings default=\"\" />\n</component>"
},
{
"path": ".idea/inspectionProfiles/Project_Default.xml",
"chars": 1445,
"preview": "<component name=\"InspectionProjectProfileManager\">\n <profile version=\"1.0\">\n <option name=\"myName\" value=\"Project De"
},
{
"path": ".idea/misc.xml",
"chars": 2044,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"NullableNotNullManager\">\n <option nam"
},
{
"path": ".idea/modules.xml",
"chars": 1038,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ProjectModuleManager\">\n <modules>\n "
},
{
"path": ".idea/runConfigurations.xml",
"chars": 564,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"RunConfigurationProducerService\">\n <o"
},
{
"path": ".idea/vcs.xml",
"chars": 180,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"VcsDirectoryMappings\">\n <mapping dire"
},
{
"path": "LICENSE",
"chars": 11357,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "README.md",
"chars": 446,
"preview": "# Discover\n一款模仿Tumblr UI,使用开眼api开发的符合Material Desgin阅读类的开源项目。项目采取的是MVVM-DataBinding + Rxjava2 + Retrofit架构开发。\n\n# 截图\n<img"
},
{
"path": "app/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "app/build.gradle",
"chars": 2209,
"preview": "apply plugin: 'com.android.application'\n\nandroid {\n compileSdkVersion 26\n buildToolsVersion '26.0.2'\n defaultCo"
},
{
"path": "app/proguard-rules.pro",
"chars": 916,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in G:"
},
{
"path": "app/src/androidTest/java/com/example/discover/ExampleInstrumentedTest.java",
"chars": 744,
"preview": "package com.example.discover;\n\nimport android.content.Context;\nimport android.support.test.InstrumentationRegistry;\nimpo"
},
{
"path": "app/src/main/AndroidManifest.xml",
"chars": 1855,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package="
},
{
"path": "app/src/main/assets/litepal.xml",
"chars": 1934,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<litepal>\n <!--\n \tDefine the database name of your application.\n \tBy def"
},
{
"path": "app/src/main/java/com/example/discover/AuthorHomeActivity.java",
"chars": 5148,
"preview": "package com.example.discover;\n\nimport android.databinding.DataBindingUtil;\nimport android.graphics.Color;\nimport android"
},
{
"path": "app/src/main/java/com/example/discover/MainActivity.java",
"chars": 8604,
"preview": "package com.example.discover;\n\nimport android.databinding.DataBindingUtil;\nimport android.os.Bundle;\nimport android.os.H"
},
{
"path": "app/src/main/java/com/example/discover/ResultActivity.java",
"chars": 4805,
"preview": "package com.example.discover;\n\nimport android.content.Intent;\nimport android.os.Handler;\nimport android.support.v7.app.A"
},
{
"path": "app/src/main/java/com/example/discover/SearchActivity.java",
"chars": 6119,
"preview": "package com.example.discover;\n\nimport android.content.Intent;\nimport android.support.v7.app.ActionBar;\nimport android.su"
},
{
"path": "app/src/main/java/com/example/discover/TestActivity.java",
"chars": 466,
"preview": "package com.example.discover;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport android.supp"
},
{
"path": "app/src/main/java/com/example/discover/VideoDetailActivity.java",
"chars": 7562,
"preview": "package com.example.discover;\n\nimport android.databinding.DataBindingUtil;\nimport android.os.Handler;\nimport android.os."
},
{
"path": "app/src/main/java/com/example/discover/ViewBigImageActivity.java",
"chars": 13984,
"preview": "package com.example.discover;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.Inten"
},
{
"path": "app/src/main/java/com/example/discover/adapter/AuthorPopAdapter.java",
"chars": 2491,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.vie"
},
{
"path": "app/src/main/java/com/example/discover/adapter/CategoryPopAdapter.java",
"chars": 2728,
"preview": "package com.example.discover.adapter;\n\nimport android.app.Activity;\nimport android.app.ActivityOptions;\nimport android.c"
},
{
"path": "app/src/main/java/com/example/discover/adapter/FollowRecyclerAdapter.java",
"chars": 4592,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.vie"
},
{
"path": "app/src/main/java/com/example/discover/adapter/ItemHelper.java",
"chars": 222,
"preview": "package com.example.discover.adapter;\n\n/**\n * Created by monkeyWiiu on 2018/1/14.\n */\n\npublic interface ItemHelper {\n\n "
},
{
"path": "app/src/main/java/com/example/discover/adapter/LabelChooseAdapter.java",
"chars": 2934,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.support.v7.widget.CardView;\nimport"
},
{
"path": "app/src/main/java/com/example/discover/adapter/LikeVideoRecyclerAdapter.java",
"chars": 5300,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.view.View;\nimport android.view.Vie"
},
{
"path": "app/src/main/java/com/example/discover/adapter/MyFragmentPagerAdapter.java",
"chars": 1230,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.support.v4.app.Fragment;\nimport an"
},
{
"path": "app/src/main/java/com/example/discover/adapter/PopReplyAdapter.java",
"chars": 1416,
"preview": "package com.example.discover.adapter;\n\nimport android.databinding.DataBindingUtil;\nimport android.support.v7.widget.Recy"
},
{
"path": "app/src/main/java/com/example/discover/adapter/ReplyAdapter.java",
"chars": 2480,
"preview": "package com.example.discover.adapter;\n\nimport android.databinding.DataBindingUtil;\nimport android.support.v7.widget.Recy"
},
{
"path": "app/src/main/java/com/example/discover/adapter/ResultAdapter.java",
"chars": 3053,
"preview": "package com.example.discover.adapter;\n\nimport android.app.Activity;\nimport android.app.ActivityOptions;\nimport android.c"
},
{
"path": "app/src/main/java/com/example/discover/adapter/SearchRecyclerAdapter.java",
"chars": 2522,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.view.ViewGroup;\n\nimport com.exampl"
},
{
"path": "app/src/main/java/com/example/discover/adapter/SearchTagAdapter.java",
"chars": 4274,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.content.Intent;\nimport android.vie"
},
{
"path": "app/src/main/java/com/example/discover/adapter/SelectTypeRecyclerAdapter.java",
"chars": 2692,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.support.v7.widget.CardView;\nimport"
},
{
"path": "app/src/main/java/com/example/discover/adapter/VideoRecyclerAdapter.java",
"chars": 9880,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.view.View;\nimport android.view.Vie"
},
{
"path": "app/src/main/java/com/example/discover/adapter/WelfareAdapter.java",
"chars": 4394,
"preview": "package com.example.discover.adapter;\n\nimport android.content.Context;\nimport android.support.v7.widget.RecyclerView;\nim"
},
{
"path": "app/src/main/java/com/example/discover/app/Constant.java",
"chars": 3299,
"preview": "package com.example.discover.app;\n\nimport com.example.discover.R;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;"
},
{
"path": "app/src/main/java/com/example/discover/app/DiscoverApplication.java",
"chars": 1122,
"preview": "package com.example.discover.app;\n\nimport android.app.Application;\nimport android.content.Context;\n\nimport com.example.d"
},
{
"path": "app/src/main/java/com/example/discover/base/BaseFragment.java",
"chars": 4033,
"preview": "package com.example.discover.base;\n\nimport android.databinding.DataBindingUtil;\nimport android.databinding.ViewDataBindi"
},
{
"path": "app/src/main/java/com/example/discover/base/baseadapter/BaseRecyclerAdapter.java",
"chars": 1904,
"preview": "package com.example.discover.base.baseadapter;\n\nimport android.content.Context;\nimport android.support.v7.widget.Recycle"
},
{
"path": "app/src/main/java/com/example/discover/base/baseadapter/BaseViewHolder.java",
"chars": 991,
"preview": "package com.example.discover.base.baseadapter;\n\nimport android.databinding.DataBindingUtil;\nimport android.databinding.V"
},
{
"path": "app/src/main/java/com/example/discover/base/baseadapter/OnItemClickListener.java",
"chars": 217,
"preview": "package com.example.discover.base.baseadapter;\n\nimport android.view.View;\n\n/**\n * Created by jingbin on 2016/3/2.\n */\npu"
},
{
"path": "app/src/main/java/com/example/discover/base/baseadapter/OnItemLongClickListener.java",
"chars": 185,
"preview": "package com.example.discover.base.baseadapter;\n\n/**\n * Created by jingbin on 16/7/4.\n */\npublic interface OnItemLongClic"
},
{
"path": "app/src/main/java/com/example/discover/bean/AuthorDetailBean.java",
"chars": 458,
"preview": "package com.example.discover.bean;\n\nimport com.example.discover.bean.DetailBean.ItemList;\n\nimport java.io.Serializable;\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/ACacheFindList.java",
"chars": 1070,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/Author.java",
"chars": 991,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/17.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/CategoryInfo.java",
"chars": 1053,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/17.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/Cover.java",
"chars": 669,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/17.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/Data.java",
"chars": 3397,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by mo"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/FindCategory.java",
"chars": 665,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by mo"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/Footer.java",
"chars": 476,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/17.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/Header.java",
"chars": 1341,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/17.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/ItemList.java",
"chars": 626,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/17.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/PlayInfo.java",
"chars": 1754,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by mo"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/Replies.java",
"chars": 390,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * @author zsj\n "
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/ReplyList.java",
"chars": 1515,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * @author zsj\n */\n\npublic class ReplyL"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/SectionList.java",
"chars": 1028,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by mo"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/Tags.java",
"chars": 530,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/19.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/UrlList.java",
"chars": 782,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/23.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/User.java",
"chars": 636,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * @author zsj\n */\n\npublic class User i"
},
{
"path": "app/src/main/java/com/example/discover/bean/DetailBean/WebUrl.java",
"chars": 505,
"preview": "package com.example.discover.bean.DetailBean;\n\nimport java.io.Serializable;\n\n/**\n * Created by monkeyWiiu on 2018/1/23.\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/GankBean.java",
"chars": 2382,
"preview": "package com.example.discover.bean;\n\nimport java.io.Serializable;\nimport java.util.List;\n\n/**\n * Created by monkeyWiiu on"
},
{
"path": "app/src/main/java/com/example/discover/bean/HotEyeBean.java",
"chars": 463,
"preview": "package com.example.discover.bean;\n\nimport com.example.discover.bean.DetailBean.ItemList;\n\nimport java.io.Serializable;\n"
},
{
"path": "app/src/main/java/com/example/discover/bean/LitePalBean/Follow.java",
"chars": 1505,
"preview": "package com.example.discover.bean.LitePalBean;\n\nimport org.litepal.crud.DataSupport;\n\n/**\n * Created by monkeyWiiu on 20"
},
{
"path": "app/src/main/java/com/example/discover/bean/LitePalBean/LabelType.java",
"chars": 339,
"preview": "package com.example.discover.bean.LitePalBean;\n\nimport org.litepal.crud.DataSupport;\n\n/**\n * Created by monkeyWiiu on 20"
},
{
"path": "app/src/main/java/com/example/discover/bean/LitePalBean/LikeVideo.java",
"chars": 2516,
"preview": "package com.example.discover.bean.LitePalBean;\n\nimport org.litepal.crud.DataSupport;\n\n/**\n * Created by monkeyWiiu on 20"
},
{
"path": "app/src/main/java/com/example/discover/bean/LitePalBean/SearchTag.java",
"chars": 331,
"preview": "package com.example.discover.bean.LitePalBean;\n\n\nimport org.litepal.crud.DataSupport;\n\n/**\n * Created by monkeyWiiu on 2"
},
{
"path": "app/src/main/java/com/example/discover/bean/ResultBean.java",
"chars": 463,
"preview": "package com.example.discover.bean;\n\nimport com.example.discover.SearchActivity;\nimport com.example.discover.bean.DetailB"
},
{
"path": "app/src/main/java/com/example/discover/bean/TestBean.java",
"chars": 43643,
"preview": "package com.example.discover.bean;\n\nimport java.util.List;\n\n/**\n * Created by Administrator on 2017/12/14 0014.\n */\n\npub"
},
{
"path": "app/src/main/java/com/example/discover/http/HttpClient.java",
"chars": 2124,
"preview": "package com.example.discover.http;\n\nimport com.example.discover.bean.AuthorDetailBean;\nimport com.example.discover.bean."
},
{
"path": "app/src/main/java/com/example/discover/http/RequestListener.java",
"chars": 268,
"preview": "package com.example.discover.http;\n\nimport io.reactivex.disposables.Disposable;\n\n/**\n * Created by Administrator on 2017"
},
{
"path": "app/src/main/java/com/example/discover/http/cahe/ACache.java",
"chars": 20106,
"preview": "/**\n * Copyright (c) 2012-2013, Michael Yang 杨福海 (www.yangfuhai.com).\n *\n * Licensed under the Apache License, Version 2"
},
{
"path": "app/src/main/java/com/example/discover/model/AuthorVideoModel.java",
"chars": 1733,
"preview": "package com.example.discover.model;\n\nimport com.example.discover.bean.AuthorDetailBean;\nimport com.example.discover.bean"
},
{
"path": "app/src/main/java/com/example/discover/model/GankModel.java",
"chars": 1534,
"preview": "package com.example.discover.model;\n\nimport com.example.discover.bean.GankBean;\nimport com.example.discover.http.HttpCli"
},
{
"path": "app/src/main/java/com/example/discover/model/HotVideoModel.java",
"chars": 1748,
"preview": "package com.example.discover.model;\n\nimport com.example.discover.bean.HotEyeBean;\nimport com.example.discover.bean.LiteP"
},
{
"path": "app/src/main/java/com/example/discover/model/ReplyModel.java",
"chars": 1837,
"preview": "package com.example.discover.model;\n\nimport com.example.discover.bean.DetailBean.Replies;\nimport com.example.discover.be"
},
{
"path": "app/src/main/java/com/example/discover/model/SearchModel.java",
"chars": 5257,
"preview": "package com.example.discover.model;\n\nimport android.content.Context;\n\nimport com.example.discover.ResultActivity;\nimport"
},
{
"path": "app/src/main/java/com/example/discover/ui/DiscoverFragment.java",
"chars": 1732,
"preview": "package com.example.discover.ui;\n\nimport android.content.Intent;\nimport android.os.Bundle;\nimport android.support.annota"
},
{
"path": "app/src/main/java/com/example/discover/ui/Personal/PersonalFragment.java",
"chars": 1841,
"preview": "package com.example.discover.ui.Personal;\n\nimport android.os.Bundle;\nimport android.support.annotation.Nullable;\nimport "
},
{
"path": "app/src/main/java/com/example/discover/ui/Personal/child/FollowFragment.java",
"chars": 5490,
"preview": "package com.example.discover.ui.Personal.child;\n\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.sup"
},
{
"path": "app/src/main/java/com/example/discover/ui/Personal/child/LikeFragment.java",
"chars": 6853,
"preview": "package com.example.discover.ui.Personal.child;\n\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.sup"
},
{
"path": "app/src/main/java/com/example/discover/ui/RecyclerViewNoBugLinearLayoutManager.java",
"chars": 1079,
"preview": "package com.example.discover.ui;\n\nimport android.content.Context;\nimport android.support.v7.widget.LinearLayoutManager;\n"
},
{
"path": "app/src/main/java/com/example/discover/ui/Search/Author/ItemFragment.java",
"chars": 7042,
"preview": "package com.example.discover.ui.Search.Author;\n\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.supp"
},
{
"path": "app/src/main/java/com/example/discover/ui/Search/SearchFragment.java",
"chars": 15597,
"preview": "package com.example.discover.ui.Search;\n\nimport android.content.Intent;\nimport android.graphics.drawable.Drawable;\nimpor"
},
{
"path": "app/src/main/java/com/example/discover/ui/Video/VideoFragment.java",
"chars": 7381,
"preview": "package com.example.discover.ui.Video;\n\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.support.anno"
},
{
"path": "app/src/main/java/com/example/discover/ui/Welfare/WelFareFragment.java",
"chars": 7135,
"preview": "package com.example.discover.ui.Welfare;\n\nimport android.os.Bundle;\nimport android.os.Handler;\nimport android.support.an"
},
{
"path": "app/src/main/java/com/example/discover/utils/BindingUtil.java",
"chars": 3649,
"preview": "package com.example.discover.utils;\n\nimport android.databinding.BindingAdapter;\nimport android.databinding.BindingBuildI"
},
{
"path": "app/src/main/java/com/example/discover/utils/DebugUtil.java",
"chars": 1005,
"preview": "package com.example.discover.utils;\n\nimport android.content.Context;\nimport android.util.Log;\nimport android.widget.Toas"
},
{
"path": "app/src/main/java/com/example/discover/utils/DensityUtil.java",
"chars": 1598,
"preview": "package com.example.discover.utils;\n\nimport android.content.Context;\nimport android.util.TypedValue;\nimport android.view"
},
{
"path": "app/src/main/java/com/example/discover/utils/IntentManager.java",
"chars": 5049,
"preview": "package com.example.discover.utils;\n\nimport android.app.Activity;\nimport android.app.ActivityOptions;\nimport android.con"
},
{
"path": "app/src/main/java/com/example/discover/utils/LitePalUtil.java",
"chars": 2401,
"preview": "package com.example.discover.utils;\n\nimport com.example.discover.bean.DetailBean.Data;\nimport com.example.discover.bean."
},
{
"path": "app/src/main/java/com/example/discover/utils/ShareUtil.java",
"chars": 534,
"preview": "package com.example.discover.utils;\n\nimport android.content.Context;\nimport android.content.Intent;\n\nimport com.example."
},
{
"path": "app/src/main/java/com/example/discover/utils/TimeUtils.java",
"chars": 985,
"preview": "package com.example.discover.utils;\n\n\npublic class TimeUtils {\n\n private static final String ZERO = \"0\";\n private "
},
{
"path": "app/src/main/java/com/example/discover/view/CustomView/CategoryPopupWindow.java",
"chars": 2972,
"preview": "package com.example.discover.view.CustomView;\n\nimport android.content.Context;\nimport android.support.v7.widget.GridLayo"
},
{
"path": "app/src/main/java/com/example/discover/view/CustomView/CircleImageView.java",
"chars": 14520,
"preview": "package com.example.discover.view.CustomView;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nim"
},
{
"path": "app/src/main/java/com/example/discover/view/CustomView/DragFrameLayout.java",
"chars": 7686,
"preview": "package com.example.discover.view.CustomView;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport andro"
},
{
"path": "app/src/main/java/com/example/discover/view/CustomView/FollowPopupWindow.java",
"chars": 2294,
"preview": "package com.example.discover.view.CustomView;\n\nimport android.content.Context;\nimport android.support.v7.widget.CardView"
},
{
"path": "app/src/main/java/com/example/discover/view/CustomView/HackyViewPager.java",
"chars": 1077,
"preview": "package com.example.discover.view.CustomView;\n\nimport android.content.Context;\nimport android.support.v4.view.ViewPager;"
},
{
"path": "app/src/main/java/com/example/discover/view/CustomView/LabelView.java",
"chars": 5457,
"preview": "package com.example.discover.view.CustomView;\n\nimport android.content.Context;\nimport android.content.res.TypedArray;\nim"
},
{
"path": "app/src/main/java/com/example/discover/view/CustomView/ReplyPopupWindow.java",
"chars": 7591,
"preview": "package com.example.discover.view.CustomView;\n\nimport android.content.Context;\nimport android.os.Handler;\nimport android"
},
{
"path": "app/src/main/java/com/example/discover/view/test.java",
"chars": 107,
"preview": "package com.example.discover.view;\n\n/**\n * Created by monkeyWiiu on 2017/12/28.\n */\n\npublic class test {\n}\n"
},
{
"path": "app/src/main/res/anim/fade_in_bottom.xml",
"chars": 341,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--弹出-->\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <"
},
{
"path": "app/src/main/res/anim/fade_in_lt.xml",
"chars": 390,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- 左上角扩大-->\n<scale xmlns:android=\"http://schemas.android.com/apk/res/android\""
},
{
"path": "app/src/main/res/anim/fade_in_rt.xml",
"chars": 385,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--右上角扩大-->\n<scale xmlns:android=\"http://schemas.android.com/apk/res/android\"\n"
},
{
"path": "app/src/main/res/anim/fade_out_lb.xml",
"chars": 386,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--右上角角缩小-->\n<scale xmlns:android=\"http://schemas.android.com/apk/res/android\""
},
{
"path": "app/src/main/res/anim/fade_out_rb.xml",
"chars": 359,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- 左上角缩小 -->\n<scale xmlns:android=\"http://schemas.android.com/apk/res/android"
},
{
"path": "app/src/main/res/anim/fade_out_top.xml",
"chars": 307,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--退出-->\n<set xmlns:android=\"http://schemas.android.com/apk/res/android\">\n<trans"
},
{
"path": "app/src/main/res/drawable/bg_save_big_image.xml",
"chars": 400,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <solid an"
},
{
"path": "app/src/main/res/drawable/corner_view.xml",
"chars": 310,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<shape xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <soli"
},
{
"path": "app/src/main/res/drawable/ic_arrow_back_white_24px.xml",
"chars": 323,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "app/src/main/res/drawable/ic_clear_black_24px.xml",
"chars": 353,
"preview": "<vector xmlns:android=\"http://schemas.android.com/apk/res/android\"\n android:width=\"24dp\"\n android:height=\""
},
{
"path": "app/src/main/res/drawable/ic_heart_full_24dp_pink.xml",
"chars": 1151,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<!--\n Copyright 2015 Google Inc.\n\n Licensed under the Apache License, Version "
},
{
"path": "app/src/main/res/drawable/ic_heart_hollow_24dp.xml",
"chars": 566,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n\n<vector\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andr"
},
{
"path": "app/src/main/res/drawable/item_figure.xml",
"chars": 461,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <item "
},
{
"path": "app/src/main/res/drawable/item_home.xml",
"chars": 452,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <item "
},
{
"path": "app/src/main/res/drawable/item_search.xml",
"chars": 460,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <item "
},
{
"path": "app/src/main/res/drawable/item_smile.xml",
"chars": 456,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <item "
},
{
"path": "app/src/main/res/layout/activity_author_home.xml",
"chars": 8059,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:"
},
{
"path": "app/src/main/res/layout/activity_main.xml",
"chars": 1805,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:"
},
{
"path": "app/src/main/res/layout/activity_result.xml",
"chars": 1692,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmln"
},
{
"path": "app/src/main/res/layout/activity_search.xml",
"chars": 2008,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmln"
},
{
"path": "app/src/main/res/layout/activity_test.xml",
"chars": 490,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.constraint.ConstraintLayout\n xmlns:android=\"http://schemas.an"
},
{
"path": "app/src/main/res/layout/activity_video_detail.xml",
"chars": 1056,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns"
},
{
"path": "app/src/main/res/layout/activity_view_big_image.xml",
"chars": 1986,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<com.example.discover.view.CustomView.DragFrameLayout\n xmlns:android=\"http://s"
},
{
"path": "app/src/main/res/layout/author_card.xml",
"chars": 8947,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n xmlns:android=\"ht"
},
{
"path": "app/src/main/res/layout/bottom_bar.xml",
"chars": 3086,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/a"
},
{
"path": "app/src/main/res/layout/category_card.xml",
"chars": 1438,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <data>\n <variable\n name=\"itemList\"\n ty"
},
{
"path": "app/src/main/res/layout/category_popup_window.xml",
"chars": 851,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n x"
},
{
"path": "app/src/main/res/layout/follow_popup.xml",
"chars": 626,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<android.support.v7.widget.CardView\n xmlns:android=\"http://schemas.android.com"
},
{
"path": "app/src/main/res/layout/footer_item_video.xml",
"chars": 658,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <LinearLayout\n android:id=\"@+id/ll\"\n android:orientat"
},
{
"path": "app/src/main/res/layout/fragment_base.xml",
"chars": 1667,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout xmlns:app=\"http://schemas.android.com/apk/res-auto\">\n\n <FrameLayout xm"
},
{
"path": "app/src/main/res/layout/fragment_discover.xml",
"chars": 614,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <android.support.v4.widget.NestedScrollView xmlns:android=\"http://s"
},
{
"path": "app/src/main/res/layout/fragment_follow.xml",
"chars": 820,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:"
},
{
"path": "app/src/main/res/layout/fragment_personal.xml",
"chars": 4536,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/"
},
{
"path": "app/src/main/res/layout/fragment_personal_like.xml",
"chars": 1320,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/"
},
{
"path": "app/src/main/res/layout/fragment_search.xml",
"chars": 6620,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:"
},
{
"path": "app/src/main/res/layout/fragment_video.xml",
"chars": 830,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:app="
},
{
"path": "app/src/main/res/layout/fragment_welfare.xml",
"chars": 438,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <Fra"
},
{
"path": "app/src/main/res/layout/item_follow.xml",
"chars": 3969,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <dat"
},
{
"path": "app/src/main/res/layout/item_movie_detail_header.xml",
"chars": 3995,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <data>\n\n <variable\n name=\"item\"\n type="
},
{
"path": "app/src/main/res/layout/item_reply.xml",
"chars": 3231,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <data>\n\n <variable\n name=\"reply\"\n type"
},
{
"path": "app/src/main/res/layout/item_welfare.xml",
"chars": 525,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\">\n\n <dat"
},
{
"path": "app/src/main/res/layout/label_view.xml",
"chars": 1612,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\n "
},
{
"path": "app/src/main/res/layout/like_video_card.xml",
"chars": 6727,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n xmlns:tools=\"http"
},
{
"path": "app/src/main/res/layout/null_layout.xml",
"chars": 208,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\" andro"
},
{
"path": "app/src/main/res/layout/recommend_author.xml",
"chars": 793,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout xmlns:bind=\"http://schemas.android.com/apk/res-auto\">\n\n <data>\n "
},
{
"path": "app/src/main/res/layout/recommend_category.xml",
"chars": 1327,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout xmlns:bind=\"http://schemas.android.com/tools\">\n\n <data>\n <impor"
},
{
"path": "app/src/main/res/layout/reply_popup_window.xml",
"chars": 2754,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n x"
},
{
"path": "app/src/main/res/layout/search_tag.xml",
"chars": 1840,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n xmlns:"
},
{
"path": "app/src/main/res/layout/select_label_view.xml",
"chars": 1374,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout\n xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\n "
},
{
"path": "app/src/main/res/layout/tag_header_new.xml",
"chars": 533,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\n<layout>\n\n <LinearLayout\n xmlns:android=\"http://schemas.android.com/ap"
},
{
"path": "app/src/main/res/layout/tag_header_reco.xml",
"chars": 899,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout\n xmlns:android=\"http://schemas.android.com/apk/res/android\" >\n\n <Li"
},
{
"path": "app/src/main/res/layout/test.xml",
"chars": 434,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <LinearLayout xmlns:android=\"http://schemas.android.com/apk/res/and"
},
{
"path": "app/src/main/res/layout/test_cardview.xml",
"chars": 708,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout>\n\n <android.support.constraint.ConstraintLayout\n xmlns:android="
},
{
"path": "app/src/main/res/layout/video_card.xml",
"chars": 7939,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<layout xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n xmlns:tools=\"http"
},
{
"path": "app/src/main/res/layout/viewpager_very_image.xml",
"chars": 592,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<FrameLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n andro"
},
{
"path": "app/src/main/res/values/attrs.xml",
"chars": 741,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n <declare-styleable name=\"LabelView\">\n <attr name="
},
{
"path": "app/src/main/res/values/colors.xml",
"chars": 2162,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <!-- Theme -->\n <color name=\"colorPrimary\">#3F51B5</color>\n "
},
{
"path": "app/src/main/res/values/dimens.xml",
"chars": 160,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n <dimen name=\"xMenuMarginRight\">20dp</dimen>\n <dimen name=\"xMen"
},
{
"path": "app/src/main/res/values/strings.xml",
"chars": 877,
"preview": "<resources>\n <string name=\"app_name\">Discover</string>\n <string name=\"action_share\">分享给朋友</string>\n <string nam"
},
{
"path": "app/src/main/res/values/styles.xml",
"chars": 2005,
"preview": "<resources>\n\n <!-- Base application theme. -->\n <style name=\"AppTheme\" parent=\"Theme.AppCompat.Light.NoActionBar\">"
},
{
"path": "app/src/main/res/values-v21/dimens.xml",
"chars": 65,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n\n</resources>"
},
{
"path": "app/src/main/res/values-v21/styles.xml",
"chars": 574,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<resources>\n\n <style name=\"LightToolbarThemeOverlay\" parent=\"Widget.AppCompat."
},
{
"path": "app/src/test/java/com/example/discover/ExampleUnitTest.java",
"chars": 398,
"preview": "package com.example.discover;\n\nimport org.junit.Test;\n\nimport static org.junit.Assert.*;\n\n/**\n * Example local unit test"
},
{
"path": "build.gradle",
"chars": 575,
"preview": "// Top-level build file where you can add configuration options common to all sub-projects/modules.\n\nbuildscript {\n r"
},
{
"path": "gradle/wrapper/gradle-wrapper.properties",
"chars": 230,
"preview": "#Mon Dec 18 15:30:27 CST 2017\ndistributionBase=GRADLE_USER_HOME\ndistributionPath=wrapper/dists\nzipStoreBase=GRADLE_USER_"
},
{
"path": "gradle.properties",
"chars": 730,
"preview": "# Project-wide Gradle settings.\n\n# IDE (e.g. Android Studio) users:\n# Gradle settings configured through the IDE *will o"
},
{
"path": "gradlew",
"chars": 4971,
"preview": "#!/usr/bin/env bash\n\n##############################################################################\n##\n## Gradle start "
},
{
"path": "gradlew.bat",
"chars": 2314,
"preview": "@if \"%DEBUG%\" == \"\" @echo off\n@rem ##########################################################################\n@rem\n@rem "
},
{
"path": "librarys/http/.gitignore",
"chars": 7,
"preview": "/build\n"
},
{
"path": "librarys/http/build.gradle",
"chars": 1236,
"preview": "apply plugin: 'com.android.library'\n\nandroid {\n compileSdkVersion 24\n buildToolsVersion '26.0.2'\n\n defaultConfi"
},
{
"path": "librarys/http/proguard-rules.pro",
"chars": 916,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in G:"
},
{
"path": "librarys/http/src/androidTest/java/com/example/http/ExampleInstrumentedTest.java",
"chars": 741,
"preview": "package com.example.http;\n\nimport android.content.Context;\nimport android.support.test.InstrumentationRegistry;\nimport a"
},
{
"path": "librarys/http/src/main/AndroidManifest.xml",
"chars": 249,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n\n package=\"com.example.http\">\n\n <application "
},
{
"path": "librarys/http/src/main/java/com/example/http/HttpUtils.java",
"chars": 4840,
"preview": "package com.example.http;\n\nimport android.content.Context;\n\nimport java.security.SecureRandom;\nimport java.security.cert"
},
{
"path": "librarys/http/src/main/res/values/strings.xml",
"chars": 67,
"preview": "<resources>\n <string name=\"app_name\">http</string>\n</resources>\n"
},
{
"path": "librarys/http/src/test/java/com/example/http/ExampleUnitTest.java",
"chars": 394,
"preview": "package com.example.http;\n\nimport org.junit.Test;\n\nimport static org.junit.Assert.*;\n\n/**\n * Example local unit test, wh"
},
{
"path": "librarys/jiaozivideoplayer/.idea/compiler.xml",
"chars": 686,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"CompilerConfiguration\">\n <resourceExt"
},
{
"path": "librarys/jiaozivideoplayer/.idea/copyright/profiles_settings.xml",
"chars": 74,
"preview": "<component name=\"CopyrightManager\">\n <settings default=\"\" />\n</component>"
},
{
"path": "librarys/jiaozivideoplayer/.idea/gradle.xml",
"chars": 382,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"GradleSettings\">\n <option name=\"linke"
},
{
"path": "librarys/jiaozivideoplayer/.idea/misc.xml",
"chars": 321,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ProjectRootManager\" version=\"2\" assert-k"
},
{
"path": "librarys/jiaozivideoplayer/.idea/modules.xml",
"chars": 274,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ProjectModuleManager\">\n <modules>\n "
},
{
"path": "librarys/jiaozivideoplayer/.idea/runConfigurations.xml",
"chars": 564,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"RunConfigurationProducerService\">\n <o"
},
{
"path": "librarys/jiaozivideoplayer/.idea/workspace.xml",
"chars": 12939,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ChangeListManager\">\n <list default=\"t"
},
{
"path": "librarys/jiaozivideoplayer/build.gradle",
"chars": 570,
"preview": "apply plugin: 'com.android.library'\n\nandroid {\n compileSdkVersion 26\n buildToolsVersion '26.0.2'\n\n defaultConfi"
},
{
"path": "librarys/jiaozivideoplayer/proguard-rules.pro",
"chars": 671,
"preview": "# Add project specific ProGuard rules here.\n# By default, the flags in this file are appended to flags specified\n# in /U"
},
{
"path": "librarys/jiaozivideoplayer/src/androidTest/java/cn/jzvd/ApplicationTest.java",
"chars": 339,
"preview": "package cn.jzvd;\n\nimport android.app.Application;\nimport android.test.ApplicationTestCase;\n\n/**\n * <a href=\"http://d.and"
},
{
"path": "librarys/jiaozivideoplayer/src/main/AndroidManifest.xml",
"chars": 184,
"preview": "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\"\n package=\"cn.jzvd\">\n\n <uses-permission androi"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZMediaInterface.java",
"chars": 739,
"preview": "package cn.jzvd;\n\nimport android.view.Surface;\n\n/**\n * Created by Nathen on 2017/11/7.\n * 自定义播放器\n */\npublic abstract cla"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZMediaManager.java",
"chars": 4757,
"preview": "package cn.jzvd;\n\nimport android.graphics.SurfaceTexture;\nimport android.os.Handler;\nimport android.os.HandlerThread;\nim"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZMediaSystem.java",
"chars": 6135,
"preview": "package cn.jzvd;\n\nimport android.media.AudioManager;\nimport android.media.MediaPlayer;\nimport android.view.Surface;\n\nimp"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZResizeTextureView.java",
"chars": 7049,
"preview": "package cn.jzvd;\n\nimport android.content.Context;\nimport android.util.AttributeSet;\nimport android.util.Log;\nimport andr"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZUserAction.java",
"chars": 625,
"preview": "package cn.jzvd;\n\n/**\n * Created by Nathen\n * On 2016/04/04 22:13\n */\npublic interface JZUserAction {\n\n int ON_CLICK_"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZUserActionStandard.java",
"chars": 201,
"preview": "package cn.jzvd;\n\n/**\n * Created by Nathen\n * On 2016/04/26 20:53\n */\npublic interface JZUserActionStandard extends JZUs"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZUtils.java",
"chars": 6804,
"preview": "package cn.jzvd;\n\nimport android.app.Activity;\nimport android.content.Context;\nimport android.content.ContextWrapper;\nim"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZVideoPlayer.java",
"chars": 51542,
"preview": "package cn.jzvd;\n\nimport android.annotation.SuppressLint;\nimport android.content.Context;\nimport android.content.pm.Acti"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZVideoPlayerManager.java",
"chars": 1189,
"preview": "package cn.jzvd;\n\n/**\n * Put JZVideoPlayer into layout\n * From a JZVideoPlayer to another JZVideoPlayer\n * Created by Na"
},
{
"path": "librarys/jiaozivideoplayer/src/main/java/cn/jzvd/JZVideoPlayerStandard.java",
"chars": 33271,
"preview": "package cn.jzvd;\n\nimport android.app.Activity;\nimport android.app.AlertDialog;\nimport android.app.Dialog;\nimport android"
}
]
// ... and 103 more files (download for full content)
About this extraction
This page contains the full source code of the monkeywiiu/Discover GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 303 files (770.0 KB), approximately 184.1k tokens, and a symbol index with 1568 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.