├── .idea
├── .name
├── copyright
│ └── profiles_settings.xml
├── vcs.xml
├── libraries
│ ├── gson_2_2_4.xml
│ ├── butterknife_6_1_0.xml
│ ├── greendao_1_3_0_beta_1.xml
│ ├── uk_co_senab_photoview_source.xml
│ ├── haha_1_3.xml
│ ├── leakcanary_watcher_1_3_1.xml
│ ├── leakcanary_analyzer_1_3_1.xml
│ ├── universal_image_loader_1_9_3.xml
│ ├── leakcanary_android_1_3_1.xml
│ ├── okio_1_6_0.xml
│ ├── eventbus_2_4_0.xml
│ ├── okhttp_2_5_0.xml
│ ├── library_1_0_19.xml
│ ├── support_annotations_22_2_0.xml
│ ├── freemarker_2_3_20.xml
│ ├── lib_1_0_1.xml
│ ├── greendao_generator_1_3_1.xml
│ ├── cardview_v7_22_2_0.xml
│ ├── okhttp_urlconnection_2_5_0.xml
│ ├── recyclerview_v7_22_2_0.xml
│ ├── appcompat_v7_22_2_0.xml
│ ├── material_dialogs_0_7_3_1.xml
│ └── support_v4_22_2_0.xml
├── modules.xml
├── runConfigurations.xml
├── gradle.xml
├── compiler.xml
└── misc.xml
├── app
├── .gitignore
├── libs
│ ├── gson-2.2.4.jar
│ ├── butterknife-6.1.0.jar
│ ├── greendao-1.3.0-beta-1.jar
│ ├── uk-co-senab-photoview-source.jar
│ └── universal-image-loader-1.9.3.jar
├── src
│ ├── main
│ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── bg_floor.9.png
│ │ │ │ ├── bg_comment.xml
│ │ │ │ ├── progressbar_horizontal_blue.xml
│ │ │ │ ├── progress_horizontal_holo_dark.xml
│ │ │ │ └── progress_indeterminate_horizontal_holo.xml
│ │ │ ├── drawable-hdpi
│ │ │ │ ├── ic_more.png
│ │ │ │ ├── ic_play_gif.png
│ │ │ │ ├── ic_action_refresh.png
│ │ │ │ ├── ic_actionbar_back.png
│ │ │ │ ├── ic_loading_large.png
│ │ │ │ ├── ic_loading_small.png
│ │ │ │ ├── ic_chat_white_24dp.png
│ │ │ │ ├── ic_mood_white_24dp.png
│ │ │ │ ├── ic_movie_white_24dp.png
│ │ │ │ ├── ic_comment_down_arrow.png
│ │ │ │ ├── ic_explore_white_24dp.png
│ │ │ │ ├── widget_bottom_shadow.9.png
│ │ │ │ ├── progress_bg_holo_dark.9.png
│ │ │ │ ├── ic_more_horiz_grey600_24dp.png
│ │ │ │ ├── progress_primary_holo_dark.9.png
│ │ │ │ ├── progress_secondary_holo_dark.9.png
│ │ │ │ ├── progressbar_indeterminate_holo1.png
│ │ │ │ ├── progressbar_indeterminate_holo2.png
│ │ │ │ ├── progressbar_indeterminate_holo3.png
│ │ │ │ ├── progressbar_indeterminate_holo4.png
│ │ │ │ ├── progressbar_indeterminate_holo5.png
│ │ │ │ ├── progressbar_indeterminate_holo6.png
│ │ │ │ ├── progressbar_indeterminate_holo7.png
│ │ │ │ └── progressbar_indeterminate_holo8.png
│ │ │ ├── drawable-xhdpi
│ │ │ │ ├── ic_drawer.png
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_action_chat.png
│ │ │ │ ├── ic_action_copy.png
│ │ │ │ ├── ic_action_edit.png
│ │ │ │ ├── drawer_shadow.9.png
│ │ │ │ ├── ic_action_reply.png
│ │ │ │ ├── ic_action_share.png
│ │ │ │ ├── ic_action_download.png
│ │ │ │ ├── ic_action_refresh.png
│ │ │ │ ├── ic_action_send_now.png
│ │ │ │ ├── ic_chat_white_24dp.png
│ │ │ │ ├── ic_close_white_24dp.png
│ │ │ │ ├── ic_mood_white_24dp.png
│ │ │ │ ├── ic_movie_white_24dp.png
│ │ │ │ ├── ic_stat_av_upload.png
│ │ │ │ ├── ic_action_share_black.png
│ │ │ │ ├── ic_action_share_other.png
│ │ │ │ ├── ic_action_share_weibo.png
│ │ │ │ ├── ic_explore_white_24dp.png
│ │ │ │ ├── post_list_item_top.9.png
│ │ │ │ ├── ic_action_refresh_black.png
│ │ │ │ ├── ic_action_share_moment.png
│ │ │ │ ├── ic_action_share_wechat.png
│ │ │ │ ├── ic_settings_white_24dp.png
│ │ │ │ ├── post_list_item_bottom.9.png
│ │ │ │ ├── progress_bg_holo_dark.9.png
│ │ │ │ ├── vpi__tab_selected_holo.9.png
│ │ │ │ ├── widget_bottom_shadow.9.png
│ │ │ │ ├── ic_chevron_left_white_36dp.png
│ │ │ │ ├── ic_more_horiz_grey600_24dp.png
│ │ │ │ ├── ic_stat_navigation_accept.png
│ │ │ │ ├── ic_stat_navigation_cancel.png
│ │ │ │ ├── vpi__tab_unselected_holo.9.png
│ │ │ │ ├── ic_brightness_day_white_24dp.png
│ │ │ │ ├── ic_chevron_right_white_36dp.png
│ │ │ │ ├── ic_local_florist_white_24dp.png
│ │ │ │ ├── progress_primary_holo_dark.9.png
│ │ │ │ ├── comment_item_card_background.9.png
│ │ │ │ ├── ic_brightness_night_white_24dp.png
│ │ │ │ ├── progress_secondary_holo_dark.9.png
│ │ │ │ ├── progressbar_indeterminate_holo1.png
│ │ │ │ ├── progressbar_indeterminate_holo2.png
│ │ │ │ ├── progressbar_indeterminate_holo3.png
│ │ │ │ ├── progressbar_indeterminate_holo4.png
│ │ │ │ ├── progressbar_indeterminate_holo5.png
│ │ │ │ ├── progressbar_indeterminate_holo6.png
│ │ │ │ ├── progressbar_indeterminate_holo7.png
│ │ │ │ ├── progressbar_indeterminate_holo8.png
│ │ │ │ ├── vpi__tab_selected_focused_holo.9.png
│ │ │ │ ├── vpi__tab_selected_pressed_holo.9.png
│ │ │ │ ├── vpi__tab_unselected_focused_holo.9.png
│ │ │ │ └── vpi__tab_unselected_pressed_holo.9.png
│ │ │ ├── mipmap-hdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── drawable-xxhdpi
│ │ │ │ ├── ic_drawer.png
│ │ │ │ ├── ic_launcher.png
│ │ │ │ ├── ic_play_gif.png
│ │ │ │ ├── drawer_shadow.9.png
│ │ │ │ ├── ic_action_back.png
│ │ │ │ ├── ic_action_chat.png
│ │ │ │ ├── ic_action_copy.png
│ │ │ │ ├── ic_action_edit.png
│ │ │ │ ├── ic_action_reply.png
│ │ │ │ ├── ic_action_share.png
│ │ │ │ ├── ic_action_download.png
│ │ │ │ ├── ic_action_refresh.png
│ │ │ │ ├── ic_action_send_now.png
│ │ │ │ ├── ic_chat_white_24dp.png
│ │ │ │ ├── ic_mood_white_24dp.png
│ │ │ │ ├── ic_stat_av_upload.png
│ │ │ │ ├── ic_close_white_24dp.png
│ │ │ │ ├── ic_movie_white_24dp.png
│ │ │ │ ├── ic_action_refresh_black.png
│ │ │ │ ├── ic_action_share_black.png
│ │ │ │ ├── ic_action_share_moment.png
│ │ │ │ ├── ic_action_share_other.png
│ │ │ │ ├── ic_action_share_wechat.png
│ │ │ │ ├── ic_action_share_weibo.png
│ │ │ │ ├── ic_explore_white_24dp.png
│ │ │ │ ├── ic_settings_white_24dp.png
│ │ │ │ ├── progress_bg_holo_dark.9.png
│ │ │ │ ├── ic_stat_navigation_accept.png
│ │ │ │ ├── ic_stat_navigation_cancel.png
│ │ │ │ ├── ic_brightness_day_white_24dp.png
│ │ │ │ ├── ic_chevron_left_white_36dp.png
│ │ │ │ ├── ic_chevron_right_white_36dp.png
│ │ │ │ ├── ic_local_florist_white_24dp.png
│ │ │ │ ├── ic_more_horiz_grey600_24dp.png
│ │ │ │ ├── progress_primary_holo_dark.9.png
│ │ │ │ ├── ic_brightness_night_white_24dp.png
│ │ │ │ ├── progress_secondary_holo_dark.9.png
│ │ │ │ ├── progressbar_indeterminate_holo1.png
│ │ │ │ ├── progressbar_indeterminate_holo2.png
│ │ │ │ ├── progressbar_indeterminate_holo3.png
│ │ │ │ ├── progressbar_indeterminate_holo4.png
│ │ │ │ ├── progressbar_indeterminate_holo5.png
│ │ │ │ ├── progressbar_indeterminate_holo6.png
│ │ │ │ ├── progressbar_indeterminate_holo7.png
│ │ │ │ └── progressbar_indeterminate_holo8.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ │ └── ic_launcher.png
│ │ │ ├── anim
│ │ │ │ ├── anim_none.xml
│ │ │ │ ├── trans_center_2_right.xml
│ │ │ │ └── item_bottom_in.xml
│ │ │ ├── values
│ │ │ │ ├── dimens.xml
│ │ │ │ ├── colors.xml
│ │ │ │ ├── arrays.xml
│ │ │ │ ├── strings.xml
│ │ │ │ └── styles.xml
│ │ │ ├── layout
│ │ │ │ ├── common_toolbar.xml
│ │ │ │ ├── fragment_fresh_news_detail.xml
│ │ │ │ ├── common_loading.xml
│ │ │ │ ├── activity_fresh_news_detail.xml
│ │ │ │ ├── item_comment_flag.xml
│ │ │ │ ├── activity_setting.xml
│ │ │ │ ├── fragment_auto_load.xml
│ │ │ │ ├── drawer_item.xml
│ │ │ │ ├── activity_main.xml
│ │ │ │ ├── activity_comment_list.xml
│ │ │ │ ├── dialog_commentotar_info.xml
│ │ │ │ ├── activity_push_comment.xml
│ │ │ │ ├── fragment_drawer.xml
│ │ │ │ ├── item_fresh_news_small.xml
│ │ │ │ ├── item_comment_floor.xml
│ │ │ │ └── activity_video_detail.xml
│ │ │ ├── menu
│ │ │ │ ├── menu_comment_list.xml
│ │ │ │ ├── menu_refresh.xml
│ │ │ │ ├── menu_video_detail.xml
│ │ │ │ ├── menu_push_comment.xml
│ │ │ │ └── menu_fresh_news_detail.xml
│ │ │ ├── values-w820dp
│ │ │ │ └── dimens.xml
│ │ │ ├── values-v21
│ │ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ │ └── preferences.xml
│ │ ├── java
│ │ │ └── com
│ │ │ │ └── socks
│ │ │ │ └── jiandan
│ │ │ │ ├── callback
│ │ │ │ ├── LoadMoreListener.java
│ │ │ │ ├── LoadFinishCallBack.java
│ │ │ │ └── LoadResultCallBack.java
│ │ │ │ ├── utils
│ │ │ │ ├── logger
│ │ │ │ │ └── LogLevel.java
│ │ │ │ ├── ScreenSizeUtil.java
│ │ │ │ ├── ShowToast.java
│ │ │ │ ├── AppInfoUtil.java
│ │ │ │ ├── StrictModeUtil.java
│ │ │ │ ├── CacheUtil.java
│ │ │ │ ├── NetWorkUtil.java
│ │ │ │ ├── EditTextShakeHelper.java
│ │ │ │ ├── TextUtil.java
│ │ │ │ ├── String2TimeUtil.java
│ │ │ │ ├── JDMediaScannerConnectionClient.java
│ │ │ │ ├── ActivityManager.java
│ │ │ │ ├── SharedPreUtils.java
│ │ │ │ └── ShareUtil.java
│ │ │ │ ├── view
│ │ │ │ ├── floorview
│ │ │ │ │ ├── Commentable.java
│ │ │ │ │ ├── SubComments.java
│ │ │ │ │ └── SubFloorFactory.java
│ │ │ │ ├── FadeInAnimator.java
│ │ │ │ ├── ShowMaxImageView.java
│ │ │ │ └── MyItemAnimator.java
│ │ │ │ ├── ui
│ │ │ │ ├── fragment
│ │ │ │ │ └── SisterFragment.java
│ │ │ │ ├── SettingActivity.java
│ │ │ │ └── FreshNewsDetailActivity.java
│ │ │ │ ├── model
│ │ │ │ ├── NetWorkEvent.java
│ │ │ │ ├── CommentNumber.java
│ │ │ │ ├── Vote.java
│ │ │ │ ├── MenuItem.java
│ │ │ │ ├── Author.java
│ │ │ │ ├── Tags.java
│ │ │ │ ├── Joke.java
│ │ │ │ ├── Picture.java
│ │ │ │ ├── CustomFields.java
│ │ │ │ └── Video.java
│ │ │ │ ├── cache
│ │ │ │ ├── BaseCache.java
│ │ │ │ ├── SisterCache.java
│ │ │ │ ├── JokeCache.java
│ │ │ │ ├── VideoCache.java
│ │ │ │ ├── PictureCache.java
│ │ │ │ └── FreshNewsCache.java
│ │ │ │ ├── net
│ │ │ │ ├── OkHttpStack.java
│ │ │ │ ├── RequestManager.java
│ │ │ │ ├── Request4Vote.java
│ │ │ │ ├── Request4Joke.java
│ │ │ │ ├── Request4FreshNews.java
│ │ │ │ ├── JSONParser.java
│ │ │ │ ├── Request4FreshNewsDetail.java
│ │ │ │ ├── Request4Picture.java
│ │ │ │ ├── Request4CommentCounts.java
│ │ │ │ └── Request4PushFreshComment.java
│ │ │ │ └── base
│ │ │ │ ├── ConstantString.java
│ │ │ │ ├── BaseFragment.java
│ │ │ │ ├── JDApplication.java
│ │ │ │ └── BaseActivity.java
│ │ ├── java-gen
│ │ │ └── com
│ │ │ │ └── socks
│ │ │ │ └── greendao
│ │ │ │ ├── JokeCache.java
│ │ │ │ ├── VideoCache.java
│ │ │ │ ├── SisterCache.java
│ │ │ │ ├── PictureCache.java
│ │ │ │ └── FreshNewsCache.java
│ │ └── AndroidManifest.xml
│ └── androidTest
│ │ └── java
│ │ └── com
│ │ └── socks
│ │ └── jiandan
│ │ ├── ApplicationTest.java
│ │ └── TestClass.java
├── proguard-rules.pro
└── build.gradle
├── GreenDaoGenerator
├── .gitignore
├── build.gradle
├── src
│ └── main
│ │ └── java
│ │ └── com
│ │ └── socks
│ │ └── MyDaoGenerator.java
└── GreenDaoGenerator.iml
├── settings.gradle
├── images
└── demo.gif
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── README.md
├── .gitignore
├── gradle.properties
├── JianDan.iml
├── JianDan_OkHttpWithVolley.iml
└── gradlew.bat
/.idea/.name:
--------------------------------------------------------------------------------
1 | JianDan_OkHttpWithVolley
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /app.iml
2 | /build
3 |
--------------------------------------------------------------------------------
/GreenDaoGenerator/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':GreenDaoGenerator'
2 |
--------------------------------------------------------------------------------
/images/demo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/images/demo.gif
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/app/libs/gson-2.2.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/libs/gson-2.2.4.jar
--------------------------------------------------------------------------------
/app/libs/butterknife-6.1.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/libs/butterknife-6.1.0.jar
--------------------------------------------------------------------------------
/app/libs/greendao-1.3.0-beta-1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/libs/greendao-1.3.0-beta-1.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_floor.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable/bg_floor.9.png
--------------------------------------------------------------------------------
/app/libs/uk-co-senab-photoview-source.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/libs/uk-co-senab-photoview-source.jar
--------------------------------------------------------------------------------
/app/libs/universal-image-loader-1.9.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/libs/universal-image-loader-1.9.3.jar
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_drawer.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_play_gif.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_play_gif.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_drawer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_drawer.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_chat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_copy.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_edit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_play_gif.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_play_gif.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_action_refresh.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_actionbar_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_actionbar_back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_loading_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_loading_large.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_loading_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_loading_small.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_reply.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_reply.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_share.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/drawer_shadow.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_chat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_chat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_copy.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_edit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_reply.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_reply.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_share.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_chat_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_chat_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_mood_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_mood_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_movie_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_movie_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_download.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_refresh.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_send_now.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_send_now.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_chat_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_chat_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_close_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_mood_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_mood_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_movie_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_movie_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_stat_av_upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_stat_av_upload.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_download.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_refresh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_refresh.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_send_now.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_send_now.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_chat_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_chat_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_mood_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_mood_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_stat_av_upload.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_stat_av_upload.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_comment_down_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_comment_down_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_explore_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_explore_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/widget_bottom_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/widget_bottom_shadow.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_share_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_share_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_share_other.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_share_other.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_share_weibo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_share_weibo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_explore_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_explore_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/post_list_item_top.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/post_list_item_top.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_close_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_movie_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_movie_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progress_bg_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progress_bg_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_refresh_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_refresh_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_share_moment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_share_moment.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_share_wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_action_share_wechat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_settings_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_settings_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/post_list_item_bottom.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/post_list_item_bottom.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progress_bg_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progress_bg_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/vpi__tab_selected_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/vpi__tab_selected_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/widget_bottom_shadow.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/widget_bottom_shadow.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_refresh_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_refresh_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_share_black.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_share_black.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_share_moment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_share_moment.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_share_other.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_share_other.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_share_wechat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_share_wechat.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_share_weibo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_action_share_weibo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_explore_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_explore_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_settings_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_settings_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progress_bg_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progress_bg_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_more_horiz_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/ic_more_horiz_grey600_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_chevron_left_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_chevron_left_white_36dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_more_horiz_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_more_horiz_grey600_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_stat_navigation_accept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_stat_navigation_accept.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_stat_navigation_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_stat_navigation_cancel.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/vpi__tab_unselected_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/vpi__tab_unselected_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_stat_navigation_accept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_stat_navigation_accept.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_stat_navigation_cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_stat_navigation_cancel.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progress_primary_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progress_primary_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progress_secondary_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progress_secondary_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_brightness_day_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_brightness_day_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_chevron_right_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_chevron_right_white_36dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_local_florist_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_local_florist_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progress_primary_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progress_primary_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_brightness_day_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_brightness_day_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_chevron_left_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_chevron_left_white_36dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_chevron_right_white_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_chevron_right_white_36dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_local_florist_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_local_florist_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_more_horiz_grey600_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_more_horiz_grey600_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progress_primary_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progress_primary_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-hdpi/progressbar_indeterminate_holo8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/comment_item_card_background.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/comment_item_card_background.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_brightness_night_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/ic_brightness_night_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progress_secondary_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progress_secondary_holo_dark.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/progressbar_indeterminate_holo8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_brightness_night_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/ic_brightness_night_white_24dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progress_secondary_holo_dark.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progress_secondary_holo_dark.9.png
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/vpi__tab_selected_focused_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/vpi__tab_selected_focused_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/vpi__tab_selected_pressed_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/vpi__tab_selected_pressed_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/vpi__tab_unselected_focused_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/vpi__tab_unselected_focused_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/vpi__tab_unselected_pressed_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xhdpi/vpi__tab_unselected_pressed_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo4.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo5.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo6.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo7.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ZhaoKaiQiang/JianDan_OkHttpWithVolley/HEAD/app/src/main/res/drawable-xxhdpi/progressbar_indeterminate_holo8.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_comment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/callback/LoadMoreListener.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.callback;
2 |
3 | /**
4 | * Created by zhaokaiqiang on 15/11/7.
5 | */
6 | public interface LoadMoreListener {
7 | void loadMore();
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/callback/LoadFinishCallBack.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.callback;
2 |
3 | /**
4 | * Created by zhaokaiqiang on 15/4/9.
5 | */
6 | public interface LoadFinishCallBack {
7 | void loadFinish(Object obj);
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/anim_none.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 |
--------------------------------------------------------------------------------
/.idea/libraries/gson_2_2_4.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/libraries/butterknife_6_1_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/.idea/libraries/greendao_1_3_0_beta_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/logger/LogLevel.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils.logger;
2 |
3 | /**
4 | * @author Orhan Obut
5 | */
6 | public enum LogLevel {
7 |
8 | /**
9 | * Prints all logs
10 | */
11 | FULL,
12 |
13 | /**
14 | * No log will be printed
15 | */
16 | NONE
17 | }
18 |
--------------------------------------------------------------------------------
/.idea/libraries/uk_co_senab_photoview_source.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/trans_center_2_right.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/common_toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/.idea/libraries/haha_1_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/view/floorview/Commentable.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.view.floorview;
2 |
3 | /**
4 | * 代表可评论
5 | * Created by zhaokaiqiang on 15/4/28.
6 | */
7 | public interface Commentable {
8 |
9 | int getCommentFloorNum();
10 |
11 | String getCommentContent();
12 |
13 | String getAuthorName();
14 |
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # JianDan客户端高仿版(使用OkHttp替换Volley底层实现的版本)
2 |
3 | ---
4 |
5 | 原始版本请到[这里](https://github.com/ZhaoKaiQiang/JianDan)
6 |
7 | ##效果图
8 |
9 | 废话不多说,先上效果图
10 |
11 | 
12 |
13 | ##关于我
14 | - [Android研发工程师](http://weibo.com/zhaokaiqiang1992)
15 | - [CSDN博客专家](http://blog.csdn.net/zhaokaiqiang1992)
--------------------------------------------------------------------------------
/GreenDaoGenerator/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'java'
2 |
3 | repositories {
4 | mavenLocal()
5 | mavenCentral()
6 | }
7 |
8 | dependencies {
9 | compile 'de.greenrobot:greendao-generator:1.3.1'
10 | }
11 |
12 | sourceSets {
13 | main {
14 | java {
15 | srcDir 'src/main/java'
16 | }
17 | }
18 | }
19 | artifacts {
20 | archives jar
21 | }
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_comment_list.xml:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_refresh.xml:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/item_bottom_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
8 |
--------------------------------------------------------------------------------
/.idea/libraries/leakcanary_watcher_1_3_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_video_detail.xml:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/leakcanary_analyzer_1_3_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/callback/LoadResultCallBack.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.callback;
2 |
3 | /**
4 | * Created by zhaokaiqiang on 15/11/7.
5 | */
6 | public interface LoadResultCallBack {
7 |
8 | int SUCCESS_OK = 1001;
9 | int SUCCESS_NONE = 1002;
10 | int ERROR_NET = 1003;
11 |
12 | void onSuccess(int result, Object object);
13 |
14 | void onError(int code, String msg);
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_push_comment.xml:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /.idea
2 | # Built application files
3 | *.apk
4 | *.ap_
5 |
6 | # Files for the Dalvik VM
7 | *.dex
8 |
9 | # Java class files
10 | *.class
11 |
12 | # Generated files
13 | bin/
14 | gen/
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 | /*/build/
20 |
21 | # Local configuration file (sdk path, etc)
22 | local.properties
23 |
24 | # Proguard folder generated by Eclipse
25 | proguard/
26 |
27 | # Log Files
28 | *.log
29 |
--------------------------------------------------------------------------------
/.idea/libraries/universal_image_loader_1_9_3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/socks/jiandan/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/ui/fragment/SisterFragment.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.ui.fragment;
2 |
3 | import android.os.Bundle;
4 |
5 | import com.socks.jiandan.model.Picture;
6 |
7 | public class SisterFragment extends PictureFragment {
8 |
9 | @Override
10 | public void onCreate(Bundle savedInstanceState) {
11 | super.onCreate(savedInstanceState);
12 | setHasOptionsMenu(true);
13 | mType = Picture.PictureType.Sister;
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_fresh_news_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/leakcanary_android_1_3_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/common_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/NetWorkEvent.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | public class NetWorkEvent {
4 |
5 | public static final int AVAILABLE = 1;
6 | public static final int UNAVAILABLE = -1;
7 |
8 | private int type;
9 |
10 | public int getType() {
11 | return type;
12 | }
13 |
14 | public void setType(int type) {
15 | this.type = type;
16 | }
17 |
18 | public NetWorkEvent(int type) {
19 | this.type = type;
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/ScreenSizeUtil.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import android.app.Activity;
4 |
5 | /**
6 | * Created by zhaokaiqiang on 15/4/9.
7 | */
8 | public class ScreenSizeUtil {
9 |
10 | public static int getScreenWidth(Activity activity) {
11 | return activity.getWindowManager().getDefaultDisplay().getWidth();
12 | }
13 |
14 | public static int getScreenHeight(Activity activity) {
15 | return activity.getWindowManager().getDefaultDisplay().getHeight();
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/.idea/libraries/okio_1_6_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/eventbus_2_4_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/okhttp_2_5_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/library_1_0_19.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/libraries/support_annotations_22_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/libraries/freemarker_2_3_20.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/cache/BaseCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.cache;
2 |
3 | import com.socks.greendao.DaoSession;
4 |
5 | import java.util.ArrayList;
6 |
7 | /**
8 | * Created by zhaokaiqiang on 15/5/12.
9 | */
10 | public abstract class BaseCache {
11 |
12 | public static final String DB_NAME = "jiandan-db";
13 |
14 | protected static DaoSession mDaoSession;
15 |
16 | public abstract void clearAllCache();
17 |
18 | public abstract ArrayList getCacheByPage(int page);
19 |
20 | public abstract void addResultCache(String result, int page);
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_fresh_news_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/lib_1_0_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #03A9F4
4 | #0288D1
5 | #B3E5FC
6 | #03A9F4
7 | #212121
8 | #727272
9 | #FFFFFF
10 | #B6B6B6
11 |
12 | #FFFFFF
13 | #FFFFFF
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_comment_flag.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
14 |
15 |
--------------------------------------------------------------------------------
/.idea/libraries/greendao_generator_1_3_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/cardview_v7_22_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/libraries/okhttp_urlconnection_2_5_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_setting.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
15 |
16 |
--------------------------------------------------------------------------------
/.idea/libraries/recyclerview_v7_22_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/arrays.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - 回复
6 | - 复制
7 |
8 |
9 |
10 |
11 | - 分享
12 | - 复制
13 |
14 |
15 |
16 | - 分享
17 | - 复制
18 | - 打开
19 |
20 |
21 |
22 | - 分享
23 | - 保存
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_fresh_news_detail.xml:
--------------------------------------------------------------------------------
1 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progressbar_horizontal_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progress_horizontal_holo_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 | -
7 |
10 |
11 | -
12 |
15 |
16 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/zhaokaiqiang/Develop/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 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 煎蛋
4 | 吐槽
5 | 回复
6 | 发送
7 | 分享
8 | 复制
9 | 浏览器打开
10 | 新鲜事
11 | VideoDetailActivity
12 | 段子
13 | 设置
14 | 加载中...
15 | 更多
16 |
17 |
18 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/ShowToast.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014, 青岛司通科技有限公司 All rights reserved.
3 | * File Name:ShowToast.java
4 | * Version:V1.0
5 | * Author:zhaokaiqiang
6 | * Date:2014-8-7
7 | */
8 | package com.socks.jiandan.utils;
9 |
10 | import android.support.annotation.NonNull;
11 | import android.widget.Toast;
12 |
13 | import com.socks.jiandan.base.JDApplication;
14 |
15 | public class ShowToast {
16 |
17 | public static void Short(@NonNull CharSequence sequence) {
18 | Toast.makeText(JDApplication.getContext(), sequence, Toast.LENGTH_SHORT).show();
19 | }
20 |
21 | public static void Long(@NonNull CharSequence sequence) {
22 | Toast.makeText(JDApplication.getContext(), sequence, Toast.LENGTH_SHORT).show();
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/.idea/libraries/appcompat_v7_22_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/AppInfoUtil.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import android.app.Activity;
4 | import android.content.pm.PackageInfo;
5 | import android.content.pm.PackageManager;
6 |
7 | public class AppInfoUtil {
8 |
9 | public static String getVersionName(Activity activity) {
10 | // 获取packagemanager的实例
11 | PackageManager packageManager = activity.getPackageManager();
12 | // getPackageName()是你当前类的包名,0代表是获取版本信息
13 | PackageInfo packInfo = null;
14 | try {
15 | packInfo = packageManager.getPackageInfo(activity.getPackageName(), 0);
16 | String version = packInfo.versionName;
17 | return version;
18 | } catch (PackageManager.NameNotFoundException e) {
19 | e.printStackTrace();
20 | return "0";
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/.idea/libraries/material_dialogs_0_7_3_1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_auto_load.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/OkHttpStack.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.android.volley.toolbox.HurlStack;
4 | import com.squareup.okhttp.OkHttpClient;
5 | import com.squareup.okhttp.OkUrlFactory;
6 |
7 | import java.io.IOException;
8 | import java.net.HttpURLConnection;
9 | import java.net.URL;
10 |
11 | /**
12 | * Created by zhaokaiqiang on 15/11/9.
13 | */
14 | public class OkHttpStack extends HurlStack {
15 | private OkHttpClient okHttpClient;
16 |
17 | public OkHttpStack() {
18 | this(new OkHttpClient());
19 | }
20 |
21 | public OkHttpStack(OkHttpClient okHttpClient) {
22 | this.okHttpClient = okHttpClient;
23 | }
24 |
25 | @Override
26 | protected HttpURLConnection createConnection(URL url) throws IOException {
27 | OkUrlFactory okUrlFactory = new OkUrlFactory(okHttpClient);
28 | return okUrlFactory.open(url);
29 | }
30 | }
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/libraries/support_v4_22_2_0.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/preferences.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
11 |
15 |
16 |
17 |
20 |
23 |
24 |
--------------------------------------------------------------------------------
/JianDan.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/drawer_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
15 |
16 |
25 |
26 |
--------------------------------------------------------------------------------
/JianDan_OkHttpWithVolley.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/view/floorview/SubComments.java:
--------------------------------------------------------------------------------
1 | /**
2 | *
3 | */
4 | package com.socks.jiandan.view.floorview;
5 |
6 | import java.util.ArrayList;
7 | import java.util.Iterator;
8 | import java.util.List;
9 |
10 | /**
11 | * @author JohnnyShieh
12 | * @ClassName: SubComments
13 | * @Description:TODO
14 | * @date Feb 20, 2014 10:03:22 AM
15 | */
16 | public class SubComments {
17 |
18 | private List extends Commentable> list;
19 |
20 | public SubComments(List extends Commentable> cmts) {
21 | if (cmts != null) {
22 | list = new ArrayList<>(cmts);
23 | } else {
24 | list = null;
25 | }
26 | }
27 |
28 | public int size() {
29 | return list == null ? 0 : list.size();
30 | }
31 |
32 | public int getFloorNum() {
33 | return list.get(list.size() - 1).getCommentFloorNum();
34 | }
35 |
36 | public Commentable get(int index) {
37 | return list.get(index);
38 | }
39 |
40 | public Iterator extends Commentable> iterator() {
41 | return list == null ? null : list.iterator();
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/StrictModeUtil.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import android.os.Build;
4 | import android.os.StrictMode;
5 |
6 | import com.socks.jiandan.BuildConfig;
7 |
8 | /**
9 | * 开启严格模式,检测内存、硬盘等敏感操作,线程监控出现问题会出对话框提示
10 | * Created by zhaokaiqiang on 15/11/9.
11 | */
12 | public class StrictModeUtil {
13 |
14 | //暂时关闭
15 | private static boolean isShow = false;
16 |
17 | public static void init() {
18 | if (false && BuildConfig.DEBUG && Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
19 |
20 | //线程监控,会弹框哦
21 | StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
22 | .detectAll()
23 | .penaltyLog()
24 | .penaltyDialog()
25 | .build());
26 |
27 | //VM监控
28 | StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
29 | .detectAll()
30 | .penaltyLog()
31 | .build());
32 | }
33 | }
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/socks/jiandan/TestClass.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan;
2 |
3 | import android.test.InstrumentationTestCase;
4 |
5 | import com.android.volley.Request;
6 | import com.android.volley.Response;
7 | import com.android.volley.VolleyError;
8 | import com.socks.jiandan.base.JDApplication;
9 | import com.socks.jiandan.net.RequestManager;
10 | import com.socks.jiandan.utils.ShowToast;
11 |
12 | /**
13 | * Created by zhaokaiqiang on 15/4/27.
14 | */
15 | public class TestClass extends InstrumentationTestCase{
16 |
17 | public TestClass(){
18 |
19 | }
20 |
21 | public void testGetCommentators() throws Exception {
22 |
23 | JDApplication.getContext();
24 |
25 | }
26 |
27 | protected void executeRequest(Request> request) {
28 | RequestManager.addRequest(request, this);
29 | }
30 |
31 | protected Response.ErrorListener errorListener() {
32 | return new Response.ErrorListener() {
33 | @Override
34 | public void onErrorResponse(VolleyError error) {
35 | ShowToast.Short(error.getMessage());
36 | }
37 | };
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
14 |
15 |
19 |
20 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_comment_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
12 |
13 |
19 |
20 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/CacheUtil.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import android.os.Environment;
4 |
5 | import java.io.File;
6 | import java.util.Random;
7 |
8 | /**
9 | * Created by zhaokaiqiang on 15/4/22.
10 | */
11 | public class CacheUtil {
12 |
13 | public static final String FILE_SAVE = "JianDan";
14 |
15 | /**
16 | * 获取保存图片的名称
17 | * @param cacheFile
18 | * @param urls
19 | * @return
20 | */
21 | public static String getSharePicName(File cacheFile, String[] urls) {
22 | return cacheFile.getAbsolutePath() + new Random().nextInt(100000) + "." + urls[urls
23 | .length - 1];
24 | }
25 |
26 |
27 | /**
28 | * 获取图片保存文件夹路径
29 | *
30 | * @return
31 | */
32 | public static String getSaveDirPath() {
33 | return Environment
34 | .getExternalStorageDirectory().getAbsolutePath() + File.separator + FILE_SAVE;
35 | }
36 |
37 |
38 | /**
39 | * 获取新的图片保存名称
40 | *
41 | * @param cacheFile
42 | * @param urls
43 | * @return
44 | */
45 | public static String getSavePicName(File cacheFile, String[] urls) {
46 | return "jiandan_" + cacheFile.getName().substring(0, 8) + "." +
47 | urls[urls.length - 1];
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_commentotar_info.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
19 |
20 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progress_indeterminate_horizontal_holo.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
11 |
14 |
17 |
20 |
23 |
26 |
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/base/ConstantString.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.base;
2 |
3 | public interface ConstantString {
4 |
5 | String COMMENT_FAILED = "神秘力量导致评论失败 ⊙︿⊙";
6 | String VOTE_FAILED = "神秘力量导致投票失败 ⊙︿⊙";
7 | String LOAD_FAILED = "神秘力量导致加载失败 ⊙︿⊙";
8 | String SAVE_FAILED = "神秘力量导致保存失败 ⊙︿⊙";
9 | String LOAD_SHARE = "神秘力量导致分享失败 ⊙︿⊙";
10 |
11 | String INPUT_TOO_SHORT = "你的..太短..";
12 | String COPY_SUCCESS = "复制成功";
13 | String SAVE_SUCCESS = "保存成功";
14 | String SAVE_SMALL_SUCCESS = "保存缩略图成功";
15 | String VOTE_XX = "疼...轻点插";
16 | String VOTE_OO = "顶的好舒服~";
17 | String VOTE_REPEAT = "投过票了";
18 | String LOAD_NO_NETWORK = "无网络,当前为缓存数据";
19 | String FORBID_COMMENTS = "禁止评论";
20 | String NO_COMMENTS = "暂无评论";
21 |
22 | String DATA_FRESH_NEWS = "FreshNews";
23 | String DATA_POSITION = "position";
24 | String DATA_THREAD_ID = "thread_id";
25 | String DATA_THREAD_KEY = "thread_key";
26 | String DATA_IS_FROM_FRESH_NEWS = "is_from_fresh_news";
27 |
28 | String DATA_IMAGE_URL = "img_url";
29 | String DATA_IMAGE_ID = "img_id";
30 | String DATA_IMAGE_AUTHOR = "img_author";
31 | String DATA_IS_NEED_WEBVIEW = "is_need_webview";
32 |
33 | String DATA_IS_SIAMLL_PIC = "isSmallPic";
34 | String DATA_FILE_PATH = "file_path";
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/NetWorkUtil.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import android.content.Context;
4 | import android.net.ConnectivityManager;
5 | import android.net.NetworkInfo;
6 |
7 | /**
8 | * Created by zhaokaiqiang on 15/4/22.
9 | */
10 | public class NetWorkUtil {
11 |
12 | /**
13 | * 判断当前网络是否已连接
14 | *
15 | * @param context
16 | * @return
17 | */
18 | public static boolean isNetWorkConnected(Context context) {
19 | boolean result;
20 | ConnectivityManager cm = (ConnectivityManager) context
21 | .getSystemService(Context.CONNECTIVITY_SERVICE);
22 | NetworkInfo netInfo = cm.getActiveNetworkInfo();
23 | if (netInfo != null && netInfo.isConnected()) {
24 | result = true;
25 | } else {
26 | result = false;
27 | }
28 | return result;
29 | }
30 |
31 |
32 | /**
33 | * 判断当前的网络连接方式是否为WIFI
34 | *
35 | * @param context
36 | * @return
37 | */
38 | public static boolean isWifiConnected(Context context) {
39 | ConnectivityManager connectivityManager = (ConnectivityManager) context
40 | .getSystemService(Context.CONNECTIVITY_SERVICE);
41 | NetworkInfo wifiNetworkInfo = connectivityManager
42 | .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
43 | if (wifiNetworkInfo.isConnected()) {
44 | return true;
45 | }
46 | return false;
47 | }
48 |
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/base/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.base;
2 |
3 | import android.os.Bundle;
4 | import android.support.v4.app.Fragment;
5 |
6 | import com.android.volley.Request;
7 | import com.socks.jiandan.BuildConfig;
8 | import com.socks.jiandan.net.RequestManager;
9 | import com.socks.jiandan.utils.logger.LogLevel;
10 | import com.socks.jiandan.utils.logger.Logger;
11 | import com.socks.jiandan.view.imageloader.ImageLoadProxy;
12 |
13 |
14 | public class BaseFragment extends Fragment implements ConstantString {
15 |
16 | @Override
17 | public void onCreate(Bundle savedInstanceState) {
18 | super.onCreate(savedInstanceState);
19 | if (BuildConfig.DEBUG) {
20 | Logger.init(getClass().getSimpleName()).setLogLevel(LogLevel.FULL).hideThreadInfo();
21 | } else {
22 | Logger.init(getClass().getSimpleName()).setLogLevel(LogLevel.NONE).hideThreadInfo();
23 | }
24 |
25 | }
26 |
27 | @Override
28 | public void onDestroy() {
29 | super.onDestroy();
30 | JDApplication.getRefWatcher(getActivity()).watch(this);
31 | RequestManager.cancelAll(this);
32 | ImageLoadProxy.getImageLoader().clearMemoryCache();
33 | }
34 |
35 | protected void executeRequest(Request request) {
36 | RequestManager.addRequest(request, this);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/view/FadeInAnimator.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.view;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 |
5 | import java.util.ArrayList;
6 |
7 | /**
8 | * Created by zhaokaiqiang on 15/4/24.
9 | */
10 | public class FadeInAnimator extends RecyclerView.ItemAnimator{
11 |
12 | private ArrayList viewHolders;
13 |
14 | public FadeInAnimator(){
15 | viewHolders = new ArrayList<>();
16 | }
17 |
18 |
19 | @Override
20 | public void runPendingAnimations() {
21 |
22 | }
23 |
24 | @Override
25 | public boolean animateRemove(RecyclerView.ViewHolder holder) {
26 | return false;
27 | }
28 |
29 | @Override
30 | public boolean animateAdd(RecyclerView.ViewHolder holder) {
31 |
32 | return false;
33 | }
34 |
35 | @Override
36 | public boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) {
37 | return false;
38 | }
39 |
40 | @Override
41 | public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromLeft, int fromTop, int toLeft, int toTop) {
42 | return false;
43 | }
44 |
45 | @Override
46 | public void endAnimation(RecyclerView.ViewHolder item) {
47 |
48 | }
49 |
50 | @Override
51 | public void endAnimations() {
52 |
53 | }
54 |
55 | @Override
56 | public boolean isRunning() {
57 | return false;
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/app/src/main/java-gen/com/socks/greendao/JokeCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.greendao;
2 |
3 | // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
4 | /**
5 | * Entity mapped to table JOKE_CACHE.
6 | */
7 | public class JokeCache {
8 |
9 | private Long id;
10 | private String result;
11 | private Integer page;
12 | private Long time;
13 |
14 | public JokeCache() {
15 | }
16 |
17 | public JokeCache(Long id) {
18 | this.id = id;
19 | }
20 |
21 | public JokeCache(Long id, String result, Integer page, Long time) {
22 | this.id = id;
23 | this.result = result;
24 | this.page = page;
25 | this.time = time;
26 | }
27 |
28 | public Long getId() {
29 | return id;
30 | }
31 |
32 | public void setId(Long id) {
33 | this.id = id;
34 | }
35 |
36 | public String getResult() {
37 | return result;
38 | }
39 |
40 | public void setResult(String result) {
41 | this.result = result;
42 | }
43 |
44 | public Integer getPage() {
45 | return page;
46 | }
47 |
48 | public void setPage(Integer page) {
49 | this.page = page;
50 | }
51 |
52 | public Long getTime() {
53 | return time;
54 | }
55 |
56 | public void setTime(Long time) {
57 | this.time = time;
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java-gen/com/socks/greendao/VideoCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.greendao;
2 |
3 | // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
4 | /**
5 | * Entity mapped to table VIDEO_CACHE.
6 | */
7 | public class VideoCache {
8 |
9 | private Long id;
10 | private String result;
11 | private Integer page;
12 | private Long time;
13 |
14 | public VideoCache() {
15 | }
16 |
17 | public VideoCache(Long id) {
18 | this.id = id;
19 | }
20 |
21 | public VideoCache(Long id, String result, Integer page, Long time) {
22 | this.id = id;
23 | this.result = result;
24 | this.page = page;
25 | this.time = time;
26 | }
27 |
28 | public Long getId() {
29 | return id;
30 | }
31 |
32 | public void setId(Long id) {
33 | this.id = id;
34 | }
35 |
36 | public String getResult() {
37 | return result;
38 | }
39 |
40 | public void setResult(String result) {
41 | this.result = result;
42 | }
43 |
44 | public Integer getPage() {
45 | return page;
46 | }
47 |
48 | public void setPage(Integer page) {
49 | this.page = page;
50 | }
51 |
52 | public Long getTime() {
53 | return time;
54 | }
55 |
56 | public void setTime(Long time) {
57 | this.time = time;
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java-gen/com/socks/greendao/SisterCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.greendao;
2 |
3 | // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
4 | /**
5 | * Entity mapped to table SISTER_CACHE.
6 | */
7 | public class SisterCache {
8 |
9 | private Long id;
10 | private String result;
11 | private Integer page;
12 | private Long time;
13 |
14 | public SisterCache() {
15 | }
16 |
17 | public SisterCache(Long id) {
18 | this.id = id;
19 | }
20 |
21 | public SisterCache(Long id, String result, Integer page, Long time) {
22 | this.id = id;
23 | this.result = result;
24 | this.page = page;
25 | this.time = time;
26 | }
27 |
28 | public Long getId() {
29 | return id;
30 | }
31 |
32 | public void setId(Long id) {
33 | this.id = id;
34 | }
35 |
36 | public String getResult() {
37 | return result;
38 | }
39 |
40 | public void setResult(String result) {
41 | this.result = result;
42 | }
43 |
44 | public Integer getPage() {
45 | return page;
46 | }
47 |
48 | public void setPage(Integer page) {
49 | this.page = page;
50 | }
51 |
52 | public Long getTime() {
53 | return time;
54 | }
55 |
56 | public void setTime(Long time) {
57 | this.time = time;
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java-gen/com/socks/greendao/PictureCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.greendao;
2 |
3 | // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
4 | /**
5 | * Entity mapped to table PICTURE_CACHE.
6 | */
7 | public class PictureCache {
8 |
9 | private Long id;
10 | private String result;
11 | private Integer page;
12 | private Long time;
13 |
14 | public PictureCache() {
15 | }
16 |
17 | public PictureCache(Long id) {
18 | this.id = id;
19 | }
20 |
21 | public PictureCache(Long id, String result, Integer page, Long time) {
22 | this.id = id;
23 | this.result = result;
24 | this.page = page;
25 | this.time = time;
26 | }
27 |
28 | public Long getId() {
29 | return id;
30 | }
31 |
32 | public void setId(Long id) {
33 | this.id = id;
34 | }
35 |
36 | public String getResult() {
37 | return result;
38 | }
39 |
40 | public void setResult(String result) {
41 | this.result = result;
42 | }
43 |
44 | public Integer getPage() {
45 | return page;
46 | }
47 |
48 | public void setPage(Integer page) {
49 | this.page = page;
50 | }
51 |
52 | public Long getTime() {
53 | return time;
54 | }
55 |
56 | public void setTime(Long time) {
57 | this.time = time;
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/RequestManager.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.android.volley.DefaultRetryPolicy;
4 | import com.android.volley.Request;
5 | import com.android.volley.RequestQueue;
6 | import com.android.volley.toolbox.Volley;
7 | import com.socks.jiandan.BuildConfig;
8 | import com.socks.jiandan.base.JDApplication;
9 | import com.socks.jiandan.utils.logger.Logger;
10 |
11 | public class RequestManager {
12 |
13 | public static final int OUT_TIME = 10000;
14 | public static final int TIMES_OF_RETRY = 1;
15 |
16 | //将Volley的网络请求实现封装为OkHttp
17 | public static RequestQueue mRequestQueue = Volley.newRequestQueue(JDApplication.getContext(), new OkHttpStack());
18 |
19 | private RequestManager() {
20 | }
21 |
22 | public static void addRequest(Request> request, Object tag) {
23 | if (tag != null) {
24 | request.setTag(tag);
25 | }
26 | //给每个请求重设超时、重试次数
27 | request.setRetryPolicy(new DefaultRetryPolicy(
28 | OUT_TIME,
29 | TIMES_OF_RETRY,
30 | DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
31 |
32 | mRequestQueue.add(request);
33 |
34 | if (BuildConfig.DEBUG) {
35 | Logger.d(request.getUrl());
36 | }
37 |
38 | }
39 |
40 | public static void cancelAll(Object tag) {
41 | mRequestQueue.cancelAll(tag);
42 | }
43 | }
--------------------------------------------------------------------------------
/app/src/main/java-gen/com/socks/greendao/FreshNewsCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.greendao;
2 |
3 | // THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
4 | /**
5 | * Entity mapped to table FRESH_NEWS_CACHE.
6 | */
7 | public class FreshNewsCache {
8 |
9 | private Long id;
10 | private String result;
11 | private Integer page;
12 | private Long time;
13 |
14 | public FreshNewsCache() {
15 | }
16 |
17 | public FreshNewsCache(Long id) {
18 | this.id = id;
19 | }
20 |
21 | public FreshNewsCache(Long id, String result, Integer page, Long time) {
22 | this.id = id;
23 | this.result = result;
24 | this.page = page;
25 | this.time = time;
26 | }
27 |
28 | public Long getId() {
29 | return id;
30 | }
31 |
32 | public void setId(Long id) {
33 | this.id = id;
34 | }
35 |
36 | public String getResult() {
37 | return result;
38 | }
39 |
40 | public void setResult(String result) {
41 | this.result = result;
42 | }
43 |
44 | public Integer getPage() {
45 | return page;
46 | }
47 |
48 | public void setPage(Integer page) {
49 | this.page = page;
50 | }
51 |
52 | public Long getTime() {
53 | return time;
54 | }
55 |
56 | public void setTime(Long time) {
57 | this.time = time;
58 | }
59 |
60 | }
61 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/Request4Vote.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.android.volley.NetworkResponse;
4 | import com.android.volley.ParseError;
5 | import com.android.volley.Request;
6 | import com.android.volley.Response;
7 | import com.android.volley.toolbox.HttpHeaderParser;
8 | import com.socks.jiandan.model.Vote;
9 |
10 | import java.io.UnsupportedEncodingException;
11 |
12 | /**
13 | * 进行投票
14 | */
15 | public class Request4Vote extends Request {
16 |
17 | private Response.Listener listener;
18 |
19 | public Request4Vote(String url, Response.Listener listener,
20 | Response.ErrorListener errorListener) {
21 | super(Method.GET, url, errorListener);
22 | this.listener = listener;
23 | }
24 |
25 | @Override
26 | protected Response parseNetworkResponse(NetworkResponse response) {
27 |
28 | try {
29 | String jsonStr = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
30 | return Response.success(Vote.getInstance(jsonStr), HttpHeaderParser.parseCacheHeaders(response));
31 | } catch (UnsupportedEncodingException e) {
32 | e.printStackTrace();
33 | return Response.error(new ParseError(e));
34 | }
35 | }
36 |
37 | @Override
38 | protected void deliverResponse(Vote response) {
39 | listener.onResponse(response);
40 | }
41 |
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/ui/SettingActivity.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.ui;
2 |
3 | import android.graphics.Color;
4 | import android.os.Bundle;
5 | import android.support.v7.widget.Toolbar;
6 | import android.view.MenuItem;
7 |
8 | import com.socks.jiandan.R;
9 | import com.socks.jiandan.base.BaseActivity;
10 |
11 | import butterknife.ButterKnife;
12 | import butterknife.InjectView;
13 |
14 | public class SettingActivity extends BaseActivity {
15 |
16 | @InjectView(R.id.toolbar)
17 | Toolbar mToolbar;
18 |
19 | @Override
20 | protected void onCreate(Bundle savedInstanceState) {
21 | super.onCreate(savedInstanceState);
22 | setContentView(R.layout.activity_setting);
23 | initView();
24 | }
25 |
26 | @Override
27 | protected void initView() {
28 | ButterKnife.inject(this);
29 | mToolbar.setTitleTextColor(Color.WHITE);
30 | setSupportActionBar(mToolbar);
31 | mToolbar.setTitle(R.string.title_activity_setting);
32 | mToolbar.setNavigationIcon(R.drawable.ic_actionbar_back);
33 | }
34 |
35 | @Override
36 | protected void initData() {
37 | }
38 |
39 | @Override
40 | public boolean onOptionsItemSelected(MenuItem item) {
41 |
42 | switch (item.getItemId()) {
43 | case android.R.id.home:
44 | finish();
45 | return true;
46 | }
47 |
48 | return super.onOptionsItemSelected(item);
49 | }
50 |
51 | }
--------------------------------------------------------------------------------
/GreenDaoGenerator/src/main/java/com/socks/MyDaoGenerator.java:
--------------------------------------------------------------------------------
1 | package com.socks;
2 |
3 | /**
4 | * Created by zhaokaiqiang on 15/5/11.
5 | */
6 |
7 | import de.greenrobot.daogenerator.DaoGenerator;
8 | import de.greenrobot.daogenerator.Entity;
9 | import de.greenrobot.daogenerator.Schema;
10 |
11 | /**
12 | * 用来为GreenDao框架生成Dao文件
13 | */
14 | public class MyDaoGenerator {
15 |
16 | //辅助文件生成的相对路径
17 | public static final String DAO_PATH = "../app/src/main/java-gen";
18 | //辅助文件的包名
19 | public static final String PACKAGE_NAME = "com.socks.greendao";
20 | //数据库的版本号
21 | public static final int DATA_VERSION_CODE = 1;
22 |
23 | public static void main(String[] args) throws Exception {
24 |
25 | Schema schema = new Schema(DATA_VERSION_CODE, PACKAGE_NAME);
26 | addCache(schema, "JokeCache");
27 | addCache(schema, "FreshNewsCache");
28 | addCache(schema, "PictureCache");
29 | addCache(schema, "SisterCache");
30 | addCache(schema, "VideoCache");
31 | //生成Dao文件路径
32 | new DaoGenerator().generateAll(schema, DAO_PATH);
33 |
34 | }
35 |
36 | /**
37 | * 添加不同的缓存表
38 | * @param schema
39 | * @param tableName
40 | */
41 | private static void addCache(Schema schema, String tableName) {
42 |
43 | Entity joke = schema.addEntity(tableName);
44 |
45 | //主键id自增长
46 | joke.addIdProperty().primaryKey().autoincrement();
47 | //请求结果
48 | joke.addStringProperty("result");
49 | //页数
50 | joke.addIntProperty("page");
51 | //插入时间,暂时无用
52 | joke.addLongProperty("time");
53 |
54 | }
55 |
56 | }
--------------------------------------------------------------------------------
/app/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.application'
2 |
3 | android {
4 | compileSdkVersion 22
5 | buildToolsVersion "22.0.0"
6 |
7 | defaultConfig {
8 | applicationId "com.socks.jiandan"
9 | minSdkVersion 14
10 | targetSdkVersion 22
11 | versionCode 2
12 | versionName "1.2"
13 | }
14 | buildTypes {
15 | release {
16 | minifyEnabled false
17 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18 | }
19 | }
20 |
21 | lintOptions {
22 | abortOnError false
23 | }
24 |
25 | sourceSets {
26 | main {
27 | java.srcDirs = ['src/main/java', 'src/main/java-gen']
28 | }
29 | }
30 | }
31 |
32 | dependencies {
33 | compile fileTree(dir: 'libs', include: ['*.jar'])
34 | compile 'com.android.support:appcompat-v7:22.2.0'
35 | compile 'com.android.support:cardview-v7:22.2.0'
36 | compile 'com.android.support:recyclerview-v7:22.2.0'
37 | compile 'com.afollestad:material-dialogs:0.7.3.1'
38 | compile 'de.greenrobot:eventbus:2.4.0'
39 | compile 'com.victor:lib:1.0.1'
40 | compile 'com.mcxiaoke.volley:library:1.0.19'
41 | compile 'com.squareup.okio:okio:1.5.0'
42 | compile 'com.squareup.okhttp:okhttp:2.5.0'
43 | compile 'com.squareup.okhttp:okhttp-urlconnection:2.5.0'
44 |
45 | debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
46 | releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/CommentNumber.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | public class CommentNumber {
4 |
5 | //用于获取评论数量
6 | public static final String URL_COMMENT_COUNTS = "http://jandan.duoshuo.com/api/threads/counts.json?threads=";
7 | public static final String COMMENTS = "comments";
8 |
9 | public static final String THREAD_ID = "thread_id";
10 | public static final String THREAD_KEY = "thread_key";
11 |
12 | private int comments;
13 | private String thread_id;
14 | private String thread_key;
15 |
16 | public CommentNumber() {
17 | }
18 |
19 | public CommentNumber(String thread_id, String thread_key, int comments) {
20 | this.thread_id = thread_id;
21 | this.thread_key = thread_key;
22 | this.comments = comments;
23 | }
24 |
25 | public String getThread_id() {
26 | return thread_id;
27 | }
28 |
29 | public void setThread_id(String thread_id) {
30 | this.thread_id = thread_id;
31 | }
32 |
33 | public String getThread_key() {
34 | return thread_key;
35 | }
36 |
37 | public void setThread_key(String thread_key) {
38 | this.thread_key = thread_key;
39 | }
40 |
41 |
42 | public static String getCommentCountsURL(String params) {
43 | return URL_COMMENT_COUNTS + params;
44 | }
45 |
46 | public int getComments() {
47 | return comments;
48 | }
49 |
50 | public void setComments(int comments) {
51 | this.comments = comments;
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/EditTextShakeHelper.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014, 青岛司通科技有限公司 All rights reserved.
3 | * File Name:EditTextShakeHelper.java
4 | * Version:V1.0
5 | * Author:zhaokaiqiang
6 | * Date:2014-11-21
7 | */
8 |
9 | package com.socks.jiandan.utils;
10 |
11 | import android.app.Service;
12 | import android.content.Context;
13 | import android.os.Vibrator;
14 | import android.view.animation.Animation;
15 | import android.view.animation.CycleInterpolator;
16 | import android.view.animation.TranslateAnimation;
17 | import android.widget.EditText;
18 |
19 | public class EditTextShakeHelper {
20 |
21 | // 震动动画
22 | private Animation shakeAnimation;
23 | // 插值器
24 | private CycleInterpolator cycleInterpolator;
25 | // 振动器
26 | private Vibrator shakeVibrator;
27 |
28 | public EditTextShakeHelper(Context context) {
29 |
30 | // 初始化振动器
31 | shakeVibrator = (Vibrator) context
32 | .getSystemService(Service.VIBRATOR_SERVICE);
33 | // 初始化震动动画
34 | shakeAnimation = new TranslateAnimation(0, 10, 0, 0);
35 | shakeAnimation.setDuration(300);
36 | cycleInterpolator = new CycleInterpolator(8);
37 | shakeAnimation.setInterpolator(cycleInterpolator);
38 |
39 | }
40 |
41 | public void shake(EditText... editTexts) {
42 | for (EditText editText : editTexts) {
43 | editText.startAnimation(shakeAnimation);
44 | }
45 |
46 | shakeVibrator.vibrate(new long[]{0, 500}, -1);
47 |
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/Vote.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | public class Vote {
4 |
5 | public static final String URL_VOTE = "http://jandan.net/index" +
6 | ".php?acv_ajax=true&option=%s&ID=%s";
7 |
8 | public static final String XX = "0";
9 | public static final String OO = "1";
10 |
11 | public static final String RESULT_XX_SUCCESS = "-1";
12 | public static final String RESULT_OO_SUCCESS = "1";
13 | public static final String RESULT_HAVE_VOTED = "0";
14 |
15 | private String result;
16 | private String message;
17 |
18 | public Vote() {
19 | }
20 |
21 | public Vote(String result, String message) {
22 | this.result = result;
23 | this.message = message;
24 | }
25 |
26 | public static String getXXUrl(String id) {
27 | return String.format(URL_VOTE, XX, id);
28 | }
29 |
30 | public static String getOOUrl(String id) {
31 | return String.format(URL_VOTE, OO, id);
32 | }
33 |
34 | public static Vote getInstance(String response) {
35 | String[] results = response.split("\\|");
36 | return new Vote(results[2], results[1]);
37 | }
38 |
39 | public String getResult() {
40 | return result;
41 | }
42 |
43 | public void setResult(String result) {
44 | this.result = result;
45 | }
46 |
47 | public String getMessage() {
48 | return message;
49 | }
50 |
51 | public void setMessage(String message) {
52 | this.message = message;
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/TextUtil.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import android.app.Activity;
4 | import android.content.ClipData;
5 | import android.content.ClipboardManager;
6 | import android.content.Context;
7 |
8 | import com.socks.jiandan.base.ConstantString;
9 |
10 | import java.util.regex.Matcher;
11 | import java.util.regex.Pattern;
12 |
13 | public class TextUtil {
14 |
15 | public static final String REG_EMAIL = "\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";
16 |
17 |
18 | public static boolean isEmail(String email) {
19 | Pattern p = Pattern.compile(REG_EMAIL);
20 | Matcher m = p.matcher(email);
21 | return m.matches();
22 | }
23 |
24 |
25 | /**
26 | * 判断是否为null、空字符串或者是"null"
27 | *
28 | * @param str
29 | * @return
30 | */
31 | public static boolean isNull(CharSequence... str) {
32 |
33 | for (CharSequence cha : str) {
34 | if (cha == null || cha.length() == 0 || cha.equals("null")) {
35 | return true;
36 | } else {
37 | return false;
38 | }
39 | }
40 |
41 | return true;
42 | }
43 |
44 | public static void copy(Activity activity, String copyText) {
45 | ClipboardManager clip = (ClipboardManager)
46 | activity.getSystemService(Context
47 | .CLIPBOARD_SERVICE);
48 | clip.setPrimaryClip(ClipData.newPlainText
49 | (null, copyText));
50 | ShowToast.Short(ConstantString.COPY_SUCCESS);
51 | }
52 |
53 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/MenuItem.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | import android.support.v4.app.Fragment;
4 |
5 | public class MenuItem {
6 |
7 | public enum FragmentType {
8 | FreshNews, BoringPicture, Sister, Joke, Video
9 | }
10 |
11 | private String title;
12 | private int resourceId;
13 | private FragmentType type;
14 | private Class extends Fragment> fragment;
15 |
16 | public String getTitle() {
17 | return title;
18 | }
19 |
20 | public void setTitle(String title) {
21 | this.title = title;
22 | }
23 |
24 | public int getResourceId() {
25 | return resourceId;
26 | }
27 |
28 | public Class extends Fragment> getFragment() {
29 | return fragment;
30 | }
31 |
32 | public void setFragment(Class extends Fragment> fragment) {
33 | this.fragment = fragment;
34 | }
35 |
36 |
37 | public FragmentType getType() {
38 | return type;
39 | }
40 |
41 | public void setType(FragmentType type) {
42 | this.type = type;
43 | }
44 |
45 | public MenuItem() {
46 | }
47 |
48 | public MenuItem(String title, int resourceId, Class extends Fragment> fragment) {
49 | this.resourceId = resourceId;
50 | this.title = title;
51 | this.fragment = fragment;
52 | }
53 |
54 | public MenuItem(String title, int resourceId, FragmentType type, Class extends Fragment> fragment) {
55 | this.title = title;
56 | this.resourceId = resourceId;
57 | this.type = type;
58 | this.fragment = fragment;
59 | }
60 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/Request4Joke.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.android.volley.NetworkResponse;
4 | import com.android.volley.ParseError;
5 | import com.android.volley.Request;
6 | import com.android.volley.Response;
7 | import com.android.volley.toolbox.HttpHeaderParser;
8 | import com.google.gson.reflect.TypeToken;
9 | import com.socks.jiandan.model.Joke;
10 |
11 | import org.json.JSONObject;
12 |
13 | import java.util.ArrayList;
14 |
15 | /**
16 | * 段子数据请求器
17 | */
18 | public class Request4Joke extends Request> {
19 |
20 | private Response.Listener> mListener;
21 |
22 | public Request4Joke(String url, Response.Listener> listener,
23 | Response.ErrorListener errorListener) {
24 | super(Method.GET, url, errorListener);
25 | this.mListener = listener;
26 | }
27 |
28 | @Override
29 | protected Response> parseNetworkResponse(NetworkResponse response) {
30 |
31 | try {
32 | String jsonStr = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
33 | jsonStr = new JSONObject(jsonStr).getJSONArray("comments").toString();
34 |
35 | return Response.success((ArrayList) JSONParser.toObject(jsonStr,
36 | new TypeToken>() {
37 | }.getType()), HttpHeaderParser.parseCacheHeaders(response));
38 |
39 | } catch (Exception e) {
40 | e.printStackTrace();
41 | return Response.error(new ParseError(e));
42 | }
43 | }
44 |
45 | @Override
46 | protected void deliverResponse(ArrayList response) {
47 | mListener.onResponse(response);
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/Request4FreshNews.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.android.volley.NetworkResponse;
4 | import com.android.volley.ParseError;
5 | import com.android.volley.Request;
6 | import com.android.volley.Response;
7 | import com.android.volley.toolbox.HttpHeaderParser;
8 | import com.socks.jiandan.model.FreshNews;
9 |
10 | import org.json.JSONArray;
11 | import org.json.JSONObject;
12 |
13 | import java.util.ArrayList;
14 |
15 | /**
16 | * 新鲜事
17 | * Created by zhaokaiqiang on 15/4/8.
18 | */
19 | public class Request4FreshNews extends Request> {
20 |
21 | private Response.Listener> listener;
22 |
23 | public Request4FreshNews(String url, Response.Listener> listener,
24 | Response.ErrorListener errorListener) {
25 | super(Method.GET, url, errorListener);
26 | this.listener = listener;
27 | }
28 |
29 | @Override
30 | protected Response> parseNetworkResponse(NetworkResponse response) {
31 |
32 | try {
33 | String resultStr = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
34 | JSONObject resultObj = new JSONObject(resultStr);
35 | JSONArray postsArray = resultObj.optJSONArray("posts");
36 | return Response.success(FreshNews.parse(postsArray), HttpHeaderParser.parseCacheHeaders(response));
37 | } catch (Exception e) {
38 | e.printStackTrace();
39 | return Response.error(new ParseError(e));
40 | }
41 | }
42 |
43 | @Override
44 | protected void deliverResponse(ArrayList response) {
45 | listener.onResponse(response);
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/String2TimeUtil.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import java.text.SimpleDateFormat;
4 | import java.util.Date;
5 | import java.util.TimeZone;
6 |
7 | /**
8 | * 用于将String转化为时间
9 | * Created by zhaokaiqiang on 15/4/9.
10 | */
11 | public class String2TimeUtil {
12 |
13 | /**
14 | * 转换日期格式到用户体验好的时间格式
15 | * @param time 2015-04-11 12:45:06
16 | * @return
17 | */
18 | public static String dateString2GoodExperienceFormat(String time) {
19 | if (isNullString(time)) {
20 | return "";
21 | } else {
22 | SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
23 | simpleDateFormat.setTimeZone(TimeZone.getTimeZone("GMT+08"));
24 | try {
25 | String timeString;
26 | Date parse = simpleDateFormat.parse(time);
27 | long distanceTime = new Date().getTime() - parse.getTime();
28 | if (distanceTime < 0L) {
29 | timeString = "0 mins ago";
30 | } else {
31 | long n2 = distanceTime / 60000L;
32 | new SimpleDateFormat("HH:mm");
33 | SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("MM-dd");
34 | if (n2 < 60L) {
35 | timeString = String.valueOf(n2) + " mins ago";
36 | } else if (n2 < 720L) {
37 | timeString = String.valueOf(n2 / 60L) + " hours ago";
38 | } else {
39 | timeString = simpleDateFormat2.format(parse);
40 | }
41 | }
42 | return timeString;
43 | } catch (Exception ex) {
44 | ex.printStackTrace();
45 | return "";
46 | }
47 | }
48 | }
49 |
50 | public static boolean isNullString(String s) {
51 | return s == null || s.equals("") || s.equals("null");
52 | }
53 |
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/JDMediaScannerConnectionClient.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.utils;
2 |
3 | import android.media.MediaScannerConnection;
4 | import android.net.Uri;
5 | import android.os.Looper;
6 |
7 | import com.socks.jiandan.base.ConstantString;
8 |
9 | import java.io.File;
10 |
11 | /**
12 | * 用于保存图片后刷新图片媒体库
13 | */
14 | public class JDMediaScannerConnectionClient implements MediaScannerConnection
15 | .MediaScannerConnectionClient {
16 |
17 | private boolean isSmallPic;
18 | private File newFile;
19 | private MediaScannerConnection mediaScannerConnection;
20 |
21 | public JDMediaScannerConnectionClient(boolean isSmallPic, File newFile) {
22 | this.isSmallPic = isSmallPic;
23 | this.newFile = newFile;
24 | }
25 |
26 | public void setMediaScannerConnection(MediaScannerConnection mediaScannerConnection) {
27 | this.mediaScannerConnection = mediaScannerConnection;
28 | }
29 |
30 | @Override
31 | public void onMediaScannerConnected() {
32 | mediaScannerConnection.scanFile(newFile.getAbsolutePath(),null);
33 | }
34 |
35 | @Override
36 | public void onScanCompleted(String path, Uri uri) {
37 | Looper.prepare();
38 | if (isSmallPic) {
39 | ShowToast.Short(ConstantString.SAVE_SMALL_SUCCESS + " \n相册" + File.separator + CacheUtil
40 | .FILE_SAVE + File.separator + newFile.getName());
41 | } else {
42 | ShowToast.Short(ConstantString.SAVE_SUCCESS + " \n相册" + File.separator + CacheUtil
43 | .FILE_SAVE + File.separator + newFile.getName());
44 | }
45 | Looper.loop();
46 | }
47 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/utils/ActivityManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2014, 青岛司通科技有限公司 All rights reserved.
3 | * File Name:AppManager.java
4 | * Version:V1.0
5 | * Author:zhaokaiqiang
6 | * Date:2014-8-6
7 | */
8 | package com.socks.jiandan.utils;
9 |
10 | import android.app.Activity;
11 |
12 | import java.util.Stack;
13 |
14 | /**
15 | * @author zhaokaiqiang
16 | * 应用程序Activity管理类:用于Activity管理和应用程序退出
17 | * @date 2014-8-6 下午6:04:25
18 | */
19 | public class ActivityManager {
20 |
21 | private static Stack activityStack;
22 | private static ActivityManager instance;
23 |
24 | private ActivityManager() {}
25 |
26 | public static ActivityManager getAppManager() {
27 | if (instance == null) {
28 | instance = new ActivityManager();
29 | }
30 | return instance;
31 | }
32 |
33 | public void addActivity(Activity activity) {
34 | if (activityStack == null) {
35 | activityStack = new Stack<>();
36 | }
37 | activityStack.add(activity);
38 | }
39 |
40 | public void finishActivity(Activity activity) {
41 | if (activity != null) {
42 | activityStack.remove(activity);
43 | activity = null;
44 | }
45 | }
46 |
47 | public void finishAllActivityAndExit() {
48 | if (null != activityStack) {
49 | for (int i = 0, size = activityStack.size(); i < size; i++) {
50 | if (null != activityStack.get(i)) {
51 | activityStack.get(i).finish();
52 | }
53 | }
54 | activityStack.clear();
55 | System.exit(0);
56 | }
57 | }
58 |
59 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/JSONParser.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.google.gson.Gson;
4 | import com.google.gson.JsonSyntaxException;
5 |
6 | import java.lang.reflect.Type;
7 |
8 | public class JSONParser {
9 |
10 | protected static Gson gson = new Gson();
11 |
12 | public static String toString(Object obj) {
13 | return gson.toJson(obj);
14 | }
15 |
16 | /**
17 | * @param type 类型反射(Class>)或反射令牌(TypeToken)
18 | * @return Object
19 | * @throws
20 | * @Description: 将标准JSON字符串反序列化为对象
21 | */
22 | public static Object toObject(String jsonString, Object type) {
23 | jsonString = jsonString.replace(" ", "");
24 | jsonString = jsonString.replace("﹠nbsp", "");
25 | jsonString = jsonString.replace("nbsp", "");
26 | jsonString = jsonString.replace("&", "");
27 | jsonString = jsonString.replace("&", "");
28 | jsonString = jsonString.replace("amp", "");
29 | if (type instanceof Type) {
30 | try {
31 | return gson.fromJson(jsonString, (Type) type);
32 | } catch (JsonSyntaxException e) {
33 | e.printStackTrace();
34 | return null;
35 | }
36 | } else if (type instanceof Class>) {
37 | try {
38 | return gson.fromJson(jsonString, (Class>) type);
39 | } catch (JsonSyntaxException e) {
40 | e.printStackTrace();
41 | return null;
42 | }
43 | } else {
44 | throw new RuntimeException("只能是Class>或者通过TypeToken获取的Type类型");
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/Request4FreshNewsDetail.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.android.volley.NetworkResponse;
4 | import com.android.volley.ParseError;
5 | import com.android.volley.Request;
6 | import com.android.volley.Response;
7 | import com.android.volley.toolbox.HttpHeaderParser;
8 |
9 | import org.json.JSONObject;
10 |
11 | /**
12 | * 段子数据请求器
13 | * Created by zhaokaiqiang on 15/4/8.
14 | */
15 | public class Request4FreshNewsDetail extends Request {
16 |
17 | private Response.Listener listener;
18 |
19 | public Request4FreshNewsDetail(String url, Response.Listener listener,
20 | Response.ErrorListener errorListener) {
21 | super(Method.GET, url, errorListener);
22 | this.listener = listener;
23 | }
24 |
25 | @Override
26 | protected Response parseNetworkResponse(NetworkResponse response) {
27 |
28 | try {
29 | String resultStr = new String(response.data, HttpHeaderParser.parseCharset(response
30 | .headers));
31 | JSONObject jsonObject = new JSONObject(resultStr);
32 |
33 | if (jsonObject.opt("status").equals("ok")) {
34 | JSONObject contentObject = jsonObject.optJSONObject("post");
35 | return Response.success(contentObject.optString("content"), HttpHeaderParser.parseCacheHeaders
36 | (response));
37 | } else {
38 | return Response.success("error", HttpHeaderParser.parseCacheHeaders(response));
39 | }
40 |
41 | } catch (Exception e) {
42 | e.printStackTrace();
43 | return Response.error(new ParseError(e));
44 | }
45 | }
46 |
47 | @Override
48 | protected void deliverResponse(String response) {
49 | listener.onResponse(response);
50 | }
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/net/Request4Picture.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.net;
2 |
3 | import com.android.volley.NetworkResponse;
4 | import com.android.volley.ParseError;
5 | import com.android.volley.Request;
6 | import com.android.volley.Response;
7 | import com.android.volley.toolbox.HttpHeaderParser;
8 | import com.google.gson.reflect.TypeToken;
9 | import com.socks.jiandan.model.Picture;
10 |
11 | import org.json.JSONObject;
12 |
13 | import java.util.ArrayList;
14 |
15 | /**
16 | * 无聊图数据请求器
17 | */
18 | public class Request4Picture extends Request> {
19 |
20 | private Response.Listener> listener;
21 |
22 | public Request4Picture(String url, Response.Listener> listener,
23 | Response.ErrorListener errorListener) {
24 | super(Method.GET, url, errorListener);
25 | this.listener = listener;
26 | }
27 |
28 | @Override
29 | protected Response> parseNetworkResponse(NetworkResponse response) {
30 |
31 | try {
32 | String jsonStr = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
33 | jsonStr = new JSONObject(jsonStr).getJSONArray("comments").toString();
34 |
35 | ArrayList pictures = (ArrayList) JSONParser.toObject(jsonStr,
36 | new TypeToken>() {
37 | }.getType());
38 | return Response.success(pictures, HttpHeaderParser.parseCacheHeaders(response));
39 | } catch (Exception e) {
40 | e.printStackTrace();
41 | return Response.error(new ParseError(e));
42 | }
43 | }
44 |
45 | @Override
46 | protected void deliverResponse(ArrayList response) {
47 | listener.onResponse(response);
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_push_comment.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
16 |
17 |
23 |
24 |
29 |
30 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/Author.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | import org.json.JSONObject;
4 |
5 | import java.io.Serializable;
6 |
7 | public class Author implements Serializable {
8 |
9 | public String id;
10 | public String slug;
11 | public String name;
12 | public String first_name;
13 | public String last_name;
14 | public String nickname;
15 | public String url;
16 | public String description;
17 |
18 | public static Author parse(final JSONObject jsonObject) {
19 | Author author;
20 | if (jsonObject == null) {
21 | author = null;
22 | } else {
23 | author = new Author();
24 | author.id = jsonObject.optString("id");
25 | author.slug = jsonObject.optString("slug");
26 | author.name = jsonObject.optString("name");
27 | author.first_name = jsonObject.optString("first_name");
28 | author.last_name = jsonObject.optString("last_name");
29 | author.nickname = jsonObject.optString("nickname");
30 | author.url = jsonObject.optString("url");
31 | author.description = jsonObject.optString("description");
32 | }
33 | return author;
34 | }
35 |
36 | public String getId() {
37 | return id;
38 | }
39 |
40 | public void setId(String id) {
41 | this.id = id;
42 | }
43 |
44 | public String getName() {
45 | return name;
46 | }
47 |
48 | public void setName(String name) {
49 | this.name = name;
50 | }
51 |
52 | public String getUrl() {
53 | return url;
54 | }
55 |
56 | public void setUrl(String url) {
57 | this.url = url;
58 | }
59 |
60 | public String getDescription() {
61 | return description;
62 | }
63 |
64 | public void setDescription(String description) {
65 | this.description = description;
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/Tags.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | import org.json.JSONArray;
4 | import org.json.JSONObject;
5 |
6 | import java.io.Serializable;
7 |
8 | /**
9 | * 新鲜事中的自定义字段
10 | */
11 | public class Tags implements Serializable {
12 |
13 | private int id;
14 | private String title;
15 | private String description;
16 |
17 | public static Tags parse(final JSONArray jsonArray) {
18 | Tags tags;
19 | if (jsonArray == null) {
20 | tags = null;
21 | } else {
22 | tags = new Tags();
23 | JSONObject optJSONObject = jsonArray.optJSONObject(0);
24 | if (optJSONObject != null) {
25 | tags.id = optJSONObject.optInt("id");
26 | tags.title = optJSONObject.optString("title");
27 | tags.description = optJSONObject.optString("description");
28 | }
29 | }
30 | return tags;
31 | }
32 |
33 | public static Tags parseCache(final JSONObject jsonObject) {
34 | Tags tags;
35 | if (jsonObject == null) {
36 | tags = null;
37 | } else {
38 | tags = new Tags();
39 | tags.id = jsonObject.optInt("id");
40 | tags.title = jsonObject.optString("title");
41 | tags.description = jsonObject.optString("description");
42 | }
43 | return tags;
44 | }
45 |
46 | public int getId() {
47 | return id;
48 | }
49 |
50 | public void setId(int id) {
51 | this.id = id;
52 | }
53 |
54 | public String getTitle() {
55 | return title;
56 | }
57 |
58 | public void setTitle(String title) {
59 | this.title = title;
60 | }
61 |
62 | public String getDescription() {
63 | return description;
64 | }
65 |
66 | public void setDescription(String description) {
67 | this.description = description;
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/GreenDaoGenerator/GreenDaoGenerator.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/cache/SisterCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.cache;
2 |
3 | import android.content.Context;
4 |
5 | import com.google.gson.reflect.TypeToken;
6 | import com.socks.greendao.SisterCacheDao;
7 | import com.socks.jiandan.base.JDApplication;
8 | import com.socks.jiandan.model.Picture;
9 | import com.socks.jiandan.net.JSONParser;
10 |
11 | import java.util.ArrayList;
12 |
13 | import de.greenrobot.dao.query.QueryBuilder;
14 |
15 | public class SisterCache extends BaseCache {
16 |
17 | private static SisterCache instance;
18 | private static SisterCacheDao mPictureCacheDao;
19 |
20 | private SisterCache() {
21 | }
22 |
23 | public static SisterCache getInstance(Context context) {
24 |
25 | if (instance == null) {
26 |
27 | synchronized (SisterCache.class) {
28 | if (instance == null) {
29 | instance = new SisterCache();
30 | }
31 | }
32 |
33 | mDaoSession = JDApplication.getDaoSession(context);
34 | mPictureCacheDao = mDaoSession.getSisterCacheDao();
35 | }
36 | return instance;
37 | }
38 |
39 | public void clearAllCache() {
40 | mPictureCacheDao.deleteAll();
41 | }
42 |
43 | @Override
44 | public ArrayList getCacheByPage(int page) {
45 |
46 | QueryBuilder query = mPictureCacheDao.queryBuilder().where(SisterCacheDao
47 | .Properties.Page.eq(Integer.toString(page)));
48 |
49 | if (query.list().size() > 0) {
50 | return (ArrayList) JSONParser.toObject(query.list().get(0).getResult(),
51 | new TypeToken>() {
52 | }.getType());
53 | } else {
54 | return new ArrayList<>();
55 | }
56 |
57 | }
58 |
59 | @Override
60 | public void addResultCache(String result, int page) {
61 | com.socks.greendao.SisterCache pictureCache = new com.socks.greendao.SisterCache();
62 | pictureCache.setResult(result);
63 | pictureCache.setPage(page);
64 | pictureCache.setTime(System.currentTimeMillis());
65 |
66 | mPictureCacheDao.insert(pictureCache);
67 | }
68 |
69 | }
70 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/Joke.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | import java.io.Serializable;
4 |
5 | public class Joke implements Serializable {
6 |
7 | public static final String URL_JOKE = "http://jandan.net/?oxwlxojflwblxbsapi=jandan" +
8 | ".get_duan_comments&page=";
9 |
10 | private String comment_ID;
11 | private String comment_post_ID;
12 | private String comment_author;
13 | private String comment_author_email;
14 | private String comment_author_url;
15 | private String comment_author_IP;
16 | private String comment_date;
17 | private String comment_date_gmt;
18 | private String comment_content;
19 | private String text_content;
20 | private String comment_agent;
21 | private String vote_positive;
22 | private String vote_negative;
23 | //评论数量,需要单独获取
24 | private String comment_counts;
25 |
26 | public Joke() {
27 | }
28 |
29 | public static String getRequestUrl(int page) {
30 | return URL_JOKE + page;
31 | }
32 |
33 | public String getComment_ID() {
34 | return comment_ID;
35 | }
36 |
37 | public String getComment_author() {
38 | return comment_author;
39 | }
40 |
41 | public String getComment_date() {
42 | return comment_date;
43 | }
44 |
45 | public String getComment_content() {
46 | return comment_content;
47 | }
48 |
49 | public String getVote_positive() {
50 | return vote_positive;
51 | }
52 |
53 | public void setVote_positive(String vote_positive) {
54 | this.vote_positive = vote_positive;
55 | }
56 |
57 | public String getVote_negative() {
58 | return vote_negative;
59 | }
60 |
61 | public void setVote_negative(String vote_negative) {
62 | this.vote_negative = vote_negative;
63 | }
64 |
65 | public String getComment_counts() {
66 | return comment_counts;
67 | }
68 |
69 | public void setComment_counts(String comment_counts) {
70 | this.comment_counts = comment_counts;
71 | }
72 |
73 | }
74 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/model/Picture.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.model;
2 |
3 | import java.io.Serializable;
4 |
5 | public class Picture implements Serializable {
6 |
7 | public static final String URL_BORING_PICTURE = "http://jandan.net/?oxwlxojflwblxbsapi=jandan.get_pic_comments&page=";
8 | public static final String URL_SISTER = "http://jandan.net/?oxwlxojflwblxbsapi=jandan.get_ooxx_comments&page=";
9 |
10 | public enum PictureType {
11 | BoringPicture, Sister
12 | }
13 |
14 | private String comment_ID;
15 | private String comment_author;
16 | private String comment_date;
17 | private String text_content;
18 | private String vote_positive;
19 | private String vote_negative;
20 | private String[] pics;
21 | //评论数量,需要单独获取
22 | private String comment_counts;
23 |
24 | public Picture() {
25 | }
26 |
27 | public static String getRequestUrl(PictureType type, int page) {
28 |
29 | switch (type) {
30 | case BoringPicture:
31 | return URL_BORING_PICTURE + page;
32 | case Sister:
33 | return URL_SISTER + page;
34 | default:
35 | return "";
36 | }
37 | }
38 |
39 | public String getComment_ID() {
40 | return comment_ID;
41 | }
42 |
43 | public String getComment_author() {
44 | return comment_author;
45 | }
46 |
47 | public String getComment_date() {
48 | return comment_date;
49 | }
50 |
51 | public String getText_content() {
52 | return text_content;
53 | }
54 |
55 | public String getVote_positive() {
56 | return vote_positive;
57 | }
58 |
59 | public String getVote_negative() {
60 | return vote_negative;
61 | }
62 |
63 | public String getComment_counts() {
64 | return comment_counts;
65 | }
66 |
67 | public void setComment_counts(String comment_counts) {
68 | this.comment_counts = comment_counts;
69 | }
70 |
71 | public String[] getPics() {
72 | return pics;
73 | }
74 |
75 | }
76 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_drawer.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
12 |
13 |
17 |
18 |
25 |
26 |
35 |
36 |
37 |
38 |
39 |
46 |
47 |
52 |
53 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/cache/JokeCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.cache;
2 |
3 | import android.content.Context;
4 |
5 | import com.google.gson.reflect.TypeToken;
6 | import com.socks.greendao.JokeCacheDao;
7 | import com.socks.jiandan.base.JDApplication;
8 | import com.socks.jiandan.model.Joke;
9 | import com.socks.jiandan.net.JSONParser;
10 |
11 | import java.util.ArrayList;
12 |
13 | import de.greenrobot.dao.query.QueryBuilder;
14 |
15 | public class JokeCache extends BaseCache {
16 |
17 | private static JokeCache instance;
18 | private static JokeCacheDao mJokeCacheDao;
19 |
20 | private JokeCache() {
21 | }
22 |
23 | public static JokeCache getInstance(Context context) {
24 |
25 | if (instance == null) {
26 |
27 | synchronized (JokeCache.class) {
28 | if (instance == null) {
29 | instance = new JokeCache();
30 | }
31 | }
32 |
33 | mDaoSession = JDApplication.getDaoSession(context);
34 | mJokeCacheDao = mDaoSession.getJokeCacheDao();
35 | }
36 | return instance;
37 | }
38 |
39 | public void clearAllCache() {
40 | mJokeCacheDao.deleteAll();
41 | }
42 |
43 |
44 | @Override
45 | public ArrayList getCacheByPage(int page) {
46 | QueryBuilder query = mJokeCacheDao.queryBuilder().where(JokeCacheDao.Properties.Page.eq("" + page));
47 |
48 | if (query.list().size() > 0) {
49 | return (ArrayList) JSONParser.toObject(query.list().get(0).getResult(),
50 | new TypeToken>() {
51 | }.getType());
52 | } else {
53 | return new ArrayList<>();
54 | }
55 |
56 | }
57 |
58 | @Override
59 | public void addResultCache(String result, int page) {
60 | com.socks.greendao.JokeCache jokeCache = new com.socks.greendao.JokeCache();
61 | jokeCache.setResult(result);
62 | jokeCache.setPage(page);
63 | jokeCache.setTime(System.currentTimeMillis());
64 |
65 | mJokeCacheDao.insert(jokeCache);
66 | }
67 |
68 | }
69 |
--------------------------------------------------------------------------------
/app/src/main/java/com/socks/jiandan/cache/VideoCache.java:
--------------------------------------------------------------------------------
1 | package com.socks.jiandan.cache;
2 |
3 | import android.content.Context;
4 |
5 | import com.google.gson.reflect.TypeToken;
6 | import com.socks.greendao.VideoCacheDao;
7 | import com.socks.jiandan.base.JDApplication;
8 | import com.socks.jiandan.model.Video;
9 | import com.socks.jiandan.net.JSONParser;
10 |
11 | import java.util.ArrayList;
12 |
13 | import de.greenrobot.dao.query.QueryBuilder;
14 |
15 | public class VideoCache extends BaseCache {
16 |
17 | private static VideoCache instance;
18 | private static VideoCacheDao mVideoCacheDao;
19 |
20 | private VideoCache() {
21 | }
22 |
23 | public static VideoCache getInstance(Context context) {
24 |
25 | if (instance == null) {
26 |
27 | synchronized (VideoCache.class) {
28 | if (instance == null) {
29 | instance = new VideoCache();
30 | }
31 | }
32 |
33 | mDaoSession = JDApplication.getDaoSession(context);
34 | mVideoCacheDao = mDaoSession.getVideoCacheDao();
35 | }
36 | return instance;
37 | }
38 |
39 | public void clearAllCache() {
40 | mVideoCacheDao.deleteAll();
41 | }
42 |
43 | @Override
44 | public ArrayList