├── .gitignore ├── .idea ├── .name ├── compiler.xml ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml └── vcs.xml ├── README.md ├── build.gradle ├── captures └── Allocations_2015.08.22_21.42.28.alloc ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── opreader ├── .gitignore ├── build.gradle ├── libs │ ├── butterknife-6.1.0.jar │ ├── eventbus-2.4.0.jar │ ├── glide-3.6.0.jar │ └── jsoup-1.8.2.jar ├── opreader.iml ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── opreader │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── opreader │ │ ├── Bean │ │ ├── Info.java │ │ └── MenuBean.java │ │ └── View │ │ ├── DataAdapter.java │ │ ├── MainActivity.java │ │ └── ManHuaActivity.java │ └── res │ ├── drawable │ └── p11.png │ ├── layout │ ├── activity_main.xml │ ├── activity_manhua.xml │ ├── cell_manhua.xml │ └── cell_menu.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── values-v21 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── poishuhui ├── .gitignore ├── build.gradle ├── libs │ ├── butterknife-6.1.0.jar │ ├── disklrucache-2.0.2.jar │ ├── glide-3.6.0.jar │ ├── jsoup-1.8.2.jar │ ├── photoview-1.2.2.jar │ └── volly-1.0.11.jar ├── poishuhui.iml ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── poishuhui │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── poishuhui │ │ ├── Adapters │ │ ├── ChildNewsAdapter.java │ │ ├── ContainerLinearAdapter.java │ │ ├── GridAdapter.java │ │ ├── Impl │ │ │ └── OnCellClickListener.java │ │ ├── PageAdapter.java │ │ └── StaggeredAdapter.java │ │ ├── Beans │ │ ├── ChildItemBean.java │ │ ├── ComicBean.java │ │ ├── ContainerBean.java │ │ ├── ItemBean.java │ │ └── PageBean.java │ │ ├── Utils │ │ ├── HtmlTask.java │ │ ├── HtmlUtil.java │ │ ├── Utils.java │ │ └── VolleyUtils │ │ │ ├── BitmapHelper.java │ │ │ ├── SDiskLruCache.java │ │ │ ├── SMemoryLruCache.java │ │ │ └── SVolleyHelper.java │ │ └── Views │ │ ├── Activities │ │ ├── ComicActivity.java │ │ ├── ComicDetailActivity.java │ │ ├── MainActivity.java │ │ └── NewsDetailActivity.java │ │ ├── CustomViews │ │ ├── PageBar.java │ │ ├── SlideLayout.java │ │ └── SunnyLoad.java │ │ └── Fragments │ │ ├── ComicBookListFragment.java │ │ ├── ComicListFragment.java │ │ ├── ComicNewsFragment.java │ │ └── MainFragment.java │ └── res │ ├── drawable-hdpi │ ├── ic_arrow_left_black_18dp.png │ ├── ic_arrow_left_black_24dp.png │ ├── ic_arrow_left_black_36dp.png │ ├── ic_arrow_left_black_48dp.png │ ├── ic_arrow_left_grey600_18dp.png │ ├── ic_arrow_left_grey600_24dp.png │ ├── ic_arrow_left_grey600_36dp.png │ ├── ic_arrow_left_grey600_48dp.png │ ├── ic_arrow_left_white_18dp.png │ ├── ic_arrow_left_white_24dp.png │ ├── ic_arrow_left_white_36dp.png │ └── ic_arrow_left_white_48dp.png │ ├── drawable-mdpi │ ├── ic_arrow_left_black_18dp.png │ ├── ic_arrow_left_black_24dp.png │ ├── ic_arrow_left_black_36dp.png │ ├── ic_arrow_left_black_48dp.png │ ├── ic_arrow_left_grey600_18dp.png │ ├── ic_arrow_left_grey600_24dp.png │ ├── ic_arrow_left_grey600_36dp.png │ ├── ic_arrow_left_grey600_48dp.png │ ├── ic_arrow_left_white_18dp.png │ ├── ic_arrow_left_white_24dp.png │ ├── ic_arrow_left_white_36dp.png │ └── ic_arrow_left_white_48dp.png │ ├── drawable-v21 │ └── arrow_left.xml │ ├── drawable-xhdpi │ ├── ic_arrow_left_black_18dp.png │ ├── ic_arrow_left_black_24dp.png │ ├── ic_arrow_left_black_36dp.png │ ├── ic_arrow_left_black_48dp.png │ ├── ic_arrow_left_grey600_18dp.png │ ├── ic_arrow_left_grey600_24dp.png │ ├── ic_arrow_left_grey600_36dp.png │ ├── ic_arrow_left_grey600_48dp.png │ ├── ic_arrow_left_white_18dp.png │ ├── ic_arrow_left_white_24dp.png │ ├── ic_arrow_left_white_36dp.png │ └── ic_arrow_left_white_48dp.png │ ├── drawable-xxhdpi │ ├── ic_arrow_left_black_18dp.png │ ├── ic_arrow_left_black_24dp.png │ ├── ic_arrow_left_black_36dp.png │ ├── ic_arrow_left_black_48dp.png │ ├── ic_arrow_left_grey600_18dp.png │ ├── ic_arrow_left_grey600_24dp.png │ ├── ic_arrow_left_grey600_36dp.png │ ├── ic_arrow_left_grey600_48dp.png │ ├── ic_arrow_left_white_18dp.png │ ├── ic_arrow_left_white_24dp.png │ ├── ic_arrow_left_white_36dp.png │ ├── ic_arrow_left_white_48dp.png │ └── ic_logo.png │ ├── drawable-xxxhdpi │ ├── ic_arrow_left_black_18dp.png │ ├── ic_arrow_left_black_24dp.png │ ├── ic_arrow_left_black_36dp.png │ ├── ic_arrow_left_black_48dp.png │ ├── ic_arrow_left_grey600_18dp.png │ ├── ic_arrow_left_grey600_24dp.png │ ├── ic_arrow_left_grey600_36dp.png │ ├── ic_arrow_left_grey600_48dp.png │ ├── ic_arrow_left_white_18dp.png │ ├── ic_arrow_left_white_24dp.png │ ├── ic_arrow_left_white_36dp.png │ └── ic_arrow_left_white_48dp.png │ ├── drawable │ └── arrow_left.xml │ ├── layout-v21 │ ├── activity_comic.xml │ ├── activity_comic_detail.xml │ ├── activity_main.xml │ ├── activity_news_detail.xml │ ├── child_news_item.xml │ ├── comic_item.xml │ ├── comic_view.xml │ ├── fragment_comic_booklist.xml │ ├── fragment_comic_list.xml │ ├── fragment_comic_news.xml │ ├── fragment_main.xml │ ├── news_container_item.xml │ ├── page_item.xml │ └── pagebar.xml │ ├── layout │ ├── activity_comic.xml │ ├── activity_comic_detail.xml │ ├── activity_main.xml │ ├── activity_news_detail.xml │ ├── child_news_item.xml │ ├── comic_item.xml │ ├── comic_view.xml │ ├── fragment_comic_booklist.xml │ ├── fragment_comic_list.xml │ ├── fragment_comic_news.xml │ ├── fragment_main.xml │ ├── news_container_item.xml │ ├── page_item.xml │ └── pagebar.xml │ ├── menu │ └── menu_start.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-v21 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── sceenshots ├── Image1.png ├── Image2.png ├── Image3.png ├── Image4.png └── Image5.png ├── settings.gradle ├── shader ├── .gitignore ├── build.gradle ├── libs │ ├── butterknife-6.1.0.jar │ └── eventbus-2.4.0.jar ├── proguard-rules.pro ├── shader.iml └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── shader │ │ └── ApplicationTest.java │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── shader │ │ ├── Activity │ │ ├── AddTipActivity.java │ │ ├── MainActivity.java │ │ └── NotificationStartedActivity.java │ │ ├── Adapter │ │ └── TipsRecyclerAdapter.java │ │ ├── Bean │ │ └── TipBean.java │ │ ├── ClockDBHelper.java │ │ ├── Reciver │ │ └── TipsReciver.java │ │ ├── Utils.java │ │ └── View │ │ ├── CellTip.java │ │ ├── CircleRevealLayout.java │ │ └── PullToRefresh.java │ └── res │ ├── drawable │ ├── circle_background.xml │ └── photo_background.jpg │ ├── layout-v21 │ ├── cell_tip.xml │ └── headerview.xml │ ├── layout │ ├── activity_addtip.xml │ ├── activity_addtip_main.xml │ ├── activity_main.xml │ ├── activity_notification_started.xml │ ├── cell_tip.xml │ └── headerview.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ ├── ic_access_time_grey600_24dp.png │ ├── ic_check_black_24dp.png │ ├── ic_delete_white_24dp.png │ ├── ic_launcher.png │ ├── ic_plus_black_24dp.png │ └── ic_view_day_grey600_24dp.png │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml └── volleytest ├── .gitignore ├── build.gradle ├── libs ├── butterknife-6.1.0.jar ├── jsoup-1.8.2.jar └── volly-1.0.11.jar ├── proguard-rules.pro ├── src ├── androidTest │ └── java │ │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── volleytest │ │ └── ApplicationTest.java └── main │ ├── AndroidManifest.xml │ ├── java │ └── com │ │ └── flying │ │ └── xiaopo │ │ └── volleytest │ │ └── MainActivity.java │ └── res │ ├── drawable-hdpi │ └── ic_launcher.png │ ├── drawable-mdpi │ └── ic_launcher.png │ ├── drawable-xhdpi │ └── ic_launcher.png │ ├── drawable-xxhdpi │ └── ic_launcher.png │ ├── layout │ └── activity_main.xml │ ├── menu │ └── menu_main.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml └── volleytest.iml /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle 2 | /local.properties 3 | /.idea/workspace.xml 4 | /.idea/libraries 5 | .DS_Store 6 | /build 7 | *.iml -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | PoiShuHui -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 47 | 48 | 49 | 50 | 1.8 51 | 52 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PoiShuHui 2 | 我自己做的一些小东西。 3 | PoiShuhui是一个看漫画的App,本来是因为想看海贼王的最新漫画,所以一开始只爬了OP的数据,后来就干脆把所有数据爬啦下来,数据来源自[鼠绘漫画网](http://ishuhui.net/ "鼠绘")。 4 | 5 | 其中其他的moudle中OPReader是最之前看OP的App,shadow是一个设置时间发送提示的App,Volley是一个爬取数据的测试类。 6 | 7 | 8 | 下面是效果的截图: 9 | 10 | 11 | ![](https://github.com/wuapnjie/PoiShuHui/blob/master/sceenshots/Image1.png) 12 | 13 | 14 | 15 | 16 | ![](https://github.com/wuapnjie/PoiShuHui/blob/master/sceenshots/Image2.png) 17 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.0.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /captures/Allocations_2015.08.22_21.42.28.alloc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/captures/Allocations_2015.08.22_21.42.28.alloc -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | ## Project-wide Gradle settings. 2 | # 3 | # For more details on how to configure your build environment visit 4 | # http://www.gradle.org/docs/current/userguide/build_environment.html 5 | # 6 | # Specifies the JVM arguments used for the daemon process. 7 | # The setting is particularly useful for tweaking memory settings. 8 | # Default value: -Xmx10248m -XX:MaxPermSize=256m 9 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 10 | # 11 | # When configured, Gradle will run in incubating parallel mode. 12 | # This option should only be used with decoupled projects. More details, visit 13 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 14 | # org.gradle.parallel=true 15 | #Thu Aug 06 15:04:26 CST 2015 16 | systemProp.http.proxyHost=mirrors.opencas.cn 17 | systemProp.http.proxyPort=80 18 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Apr 10 15:27:10 PDT 2013 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip 7 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /opreader/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /opreader/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 21 5 | buildToolsVersion "22.0.0" 6 | 7 | defaultConfig { 8 | applicationId "com.flying.xiaopo.opreader" 9 | minSdkVersion 21 10 | targetSdkVersion 21 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | 22 | dependencies { 23 | compile fileTree(include: ['*.jar'], dir: 'libs') 24 | compile files('libs/butterknife-6.1.0.jar') 25 | compile files('libs/eventbus-2.4.0.jar') 26 | compile files('libs/glide-3.6.0.jar') 27 | compile files('libs/jsoup-1.8.2.jar') 28 | compile 'com.android.support:cardview-v7:21.0.3' 29 | compile 'com.android.support:recyclerview-v7:21.0.3' 30 | compile 'com.android.support:palette-v7:21.0.3' 31 | } 32 | -------------------------------------------------------------------------------- /opreader/libs/butterknife-6.1.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/libs/butterknife-6.1.0.jar -------------------------------------------------------------------------------- /opreader/libs/eventbus-2.4.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/libs/eventbus-2.4.0.jar -------------------------------------------------------------------------------- /opreader/libs/glide-3.6.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/libs/glide-3.6.0.jar -------------------------------------------------------------------------------- /opreader/libs/jsoup-1.8.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/libs/jsoup-1.8.2.jar -------------------------------------------------------------------------------- /opreader/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in E:\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /opreader/src/androidTest/java/com/flying/xiaopo/opreader/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.opreader; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /opreader/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 12 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /opreader/src/main/java/com/flying/xiaopo/opreader/Bean/Info.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.opreader.Bean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 7 | * Created by lenovo on 2015/5/31. 8 | */ 9 | public class Info { 10 | List strings; 11 | public Info(List strings){ 12 | this.strings = strings; 13 | 14 | } 15 | 16 | public List getStrings() { 17 | return strings; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /opreader/src/main/java/com/flying/xiaopo/opreader/Bean/MenuBean.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.opreader.Bean; 2 | 3 | /** 4 | * javabean 5 | * Created by lenovo on 2015/5/31. 6 | */ 7 | public class MenuBean { 8 | public String autolink; 9 | public String Url_pic; 10 | public String title; 11 | 12 | public MenuBean() { 13 | } 14 | 15 | public MenuBean(String title, String url_pic) { 16 | this.title = title; 17 | Url_pic = url_pic; 18 | } 19 | public void setAutolink(String autolink) { 20 | this.autolink = autolink; 21 | } 22 | 23 | public String getAutolink() { 24 | 25 | return autolink; 26 | } 27 | 28 | 29 | 30 | 31 | public void setUrl_pic(String url_pic) { 32 | Url_pic = url_pic; 33 | } 34 | 35 | public void setTitle(String title) { 36 | 37 | this.title = title; 38 | } 39 | 40 | public String getUrl_pic() { 41 | 42 | return Url_pic; 43 | } 44 | 45 | public String getTitle() { 46 | 47 | return title; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /opreader/src/main/java/com/flying/xiaopo/opreader/View/DataAdapter.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.opreader.View; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.CardView; 5 | import android.support.v7.widget.RecyclerView; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.ImageView; 10 | import android.widget.TextView; 11 | 12 | import com.bumptech.glide.Glide; 13 | import com.flying.xiaopo.opreader.Bean.MenuBean; 14 | import com.flying.xiaopo.opreader.R; 15 | 16 | import java.util.List; 17 | 18 | import butterknife.ButterKnife; 19 | import butterknife.InjectView; 20 | 21 | /** 22 | * Created by lenovo on 2015/5/31. 23 | */ 24 | public class DataAdapter extends RecyclerView.Adapter implements View.OnClickListener { 25 | 26 | 27 | 28 | public interface OnCellClickListener{ 29 | void onCellClick(View view); 30 | } 31 | 32 | public void setOnCellClickListener(OnCellClickListener onCellClickListener) { 33 | this.onCellClickListener = onCellClickListener; 34 | } 35 | 36 | private OnCellClickListener onCellClickListener; 37 | private List beans; 38 | private Context context; 39 | 40 | public DataAdapter(Context context){ 41 | this.context = context; 42 | } 43 | 44 | public void ObtainData(List beans){ 45 | this.beans = beans; 46 | } 47 | 48 | 49 | 50 | 51 | @Override 52 | public DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 53 | View rootView = LayoutInflater.from(parent.getContext()).inflate(R.layout.cell_menu, parent, false); 54 | return new DataViewHolder(rootView); 55 | } 56 | 57 | @Override 58 | public void onBindViewHolder(DataViewHolder holder, int position) { 59 | MenuBean bean = beans.get(position); 60 | holder.tv_title.setText(bean.getTitle()); 61 | holder.cell_container.setTag(bean.getAutolink()); 62 | Glide.with(context).load(bean.getUrl_pic()).centerCrop().placeholder(R.drawable.p11).crossFade().into(holder.iv_small_pic); 63 | holder.cell_container.setOnClickListener(this); 64 | 65 | } 66 | 67 | @Override 68 | public void onClick(View v) { 69 | if (onCellClickListener!=null){ 70 | onCellClickListener.onCellClick(v); 71 | } 72 | } 73 | 74 | @Override 75 | public int getItemCount() { 76 | return beans.size(); 77 | } 78 | 79 | 80 | public static class DataViewHolder extends RecyclerView.ViewHolder { 81 | @InjectView(R.id.cell_container) 82 | CardView cell_container; 83 | @InjectView(R.id.iv_small_pic) 84 | ImageView iv_small_pic; 85 | @InjectView(R.id.tv_title) 86 | TextView tv_title; 87 | 88 | public DataViewHolder(View itemView) { 89 | super(itemView); 90 | ButterKnife.inject(this, itemView); 91 | } 92 | } 93 | 94 | } 95 | -------------------------------------------------------------------------------- /opreader/src/main/java/com/flying/xiaopo/opreader/View/ManHuaActivity.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/src/main/java/com/flying/xiaopo/opreader/View/ManHuaActivity.java -------------------------------------------------------------------------------- /opreader/src/main/res/drawable/p11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/src/main/res/drawable/p11.png -------------------------------------------------------------------------------- /opreader/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 12 | 18 | 19 | 20 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /opreader/src/main/res/layout/activity_manhua.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | --> 13 | 14 | 15 | 19 | 23 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /opreader/src/main/res/layout/cell_manhua.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /opreader/src/main/res/layout/cell_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 13 | 14 | 19 | 20 | 27 | 28 | 34 | 35 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /opreader/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 4 | 8 | 9 | -------------------------------------------------------------------------------- /opreader/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /opreader/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /opreader/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /opreader/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/opreader/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /opreader/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | -------------------------------------------------------------------------------- /opreader/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /opreader/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 8dp 6 | 7 | -------------------------------------------------------------------------------- /opreader/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | OPReader 3 | 4 | Hello world! 5 | Settings 6 | 7 | -------------------------------------------------------------------------------- /opreader/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /poishuhui/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /poishuhui/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 22 5 | buildToolsVersion "23.0.0" 6 | 7 | defaultConfig { 8 | applicationId "com.flying.xiaopo.poishuhui" 9 | minSdkVersion 17 10 | targetSdkVersion 22 11 | versionCode 1 12 | versionName "1.0" 13 | } 14 | buildTypes { 15 | release { 16 | minifyEnabled false 17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 18 | } 19 | } 20 | } 21 | repositories { 22 | mavenCentral() 23 | } 24 | dependencies { 25 | compile fileTree(include: ['*.jar'], dir: 'libs') 26 | compile 'com.android.support:appcompat-v7:22.2.0' 27 | compile files('libs/butterknife-6.1.0.jar') 28 | compile files('libs/glide-3.6.0.jar') 29 | compile files('libs/jsoup-1.8.2.jar') 30 | compile files('libs/photoview-1.2.2.jar') 31 | compile 'com.android.support:design:22.2.0' 32 | compile 'com.android.support:cardview-v7:22.2.0' 33 | compile 'com.android.support:recyclerview-v7:22.2.0' 34 | compile files('libs/volly-1.0.11.jar') 35 | compile files('libs/disklrucache-2.0.2.jar') 36 | } 37 | -------------------------------------------------------------------------------- /poishuhui/libs/butterknife-6.1.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/libs/butterknife-6.1.0.jar -------------------------------------------------------------------------------- /poishuhui/libs/disklrucache-2.0.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/libs/disklrucache-2.0.2.jar -------------------------------------------------------------------------------- /poishuhui/libs/glide-3.6.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/libs/glide-3.6.0.jar -------------------------------------------------------------------------------- /poishuhui/libs/jsoup-1.8.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/libs/jsoup-1.8.2.jar -------------------------------------------------------------------------------- /poishuhui/libs/photoview-1.2.2.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/libs/photoview-1.2.2.jar -------------------------------------------------------------------------------- /poishuhui/libs/volly-1.0.11.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/libs/volly-1.0.11.jar -------------------------------------------------------------------------------- /poishuhui/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in E:\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /poishuhui/src/androidTest/java/com/flying/xiaopo/poishuhui/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui; 2 | 3 | import android.app.Application; 4 | import android.test.ApplicationTestCase; 5 | 6 | /** 7 | * Testing Fundamentals 8 | */ 9 | public class ApplicationTest extends ApplicationTestCase { 10 | public ApplicationTest() { 11 | super(Application.class); 12 | } 13 | } -------------------------------------------------------------------------------- /poishuhui/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 29 | 32 | 35 | 36 | 37 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Adapters/ChildNewsAdapter.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Adapters; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.support.v7.widget.RecyclerView; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.LinearLayout; 10 | import android.widget.TextView; 11 | 12 | import com.flying.xiaopo.poishuhui.Beans.ChildItemBean; 13 | import com.flying.xiaopo.poishuhui.R; 14 | import com.flying.xiaopo.poishuhui.Views.Activities.NewsDetailActivity; 15 | 16 | import java.util.List; 17 | 18 | import butterknife.ButterKnife; 19 | import butterknife.InjectView; 20 | 21 | /** 22 | * 第4个Fragment的news的adapter 23 | * Created by xiaopo on 2015/9/3. 24 | */ 25 | public class ChildNewsAdapter extends RecyclerView.Adapter { 26 | private LayoutInflater inflater; 27 | private Context context; 28 | private List child_data; 29 | 30 | public ChildNewsAdapter(Context context) { 31 | this.context = context; 32 | inflater = LayoutInflater.from(context); 33 | } 34 | 35 | public void obtainData(List child_data) { 36 | this.child_data = child_data; 37 | } 38 | 39 | public List getData() { 40 | return child_data; 41 | } 42 | 43 | 44 | @Override 45 | public ChildViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 46 | View itemView = inflater.inflate(R.layout.child_news_item, parent, false); 47 | return new ChildViewHolder(itemView); 48 | } 49 | 50 | @Override 51 | public void onBindViewHolder(ChildViewHolder holder, final int position) { 52 | final ChildItemBean bean = child_data.get(position); 53 | int resId = position % 2 == 0 ? R.color.news_gray : R.color.news_white; 54 | holder.child_news_container.setBackgroundResource(resId); 55 | holder.tv_news_title.setText(bean.getChildTitle()); 56 | holder.tv_created_time.setText(bean.getCreatedTime()); 57 | holder.child_news_container.setOnClickListener(new View.OnClickListener() { 58 | @Override 59 | public void onClick(View v) { 60 | Intent intent = new Intent(); 61 | intent.setClass(context,NewsDetailActivity.class); 62 | intent.putExtra(NewsDetailActivity.INTENT_KEY_URL, child_data.get(position).getLink()); 63 | intent.putExtra(NewsDetailActivity.INTENT_KEY_TITLE,child_data.get(position).getChildTitle()); 64 | intent.putExtra(NewsDetailActivity.INTENT_KEY_TIME,child_data.get(position).getCreatedTime()); 65 | context.startActivity(intent); 66 | } 67 | }); 68 | } 69 | 70 | @Override 71 | public int getItemCount() { 72 | return child_data == null ? 0 : child_data.size(); 73 | } 74 | 75 | 76 | public class ChildViewHolder extends RecyclerView.ViewHolder { 77 | @InjectView(R.id.tv_news_title) 78 | TextView tv_news_title; 79 | @InjectView(R.id.tv_created_time) 80 | TextView tv_created_time; 81 | @InjectView(R.id.child_news_container) 82 | LinearLayout child_news_container; 83 | 84 | public ChildViewHolder(View itemView) { 85 | super(itemView); 86 | ButterKnife.inject(this, itemView); 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Adapters/ContainerLinearAdapter.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Adapters; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.LinearLayoutManager; 5 | import android.support.v7.widget.RecyclerView; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.TextView; 10 | 11 | import com.flying.xiaopo.poishuhui.Adapters.Impl.OnCellClickListener; 12 | import com.flying.xiaopo.poishuhui.Beans.ComicBean; 13 | import com.flying.xiaopo.poishuhui.Beans.ContainerBean; 14 | import com.flying.xiaopo.poishuhui.R; 15 | 16 | import java.util.List; 17 | 18 | import butterknife.ButterKnife; 19 | import butterknife.InjectView; 20 | 21 | /** 22 | * 第四个Fragment的news容器Adapter 23 | * Created by xiaopo on 2015/9/3. 24 | */ 25 | public class ContainerLinearAdapter extends RecyclerView.Adapter { 26 | 27 | 28 | private List container_data; 29 | 30 | private Context context; 31 | 32 | private LayoutInflater inflater; 33 | 34 | 35 | public ContainerLinearAdapter(Context context) { 36 | this.context = context; 37 | inflater = LayoutInflater.from(context); 38 | } 39 | 40 | public void obtainData(List data) { 41 | container_data = data; 42 | } 43 | 44 | public List getData() { 45 | return container_data; 46 | } 47 | 48 | 49 | @Override 50 | public NewsContainerViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 51 | View itemView = inflater.inflate(R.layout.news_container_item, parent, false); 52 | return new NewsContainerViewHolder(itemView); 53 | } 54 | 55 | @Override 56 | public void onBindViewHolder(NewsContainerViewHolder holder, int position) { 57 | holder.tv_container_title.setText(container_data.get(position).getTitle()); 58 | LinearLayoutManager manager = new LinearLayoutManager(context); 59 | ChildNewsAdapter adapter = new ChildNewsAdapter(context); 60 | holder.rv_child_container.setAdapter(adapter); 61 | holder.rv_child_container.setLayoutManager(manager); 62 | adapter.obtainData(container_data.get(position).getChildDataList()); 63 | adapter.notifyDataSetChanged(); 64 | } 65 | 66 | @Override 67 | public int getItemCount() { 68 | return container_data == null ? 0 : container_data.size(); 69 | } 70 | 71 | public class NewsContainerViewHolder extends RecyclerView.ViewHolder { 72 | @InjectView(R.id.tv_container_title) 73 | TextView tv_container_title; 74 | @InjectView(R.id.tv_more) 75 | TextView tv_more; 76 | @InjectView(R.id.rv_child_container) 77 | RecyclerView rv_child_container; 78 | 79 | public NewsContainerViewHolder(View itemView) { 80 | super(itemView); 81 | ButterKnife.inject(this, itemView); 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Adapters/GridAdapter.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Adapters; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.ImageView; 9 | import android.widget.TextView; 10 | 11 | import com.flying.xiaopo.poishuhui.Adapters.Impl.OnCellClickListener; 12 | import com.flying.xiaopo.poishuhui.Beans.ItemBean; 13 | import com.flying.xiaopo.poishuhui.R; 14 | import com.flying.xiaopo.poishuhui.Utils.VolleyUtils.BitmapHelper; 15 | 16 | import java.util.ArrayList; 17 | import java.util.List; 18 | 19 | import butterknife.ButterKnife; 20 | import butterknife.InjectView; 21 | 22 | /** 23 | * 网格Adapter 24 | * Created by xiaopo on 2015/8/14. 25 | */ 26 | public class GridAdapter extends RecyclerView.Adapter { 27 | Context context; 28 | 29 | protected LayoutInflater inflater; 30 | 31 | List mData; 32 | 33 | 34 | OnCellClickListener onCellClickListener; 35 | 36 | //MyCache myCache; 37 | 38 | //RequestQueue mQueue; 39 | 40 | public GridAdapter(Context context) { 41 | this.context = context; 42 | inflater = LayoutInflater.from(context); 43 | mData = new ArrayList<>(); 44 | //mQueue = Volley.newRequestQueue(context); 45 | //myCache = new MyCache(); 46 | } 47 | 48 | /** 49 | * 提供外部获取数据的方法 50 | */ 51 | public void obtainData(List data) { 52 | mData = data; 53 | } 54 | 55 | public List getData() { 56 | return mData; 57 | } 58 | 59 | public void setOnCellClickListener(OnCellClickListener onCellClickListener) { 60 | this.onCellClickListener = onCellClickListener; 61 | } 62 | 63 | @Override 64 | public CellViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 65 | View itemView = inflater.inflate(R.layout.comic_item, parent, false); 66 | return new CellViewHolder(itemView); 67 | } 68 | 69 | @Override 70 | public void onBindViewHolder(CellViewHolder holder, final int position) { 71 | // Glide.with(context).load(mData.get(position).getImageURL()).into(holder.iv_content); 72 | String url = mData.get(position).getImageURL(); 73 | // if (myCache.getBitmap(url) != null) 74 | // holder.iv_content.setImageBitmap(myCache.getBitmap(url)); 75 | // else { 76 | // ImageLoader loader = new ImageLoader(mQueue, myCache); 77 | // ImageLoader.ImageListener listener = ImageLoader.getImageListener(holder.iv_content, R.color.default_color, R.mipmap.ic_launcher); 78 | // loader.get(url, listener, 200, 200); 79 | // } 80 | 81 | BitmapHelper.load2ImageView(context.getApplicationContext(), holder.iv_content, url, 200, 200,null); 82 | 83 | holder.tv_title.setText(mData.get(position).getTitle()); 84 | //holder.iv_content.setTag(mData.get(position).getLink()); 85 | holder.iv_content.setOnClickListener(new View.OnClickListener() { 86 | @Override 87 | public void onClick(View v) { 88 | // Snackbar.make(v, mData.get(position).getLink(), Snackbar.LENGTH_SHORT).show(); 89 | if (onCellClickListener != null) onCellClickListener.onCellClick(v, position); 90 | } 91 | }); 92 | } 93 | 94 | @Override 95 | public int getItemCount() { 96 | return mData == null ? 0 : mData.size(); 97 | } 98 | 99 | public static class CellViewHolder extends RecyclerView.ViewHolder { 100 | @InjectView(R.id.iv_content) 101 | ImageView iv_content; 102 | @InjectView(R.id.tv_title) 103 | TextView tv_title; 104 | 105 | public CellViewHolder(View itemView) { 106 | super(itemView); 107 | ButterKnife.inject(this, itemView); 108 | } 109 | 110 | public TextView getTv_title() { 111 | return tv_title; 112 | } 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Adapters/Impl/OnCellClickListener.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Adapters.Impl; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * RecyclerView的Item点击事件接口 7 | * Created by xiaopo on 2015/9/4. 8 | */ 9 | public interface OnCellClickListener { 10 | void onCellClick(View view, int position); 11 | } 12 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Adapters/PageAdapter.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Adapters; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.view.ViewGroup; 8 | import android.widget.TextView; 9 | 10 | import com.flying.xiaopo.poishuhui.Adapters.Impl.OnCellClickListener; 11 | import com.flying.xiaopo.poishuhui.Beans.PageBean; 12 | import com.flying.xiaopo.poishuhui.R; 13 | 14 | import java.util.List; 15 | 16 | import butterknife.ButterKnife; 17 | import butterknife.InjectView; 18 | 19 | /** 20 | * PageAdapter 21 | * Created by lenovo on 2015/9/6. 22 | */ 23 | public class PageAdapter extends RecyclerView.Adapter { 24 | private LayoutInflater inflater; 25 | 26 | 27 | 28 | private List datas; 29 | 30 | OnCellClickListener onCellClickListener; 31 | 32 | public PageAdapter(Context context) { 33 | inflater = LayoutInflater.from(context); 34 | } 35 | 36 | public List getDatas() { 37 | return datas; 38 | } 39 | 40 | public void setOnCellClickListener(OnCellClickListener onCellClickListener) { 41 | this.onCellClickListener = onCellClickListener; 42 | } 43 | 44 | 45 | public void obtainData(List datas) { 46 | this.datas = datas; 47 | } 48 | 49 | @Override 50 | public PageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 51 | View itemView = inflater.inflate(R.layout.page_item, parent, false); 52 | return new PageViewHolder(itemView); 53 | } 54 | 55 | @Override 56 | public void onBindViewHolder(PageViewHolder holder, final int position) { 57 | holder.tv_page.setText(datas.get(position).getText()); 58 | holder.tv_page.setOnClickListener(new View.OnClickListener() { 59 | @Override 60 | public void onClick(View v) { 61 | if (onCellClickListener != null) onCellClickListener.onCellClick(v, position); 62 | } 63 | }); 64 | } 65 | 66 | @Override 67 | public int getItemCount() { 68 | return datas == null ? 0 : datas.size(); 69 | } 70 | 71 | 72 | public class PageViewHolder extends RecyclerView.ViewHolder { 73 | @InjectView(R.id.tv_page) 74 | TextView tv_page; 75 | 76 | public PageViewHolder(View itemView) { 77 | super(itemView); 78 | ButterKnife.inject(this, itemView); 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Adapters/StaggeredAdapter.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Adapters; 2 | 3 | import android.content.Context; 4 | import android.view.ViewGroup; 5 | 6 | import com.flying.xiaopo.poishuhui.Beans.ItemBean; 7 | import com.flying.xiaopo.poishuhui.Utils.Utils; 8 | 9 | import java.util.ArrayList; 10 | import java.util.List; 11 | 12 | /** 13 | * 瀑布流的adapter 14 | * Created by xiaopo on 2015/8/19. 15 | */ 16 | public class StaggeredAdapter extends GridAdapter { 17 | List heights; 18 | 19 | public StaggeredAdapter(Context context) { 20 | super(context); 21 | heights = new ArrayList<>(); 22 | } 23 | 24 | @Override 25 | public void obtainData(List data) { 26 | super.obtainData(data); 27 | if (data==null) return; 28 | getRandomHeights(heights); 29 | } 30 | 31 | private void getRandomHeights(List heights) { 32 | for (int i = 0; i < super.mData.size(); i++) { 33 | heights.add((int) (Utils.dp2px(200) + Math.random() * Utils.dp2px(100))); 34 | } 35 | } 36 | 37 | 38 | @Override 39 | public void onBindViewHolder(CellViewHolder holder, int position) { 40 | if (mData.size() != 0) { 41 | ViewGroup.LayoutParams layoutParams = holder.itemView.getLayoutParams(); 42 | layoutParams.height = heights.get(position); 43 | } 44 | super.onBindViewHolder(holder, position); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Beans/ChildItemBean.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Beans; 2 | 3 | /** 4 | * news的bean 5 | * Created by xiaopo on 2015/9/3. 6 | */ 7 | public class ChildItemBean { 8 | private String childTitle; 9 | private String createdTime; 10 | private String link; 11 | 12 | public ChildItemBean(String childTitle, String createdTime, String link) { 13 | this.childTitle = childTitle; 14 | this.createdTime = createdTime; 15 | this.link = link; 16 | } 17 | 18 | public String getLink() { 19 | return link; 20 | } 21 | 22 | public void setLink(String link) { 23 | this.link = link; 24 | } 25 | 26 | public ChildItemBean() { 27 | 28 | } 29 | 30 | public String getChildTitle() { 31 | return childTitle; 32 | } 33 | 34 | public void setChildTitle(String childTitle) { 35 | this.childTitle = childTitle; 36 | } 37 | 38 | public String getCreatedTime() { 39 | return createdTime; 40 | } 41 | 42 | public void setCreatedTime(String createdTime) { 43 | this.createdTime = createdTime; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Beans/ComicBean.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Beans; 2 | 3 | /** 4 | * 漫画内容的bean 5 | * Created by xiaopo on 2015/8/20. 6 | */ 7 | public class ComicBean{ 8 | private String text; 9 | private String picURL; 10 | 11 | public String getPicURL() { 12 | return picURL; 13 | } 14 | 15 | public void setPicURL(String picURL) { 16 | this.picURL = picURL; 17 | } 18 | 19 | public String getText() { 20 | return text; 21 | } 22 | 23 | public void setText(String text) { 24 | this.text = text; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Beans/ContainerBean.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Beans; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * news容器的bean 7 | * Created by xiaopo on 2015/9/3. 8 | */ 9 | public class ContainerBean { 10 | private String title; //container's title; 11 | private List childDataList; 12 | 13 | public ContainerBean() { 14 | } 15 | 16 | public ContainerBean(List childDataList, String title) { 17 | this.childDataList = childDataList; 18 | this.title = title; 19 | } 20 | 21 | public List getChildDataList() { 22 | return childDataList; 23 | } 24 | 25 | public void setChildDataList(List childDataList) { 26 | this.childDataList = childDataList; 27 | } 28 | 29 | public String getTitle() { 30 | return title; 31 | } 32 | 33 | public void setTitle(String title) { 34 | this.title = title; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Beans/ItemBean.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Beans; 2 | 3 | /** 4 | * 一些图片标题的Item的Bean 5 | * Created by xiaopo on 2015/8/14. 6 | */ 7 | public class ItemBean { 8 | private String imageURL; 9 | private String title; 10 | private String link; 11 | 12 | public ItemBean() { 13 | } 14 | 15 | public ItemBean(String imageURL, String title, String link) { 16 | this.imageURL = imageURL; 17 | this.title = title; 18 | this.link = link; 19 | } 20 | 21 | public String getLink() { 22 | return link; 23 | } 24 | 25 | public void setLink(String link) { 26 | this.link = link; 27 | } 28 | 29 | 30 | public String getImageURL() { 31 | return imageURL; 32 | } 33 | 34 | public void setImageURL(String imageURL) { 35 | this.imageURL = imageURL; 36 | } 37 | 38 | public String getTitle() { 39 | return title; 40 | } 41 | 42 | public void setTitle(String title) { 43 | this.title = title; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Beans/PageBean.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Beans; 2 | 3 | /** 4 | * Created by lenovo on 2015/9/6. 5 | */ 6 | public class PageBean { 7 | private String text; 8 | private String link; 9 | 10 | public String getLink() { 11 | return link; 12 | } 13 | 14 | public void setLink(String link) { 15 | this.link = link; 16 | } 17 | 18 | public String getText() { 19 | return text; 20 | } 21 | 22 | public void setText(String text) { 23 | this.text = text; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Utils/HtmlTask.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Utils; 2 | 3 | import android.os.AsyncTask; 4 | 5 | import com.flying.xiaopo.poishuhui.Beans.ItemBean; 6 | 7 | import java.util.ArrayList; 8 | import java.util.List; 9 | 10 | /** 11 | * 网络异步任务类 12 | * Created by xiaopo on 2015/8/14. 13 | */ 14 | public class HtmlTask extends AsyncTask> { 15 | public static final String TASK_SLIDE = "slide"; 16 | public static final String TASK_ITEM = "item"; 17 | public static final String TASK_LIST = "list"; 18 | 19 | @Override 20 | protected List doInBackground(String... params) { 21 | List list = new ArrayList<>(); 22 | //list = HtmlUtil.obtainSlide(params[0]); 23 | switch (params[1]) { 24 | case TASK_SLIDE: 25 | list = HtmlUtil.obtainSlide(params[0]); 26 | break; 27 | case TASK_ITEM: 28 | list = HtmlUtil.obtainComicList(params[0]); 29 | break; 30 | case TASK_LIST: 31 | list = HtmlUtil.obtainComicBookList(params[0]); 32 | break; 33 | } 34 | return list; 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Utils/Utils.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Utils; 2 | 3 | import android.content.res.Resources; 4 | 5 | /** 6 | * 工具类 7 | * Created by lenovo on 2015/8/19. 8 | */ 9 | public class Utils { 10 | public static int dp2px(int dp){ 11 | return (int) (dp* Resources.getSystem().getDisplayMetrics().density); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Utils/VolleyUtils/BitmapHelper.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Utils.VolleyUtils; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.widget.ImageView; 6 | 7 | import com.android.volley.VolleyError; 8 | import com.android.volley.toolbox.ImageLoader; 9 | import com.flying.xiaopo.poishuhui.R; 10 | 11 | /** 12 | * 加载图片的工具类 13 | * Created by xiaopo on 2015/9/5. 14 | */ 15 | public class BitmapHelper { 16 | /** 17 | * 图片加载 18 | * @param context 最好是应用的context 19 | * @param imageView 填充图片的imageview 20 | * @param url 网络图片的来源 21 | * @param width 允许图片的最大宽度 22 | * @param height 允许图片的最大高度 23 | * @param onLoadFinishedListener 加载成功和失败的监听 24 | */ 25 | public static void load2ImageView(Context context, ImageView imageView, String url, int width, int height, OnLoadFinishedListener onLoadFinishedListener) { 26 | Bitmap bitmap = SMemoryLruCache.getInstance().getBitmap(url); 27 | if (bitmap != null) { 28 | imageView.setImageBitmap(bitmap); 29 | if (onLoadFinishedListener != null) 30 | onLoadFinishedListener.onLoadSuccessed(); 31 | } else { 32 | loadFromInternet(context, imageView, url, width, height, onLoadFinishedListener); 33 | } 34 | } 35 | 36 | /** 37 | * 参数同上,磁盘和网络加载 38 | * @param context 39 | * @param imageView 40 | * @param url 41 | * @param width 42 | * @param height 43 | * @param onLoadFinishedListener 44 | */ 45 | private static void loadFromInternet(Context context, final ImageView imageView, final String url, int width, int height, final OnLoadFinishedListener onLoadFinishedListener) { 46 | final SDiskLruCache mDiskLruCache = SDiskLruCache.getInstance(context); 47 | Bitmap bitmap = mDiskLruCache.getBitmap(url); 48 | if (bitmap != null) { 49 | imageView.setImageBitmap(bitmap); 50 | if (onLoadFinishedListener != null) 51 | onLoadFinishedListener.onLoadSuccessed(); 52 | } else { 53 | //RequestQueue queue = SVolleyHelper.getInstance(context).getRequestQueue(); 54 | ImageLoader loader = SVolleyHelper.getInstance(context).getLoader(); 55 | ImageLoader.ImageListener listener = new ImageLoader.ImageListener() { 56 | @Override 57 | public void onResponse(ImageLoader.ImageContainer imageContainer, boolean b) { 58 | if (imageContainer.getBitmap() != null) { 59 | imageView.setImageBitmap(imageContainer.getBitmap()); 60 | mDiskLruCache.putBitmap(url, imageContainer.getBitmap()); 61 | if (onLoadFinishedListener != null) 62 | onLoadFinishedListener.onLoadSuccessed(); 63 | } 64 | } 65 | 66 | @Override 67 | public void onErrorResponse(VolleyError volleyError) { 68 | imageView.setImageResource(R.color.default_color); 69 | if (onLoadFinishedListener != null) 70 | onLoadFinishedListener.onLoadSuccessed(); 71 | } 72 | }; 73 | loader.get(url, listener, width, height); 74 | } 75 | } 76 | 77 | /** 78 | * 加载成功和失败的监听接口 79 | */ 80 | public interface OnLoadFinishedListener { 81 | void onLoadSuccessed(); 82 | 83 | void onLoadFailed(); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Utils/VolleyUtils/SMemoryLruCache.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Utils.VolleyUtils; 2 | 3 | import android.graphics.Bitmap; 4 | import android.util.Log; 5 | import android.util.LruCache; 6 | 7 | import com.android.volley.toolbox.ImageLoader; 8 | import com.flying.xiaopo.poishuhui.BuildConfig; 9 | 10 | /** 11 | * 单例的内存缓存类 12 | * Created by xiaopo on 2015/9/5. 13 | */ 14 | public class SMemoryLruCache extends LruCache implements ImageLoader.ImageCache { 15 | private final String TAG = this.getClass().getSimpleName(); 16 | private static SMemoryLruCache mInstance; 17 | 18 | /** 19 | * @param maxSize for caches that do not override {@link #sizeOf}, this is 20 | * the maximum number of entries in the cache. For all other caches, 21 | * this is the maximum sum of the sizes of the entries in this cache. 22 | */ 23 | private SMemoryLruCache(int maxSize) { 24 | super(maxSize); 25 | } 26 | 27 | public static synchronized SMemoryLruCache getInstance() { 28 | if (mInstance == null) { 29 | int maxMem = (int) Runtime.getRuntime().maxMemory(); 30 | mInstance = new SMemoryLruCache(maxMem / 8); 31 | } 32 | return mInstance; 33 | } 34 | 35 | @Override 36 | protected int sizeOf(String key, Bitmap value) { 37 | return value.getRowBytes() * value.getHeight(); 38 | } 39 | 40 | @Override 41 | public Bitmap getBitmap(String s) { 42 | if (BuildConfig.DEBUG) { 43 | Log.d(TAG, "Retrieved comic_item from Mem Cache"); 44 | } 45 | return this.get(s); 46 | } 47 | 48 | @Override 49 | public void putBitmap(String s, Bitmap bitmap) { 50 | if (BuildConfig.DEBUG) { 51 | Log.d(TAG, "Added comic_item to Mem Cache"); 52 | } 53 | this.put(s, bitmap); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Utils/VolleyUtils/SVolleyHelper.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Utils.VolleyUtils; 2 | 3 | import android.content.Context; 4 | 5 | import com.android.volley.RequestQueue; 6 | import com.android.volley.toolbox.ImageLoader; 7 | import com.android.volley.toolbox.Volley; 8 | 9 | /** 10 | * 单例的RequestQueue类 11 | * Created by xiaopo on 2015/9/5. 12 | */ 13 | public class SVolleyHelper { 14 | private static Context mCtx; 15 | private ImageLoader mLoadr; 16 | private SMemoryLruCache memoryLruCache; 17 | private RequestQueue mQueue; 18 | private static SVolleyHelper mInstance; 19 | 20 | private SVolleyHelper(Context context) { 21 | mCtx = context; 22 | 23 | mQueue=getRequestQueue(); 24 | 25 | memoryLruCache = SMemoryLruCache.getInstance(); 26 | 27 | mLoadr = new ImageLoader(mQueue,memoryLruCache); 28 | } 29 | 30 | public static synchronized SVolleyHelper getInstance(Context context){ 31 | if (mInstance==null){ 32 | mInstance=new SVolleyHelper(context); 33 | } 34 | return mInstance; 35 | } 36 | 37 | public RequestQueue getRequestQueue() { 38 | if (mQueue==null){ 39 | mQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); 40 | } 41 | return mQueue; 42 | } 43 | 44 | public ImageLoader getLoader(){ 45 | return mLoadr; 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Views/Activities/ComicDetailActivity.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Views.Activities; 2 | 3 | import android.content.Intent; 4 | import android.graphics.Color; 5 | import android.os.AsyncTask; 6 | import android.os.Bundle; 7 | import android.support.v7.app.AppCompatActivity; 8 | import android.support.v7.widget.GridLayoutManager; 9 | import android.support.v7.widget.RecyclerView; 10 | import android.support.v7.widget.Toolbar; 11 | import android.view.View; 12 | import android.widget.ImageView; 13 | import android.widget.TextView; 14 | 15 | import com.flying.xiaopo.poishuhui.Adapters.Impl.OnCellClickListener; 16 | import com.flying.xiaopo.poishuhui.Adapters.PageAdapter; 17 | import com.flying.xiaopo.poishuhui.Beans.PageBean; 18 | import com.flying.xiaopo.poishuhui.R; 19 | import com.flying.xiaopo.poishuhui.Utils.HtmlUtil; 20 | import com.flying.xiaopo.poishuhui.Utils.VolleyUtils.BitmapHelper; 21 | import com.flying.xiaopo.poishuhui.Views.Fragments.ComicBookListFragment; 22 | import com.flying.xiaopo.poishuhui.Views.Fragments.ComicListFragment; 23 | 24 | import java.util.List; 25 | 26 | import butterknife.ButterKnife; 27 | import butterknife.InjectView; 28 | 29 | /** 30 | * Created by lenovo on 2015/9/6. 31 | */ 32 | public class ComicDetailActivity extends AppCompatActivity implements OnCellClickListener { 33 | @InjectView(R.id.iv_detail) 34 | ImageView iv_detail; 35 | @InjectView(R.id.tv_detail_title) 36 | TextView tv_detail_title; 37 | @InjectView(R.id.tv_detail_time) 38 | TextView tv_detail_time; 39 | @InjectView(R.id.tv_detail_intro) 40 | TextView tv_detail_intro; 41 | @InjectView(R.id.rv_detail) 42 | RecyclerView rv_detail; 43 | @InjectView(R.id.toolbar_detail) 44 | Toolbar mToolbar; 45 | 46 | private GridLayoutManager manager; 47 | private PageAdapter adapter; 48 | private String taskURL; 49 | private String title; 50 | private String imgURL; 51 | 52 | @Override 53 | protected void onCreate(Bundle savedInstanceState) { 54 | super.onCreate(savedInstanceState); 55 | setContentView(R.layout.activity_comic_detail); 56 | ButterKnife.inject(this); 57 | 58 | Bundle bundle = getIntent().getExtras(); 59 | if (bundle != null) { 60 | taskURL = bundle.getString(ComicBookListFragment.INTENT_KEY_LIMK); 61 | title = bundle.getString(ComicBookListFragment.INTENT_KEY_TITLE); 62 | imgURL = bundle.getString(ComicBookListFragment.INTENT_KEY_URL); 63 | } 64 | 65 | init(); 66 | startLoad(taskURL); 67 | } 68 | 69 | private void startLoad(String taskURL) { 70 | PageTask task = new PageTask() { 71 | @Override 72 | protected void onPostExecute(List pageBeans) { 73 | super.onPostExecute(pageBeans); 74 | adapter.obtainData(pageBeans); 75 | adapter.notifyDataSetChanged(); 76 | adapter.setOnCellClickListener(ComicDetailActivity.this); 77 | } 78 | }; 79 | task.execute(taskURL); 80 | } 81 | 82 | private void init() { 83 | manager = new GridLayoutManager(this, 4); 84 | adapter = new PageAdapter(this); 85 | 86 | rv_detail.setLayoutManager(manager); 87 | rv_detail.setAdapter(adapter); 88 | 89 | mToolbar.setTitle(title); 90 | mToolbar.setTitleTextColor(Color.WHITE); 91 | mToolbar.setNavigationIcon(R.drawable.ic_arrow_left_white_24dp); 92 | mToolbar.setNavigationOnClickListener(new View.OnClickListener() { 93 | @Override 94 | public void onClick(View v) { 95 | onBackPressed(); 96 | } 97 | }); 98 | 99 | tv_detail_title.setText(title); 100 | BitmapHelper.load2ImageView(getApplicationContext(), iv_detail, imgURL, 200, 200, null); 101 | } 102 | 103 | @Override 104 | public void onCellClick(View view, int position) { 105 | Intent intent = new Intent(); 106 | intent.putExtra(ComicListFragment.INTENT_KEY_LINK, adapter.getDatas().get(position).getLink()); 107 | intent.setClass(this, ComicActivity.class); 108 | startActivity(intent); 109 | } 110 | 111 | private class PageTask extends AsyncTask> { 112 | @Override 113 | protected List doInBackground(String... params) { 114 | return HtmlUtil.obtainPageList(params[0]); 115 | } 116 | } 117 | 118 | } 119 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Views/Activities/NewsDetailActivity.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Views.Activities; 2 | 3 | import android.os.AsyncTask; 4 | import android.os.Bundle; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.support.v7.widget.Toolbar; 7 | import android.webkit.WebView; 8 | import android.widget.Toast; 9 | 10 | import com.flying.xiaopo.poishuhui.R; 11 | import com.flying.xiaopo.poishuhui.Utils.HtmlUtil; 12 | 13 | import butterknife.ButterKnife; 14 | import butterknife.InjectView; 15 | 16 | /** 17 | * Created by lenovo on 2015/8/23. 18 | */ 19 | public class NewsDetailActivity extends AppCompatActivity { 20 | public static String INTENT_KEY_URL="url"; 21 | public static String INTENT_KEY_TITLE="title"; 22 | public static String INTENT_KEY_TIME="time"; 23 | @InjectView(R.id.toolbar_text) 24 | Toolbar toolbar; 25 | @InjectView(R.id.webview) 26 | WebView mWebView; 27 | 28 | String aimURL; 29 | 30 | @Override 31 | protected void onCreate(Bundle savedInstanceState) { 32 | super.onCreate(savedInstanceState); 33 | setContentView(R.layout.activity_news_detail); 34 | ButterKnife.inject(this); 35 | toolbar.setTitle(getIntent().getStringExtra(INTENT_KEY_TITLE)); 36 | aimURL = getIntent().getStringExtra(INTENT_KEY_URL); 37 | Toast.makeText(this, aimURL, Toast.LENGTH_SHORT).show(); 38 | Task task = new Task(){ 39 | @Override 40 | protected void onPostExecute(String s) { 41 | super.onPostExecute(s); 42 | mWebView.loadDataWithBaseURL(null,s,"text/html;charset=utf-8","utf-8",null); 43 | } 44 | }; 45 | task.execute(aimURL); 46 | 47 | } 48 | 49 | private class Task extends AsyncTask { 50 | 51 | @Override 52 | protected String doInBackground(String... params) { 53 | return HtmlUtil.obtainNewsContent(params[0]); 54 | } 55 | 56 | @Override 57 | protected void onPostExecute(String s) { 58 | super.onPostExecute(s); 59 | 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Views/CustomViews/PageBar.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Views.CustomViews; 2 | 3 | import android.content.Context; 4 | import android.util.AttributeSet; 5 | import android.view.LayoutInflater; 6 | import android.view.View; 7 | import android.widget.Button; 8 | import android.widget.FrameLayout; 9 | 10 | import com.flying.xiaopo.poishuhui.R; 11 | 12 | import butterknife.ButterKnife; 13 | import butterknife.InjectView; 14 | 15 | /** 16 | * 页面选择器 17 | * Created by lenovo on 2015/8/19. 18 | */ 19 | public class PageBar extends FrameLayout implements View.OnClickListener { 20 | View container; 21 | String prefixURL; 22 | 23 | 24 | @InjectView(R.id.btn_page_1) 25 | Button btn_page_1; 26 | @InjectView(R.id.btn_page_2) 27 | Button btn_page_2; 28 | @InjectView(R.id.btn_page_3) 29 | Button btn_page_3; 30 | @InjectView(R.id.btn_page_4) 31 | Button btn_page_4; 32 | @InjectView(R.id.btn_page_5) 33 | Button btn_page_5; 34 | @InjectView(R.id.btn_page_6) 35 | Button btn_page_6; 36 | 37 | onPageItemClickListener onPageItemClickListener; 38 | 39 | 40 | public PageBar(Context context) { 41 | super(context); 42 | init(); 43 | initListener(); 44 | } 45 | 46 | public PageBar(Context context, AttributeSet attrs, int defStyleAttr) { 47 | super(context, attrs, defStyleAttr); 48 | init(); 49 | initListener(); 50 | } 51 | 52 | public PageBar(Context context, AttributeSet attrs) { 53 | super(context, attrs); 54 | init(); 55 | initListener(); 56 | } 57 | 58 | private void initListener() { 59 | btn_page_1.setOnClickListener(this); 60 | btn_page_2.setOnClickListener(this); 61 | btn_page_3.setOnClickListener(this); 62 | btn_page_4.setOnClickListener(this); 63 | btn_page_5.setOnClickListener(this); 64 | btn_page_6.setOnClickListener(this); 65 | } 66 | 67 | private void init() { 68 | container = LayoutInflater.from(getContext()).inflate(R.layout.pagebar, this, false); 69 | ButterKnife.inject(this,container); 70 | addView(container, 0); 71 | btn_page_1.setTag(1); 72 | btn_page_2.setTag(2); 73 | btn_page_3.setTag(3); 74 | btn_page_4.setTag(4); 75 | btn_page_5.setTag(5); 76 | btn_page_6.setTag(0); 77 | } 78 | 79 | public void setPrefixURL(String prefixURL) { 80 | this.prefixURL = prefixURL; 81 | } 82 | public String getPrefixURL() { 83 | return prefixURL; 84 | } 85 | public void setOnPageItemClickListener(PageBar.onPageItemClickListener onPageItemClickListener) { 86 | this.onPageItemClickListener = onPageItemClickListener; 87 | } 88 | 89 | @Override 90 | public void onClick(View v) { 91 | int tag = (int) v.getTag(); 92 | switch (tag) { 93 | case 0: 94 | break; 95 | case 1: 96 | case 2: 97 | case 3: 98 | case 4: 99 | initializeTag(); 100 | if (onPageItemClickListener != null) onPageItemClickListener.onPageItemClick(v); 101 | break; 102 | default: 103 | changeTag(tag); 104 | if (onPageItemClickListener != null) onPageItemClickListener.onPageItemClick(v); 105 | break; 106 | } 107 | } 108 | 109 | private void changeTag(int tag) { 110 | btn_page_2.setTag(0); 111 | btn_page_2.setText("..."); 112 | btn_page_4.setTag(tag); 113 | btn_page_4.setText(tag + ""); 114 | btn_page_3.setTag(tag - 1); 115 | btn_page_3.setText((tag - 1) + ""); 116 | btn_page_5.setTag(tag + 1); 117 | btn_page_5.setText((tag + 1) + ""); 118 | } 119 | 120 | private void initializeTag() { 121 | btn_page_2.setTag(2); 122 | btn_page_2.setText("2"); 123 | btn_page_4.setTag(4); 124 | btn_page_4.setText("4"); 125 | btn_page_3.setTag(3); 126 | btn_page_3.setText("3"); 127 | btn_page_5.setTag(5); 128 | btn_page_5.setText("5"); 129 | } 130 | 131 | 132 | 133 | public interface onPageItemClickListener { 134 | void onPageItemClick(View v); 135 | } 136 | } 137 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Views/Fragments/ComicBookListFragment.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Views.Fragments; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.support.annotation.Nullable; 7 | import android.support.v4.app.Fragment; 8 | import android.support.v4.widget.SwipeRefreshLayout; 9 | import android.support.v7.widget.GridLayoutManager; 10 | import android.support.v7.widget.LinearLayoutManager; 11 | import android.support.v7.widget.RecyclerView; 12 | import android.view.LayoutInflater; 13 | import android.view.View; 14 | import android.view.ViewGroup; 15 | 16 | import com.flying.xiaopo.poishuhui.Adapters.GridAdapter; 17 | import com.flying.xiaopo.poishuhui.Adapters.Impl.OnCellClickListener; 18 | import com.flying.xiaopo.poishuhui.Beans.ItemBean; 19 | import com.flying.xiaopo.poishuhui.R; 20 | import com.flying.xiaopo.poishuhui.Utils.HtmlTask; 21 | import com.flying.xiaopo.poishuhui.Utils.Utils; 22 | import com.flying.xiaopo.poishuhui.Views.Activities.ComicDetailActivity; 23 | 24 | import java.util.ArrayList; 25 | import java.util.List; 26 | 27 | import butterknife.ButterKnife; 28 | import butterknife.InjectView; 29 | 30 | /** 31 | * 漫画图书列表Fragment 32 | * Created by lenovo on 2015/8/20. 33 | */ 34 | public class ComicBookListFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener, OnCellClickListener { 35 | public static final String INTENT_KEY_URL = "url"; 36 | public static final String INTENT_KEY_TITLE = "title"; 37 | public static final String INTENT_KEY_LIMK = "link"; 38 | 39 | @InjectView(R.id.rv_third_list) 40 | RecyclerView rv_third_list; 41 | 42 | @InjectView(R.id.refresh_booklist) 43 | SwipeRefreshLayout refresh_booklist; 44 | 45 | GridLayoutManager manager; 46 | 47 | GridAdapter adapter; 48 | 49 | String taskURL = null; 50 | 51 | Context context; 52 | 53 | List list_data; 54 | 55 | @Override 56 | public void onCreate(@Nullable Bundle savedInstanceState) { 57 | super.onCreate(savedInstanceState); 58 | context = getActivity(); 59 | adapter = new GridAdapter(context) { 60 | @Override 61 | public void onBindViewHolder(CellViewHolder holder, int position) { 62 | super.onBindViewHolder(holder, position); 63 | holder.getTv_title().setHeight(Utils.dp2px(30)); 64 | holder.getTv_title().setTextSize(20.0f); 65 | } 66 | }; 67 | list_data = new ArrayList<>(); 68 | } 69 | 70 | @Nullable 71 | @Override 72 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 73 | View rootView = inflater.inflate(R.layout.fragment_comic_booklist, container, false); 74 | ButterKnife.inject(this, rootView); 75 | manager = new GridLayoutManager(context, 2, LinearLayoutManager.VERTICAL, false); 76 | 77 | rv_third_list.setLayoutManager(manager); 78 | rv_third_list.setAdapter(adapter); 79 | 80 | refresh_booklist.setOnRefreshListener(this); 81 | refresh_booklist.setRefreshing(true); 82 | onRefresh(); 83 | 84 | return rootView; 85 | } 86 | 87 | public String getTaskURL() { 88 | return taskURL; 89 | } 90 | 91 | public void setTaskURL(String taskURL) { 92 | this.taskURL = taskURL; 93 | } 94 | 95 | protected void startLoad(String URL) { 96 | HtmlTask task = new HtmlTask() { 97 | @Override 98 | protected void onPostExecute(List baseBeans) { 99 | super.onPostExecute(baseBeans); 100 | adapter.obtainData(baseBeans); 101 | adapter.notifyDataSetChanged(); 102 | adapter.setOnCellClickListener(ComicBookListFragment.this); 103 | refresh_booklist.setRefreshing(false); 104 | } 105 | }; 106 | task.execute(URL, HtmlTask.TASK_LIST); 107 | } 108 | 109 | 110 | @Override 111 | public void onRefresh() { 112 | if (taskURL != null) startLoad(taskURL); 113 | } 114 | 115 | //TODO 116 | @Override 117 | public void onCellClick(View view, int position) { 118 | Intent intent = new Intent(); 119 | Bundle bundle = new Bundle(); 120 | 121 | ItemBean bean = adapter.getData().get(position); 122 | bundle.putString(INTENT_KEY_TITLE, bean.getTitle()); 123 | bundle.putString(INTENT_KEY_URL, bean.getImageURL()); 124 | bundle.putString(INTENT_KEY_LIMK, bean.getLink()); 125 | 126 | intent.putExtras(bundle); 127 | intent.setClass(context, ComicDetailActivity.class); 128 | startActivity(intent); 129 | getActivity().overridePendingTransition(0, 0); 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Views/Fragments/ComicListFragment.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Views.Fragments; 2 | 3 | import android.content.Context; 4 | import android.content.Intent; 5 | import android.os.Bundle; 6 | import android.support.annotation.Nullable; 7 | import android.support.v4.app.Fragment; 8 | import android.support.v4.widget.SwipeRefreshLayout; 9 | import android.support.v7.widget.RecyclerView; 10 | import android.support.v7.widget.StaggeredGridLayoutManager; 11 | import android.view.LayoutInflater; 12 | import android.view.View; 13 | import android.view.ViewGroup; 14 | 15 | import com.flying.xiaopo.poishuhui.Adapters.GridAdapter; 16 | import com.flying.xiaopo.poishuhui.Adapters.Impl.OnCellClickListener; 17 | import com.flying.xiaopo.poishuhui.Adapters.StaggeredAdapter; 18 | import com.flying.xiaopo.poishuhui.Beans.ItemBean; 19 | import com.flying.xiaopo.poishuhui.R; 20 | import com.flying.xiaopo.poishuhui.Utils.HtmlTask; 21 | import com.flying.xiaopo.poishuhui.Utils.HtmlUtil; 22 | import com.flying.xiaopo.poishuhui.Views.Activities.ComicActivity; 23 | import com.flying.xiaopo.poishuhui.Views.CustomViews.PageBar; 24 | 25 | import java.util.ArrayList; 26 | import java.util.List; 27 | 28 | import butterknife.ButterKnife; 29 | import butterknife.InjectView; 30 | 31 | /** 32 | * 在线漫画列表Fragment 33 | * Created by lenovo on 2015/8/19. 34 | */ 35 | public class ComicListFragment extends Fragment implements PageBar.onPageItemClickListener, SwipeRefreshLayout.OnRefreshListener, OnCellClickListener { 36 | public static final String INTENT_KEY_LINK = "link"; 37 | 38 | @InjectView(R.id.rv_second_list) 39 | RecyclerView rv_second_list; 40 | 41 | @InjectView(R.id.pagebar) 42 | PageBar pageBar; 43 | 44 | @InjectView(R.id.refresh_comic_list) 45 | SwipeRefreshLayout refresh_comic_list; 46 | 47 | StaggeredGridLayoutManager manger; 48 | 49 | GridAdapter adapter; 50 | 51 | Context context; 52 | 53 | List list_data; 54 | 55 | private int currentPage = 1; 56 | 57 | @Override 58 | public void onCreate(Bundle savedInstanceState) { 59 | super.onCreate(savedInstanceState); 60 | init(); 61 | } 62 | 63 | private void init() { 64 | context = getActivity(); 65 | manger = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); 66 | adapter = new StaggeredAdapter(context); 67 | list_data = new ArrayList<>(); 68 | } 69 | 70 | @Nullable 71 | @Override 72 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 73 | View rootView = inflater.inflate(R.layout.fragment_comic_list, container, false); 74 | ButterKnife.inject(this, rootView); 75 | manger = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); 76 | rv_second_list.setLayoutManager(manger); 77 | rv_second_list.setAdapter(adapter); 78 | pageBar.setPrefixURL(HtmlUtil.URL_COMIC_PREFIX); 79 | pageBar.setOnPageItemClickListener(this); 80 | 81 | refresh_comic_list.setOnRefreshListener(this); 82 | refresh_comic_list.setRefreshing(true); 83 | 84 | onRefresh(); 85 | 86 | return rootView; 87 | } 88 | 89 | private void startLoad(String URL) { 90 | HtmlTask task = new HtmlTask() { 91 | @Override 92 | protected void onPostExecute(List baseBeans) { 93 | super.onPostExecute(baseBeans); 94 | adapter.obtainData(baseBeans); 95 | adapter.notifyDataSetChanged(); 96 | adapter.setOnCellClickListener(ComicListFragment.this); 97 | refresh_comic_list.setRefreshing(false); 98 | //rv_second_list.setAdapter(adapter); 99 | } 100 | }; 101 | task.execute(URL, HtmlTask.TASK_ITEM); 102 | } 103 | 104 | @Override 105 | public void onPageItemClick(View v) { 106 | int clickPage = (int) v.getTag(); 107 | if (currentPage == clickPage) return; 108 | startLoad(pageBar.getPrefixURL() + clickPage); 109 | currentPage = clickPage; 110 | } 111 | 112 | @Override 113 | public void onRefresh() { 114 | startLoad(pageBar.getPrefixURL() + currentPage); 115 | } 116 | 117 | @Override 118 | public void onCellClick(View view, int position) { 119 | Intent intent = new Intent(); 120 | intent.putExtra(INTENT_KEY_LINK, adapter.getData().get(position).getLink()); 121 | intent.setClass(context, ComicActivity.class); 122 | startActivity(intent); 123 | } 124 | } 125 | -------------------------------------------------------------------------------- /poishuhui/src/main/java/com/flying/xiaopo/poishuhui/Views/Fragments/ComicNewsFragment.java: -------------------------------------------------------------------------------- 1 | package com.flying.xiaopo.poishuhui.Views.Fragments; 2 | 3 | import android.content.Context; 4 | import android.os.AsyncTask; 5 | import android.os.Bundle; 6 | import android.support.annotation.Nullable; 7 | import android.support.v4.app.Fragment; 8 | import android.support.v4.widget.SwipeRefreshLayout; 9 | import android.support.v7.widget.LinearLayoutManager; 10 | import android.support.v7.widget.RecyclerView; 11 | import android.view.LayoutInflater; 12 | import android.view.View; 13 | import android.view.ViewGroup; 14 | 15 | import com.flying.xiaopo.poishuhui.Adapters.ContainerLinearAdapter; 16 | import com.flying.xiaopo.poishuhui.Beans.ContainerBean; 17 | import com.flying.xiaopo.poishuhui.R; 18 | import com.flying.xiaopo.poishuhui.Utils.HtmlUtil; 19 | 20 | import java.util.ArrayList; 21 | import java.util.List; 22 | 23 | import butterknife.ButterKnife; 24 | import butterknife.InjectView; 25 | 26 | /** 27 | * 漫画新闻类 28 | * Created by lenovo on 2015/9/3. 29 | */ 30 | public class ComicNewsFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener { 31 | Context context; 32 | @InjectView(R.id.rv_comic_news) 33 | RecyclerView rv_comic_news; 34 | @InjectView(R.id.refresh_comic_news) 35 | SwipeRefreshLayout refresh_comic_news; 36 | 37 | LinearLayoutManager manager; 38 | 39 | ContainerLinearAdapter adapter; 40 | 41 | List list_data; 42 | 43 | @Override 44 | public void onCreate(@Nullable Bundle savedInstanceState) { 45 | super.onCreate(savedInstanceState); 46 | init(); 47 | } 48 | 49 | private void init() { 50 | context = getActivity(); 51 | adapter = new ContainerLinearAdapter(context); 52 | list_data = new ArrayList<>(); 53 | } 54 | 55 | @Nullable 56 | @Override 57 | public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 58 | View rootView = inflater.inflate(R.layout.fragment_comic_news, container, false); 59 | ButterKnife.inject(this, rootView); 60 | manager = new LinearLayoutManager(context); 61 | rv_comic_news.setLayoutManager(manager); 62 | rv_comic_news.setAdapter(adapter); 63 | refresh_comic_news.setOnRefreshListener(this); 64 | refresh_comic_news.setRefreshing(true); 65 | 66 | onRefresh(); 67 | 68 | return rootView; 69 | } 70 | 71 | private void startLoad(String urlNews) { 72 | NewsTask task = new NewsTask() { 73 | @Override 74 | protected void onPostExecute(List containerBeans) { 75 | super.onPostExecute(containerBeans); 76 | adapter.obtainData(containerBeans); 77 | adapter.notifyDataSetChanged(); 78 | refresh_comic_news.setRefreshing(false); 79 | } 80 | }; 81 | task.execute(urlNews); 82 | } 83 | 84 | @Override 85 | public void onRefresh() { 86 | startLoad(HtmlUtil.URL_NEWS); 87 | } 88 | 89 | 90 | private class NewsTask extends AsyncTask> { 91 | @Override 92 | protected List doInBackground(String... params) { 93 | return HtmlUtil.obtainContainer(params[0]); 94 | } 95 | } 96 | } 97 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_black_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_grey600_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-hdpi/ic_arrow_left_white_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_black_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_grey600_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-mdpi/ic_arrow_left_white_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-v21/arrow_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_black_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_grey600_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xhdpi/ic_arrow_left_white_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_black_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_grey600_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_arrow_left_white_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxhdpi/ic_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxhdpi/ic_logo.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_black_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_grey600_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_18dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_18dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_24dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_36dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wuapnjie/PoiShuHui/29c9783c1048891dab4109b4fed9796e7fa776c1/poishuhui/src/main/res/drawable-xxxhdpi/ic_arrow_left_white_48dp.png -------------------------------------------------------------------------------- /poishuhui/src/main/res/drawable/arrow_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/layout-v21/activity_comic.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/layout-v21/activity_comic_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 16 | 21 | 22 | 27 | 28 | 35 | 36 | 42 | 43 | 50 | 51 | 58 | 59 | 66 | 67 | 68 | 69 | 70 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/layout-v21/activity_main.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 16 | 17 | 23 | 24 | 30 | 31 | 39 | 40 | 41 | 47 | 48 | 49 | 50 | 58 | 59 | 60 | 67 | 68 | 76 | 77 | 81 | 82 | 89 | 90 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 112 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/layout-v21/activity_news_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 17 | 18 | 24 | 25 | 26 | 27 | 34 | 35 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/layout-v21/child_news_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 19 | 20 | 29 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/layout-v21/comic_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 16 | 23 | 24 | 33 | 34 | -------------------------------------------------------------------------------- /poishuhui/src/main/res/layout-v21/comic_view.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 10 | 17 | 18 | 19 | 27 | 28 | 34 | 35 |