├── .gitignore
├── .idea
├── codeStyleSettings.xml
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── dictionaries
│ ├── Rae.xml
│ ├── YM.xml
│ └── qq798.xml
├── encodings.xml
├── gradle.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── CHANGES.md
├── README.md
├── app
├── .gitignore
├── build.gradle
├── channel
├── config.json
├── debug.keystore
├── libs
│ ├── SocialSDK_QQ_Simplify.jar
│ ├── SocialSDK_Sina_Simplify.jar
│ ├── SocialSDK_WeChat_Simplify.jar
│ ├── umeng_social_api.jar
│ ├── umeng_social_net.jar
│ └── umeng_social_tool.jar
├── proguard-rules.pro
├── src
│ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── rae
│ │ │ └── cnblogs
│ │ │ ├── CacheTest.java
│ │ │ ├── ExampleInstrumentedTest.java
│ │ │ └── RaeTest.java
│ ├── debug
│ │ ├── AndroidManifest.xml
│ │ └── res
│ │ │ └── values
│ │ │ └── strings.xml
│ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ │ ├── css
│ │ │ │ ├── blog-common.css
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ ├── bootstrap-theme.min.css
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ ├── rae-common.css
│ │ │ │ ├── rae-night.css
│ │ │ │ ├── rae.css
│ │ │ │ ├── shCore.css
│ │ │ │ ├── shCoreDefault.css
│ │ │ │ ├── shThemeDefault.css
│ │ │ │ └── shThemeRDark.css
│ │ │ ├── fonts
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ ├── js
│ │ │ │ ├── blog-common.js
│ │ │ │ ├── bootstrap.min.js
│ │ │ │ ├── clipboard.min.js
│ │ │ │ ├── encode.js
│ │ │ │ ├── highlight.min.js
│ │ │ │ ├── highlighter
│ │ │ │ │ ├── shAutoloader.js
│ │ │ │ │ ├── shBrushAS3.js
│ │ │ │ │ ├── shBrushAppleScript.js
│ │ │ │ │ ├── shBrushBash.js
│ │ │ │ │ ├── shBrushCSharp.js
│ │ │ │ │ ├── shBrushColdFusion.js
│ │ │ │ │ ├── shBrushCpp.js
│ │ │ │ │ ├── shBrushCss.js
│ │ │ │ │ ├── shBrushDelphi.js
│ │ │ │ │ ├── shBrushDiff.js
│ │ │ │ │ ├── shBrushErlang.js
│ │ │ │ │ ├── shBrushGroovy.js
│ │ │ │ │ ├── shBrushJScript.js
│ │ │ │ │ ├── shBrushJava.js
│ │ │ │ │ ├── shBrushJavaFX.js
│ │ │ │ │ ├── shBrushPerl.js
│ │ │ │ │ ├── shBrushPhp.js
│ │ │ │ │ ├── shBrushPlain.js
│ │ │ │ │ ├── shBrushPowerShell.js
│ │ │ │ │ ├── shBrushPython.js
│ │ │ │ │ ├── shBrushRuby.js
│ │ │ │ │ ├── shBrushSass.js
│ │ │ │ │ ├── shBrushScala.js
│ │ │ │ │ ├── shBrushSql.js
│ │ │ │ │ ├── shBrushVb.js
│ │ │ │ │ ├── shBrushXml.js
│ │ │ │ │ ├── shCore.js
│ │ │ │ │ └── shLegacy.js
│ │ │ │ ├── jquery.js
│ │ │ │ ├── rae-login.js
│ │ │ │ └── rae.js
│ │ │ ├── test.html
│ │ │ └── view.html
│ │ ├── ic_launcher-web.png
│ │ ├── java
│ │ │ ├── android
│ │ │ │ └── support
│ │ │ │ │ └── design
│ │ │ │ │ └── widget
│ │ │ │ │ ├── DesignTabLayout.java
│ │ │ │ │ └── RaeSkinDesignTabLayout.java
│ │ │ └── com
│ │ │ │ └── rae
│ │ │ │ └── cnblogs
│ │ │ │ ├── AppConstant.java
│ │ │ │ ├── AppDataManager.java
│ │ │ │ ├── AppMobclickAgent.java
│ │ │ │ ├── AppRoute.java
│ │ │ │ ├── AppStatusBar.java
│ │ │ │ ├── AppUI.java
│ │ │ │ ├── CnblogsApplication.java
│ │ │ │ ├── CnblogsApplicationProxy.java
│ │ │ │ ├── CnblogsGlideModule.java
│ │ │ │ ├── CnblogsLayoutInflater.java
│ │ │ │ ├── IPageView.java
│ │ │ │ ├── PageObservable.java
│ │ │ │ ├── RaeAnim.java
│ │ │ │ ├── RaeImageLoader.java
│ │ │ │ ├── RaeViewCompat.java
│ │ │ │ ├── RxObservable.java
│ │ │ │ ├── SkinActivityLifecycleCompat.java
│ │ │ │ ├── ThemeCompat.java
│ │ │ │ ├── activity
│ │ │ │ ├── AboutMeActivity.java
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── BaseFragmentActivity.java
│ │ │ │ ├── BlogContentActivity.java
│ │ │ │ ├── BloggerActivity.java
│ │ │ │ ├── BookmarkActivity.java
│ │ │ │ ├── CategoryActivity.java
│ │ │ │ ├── CommentActivity.java
│ │ │ │ ├── FavoritesActivity.java
│ │ │ │ ├── FeedbackActivity.java
│ │ │ │ ├── FontSettingActivity.java
│ │ │ │ ├── FriendsActivity.java
│ │ │ │ ├── ImageSelectionActivity.java
│ │ │ │ ├── LauncherActivity.java
│ │ │ │ ├── LoginActivity.java
│ │ │ │ ├── MainActivity.java
│ │ │ │ ├── MomentAtMeActivity.java
│ │ │ │ ├── MomentDetailActivity.java
│ │ │ │ ├── MomentMessageActivity.java
│ │ │ │ ├── PostMomentActivity.java
│ │ │ │ ├── SearchActivity.java
│ │ │ │ ├── SettingActivity.java
│ │ │ │ ├── SwipeBackBaseActivity.java
│ │ │ │ ├── SystemMessageActivity.java
│ │ │ │ ├── TestActivity.java
│ │ │ │ ├── WBShareActivity.java
│ │ │ │ ├── WebActivity.java
│ │ │ │ └── WebLoginActivity.java
│ │ │ │ ├── adapter
│ │ │ │ ├── BaseItemAdapter.java
│ │ │ │ ├── BlogCommentItemAdapter.java
│ │ │ │ ├── BlogContentAdapter.java
│ │ │ │ ├── BlogListAdapter.java
│ │ │ │ ├── BlogListItemAdapter.java
│ │ │ │ ├── BookmarksAdapter.java
│ │ │ │ ├── CategoriesOverallAdapter.java
│ │ │ │ ├── FeedItemAdapter.java
│ │ │ │ ├── FriendsAdapter.java
│ │ │ │ ├── ImagePreviewAdapter.java
│ │ │ │ ├── MomentAdapter.java
│ │ │ │ ├── MomentDetailAdapter.java
│ │ │ │ ├── MomentImageAdapter.java
│ │ │ │ ├── MomentMessageAdapter.java
│ │ │ │ ├── SearchSuggestionAdapter.java
│ │ │ │ ├── SystemMessageAdapter.java
│ │ │ │ └── anim
│ │ │ │ │ └── BlogListItemAnimator.java
│ │ │ │ ├── dialog
│ │ │ │ ├── CategoryDialog.java
│ │ │ │ ├── DialogProvider.java
│ │ │ │ ├── IAppDialog.java
│ │ │ │ ├── IAppDialogClickListener.java
│ │ │ │ └── impl
│ │ │ │ │ ├── AppDialog.java
│ │ │ │ │ ├── BlogShareDialog.java
│ │ │ │ │ ├── CommentMenuDialog.java
│ │ │ │ │ ├── DefaultDialog.java
│ │ │ │ │ ├── EditCommentDialog.java
│ │ │ │ │ ├── HintCardDialog.java
│ │ │ │ │ ├── LoadingDialog.java
│ │ │ │ │ ├── MenuDeleteDialog.java
│ │ │ │ │ ├── MenuDialog.java
│ │ │ │ │ ├── ShareDialog.java
│ │ │ │ │ ├── SlideDialog.java
│ │ │ │ │ └── VersionUpdateDialog.java
│ │ │ │ ├── fragment
│ │ │ │ ├── BaseFragment.java
│ │ │ │ ├── BlogCommentFragment.java
│ │ │ │ ├── BlogContentFragment.java
│ │ │ │ ├── BlogListFragment.java
│ │ │ │ ├── BlogTypeListFragment.java
│ │ │ │ ├── BloggerFragment.java
│ │ │ │ ├── CategoriesFragment.java
│ │ │ │ ├── DiscoverFragment.java
│ │ │ │ ├── HomeFragment.java
│ │ │ │ ├── ImagePreviewFragment.java
│ │ │ │ ├── MineFragment.java
│ │ │ │ ├── MomentDetailFragment.java
│ │ │ │ ├── MomentFragment.java
│ │ │ │ ├── MomentMessageFragment.java
│ │ │ │ ├── SNSFragment.java
│ │ │ │ ├── SearchBlogFragment.java
│ │ │ │ ├── SearchBloggerFragment.java
│ │ │ │ ├── SearchFragment.java
│ │ │ │ ├── WebLoginFragment.java
│ │ │ │ └── WebViewFragment.java
│ │ │ │ ├── image
│ │ │ │ ├── ImageAdapter.java
│ │ │ │ ├── ImagePreviewActivity.java
│ │ │ │ └── RaeImageView.java
│ │ │ │ ├── message
│ │ │ │ ├── EditCommentEvent.java
│ │ │ │ ├── FontChangedEvent.java
│ │ │ │ ├── PostMomentEvent.java
│ │ │ │ ├── SearchEvent.java
│ │ │ │ ├── TabEvent.java
│ │ │ │ ├── ThemeChangedEvent.java
│ │ │ │ └── UserInfoEvent.java
│ │ │ │ ├── model
│ │ │ │ ├── BlogCommentViewHolder.java
│ │ │ │ ├── BlogItemViewHolder.java
│ │ │ │ ├── BookmarksViewHolder.java
│ │ │ │ ├── CategoriesOverallItem.java
│ │ │ │ ├── FeedListFragment.java
│ │ │ │ ├── FeedViewHolder.java
│ │ │ │ ├── FriendsViewHolder.java
│ │ │ │ ├── ImagePreviewHolder.java
│ │ │ │ ├── ItemLoadingViewHolder.java
│ │ │ │ ├── MenuDialogItem.java
│ │ │ │ ├── MenuDialogViewHolder.java
│ │ │ │ ├── MomentCommentHolder.java
│ │ │ │ ├── MomentDetailHolder.java
│ │ │ │ ├── MomentHolder.java
│ │ │ │ ├── MomentImageHolder.java
│ │ │ │ ├── MomentMessageHolder.java
│ │ │ │ ├── SearchSuggestionHolder.java
│ │ │ │ ├── SimpleViewHolder.java
│ │ │ │ └── SystemMessageHolder.java
│ │ │ │ ├── presenter
│ │ │ │ ├── CnblogsPresenterFactory.java
│ │ │ │ ├── IAppPresenter.java
│ │ │ │ ├── IBlogCommentPresenter.java
│ │ │ │ ├── IBlogContentPresenter.java
│ │ │ │ ├── IBlogListPresenter.java
│ │ │ │ ├── IBloggerPresenter.java
│ │ │ │ ├── IFeedPresenter.java
│ │ │ │ ├── IHomePresenter.java
│ │ │ │ ├── ILauncherPresenter.java
│ │ │ │ ├── ILoginPresenter.java
│ │ │ │ ├── IMomentContract.java
│ │ │ │ ├── IMomentDetailContract.java
│ │ │ │ ├── IMomentMessageContract.java
│ │ │ │ ├── IPostMomentContract.java
│ │ │ │ ├── IRaePresenter.java
│ │ │ │ ├── ISearchContract.java
│ │ │ │ └── impl
│ │ │ │ │ ├── BasePresenter.java
│ │ │ │ │ ├── BloggerPresenterImpl.java
│ │ │ │ │ ├── FeedPresenterImpl.java
│ │ │ │ │ ├── HomePresenterImpl.java
│ │ │ │ │ ├── LauncherPresenterImpl.java
│ │ │ │ │ ├── LoginPresenterImpl.java
│ │ │ │ │ ├── MomentDetailPresenterImpl.java
│ │ │ │ │ ├── MomentMessagePresenterImpl.java
│ │ │ │ │ ├── MomentPresenterImpl.java
│ │ │ │ │ ├── PostMomentPresenterImpl.java
│ │ │ │ │ ├── SearchPresenterImpl.java
│ │ │ │ │ ├── blog
│ │ │ │ │ ├── BlogCommentPresenterImpl.java
│ │ │ │ │ ├── BlogContentPresenterImpl.java
│ │ │ │ │ ├── BlogListPresenterImpl.java
│ │ │ │ │ ├── BloggerListPresenterImpl.java
│ │ │ │ │ └── SearchBlogPresenterImpl.java
│ │ │ │ │ ├── kb
│ │ │ │ │ ├── KBContentPresenterImpl.java
│ │ │ │ │ ├── KBListPresenterImpl.java
│ │ │ │ │ └── KbCommentPresenterImpl.java
│ │ │ │ │ └── news
│ │ │ │ │ ├── NewsCommentPresenterImpl.java
│ │ │ │ │ ├── NewsContentPresenterImpl.java
│ │ │ │ │ └── NewsListPresenterImpl.java
│ │ │ │ ├── service
│ │ │ │ ├── CnblogsService.java
│ │ │ │ ├── CnblogsServiceBinder.java
│ │ │ │ ├── JobScheduler.java
│ │ │ │ ├── MomentIntentService.java
│ │ │ │ ├── job
│ │ │ │ │ ├── AsyncDownloadJob.java
│ │ │ │ │ ├── BlogContentJob.java
│ │ │ │ │ ├── IJob.java
│ │ │ │ │ └── JobEvent.java
│ │ │ │ └── task
│ │ │ │ │ └── BlogContentTask.java
│ │ │ │ ├── utils
│ │ │ │ ├── BitmapCompressor.java
│ │ │ │ └── ViewCaptureUtils.java
│ │ │ │ ├── widget
│ │ │ │ ├── AppLayout.java
│ │ │ │ ├── BloggerLayout.java
│ │ │ │ ├── CountDownTextView.java
│ │ │ │ ├── HintCardLayout.java
│ │ │ │ ├── HomeSearchHeader.java
│ │ │ │ ├── ImageLoadingView.java
│ │ │ │ ├── ImagePreviewLayout.java
│ │ │ │ ├── LoginPlaceholderView.java
│ │ │ │ ├── PlaceholderView.java
│ │ │ │ ├── QMUISpanTouchFixTextView.java
│ │ │ │ ├── RaeDrawerLayout.java
│ │ │ │ ├── RaeEditText.java
│ │ │ │ ├── RaeLoadMoreView.java
│ │ │ │ ├── RaeRecyclerView.java
│ │ │ │ ├── RaeSeekBar.java
│ │ │ │ ├── RaeSkinImageView.java
│ │ │ │ ├── RaeSkinImageViewV4.java
│ │ │ │ ├── RaeTabLayout.java
│ │ │ │ ├── RaeTextView.java
│ │ │ │ ├── RaeViewPager.java
│ │ │ │ ├── RaeWebView.java
│ │ │ │ ├── SkinCardView.java
│ │ │ │ ├── SkinRoundedImageView.java
│ │ │ │ ├── ToolbarToastView.java
│ │ │ │ ├── compat
│ │ │ │ │ ├── HintCardDragCompat.java
│ │ │ │ │ └── RaeDragDownCompat.java
│ │ │ │ ├── span
│ │ │ │ │ ├── ISpanTouchFix.java
│ │ │ │ │ ├── ITouchableSpan.java
│ │ │ │ │ ├── QMUILinkTouchDecorHelper.java
│ │ │ │ │ ├── QMUILinkTouchMovementMethod.java
│ │ │ │ │ └── QMUITouchableSpan.java
│ │ │ │ └── webclient
│ │ │ │ │ ├── RaeJavaScriptBridge.java
│ │ │ │ │ ├── RaeWebChromeClient.java
│ │ │ │ │ └── RaeWebViewClient.java
│ │ │ │ └── wxapi
│ │ │ │ └── WXEntryActivity.java
│ │ └── res
│ │ │ ├── anim
│ │ │ ├── ad_scale_fade_in.xml
│ │ │ ├── at_slide_fade_in.xml
│ │ │ ├── image_scale_in.xml
│ │ │ ├── image_scale_out.xml
│ │ │ ├── keep_status.xml
│ │ │ ├── like_anim.xml
│ │ │ ├── login_slide_in.xml
│ │ │ ├── login_slide_out.xml
│ │ │ ├── scale_in.xml
│ │ │ ├── scale_out.xml
│ │ │ ├── slide_in_bottom.xml
│ │ │ ├── slide_out_bottom.xml
│ │ │ └── toolbar_toast_in.xml
│ │ │ ├── color
│ │ │ ├── text_color_default_tab.xml
│ │ │ ├── text_color_default_tab_night.xml
│ │ │ ├── text_color_login_button.xml
│ │ │ ├── text_color_post_moment.xml
│ │ │ ├── text_color_search_button.xml
│ │ │ ├── text_color_tab_selector.xml
│ │ │ └── text_color_tab_selector_night.xml
│ │ │ ├── drawable-xhdpi
│ │ │ ├── account_top_bg.jpg
│ │ │ ├── bg_login.png
│ │ │ ├── bg_moment_reference.9.png
│ │ │ ├── bg_new_version.png
│ │ │ ├── boy.png
│ │ │ ├── channel_edit_grid_item_del_icon.png
│ │ │ ├── comment_empty.png
│ │ │ ├── default_right_arrow.png
│ │ │ ├── ic_action_bar_avatar.png
│ │ │ ├── ic_action_bar_search.png
│ │ │ ├── ic_bookmark_delete.png
│ │ │ ├── ic_category_arrow.png
│ │ │ ├── ic_checked_checked.png
│ │ │ ├── ic_checked_normal.png
│ │ │ ├── ic_close.png
│ │ │ ├── ic_close_light.png
│ │ │ ├── ic_default_placeholder.png
│ │ │ ├── ic_default_user_avatar.png
│ │ │ ├── ic_download.png
│ │ │ ├── ic_edit_delete.png
│ │ │ ├── ic_empty_placeholder.png
│ │ │ ├── ic_empty_placeholder_night.png
│ │ │ ├── ic_eyes_closed.png
│ │ │ ├── ic_eyes_open.png
│ │ │ ├── ic_left_top_arrow.png
│ │ │ ├── ic_loading_white.png
│ │ │ ├── ic_login_logo.png
│ │ │ ├── ic_logo_small.png
│ │ │ ├── ic_menu_gallery.png
│ │ │ ├── ic_nav_home_search.png
│ │ │ ├── ic_network_error_placeholder.png
│ │ │ ├── ic_search.png
│ │ │ ├── ic_search_del.png
│ │ │ ├── ic_share_app.png
│ │ │ ├── ic_task_finish.png
│ │ │ ├── pic_msg_unlogin.png
│ │ │ ├── picture_loading.png
│ │ │ ├── picture_viewer_no_pic_icon.png
│ │ │ ├── tab_channel_background.9.png
│ │ │ ├── tab_channel_background_night.9.png
│ │ │ ├── tab_main_background.9.png
│ │ │ ├── tab_main_background_night.9.png
│ │ │ ├── toast_failed.png
│ │ │ └── toast_success.png
│ │ │ ├── drawable-xxhdpi
│ │ │ ├── bg_blogger_blur.png
│ │ │ ├── browser_allshare_normal.png
│ │ │ ├── browser_allshare_pressed.png
│ │ │ ├── channel_manager_icon.png
│ │ │ ├── day_allshare_normal.png
│ │ │ ├── day_allshare_pressed.png
│ │ │ ├── hint_card_close.png
│ │ │ ├── hint_card_close_night.png
│ │ │ ├── ic_action_bar_more.png
│ │ │ ├── ic_action_bar_search.png
│ │ │ ├── ic_add_photo_holder.png
│ │ │ ├── ic_back.png
│ │ │ ├── ic_back_closed.png
│ │ │ ├── ic_back_closed_night.png
│ │ │ ├── ic_back_night.png
│ │ │ ├── ic_back_white.png
│ │ │ ├── ic_blog_comment.png
│ │ │ ├── ic_blog_content_more.png
│ │ │ ├── ic_blog_like.png
│ │ │ ├── ic_blog_read.png
│ │ │ ├── ic_collect.png
│ │ │ ├── ic_comment_badge.9.png
│ │ │ ├── ic_comment_normal.png
│ │ │ ├── ic_edit_delete.png
│ │ │ ├── ic_empty_message.png
│ │ │ ├── ic_eyes_closed.png
│ │ │ ├── ic_eyes_open.png
│ │ │ ├── ic_favorite_normal.png
│ │ │ ├── ic_favorite_selected.png
│ │ │ ├── ic_like_badge.9.png
│ │ │ ├── ic_like_badge_selected.9.png
│ │ │ ├── ic_loading.png
│ │ │ ├── ic_logo_small.png
│ │ │ ├── ic_menu_gallery.png
│ │ │ ├── ic_moment_at_me.png
│ │ │ ├── ic_moment_comment.png
│ │ │ ├── ic_moment_notification.png
│ │ │ ├── ic_moment_post.png
│ │ │ ├── ic_nightmode.png
│ │ │ ├── ic_nightmode_night.png
│ │ │ ├── ic_official_flag.png
│ │ │ ├── ic_photo_select_normal.png
│ │ │ ├── ic_photo_select_selected.png
│ │ │ ├── ic_progress_loading.png
│ │ │ ├── ic_pull_down.png
│ │ │ ├── launcher_background.jpg
│ │ │ ├── link_allshare_normal.png
│ │ │ ├── link_allshare_pressed.png
│ │ │ ├── login_btn_close.png
│ │ │ ├── moment_share_icon.png
│ │ │ ├── night_allshare_normal.png
│ │ │ ├── night_allshare_pressed.png
│ │ │ ├── qq_allshare_normal.png
│ │ │ ├── qq_allshare_pressed.png
│ │ │ ├── qqkj_allshare_normal.png
│ │ │ ├── qqkj_allshare_pressed.png
│ │ │ ├── sina_allshare_normal.png
│ │ │ ├── sina_allshare_pressed.png
│ │ │ ├── tab_home_h.png
│ │ │ ├── tab_home_h_night.png
│ │ │ ├── tab_home_n.png
│ │ │ ├── tab_home_n_night.png
│ │ │ ├── tab_library_h.png
│ │ │ ├── tab_library_h_night.png
│ │ │ ├── tab_library_n.png
│ │ │ ├── tab_library_n_night.png
│ │ │ ├── tab_mine_h.png
│ │ │ ├── tab_mine_h_night.png
│ │ │ ├── tab_mine_n.png
│ │ │ ├── tab_mine_n_night.png
│ │ │ ├── tab_news_h.png
│ │ │ ├── tab_news_h_night.png
│ │ │ ├── tab_news_n.png
│ │ │ ├── tab_news_n_night.png
│ │ │ ├── text_allshare_font.png
│ │ │ ├── text_allshare_normal.png
│ │ │ ├── text_allshare_pressed.png
│ │ │ ├── weixin_allshare_normal.png
│ │ │ ├── weixin_allshare_pressed.png
│ │ │ ├── weixinpyq_allshare_normal.png
│ │ │ └── weixinpyq_allshare_pressed.png
│ │ │ ├── drawable
│ │ │ ├── abc_checked.xml
│ │ │ ├── anim_picture_loading.xml
│ │ │ ├── avoscloud_feedback_contact_background.xml
│ │ │ ├── avoscloud_feedback_contact_background_night.xml
│ │ │ ├── avoscloud_feedback_text_background.xml
│ │ │ ├── avoscloud_feedback_text_background_night.xml
│ │ │ ├── bg_action_bar_search.xml
│ │ │ ├── bg_badge.xml
│ │ │ ├── bg_blog_content_back.xml
│ │ │ ├── bg_blog_content_bottom_bar.xml
│ │ │ ├── bg_blog_item_selector.xml
│ │ │ ├── bg_blog_item_selector_night.xml
│ │ │ ├── bg_btn_default.xml
│ │ │ ├── bg_btn_default_night.xml
│ │ │ ├── bg_btn_follow.xml
│ │ │ ├── bg_btn_follow_drak.xml
│ │ │ ├── bg_btn_send.xml
│ │ │ ├── bg_btn_send_night.xml
│ │ │ ├── bg_button_while.xml
│ │ │ ├── bg_button_while_night.xml
│ │ │ ├── bg_button_white_selector.xml
│ │ │ ├── bg_button_white_selector_night.xml
│ │ │ ├── bg_category.xml
│ │ │ ├── bg_category_lock.xml
│ │ │ ├── bg_category_lock_night.xml
│ │ │ ├── bg_category_night.xml
│ │ │ ├── bg_count_down.xml
│ │ │ ├── bg_default_action_bar.xml
│ │ │ ├── bg_dialog_default.xml
│ │ │ ├── bg_dialog_default_night.xml
│ │ │ ├── bg_dialog_hint_card.xml
│ │ │ ├── bg_dialog_hint_card_header.xml
│ │ │ ├── bg_dialog_hint_card_night.xml
│ │ │ ├── bg_edit_comment.xml
│ │ │ ├── bg_edit_comment_night.xml
│ │ │ ├── bg_font_setting_message.xml
│ │ │ ├── bg_login_night.xml
│ │ │ ├── bg_menu_item.xml
│ │ │ ├── bg_message_card.xml
│ │ │ ├── bg_message_card_night.xml
│ │ │ ├── bg_nav_search.xml
│ │ │ ├── bg_nav_search_night.xml
│ │ │ ├── bg_quote_comment.xml
│ │ │ ├── bg_quote_comment_night.xml
│ │ │ ├── bg_tab_home.xml
│ │ │ ├── bg_tab_home_night.xml
│ │ │ ├── bg_tab_main.xml
│ │ │ ├── bg_tag.xml
│ │ │ ├── bg_tag_night.xml
│ │ │ ├── bg_toast.xml
│ │ │ ├── bg_toast_home.xml
│ │ │ ├── bg_user_avatar.xml
│ │ │ ├── bg_write_comment.xml
│ │ │ ├── bg_write_comment_night.xml
│ │ │ ├── button_image_selected_borderless.xml
│ │ │ ├── channel_edit_grid_item_del.xml
│ │ │ ├── default_loading.xml
│ │ │ ├── ic_comment_toolbar.xml
│ │ │ ├── ic_eyes.xml
│ │ │ ├── ic_favorite.xml
│ │ │ ├── ic_like_content_badge.xml
│ │ │ ├── ic_photo_select.xml
│ │ │ ├── ic_share_browser.xml
│ │ │ ├── ic_share_link.xml
│ │ │ ├── ic_share_night.xml
│ │ │ ├── ic_share_night_night.xml
│ │ │ ├── ic_share_qq.xml
│ │ │ ├── ic_share_qzone.xml
│ │ │ ├── ic_share_sina.xml
│ │ │ ├── ic_share_text.xml
│ │ │ ├── ic_share_wechat.xml
│ │ │ ├── ic_share_wechat_sns.xml
│ │ │ ├── item_divider_while_primary.xml
│ │ │ ├── item_divider_while_primary_night.xml
│ │ │ ├── progress_bar_loading.xml
│ │ │ ├── progress_bar_loading_white.xml
│ │ │ ├── progress_web_view.xml
│ │ │ ├── public_button_login.xml
│ │ │ ├── public_button_login_borderless.xml
│ │ │ ├── public_divider_while_primary.xml
│ │ │ ├── public_divider_while_primary_night.xml
│ │ │ ├── sb_default_back_drawable.xml
│ │ │ ├── sb_default_thumb_drawable.xml
│ │ │ ├── seekbar_progress_material_font_setting.xml
│ │ │ ├── seekbar_thumb_material_anim_font_setting.xml
│ │ │ ├── seekbar_tickmark_font_setting.xml
│ │ │ ├── seekbar_track_material_font_setting.xml
│ │ │ ├── setting_divider_while_primary.xml
│ │ │ ├── setting_divider_while_primary_night.xml
│ │ │ ├── tab_home.xml
│ │ │ ├── tab_home_night.xml
│ │ │ ├── tab_library.xml
│ │ │ ├── tab_library_night.xml
│ │ │ ├── tab_mine.xml
│ │ │ ├── tab_mine_night.xml
│ │ │ ├── tab_news.xml
│ │ │ ├── tab_news_night.xml
│ │ │ ├── text_cursor.xml
│ │ │ ├── umeng_socialize_back_icon.png
│ │ │ ├── umeng_socialize_btn_bg.xml
│ │ │ ├── umeng_socialize_copy.png
│ │ │ ├── umeng_socialize_copyurl.png
│ │ │ ├── umeng_socialize_delete.png
│ │ │ ├── umeng_socialize_edit_bg.xml
│ │ │ ├── umeng_socialize_menu_default.png
│ │ │ ├── umeng_socialize_more.png
│ │ │ ├── umeng_socialize_share_music.png
│ │ │ ├── umeng_socialize_share_video.png
│ │ │ └── umeng_socialize_share_web.png
│ │ │ ├── layout
│ │ │ ├── activity_about_me.xml
│ │ │ ├── activity_blog_content.xml
│ │ │ ├── activity_bookmark.xml
│ │ │ ├── activity_category.xml
│ │ │ ├── activity_favorites.xml
│ │ │ ├── activity_font_setting.xml
│ │ │ ├── activity_friends.xml
│ │ │ ├── activity_image_preview.xml
│ │ │ ├── activity_image_selection.xml
│ │ │ ├── activity_launcher.xml
│ │ │ ├── activity_login.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── activity_moment_detail.xml
│ │ │ ├── activity_moment_message.xml
│ │ │ ├── activity_post_moment.xml
│ │ │ ├── activity_search.xml
│ │ │ ├── activity_setting.xml
│ │ │ ├── activity_single_fragment.xml
│ │ │ ├── activity_system_message.xml
│ │ │ ├── activity_test.xml
│ │ │ ├── activity_web.xml
│ │ │ ├── avoscloud_feedback_activity_conversation.xml
│ │ │ ├── cube_ptr_classic_default_header.xml
│ │ │ ├── dialog_blog_comment.xml
│ │ │ ├── dialog_blog_comment_edit.xml
│ │ │ ├── dialog_blog_default.xml
│ │ │ ├── dialog_blog_menu.xml
│ │ │ ├── dialog_hint_card.xml
│ │ │ ├── dialog_loading.xml
│ │ │ ├── dialog_share.xml
│ │ │ ├── dialog_version_card.xml
│ │ │ ├── fm_blog_comment.xml
│ │ │ ├── fm_blog_content.xml
│ │ │ ├── fm_blog_list.xml
│ │ │ ├── fm_blogger.xml
│ │ │ ├── fm_blogger_info.xml
│ │ │ ├── fm_categories.xml
│ │ │ ├── fm_discover.xml
│ │ │ ├── fm_home.xml
│ │ │ ├── fm_kb_list.xml
│ │ │ ├── fm_mine.xml
│ │ │ ├── fm_moment.xml
│ │ │ ├── fm_moment_detail.xml
│ │ │ ├── fm_search.xml
│ │ │ ├── fm_sns.xml
│ │ │ ├── fm_web.xml
│ │ │ ├── fm_web_login.xml
│ │ │ ├── item_blog_comment.xml
│ │ │ ├── item_blog_list.xml
│ │ │ ├── item_blogger_feed.xml
│ │ │ ├── item_bookmark_list.xml
│ │ │ ├── item_category.xml
│ │ │ ├── item_comment_placeholder.xml
│ │ │ ├── item_dialog_menu.xml
│ │ │ ├── item_fragment_view.xml
│ │ │ ├── item_friends.xml
│ │ │ ├── item_home_search.xml
│ │ │ ├── item_image_preview.xml
│ │ │ ├── item_image_selected.xml
│ │ │ ├── item_image_selection.xml
│ │ │ ├── item_list_loading.xml
│ │ │ ├── item_moment_comment.xml
│ │ │ ├── item_moment_detail_info.xml
│ │ │ ├── item_moment_image.xml
│ │ │ ├── item_moment_image_single.xml
│ │ │ ├── item_moment_list.xml
│ │ │ ├── item_moment_message.xml
│ │ │ ├── item_news_list.xml
│ │ │ ├── item_post_moment_image.xml
│ │ │ ├── item_search_suggestion.xml
│ │ │ ├── item_system_message.xml
│ │ │ ├── tab_view.xml
│ │ │ ├── umeng_socialize_oauth_dialog.xml
│ │ │ ├── view_account_info.xml
│ │ │ ├── view_placeholder.xml
│ │ │ ├── view_placeholder_login_retry.xml
│ │ │ ├── view_title.xml
│ │ │ └── view_toast_home.xml
│ │ │ ├── mipmap-hdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-mdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ │ ├── values-v19
│ │ │ ├── dimens.xml
│ │ │ └── styles.xml
│ │ │ ├── values-v21
│ │ │ └── styles.xml
│ │ │ ├── values-v23
│ │ │ └── styles.xml
│ │ │ ├── values
│ │ │ ├── attrs.xml
│ │ │ ├── colors.xml
│ │ │ ├── colors_night.xml
│ │ │ ├── dimens.xml
│ │ │ ├── strings.xml
│ │ │ ├── styles.xml
│ │ │ ├── umeng_socialize_colors.xml
│ │ │ ├── umeng_socialize_strings.xml
│ │ │ └── umeng_socialize_style.xml
│ │ │ └── xml
│ │ │ └── lc_fileprovider_path.xml
│ ├── test
│ │ └── java
│ │ │ └── com
│ │ │ └── rae
│ │ │ └── cnblogs
│ │ │ └── ExampleUnitTest.java
│ └── xiaomi
│ │ └── res
│ │ └── values
│ │ └── strings.xml
├── tinker-support.gradle
└── xiaomiChannel
├── build.gradle
├── doc
├── docs
│ └── index.md
└── mkdocs.yml
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── guide.jpg
├── jar2dex.bat
├── push-sdk-patch.bat
├── sdk
├── .gitignore
├── build.gradle
├── proguard-rules.pro
├── src
│ ├── androidTest
│ │ └── java
│ │ │ └── rae
│ │ │ └── com
│ │ │ └── cnblogs
│ │ │ └── sdk
│ │ │ ├── BaseTest.java
│ │ │ ├── BlogApiTest.java
│ │ │ ├── BookmarksApiTest.java
│ │ │ ├── FriendApiTest.java
│ │ │ ├── MomentApiTest.java
│ │ │ ├── NewsApiTest.java
│ │ │ ├── RaeApiTest.java
│ │ │ ├── SearchApiTest.java
│ │ │ ├── UserApiTest.java
│ │ │ └── db
│ │ │ └── DbAdvertTest.java
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── assets
│ │ └── category.json
│ │ ├── java
│ │ └── com
│ │ │ └── rae
│ │ │ └── cnblogs
│ │ │ └── sdk
│ │ │ ├── ApiDefaultObserver.java
│ │ │ ├── ApiErrorCode.java
│ │ │ ├── ApiOptions.java
│ │ │ ├── AppGson.java
│ │ │ ├── CnblogsApiException.java
│ │ │ ├── CnblogsApiFactory.java
│ │ │ ├── CnblogsApiProvider.java
│ │ │ ├── CnblogsReportException.java
│ │ │ ├── DefaultCnblogsApiProvider.java
│ │ │ ├── Empty.java
│ │ │ ├── JsonBody.java
│ │ │ ├── JsonParser.java
│ │ │ ├── OKHttpUrl.java
│ │ │ ├── Parser.java
│ │ │ ├── PatchCnblogsApiProvider.java
│ │ │ ├── UserProvider.java
│ │ │ ├── api
│ │ │ ├── ApiUrls.java
│ │ │ ├── IBlogApi.java
│ │ │ ├── IBookmarksApi.java
│ │ │ ├── ICategoryApi.java
│ │ │ ├── IFriendsApi.java
│ │ │ ├── IMomentApi.java
│ │ │ ├── INewsApi.java
│ │ │ ├── IPostApi.java
│ │ │ ├── IRaeServerApi.java
│ │ │ ├── ISearchApi.java
│ │ │ ├── IUserApi.java
│ │ │ └── impl
│ │ │ │ └── CategoryApiImpl.java
│ │ │ ├── bean
│ │ │ ├── AdvertBean.java
│ │ │ ├── BlogBean.java
│ │ │ ├── BlogCommentBean.java
│ │ │ ├── BlogCommentModel.java
│ │ │ ├── BlogType.java
│ │ │ ├── BookmarksBean.java
│ │ │ ├── CategoryBean.java
│ │ │ ├── CnblogsApiErrorBean.java
│ │ │ ├── FriendsInfoBean.java
│ │ │ ├── LoginToken.java
│ │ │ ├── LoginTokenBean.java
│ │ │ ├── MomentBean.java
│ │ │ ├── MomentCommentBean.java
│ │ │ ├── MomentPrimaryBean.java
│ │ │ ├── SinaShotenBean.java
│ │ │ ├── SystemMessageBean.java
│ │ │ ├── UserFeedBean.java
│ │ │ ├── UserInfoBean.java
│ │ │ └── VersionInfo.java
│ │ │ ├── config
│ │ │ ├── CnblogSdkConfig.java
│ │ │ └── OfflineConfig.java
│ │ │ ├── converter
│ │ │ ├── ConverterFactory.java
│ │ │ └── TextResponseBodyConverter.java
│ │ │ ├── db
│ │ │ ├── CnblogsContentProvider.java
│ │ │ ├── DbAdvert.java
│ │ │ ├── DbBlog.java
│ │ │ ├── DbCategory.java
│ │ │ ├── DbCnblogs.java
│ │ │ ├── DbFactory.java
│ │ │ └── model
│ │ │ │ └── UserBlogInfo.java
│ │ │ ├── interceptor
│ │ │ └── RequestInterceptor.java
│ │ │ ├── model
│ │ │ ├── ImageMetaData.java
│ │ │ └── MomentMetaData.java
│ │ │ ├── parser
│ │ │ ├── AbsUserInfoParser.java
│ │ │ ├── BaiduSuggestionParser.java
│ │ │ ├── BlogCommentParser.java
│ │ │ ├── BlogContentParser.java
│ │ │ ├── BlogListParser.java
│ │ │ ├── BlogOpenStatusParser.java
│ │ │ ├── BookmarksDelParser.java
│ │ │ ├── BookmarksParser.java
│ │ │ ├── FriendsBlogListParser.java
│ │ │ ├── FriendsInfoParser.java
│ │ │ ├── FriendsListParser.java
│ │ │ ├── IHtmlParser.java
│ │ │ ├── IJsonParser.java
│ │ │ ├── ImagePostParser.java
│ │ │ ├── KBContentParser.java
│ │ │ ├── KBListParser.java
│ │ │ ├── LoginPageParser.java
│ │ │ ├── LoginParser.java
│ │ │ ├── MomentCommentHelper.java
│ │ │ ├── MomentCommentParser.java
│ │ │ ├── MomentDelParser.java
│ │ │ ├── MomentDetailParser.java
│ │ │ ├── MomentParser.java
│ │ │ ├── MomentReplyParser.java
│ │ │ ├── NewsAddCommentParser.java
│ │ │ ├── NewsCommentParser.java
│ │ │ ├── NewsContentParser.java
│ │ │ ├── NewsDelCommentParser.java
│ │ │ ├── NewsListParser.java
│ │ │ ├── SearchBlogListParser.java
│ │ │ ├── SearchBloggerParser.java
│ │ │ ├── SearchKbListParser.java
│ │ │ ├── SearchNewsListParser.java
│ │ │ ├── SimpleUserInfoParser.java
│ │ │ ├── SinaShotenParser.java
│ │ │ ├── UserInfoParser.java
│ │ │ └── UserTimelineParser.java
│ │ │ └── utils
│ │ │ ├── ApiEncrypt.java
│ │ │ └── ApiUtils.java
│ │ └── res
│ │ ├── raw
│ │ └── cb
│ │ └── values
│ │ └── strings.xml
└── test.html
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | *.iml
2 | .gradle
3 | /local.properties
4 | /.idea/workspace.xml
5 | /.idea/libraries
6 | .DS_Store
7 | /build
8 | /captures
9 | .externalNativeBuild
10 | /doc/site
11 | /app/*.apk
12 | /app/release
13 | app/release/
14 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/dictionaries/Rae.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | bugly
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/dictionaries/YM.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | appkey
5 | cnblog
6 | cnblogs
7 | umeng
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/dictionaries/qq798.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | baidu
5 | blogs
6 | mobclick
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/CHANGES.md:
--------------------------------------------------------------------------------
1 | # 版本更新记录
2 |
3 | ## V1.1.3
4 |
5 | *开发中*
6 |
7 | > **2018-01-25**
8 |
9 | - 修复搜索退出导致崩溃问题
10 | - 修复博客评论Html解析器为空问题
11 | - 修复闪存登录状态没有显示评论问题
12 | - 修复添加/删除收藏问题
13 | - 新闻知识库查看时显示作者信息
14 |
15 | ## V1.0.1
16 |
17 | *发布于:2017-09-11 13:00*
18 |
19 | > **2017-09-01 ~ 2017-09-11**
20 |
21 | - 首页UI优化
22 | - 登录界面添加注册入口
23 | - 博文正文优化H5复制代码功能
24 | - 解决Web登录错误问题
25 | - 添加系统消息功能
26 | - 添加检查更新
27 |
28 | > **2017-08-30**
29 |
30 | - 添加搜索功能
31 | - 添加夜间模式功能
32 |
33 | > **2017-08-28**
34 |
35 | - 知识库显示图文模式
36 | - 解决友盟没统计到分类问题
37 | - WebView支持下载链接
38 | - 首页点击分类回顶部
39 | - 分类列表长按提示分类名称
40 | - 调整收藏界面背景颜色
41 | - 版本更新接口添加渠道参数
42 |
43 | > **2017-08-27**
44 |
45 | - 解决登录出现 Null is not a valid element的问题
46 | - 解决查看评论界面列表下拉不了问题
47 | - 解决分享到新浪微博报错问题
48 | - 登录界面添加忘记密码入口、查看明文密码、删除密码功能
49 |
50 |
51 | ## V1.0.0
52 |
53 | *发布于:2017-08-20*
54 |
55 | - 界面净白风格,专注阅读,给你极简体验。
56 | - 首页分类阅读,定制你喜欢的栏目。
57 | - 首页列表图文结合,让阅读不在单调。
58 | - 博文阅读代码高亮,大图查看。
59 | - 博文支持评论、点赞、收藏。
60 | - 博主界面更加清爽,博主动态显示,博客列表,一起来关注大牛吧。
61 | - 新闻阅读、知识库该有的都有了
62 | - 你要的登录!登录!登录!来啦~~~~
63 | - WIFI自动离线下载,无需配置。
64 |
65 |
66 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | `博客园非官方客户端` `博客园,从轻出发!`
3 |
4 | 新的项目迁移到[这里](https://github.com/raedev/android-cnblogs),代码结构更加清晰,维护更方便。
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/channel:
--------------------------------------------------------------------------------
1 | Dev
2 | yinyongbao
3 | pp
4 | meizu
5 | huawei
6 | official
--------------------------------------------------------------------------------
/app/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "channelInfoList": [
3 | {
4 | "channel": "xiaomi",
5 | "extraInfo": {
6 | "UMENG_CHANNEL": "xiaomi"
7 | }
8 | }
9 | ]
10 | }
--------------------------------------------------------------------------------
/app/debug.keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/debug.keystore
--------------------------------------------------------------------------------
/app/libs/SocialSDK_QQ_Simplify.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/libs/SocialSDK_QQ_Simplify.jar
--------------------------------------------------------------------------------
/app/libs/SocialSDK_Sina_Simplify.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/libs/SocialSDK_Sina_Simplify.jar
--------------------------------------------------------------------------------
/app/libs/SocialSDK_WeChat_Simplify.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/libs/SocialSDK_WeChat_Simplify.jar
--------------------------------------------------------------------------------
/app/libs/umeng_social_api.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/libs/umeng_social_api.jar
--------------------------------------------------------------------------------
/app/libs/umeng_social_net.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/libs/umeng_social_net.jar
--------------------------------------------------------------------------------
/app/libs/umeng_social_tool.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/libs/umeng_social_tool.jar
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in C:\AndroidStudio\sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/com/rae/cnblogs/CacheTest.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs;
2 |
3 | import android.content.Context;
4 | import android.support.test.InstrumentationRegistry;
5 | import android.support.test.runner.AndroidJUnit4;
6 |
7 | import org.junit.Before;
8 | import org.junit.Test;
9 | import org.junit.runner.RunWith;
10 |
11 | /**
12 | * app data cache test
13 | * Created by ChenRui on 2017/7/28 0028 22:12.
14 | */
15 | @RunWith(AndroidJUnit4.class)
16 | public class CacheTest {
17 |
18 | private Context mContext;
19 |
20 | @Before
21 | public void setup() {
22 | mContext = InstrumentationRegistry.getContext();
23 |
24 | }
25 |
26 | @Test
27 | public void testCacheSize() {
28 | // new AppDataManager(mContext).getDatabaseTotalSize();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/debug/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 博客园开发版
4 |
--------------------------------------------------------------------------------
/app/src/main/assets/css/rae.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/assets/css/rae.css
--------------------------------------------------------------------------------
/app/src/main/assets/css/shCoreDefault.css:
--------------------------------------------------------------------------------
1 | /*blog-common.css已经定义了该主题*/
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/assets/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/assets/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/assets/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/app/src/main/assets/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/assets/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/app/src/main/assets/js/highlighter/shBrushPlain.js:
--------------------------------------------------------------------------------
1 | /**
2 | * SyntaxHighlighter
3 | * http://alexgorbatchev.com/SyntaxHighlighter
4 | *
5 | * SyntaxHighlighter is donationware. If you are using it, please donate.
6 | * http://alexgorbatchev.com/SyntaxHighlighter/donate.html
7 | *
8 | * @version
9 | * 3.0.83 (July 02 2010)
10 | *
11 | * @copyright
12 | * Copyright (C) 2004-2010 Alex Gorbatchev.
13 | *
14 | * @license
15 | * Dual licensed under the MIT and GPL licenses.
16 | */
17 | ;(function()
18 | {
19 | // CommonJS
20 | typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null;
21 |
22 | function Brush()
23 | {
24 | };
25 |
26 | Brush.prototype = new SyntaxHighlighter.Highlighter();
27 | Brush.aliases = ['text', 'plain'];
28 |
29 | SyntaxHighlighter.brushes.Plain = Brush;
30 |
31 | // CommonJS
32 | typeof(exports) != 'undefined' ? exports.Brush = Brush : null;
33 | })();
34 |
--------------------------------------------------------------------------------
/app/src/main/assets/js/rae-login.js:
--------------------------------------------------------------------------------
1 | /*
2 | * =====================================
3 | * 博客园登录脚本注入
4 | * ======================================
5 | ***/
6 |
7 | alert("登录脚本注入成功!");
8 |
9 | var rae={
10 |
11 | /*登录*/
12 | login:function(u,p,c){
13 |
14 | alert("登录:"+u+p+c);
15 |
16 |
17 | }
18 | };
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/AppConstant.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs;
2 |
3 | /**
4 | * 常量定义
5 | * Created by ChenRui on 2017/1/11 00:30.
6 | */
7 | public final class AppConstant {
8 | /**
9 | * 微信APP ID
10 | */
11 | public final static String WECHAT_APP_ID = BuildConfig.WECHAT_APP_ID;
12 | /**
13 | * 微信APPSecret
14 | */
15 | public final static String WECHAT_APP_SECRET = BuildConfig.WECHAT_APP_SECRET;
16 | /**
17 | * 微博APP ID
18 | */
19 | public final static String WEIBO_APP_ID = BuildConfig.WEIBO_APP_ID;
20 | /**
21 | * 微博APPSecret
22 | */
23 | public final static String WEIBO_APP_SECRET = BuildConfig.WEIBO_APP_SECRET;
24 | /**
25 | * QQ APP ID
26 | */
27 | public final static String QQ_APP_ID = BuildConfig.QQ_APP_ID;
28 | /**
29 | * QQ APPSecret
30 | */
31 | public final static String QQ_APP_SECRET = BuildConfig.QQ_APP_SECRET;
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/CnblogsGlideModule.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs;
2 |
3 | import com.bumptech.glide.annotation.GlideModule;
4 | import com.bumptech.glide.module.AppGlideModule;
5 |
6 | /**
7 | * glide
8 | * Created by ChenRui on 2017/8/10 0010 23:15.
9 | */
10 | @GlideModule
11 | public class CnblogsGlideModule extends AppGlideModule {
12 |
13 | @Override
14 | public boolean isManifestParsingEnabled() {
15 | return false;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/CnblogsLayoutInflater.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs;
2 |
3 | import android.content.Context;
4 | import android.support.annotation.NonNull;
5 | import android.util.AttributeSet;
6 | import android.view.View;
7 |
8 | import com.rae.cnblogs.widget.SkinCardView;
9 | import com.rae.cnblogs.widget.SkinRoundedImageView;
10 |
11 | import skin.support.app.SkinLayoutInflater;
12 |
13 | /**
14 | * 自定义View不支持的皮肤扩展
15 | * Created by ChenRui on 2017/8/30 0030 17:25.
16 | */
17 | public class CnblogsLayoutInflater implements SkinLayoutInflater {
18 |
19 | @Override
20 | public View createView(@NonNull Context context, String name, @NonNull AttributeSet attrs) {
21 | switch (name) {
22 | case "com.makeramen.roundedimageview.RoundedImageView":
23 | return new SkinRoundedImageView(context, attrs);
24 | case "android.support.v7.widget.CardView":
25 | return new SkinCardView(context, attrs);
26 | }
27 | return null;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/IPageView.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs;
2 |
3 |
4 | import java.util.List;
5 |
6 | public interface IPageView {
7 | void onNoMoreData();
8 |
9 | void onEmptyData(String msg);
10 |
11 | void onLoadData(List data);
12 |
13 | void onLoginExpired();
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/activity/AboutMeActivity.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.activity;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.Nullable;
5 |
6 | import com.rae.cnblogs.R;
7 |
8 | /**
9 | * 关于我们
10 | * Created by ChenRui on 2018/2/9 0009 17:21.
11 | */
12 | public class AboutMeActivity extends BaseActivity {
13 | @Override
14 | protected void onCreate(@Nullable Bundle savedInstanceState) {
15 | super.onCreate(savedInstanceState);
16 | setContentView(R.layout.activity_about_me);
17 | showHomeAsUp();
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/activity/BaseFragmentActivity.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.activity;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.Nullable;
5 | import android.support.v4.app.Fragment;
6 |
7 | import com.rae.cnblogs.R;
8 |
9 | /**
10 | * 单个Fragment页面
11 | * Created by ChenRui on 2017/8/29 0029 22:59.
12 | */
13 | public abstract class BaseFragmentActivity extends SwipeBackBaseActivity {
14 |
15 | @Override
16 | protected void onCreate(@Nullable Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(getLayoutId());
19 | showHomeAsUp();
20 | getSupportFragmentManager()
21 | .beginTransaction()
22 | .replace(R.id.content, newFragment())
23 | .commitNowAllowingStateLoss();
24 |
25 | }
26 |
27 | protected abstract Fragment newFragment();
28 |
29 | public int getLayoutId() {
30 | return R.layout.activity_single_fragment;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/activity/BookmarkActivity.java:
--------------------------------------------------------------------------------
1 | //package com.rae.cnblogs.activity;
2 | //
3 | //import android.os.Bundle;
4 | //import android.support.annotation.Nullable;
5 | //
6 | //import com.rae.cnblogs.R;
7 | //
8 | ///**
9 | // * 我的收藏
10 | // * Created by ChenRui on 2017/3/16 23:33.
11 | // */
12 | //public class BookmarkActivity extends BaseActivity {
13 | //
14 | // @Override
15 | // protected void onCreate(@Nullable Bundle savedInstanceState) {
16 | // super.onCreate(savedInstanceState);
17 | // setContentView(R.layout.activity_bookmark);
18 | // }
19 | //}
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/activity/WBShareActivity.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.activity;
2 |
3 | import com.umeng.socialize.media.WBShareCallBackActivity;
4 |
5 | /**
6 | * 微博分享回调
7 | * Created by ChenRui on 2017/7/15 0015 1:23.
8 | */
9 | public class WBShareActivity extends WBShareCallBackActivity {
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/activity/WebLoginActivity.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.activity;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.NonNull;
5 | import android.support.annotation.Nullable;
6 | import android.view.View;
7 |
8 | import com.rae.cnblogs.fragment.WebLoginFragment;
9 | import com.rae.cnblogs.fragment.WebViewFragment;
10 |
11 | /**
12 | * 网页版登录
13 | * Created by ChenRui on 2017/2/3 0003 10:47.
14 | */
15 | public class WebLoginActivity extends WebActivity {
16 |
17 |
18 | @Override
19 | protected void onCreate(@Nullable Bundle savedInstanceState) {
20 | super.onCreate(savedInstanceState);
21 | mShareView.setVisibility(View.GONE);
22 | mWebViewFragment.enablePullToRefresh(false);
23 | }
24 |
25 | @Override
26 | protected WebViewFragment getWebViewFragment(String url) {
27 | return WebLoginFragment.newInstance(url);
28 | }
29 |
30 |
31 |
32 | @Override
33 | @NonNull
34 | protected String getUrl() {
35 | return "https://passport.cnblogs.com/user/signin";
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/adapter/FriendsAdapter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.adapter;
2 |
3 | import android.text.TextUtils;
4 | import android.view.LayoutInflater;
5 | import android.view.ViewGroup;
6 |
7 | import com.rae.cnblogs.R;
8 | import com.rae.cnblogs.RaeImageLoader;
9 | import com.rae.cnblogs.model.FriendsViewHolder;
10 | import com.rae.cnblogs.sdk.bean.UserInfoBean;
11 |
12 | /**
13 | * 朋友适配器
14 | * Created by ChenRui on 2017/2/23 01:36.
15 | */
16 | public class FriendsAdapter extends BaseItemAdapter {
17 |
18 |
19 | @Override
20 | public FriendsViewHolder onCreateViewHolder(LayoutInflater inflater, ViewGroup parent, int viewType) {
21 | return new FriendsViewHolder(inflateView(parent, R.layout.item_friends));
22 | }
23 |
24 | @Override
25 | public void onBindViewHolder(FriendsViewHolder holder, int position, UserInfoBean m) {
26 | RaeImageLoader.displayHeaderImage(m.getAvatar(), holder.avatarView);
27 | holder.nameView.setText(TextUtils.isEmpty(m.getRemarkName()) ? m.getDisplayName() : m.getRemarkName());
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/dialog/IAppDialogClickListener.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.dialog;
2 |
3 | /**
4 | * 弹出窗口监听
5 | * Created by ChenRui on 2017/1/24 0024 13:56.
6 | */
7 | public interface IAppDialogClickListener {
8 |
9 |
10 | /**
11 | * 点击时候触发
12 | *
13 | * @param dialog 窗口
14 | * @param buttonType 参考字段:{@link IAppDialog#BUTTON_NEGATIVE},Button_*的常量
15 | */
16 | void onClick(IAppDialog dialog, int buttonType);
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/dialog/impl/CommentMenuDialog.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.dialog.impl;
2 |
3 | import android.content.Context;
4 |
5 | import com.rae.cnblogs.sdk.bean.BlogCommentBean;
6 |
7 | /**
8 | * 评论的菜单
9 | * Created by ChenRui on 2017/2/5 23:04.
10 | */
11 | public class CommentMenuDialog extends MenuDialog {
12 |
13 | private BlogCommentBean mBlogComment;
14 |
15 | public CommentMenuDialog(Context context) {
16 | super(context);
17 | }
18 |
19 | public void setBlogComment(BlogCommentBean blogComment) {
20 | mBlogComment = blogComment;
21 | }
22 |
23 | public BlogCommentBean getBlogComment() {
24 | return mBlogComment;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/fragment/BlogTypeListFragment.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.fragment;
2 |
3 | import android.os.Bundle;
4 |
5 | import com.rae.cnblogs.sdk.bean.BlogType;
6 | import com.rae.cnblogs.sdk.bean.CategoryBean;
7 |
8 | /**
9 | * 博客类型的列表
10 | * Created by ChenRui on 2017/1/18 23:49.
11 | */
12 | public class BlogTypeListFragment extends BlogListFragment {
13 |
14 | public static BlogTypeListFragment newInstance(int position, CategoryBean category, BlogType type) {
15 | Bundle args = new Bundle();
16 | args.putParcelable("category", category);
17 | args.putString("type", type.getTypeName());
18 | args.putInt("position", position);
19 | BlogTypeListFragment fragment = new BlogTypeListFragment();
20 | fragment.setArguments(args);
21 | return fragment;
22 | }
23 |
24 | @Override
25 | protected void performTabEvent() {
26 |
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/message/EditCommentEvent.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.message;
2 |
3 | /**
4 | * 评论成功消息
5 | * Created by ChenRui on 2017/2/1 00:36.
6 | */
7 | public class EditCommentEvent {
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/message/FontChangedEvent.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.message;
2 |
3 | /**
4 | * 字体大小改变
5 | */
6 | public class FontChangedEvent {
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/message/SearchEvent.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.message;
2 |
3 | /**
4 | * 搜索事件
5 | * Created by ChenRui on 2017/8/29 0029 12:46.
6 | */
7 | public class SearchEvent {
8 | private String searchText;
9 |
10 | public SearchEvent(String searchText) {
11 | this.searchText = searchText;
12 | }
13 |
14 | public String getSearchText() {
15 | return searchText;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/message/TabEvent.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.message;
2 |
3 | /**
4 | * 选项卡事件
5 | * Created by ChenRui on 2017/7/20 0020 0:40.
6 | */
7 | public class TabEvent {
8 | private int mPosition;
9 |
10 | public TabEvent(int position) {
11 | mPosition = position;
12 | }
13 |
14 | public int getPosition() {
15 | return mPosition;
16 | }
17 |
18 | public void setPosition(int position) {
19 | mPosition = position;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/message/ThemeChangedEvent.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.message;
2 |
3 | /**
4 | * 主题更改事件
5 | */
6 | public class ThemeChangedEvent {
7 | private boolean isNight; // 是否为夜间模式
8 |
9 | public ThemeChangedEvent(boolean isNight) {
10 | this.isNight = isNight;
11 | }
12 |
13 | public boolean isNight() {
14 | return isNight;
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/message/UserInfoEvent.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.message;
2 |
3 | /**
4 | * 用户信息事件
5 | * Created by ChenRui on 2017/10/10 0010 23:29.
6 | */
7 | public class UserInfoEvent {
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/BookmarksViewHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 |
6 | import com.rae.cnblogs.R;
7 | import com.rae.cnblogs.widget.RaeTextView;
8 |
9 | import butterknife.BindView;
10 | import butterknife.ButterKnife;
11 |
12 | /**
13 | * Created by ChenRui on 2017/7/16 0016 14:00.
14 | */
15 | public class BookmarksViewHolder extends RecyclerView.ViewHolder {
16 |
17 | @BindView(R.id.tv_blog_title)
18 | public RaeTextView mBlogTitle;
19 | @BindView(R.id.tv_blog_summary)
20 | public RaeTextView mBlogSummary;
21 | @BindView(R.id.tv_blog_date)
22 | public RaeTextView mBlogDate;
23 |
24 | public BookmarksViewHolder(View itemView) {
25 | super(itemView);
26 | ButterKnife.bind(this, itemView);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/FeedViewHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.view.View;
4 | import android.widget.ImageView;
5 | import android.widget.TextView;
6 |
7 | import com.rae.cnblogs.R;
8 |
9 | import butterknife.BindView;
10 |
11 | /**
12 | * 动态
13 | * Created by ChenRui on 2017/3/16 15:58.
14 | */
15 | public class FeedViewHolder extends BlogCommentViewHolder {
16 |
17 | @BindView(R.id.img_blog_action)
18 | public ImageView feedActionView;
19 |
20 | @BindView(R.id.ll_feed)
21 | public View feedLayout;
22 |
23 | @BindView(R.id.tv_blog_action_title)
24 | public TextView feedActionTitleView;
25 |
26 | public FeedViewHolder(View itemView) {
27 | super(itemView);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/FriendsViewHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 | import android.widget.ImageView;
6 | import android.widget.TextView;
7 |
8 | import com.rae.cnblogs.R;
9 |
10 | import butterknife.BindView;
11 | import butterknife.ButterKnife;
12 |
13 | /**
14 | * 粉丝和关注
15 | * Created by ChenRui on 2017/2/23 01:36.
16 | */
17 | public class FriendsViewHolder extends RecyclerView.ViewHolder {
18 |
19 | @BindView(R.id.tv_user_name)
20 | public TextView nameView;
21 |
22 | @BindView(R.id.img_user_avatar)
23 | public ImageView avatarView;
24 |
25 | public FriendsViewHolder(View itemView) {
26 | super(itemView);
27 | ButterKnife.bind(this, itemView);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/ImagePreviewHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 | import android.widget.ImageView;
6 |
7 | import com.rae.cnblogs.R;
8 |
9 | import butterknife.BindView;
10 | import butterknife.ButterKnife;
11 |
12 | /**
13 | * 预览图模型
14 | * Created by ChenRui on 2017/2/6 0006 15:51.
15 | */
16 | public class ImagePreviewHolder extends RecyclerView.ViewHolder {
17 |
18 | @BindView(R.id.img_preview)
19 | public ImageView mImageView;
20 |
21 | public ImagePreviewHolder(View itemView) {
22 | super(itemView);
23 | ButterKnife.bind(this, itemView);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/ItemLoadingViewHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.view.View;
4 |
5 | /**
6 | * 正在加载
7 | * Created by ChenRui on 2017/1/31 20:28.
8 | */
9 | public class ItemLoadingViewHolder extends SimpleViewHolder {
10 |
11 | public ItemLoadingViewHolder(View itemView) {
12 | super(itemView);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/MenuDialogItem.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.support.annotation.ColorRes;
4 |
5 | /**
6 | * 菜单选项
7 | * Created by ChenRui on 2017/2/4 0004 17:49.
8 | */
9 | public class MenuDialogItem {
10 | private String name;
11 | private int colorId;
12 |
13 | public MenuDialogItem(String name) {
14 | this.name = name;
15 | }
16 |
17 | public MenuDialogItem(String name, @ColorRes int colorId) {
18 | this.colorId = colorId;
19 | this.name = name;
20 | }
21 |
22 | public int getColorId() {
23 | return colorId;
24 | }
25 |
26 | public void setColorId(int colorId) {
27 | this.colorId = colorId;
28 | }
29 |
30 | public String getName() {
31 | return name;
32 | }
33 |
34 | public void setName(String name) {
35 | this.name = name;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/MenuDialogViewHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 | import android.widget.TextView;
6 |
7 | import com.rae.cnblogs.R;
8 |
9 | import butterknife.BindView;
10 | import butterknife.ButterKnife;
11 |
12 | /**
13 | * 菜单对话框
14 | * Created by ChenRui on 2017/2/4 0004 17:20.
15 | */
16 | public class MenuDialogViewHolder extends RecyclerView.ViewHolder {
17 |
18 | @BindView(R.id.tv_menu_title)
19 | public TextView titleView;
20 |
21 | public MenuDialogViewHolder(View itemView) {
22 | super(itemView);
23 | ButterKnife.bind(this, itemView);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/MomentDetailHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.view.View;
4 |
5 | /**
6 | * 闪存详情
7 | * Created by ChenRui on 2017/11/2 0002 15:55.
8 | */
9 | public class MomentDetailHolder extends SimpleViewHolder {
10 | public MomentDetailHolder(View itemView) {
11 | super(itemView);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/MomentImageHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.view.View;
4 | import android.widget.ImageView;
5 |
6 | import com.rae.cnblogs.R;
7 |
8 | /**
9 | * Created by ChenRui on 2017/11/1 0001 0:51.
10 | */
11 | public class MomentImageHolder extends SimpleViewHolder {
12 | ImageView mImageView;
13 |
14 | public ImageView getImageView() {
15 | return mImageView;
16 | }
17 |
18 | public MomentImageHolder(View itemView) {
19 | super(itemView);
20 | mImageView = itemView.findViewById(R.id.img_thumb);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/MomentMessageHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.view.View;
4 | import android.widget.ImageView;
5 | import android.widget.TextView;
6 |
7 | import com.rae.cnblogs.R;
8 |
9 | import butterknife.BindView;
10 | import butterknife.ButterKnife;
11 |
12 | /**
13 | * 闪存
14 | * Created by ChenRui on 2017/10/27 0027 10:50.
15 | */
16 | public class MomentMessageHolder extends SimpleViewHolder {
17 |
18 | @BindView(R.id.img_blog_avatar)
19 | public ImageView avatarView;
20 |
21 | @BindView(R.id.tv_blog_author)
22 | public TextView authorView;
23 |
24 | @BindView(R.id.tv_blog_summary)
25 | public TextView summaryView;
26 |
27 | @BindView(R.id.tv_blog_date)
28 | public TextView dateView;
29 | @BindView(R.id.tv_source)
30 | public TextView sourceView;
31 |
32 |
33 | public MomentMessageHolder(View itemView) {
34 | super(itemView);
35 | ButterKnife.bind(this, itemView);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/SearchSuggestionHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 | import android.widget.ImageView;
6 | import android.widget.TextView;
7 |
8 | import com.rae.cnblogs.R;
9 |
10 | import butterknife.BindView;
11 | import butterknife.ButterKnife;
12 |
13 | /**
14 | * 搜索建议
15 | * Created by ChenRui on 2017/8/29 0029 9:57.
16 | */
17 | public class SearchSuggestionHolder extends RecyclerView.ViewHolder {
18 |
19 | @BindView(R.id.img_selected)
20 | ImageView mSelectedView;
21 |
22 | @BindView(R.id.tv_title)
23 | TextView mTitleView;
24 |
25 | public SearchSuggestionHolder(View itemView) {
26 | super(itemView);
27 | ButterKnife.bind(this, itemView);
28 | }
29 |
30 | public ImageView getSelectedView() {
31 | return mSelectedView;
32 | }
33 |
34 | public TextView getTitleView() {
35 | return mTitleView;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/SimpleViewHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.View;
5 |
6 | public class SimpleViewHolder extends RecyclerView.ViewHolder {
7 |
8 | public SimpleViewHolder(View itemView) {
9 | super(itemView);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/model/SystemMessageHolder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.model;
2 |
3 | import android.view.View;
4 | import android.widget.ImageView;
5 | import android.widget.TextView;
6 |
7 | import com.rae.cnblogs.R;
8 |
9 | import butterknife.BindView;
10 | import butterknife.ButterKnife;
11 |
12 | public class SystemMessageHolder extends SimpleViewHolder {
13 | @BindView(R.id.img_thumb)
14 | ImageView mThumbImageView;
15 | @BindView(R.id.tv_title)
16 | TextView mTitleView;
17 | @BindView(R.id.tv_date)
18 | TextView mDateView;
19 |
20 | public SystemMessageHolder(View itemView) {
21 | super(itemView);
22 | ButterKnife.bind(this, itemView);
23 | }
24 |
25 | public ImageView getThumbImageView() {
26 | return mThumbImageView;
27 | }
28 |
29 | public TextView getTitleView() {
30 | return mTitleView;
31 | }
32 |
33 | public TextView getDateView() {
34 | return mDateView;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IAppPresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | /**
4 | * 逻辑处理
5 | * Created by ChenRui on 2016/12/22 22:52.
6 | */
7 | public interface IAppPresenter {
8 | void start();
9 |
10 | void destroy();
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IBlogListPresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import com.rae.cnblogs.sdk.bean.BlogBean;
4 | import com.rae.cnblogs.sdk.bean.CategoryBean;
5 |
6 | import java.util.List;
7 |
8 | /**
9 | * 首页
10 | * Created by ChenRui on 2016/12/2 00:21.
11 | */
12 | public interface IBlogListPresenter extends IRaePresenter {
13 |
14 | void loadMore();
15 |
16 | /**
17 | * 刷新数据集
18 | */
19 | void refreshDataSet();
20 |
21 | void destroy();
22 |
23 | interface IBlogListView {
24 |
25 | void onLoadBlogList(int pageIndex, List data);
26 |
27 | void onLoadFailed(int pageIndex, String msg);
28 |
29 | CategoryBean getCategory();
30 |
31 | void onLoadMoreEmpty();
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IBloggerPresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import com.rae.cnblogs.sdk.bean.FriendsInfoBean;
4 |
5 | /**
6 | * 博主逻辑处理
7 | * Created by ChenRui on 2017/2/24 0024 16:22.
8 | */
9 | public interface IBloggerPresenter extends IAppPresenter {
10 |
11 | /**
12 | * 关注/取消关注
13 | */
14 | void doFollow();
15 |
16 | boolean isFollowed();
17 |
18 | interface IBloggerView {
19 | void onLoadBloggerInfo(FriendsInfoBean userInfo);
20 |
21 | String getBlogApp();
22 |
23 | void onLoadBloggerInfoFailed(String msg);
24 |
25 | void onFollowFailed(String msg);
26 |
27 | void onFollowSuccess();
28 |
29 | void onNotLogin();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IFeedPresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import com.rae.cnblogs.sdk.bean.UserFeedBean;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * Created by ChenRui on 2017/3/16 16:20.
9 | */
10 | public interface IFeedPresenter extends IAppPresenter {
11 |
12 |
13 | void loadMore();
14 |
15 | interface IFeedView {
16 | String getBlogApp();
17 |
18 | void onLoadFeedFailed(String msg);
19 |
20 | void onLoadMoreFeedFailed(String msg);
21 |
22 | void onLoadFeedSuccess(List dataList);
23 |
24 | void onLoadMoreFinish();
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IHomePresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import com.rae.cnblogs.sdk.bean.CategoryBean;
4 |
5 | import java.util.List;
6 |
7 | /**
8 | * 首页
9 | * Created by ChenRui on 2016/12/2 00:21.
10 | */
11 | public interface IHomePresenter extends IRaePresenter {
12 |
13 | interface IHomeView {
14 | void onLoadCategory(List data);
15 |
16 | /**
17 | * 加载热搜
18 | */
19 | void onLoadHotSearchData(String keyword);
20 |
21 | // /**
22 | // * 加载用户信息
23 | // */
24 | // void onLoadUserInfo(UserInfoBean userInfo);
25 | //
26 | // /**
27 | // * 正常加载
28 | // */
29 | // void onLoadNormal();
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/ILauncherPresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | /**
4 | * 启动页
5 | * Created by ChenRui on 2016/12/22 22:52.
6 | */
7 | public interface ILauncherPresenter extends IAppPresenter {
8 |
9 | void advertClick();
10 |
11 | void cancel();
12 |
13 | void stop();
14 |
15 |
16 | interface ILauncherView {
17 |
18 | void onLoadImage(String name, String url);
19 |
20 | void onJumpToWeb(String url);
21 |
22 | void onJumpToBlog(String id);
23 |
24 | void onNormalImage();
25 |
26 | void onJumpToMain();
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/ILoginPresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import com.rae.cnblogs.sdk.bean.UserInfoBean;
4 |
5 | /**
6 | * 登录逻辑
7 | * Created by ChenRui on 2017/1/19 0019 14:55.
8 | */
9 | public interface ILoginPresenter extends IRaePresenter {
10 | // void login();
11 |
12 | void loadUserInfo();
13 |
14 | /**
15 | * 取消登录
16 | */
17 | void cancel();
18 |
19 | interface ILoginView {
20 |
21 | // String getUserName();
22 | //
23 | // String getPassword();
24 |
25 | void onLoginSuccess(UserInfoBean userInfo);
26 |
27 | void onLoginError(String message);
28 |
29 | void onLoading(String msg);
30 | //
31 | // /**
32 | // * 登录验证码错误
33 | // */
34 | // void onLoginVerifyCodeError();
35 |
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IMomentContract.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import com.rae.cnblogs.IPageView;
4 | import com.rae.cnblogs.sdk.bean.MomentBean;
5 |
6 | /**
7 | * 闪存
8 | * Created by ChenRui on 2017/10/27 0027 10:54.
9 | */
10 | public interface IMomentContract {
11 |
12 | interface Presenter extends IAppPresenter {
13 | void loadMore();
14 |
15 | // void delete(String ingId);
16 | }
17 |
18 | interface View extends IPageView {
19 |
20 | /**
21 | * 参考 {@link com.rae.cnblogs.sdk.api.IMomentApi#MOMENT_TYPE_ALL}
22 | */
23 | String getType();
24 |
25 | // /**
26 | // * 删除失败
27 | // */
28 | // void onDeleteMomentFailed(String msg);
29 | //
30 | // /**
31 | // * 删除成功
32 | // */
33 | // void onDeleteMomentSuccess();
34 |
35 | /**
36 | * 消息数量改变
37 | * @param replyMeCount 有回复我的消息数量
38 | * @param atMeCount 有提到我的数量
39 | */
40 | void onMessageCountChanged(int replyMeCount, int atMeCount);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IMomentMessageContract.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import com.rae.cnblogs.IPageView;
4 | import com.rae.cnblogs.sdk.bean.MomentCommentBean;
5 |
6 | /**
7 | * 闪存
8 | * Created by ChenRui on 2017/10/27 0027 10:54.
9 | */
10 | public interface IMomentMessageContract {
11 |
12 | interface Presenter extends IAppPresenter {
13 | void loadMore();
14 |
15 | void postComment(String ingId, String userId, String commentId, String content);
16 | }
17 |
18 | interface View extends IPageView {
19 |
20 | /**
21 | * 评论失败
22 | */
23 | void onPostCommentFailed(String message);
24 |
25 | /**
26 | * 评论成功
27 | */
28 | void onPostCommentSuccess();
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IPostMomentContract.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * 发布闪存
7 | * Created by ChenRui on 2017/10/27 0027 14:37.
8 | */
9 | public interface IPostMomentContract {
10 |
11 | interface Presenter extends IAppPresenter {
12 | boolean post();
13 |
14 | boolean isBlogOpened();
15 | }
16 |
17 | interface View {
18 |
19 | String getContent();
20 |
21 | void onPostMomentFailed(String msg);
22 |
23 | void onPostMomentSuccess();
24 |
25 | List getImageUrls();
26 |
27 | /**
28 | * 后台发送
29 | */
30 | void onPostMomentInProgress();
31 |
32 | /**
33 | * 博客开通状态
34 | */
35 | void onLoadBlogOpenStatus(Boolean value);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/IRaePresenter.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | /**
4 | * Created by ChenRui on 2016/12/2 00:21.
5 | */
6 | public interface IRaePresenter {
7 | void start();
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/ISearchContract.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter;
2 |
3 | import java.util.List;
4 |
5 | /**
6 | * 搜索
7 | * Created by ChenRui on 2017/8/29 0029 9:37.
8 | */
9 | public class ISearchContract {
10 |
11 | public interface Presenter extends IAppPresenter {
12 | /**
13 | * 搜索建议
14 | */
15 | void suggest();
16 | }
17 |
18 | public interface View {
19 |
20 | /**
21 | * 搜索文本
22 | */
23 | String getSearchText();
24 |
25 | /**
26 | * 加载搜索建议成功
27 | */
28 | void onSuggestionSuccess(List data);
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/impl/blog/BloggerListPresenterImpl.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter.impl.blog;
2 |
3 | import android.content.Context;
4 |
5 | import com.rae.cnblogs.sdk.api.IFriendsApi;
6 | import com.rae.cnblogs.sdk.bean.CategoryBean;
7 |
8 | /**
9 | * 知识库
10 | * Created by ChenRui on 2017/2/4 0004 14:09.
11 | */
12 | public class BloggerListPresenterImpl extends BlogListPresenterImpl {
13 |
14 | private IFriendsApi mFriendsApi;
15 |
16 | public BloggerListPresenterImpl(Context context, IBlogListView view) {
17 | super(context, view);
18 | mFriendsApi = getApiProvider().getFriendApi();
19 | }
20 |
21 | @Override
22 | protected void onLoadData(CategoryBean category, int pageIndex) {
23 | createObservable(mFriendsApi.getBlogList(Math.max(1, pageIndex), category.getCategoryId())).subscribe(getBlogObserver());
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/impl/kb/KBListPresenterImpl.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter.impl.kb;
2 |
3 | import android.content.Context;
4 |
5 | import com.rae.cnblogs.RxObservable;
6 | import com.rae.cnblogs.presenter.impl.blog.BlogListPresenterImpl;
7 | import com.rae.cnblogs.sdk.bean.CategoryBean;
8 |
9 | /**
10 | * 知识库
11 | * Created by ChenRui on 2017/2/4 0004 14:09.
12 | */
13 | public class KBListPresenterImpl extends BlogListPresenterImpl {
14 |
15 | public KBListPresenterImpl(Context context, IBlogListView view) {
16 | super(context, view);
17 | }
18 |
19 | @Override
20 | protected void onLoadData(CategoryBean category, int pageIndex) {
21 | createObservable(mApi.getKbArticles(pageIndex)).subscribe(getBlogObserver());
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/impl/kb/KbCommentPresenterImpl.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter.impl.kb;
2 |
3 | import android.content.Context;
4 |
5 | import com.rae.cnblogs.presenter.impl.blog.BlogCommentPresenterImpl;
6 |
7 | /**
8 | * 评论
9 | * Created by ChenRui on 2016/12/26 0026 8:49.
10 | */
11 | public class KbCommentPresenterImpl extends BlogCommentPresenterImpl {
12 | public KbCommentPresenterImpl(Context context, IBlogCommentView view) {
13 | super(context, view);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/presenter/impl/news/NewsListPresenterImpl.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.presenter.impl.news;
2 |
3 | import android.content.Context;
4 |
5 | import com.rae.cnblogs.RxObservable;
6 | import com.rae.cnblogs.presenter.impl.blog.BlogListPresenterImpl;
7 | import com.rae.cnblogs.sdk.api.INewsApi;
8 | import com.rae.cnblogs.sdk.bean.CategoryBean;
9 |
10 | /**
11 | * 新闻
12 | * Created by ChenRui on 2017/2/4 0004 14:09.
13 | */
14 | public class NewsListPresenterImpl extends BlogListPresenterImpl {
15 | private INewsApi mNewsApi;
16 |
17 | public NewsListPresenterImpl(Context context, IBlogListView view) {
18 | super(context, view);
19 | mNewsApi = getApiProvider().getNewsApi();
20 |
21 | }
22 |
23 | @Override
24 | protected void onLoadData(CategoryBean category, int pageIndex) {
25 | createObservable(mNewsApi.getNews(pageIndex)).subscribe(getBlogObserver());
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/service/CnblogsServiceBinder.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.service;
2 |
3 | import android.content.Context;
4 | import android.os.Binder;
5 |
6 | /**
7 | * 服务进程绑定器
8 | * Created by ChenRui on 2017/7/28 0028 17:52.
9 | */
10 | public class CnblogsServiceBinder extends Binder {
11 |
12 | private JobScheduler mJobScheduler;
13 |
14 | public CnblogsServiceBinder(Context context) {
15 | mJobScheduler = new JobScheduler(context);
16 | }
17 |
18 | public JobScheduler getJobScheduler() {
19 | return mJobScheduler;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/service/job/IJob.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.service.job;
2 |
3 | /**
4 | * 工作
5 | * Created by ChenRui on 2017/7/27 0027 15:36.
6 | */
7 | public interface IJob {
8 |
9 | /**
10 | * 运行
11 | */
12 | void run();
13 |
14 | /**
15 | * 取消
16 | */
17 | void cancel();
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/service/job/JobEvent.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.service.job;
2 |
3 | /**
4 | * JOB event
5 | * Created by ChenRui on 2017/7/28 0028 18:33.
6 | */
7 | public class JobEvent {
8 | private int action;
9 |
10 |
11 | public JobEvent(int action) {
12 | this.action = action;
13 | }
14 |
15 | public int getAction() {
16 | return action;
17 | }
18 |
19 | public void setAction(int action) {
20 | this.action = action;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/widget/HomeSearchHeader.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.widget;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 |
6 | import in.srain.cube.views.ptr.PtrClassicDefaultHeader;
7 |
8 | public class HomeSearchHeader extends PtrClassicDefaultHeader {
9 |
10 | public HomeSearchHeader(Context context) {
11 | super(context);
12 | }
13 |
14 | public HomeSearchHeader(Context context, AttributeSet attrs) {
15 | super(context, attrs);
16 | }
17 |
18 | public HomeSearchHeader(Context context, AttributeSet attrs, int defStyle) {
19 | super(context, attrs, defStyle);
20 | }
21 |
22 | @Override
23 | protected void initViews(AttributeSet attrs) {
24 | super.initViews(attrs);
25 | // LayoutInflater.from(getContext()).inflate(R.layout.item_home_search, this, true);
26 |
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/widget/RaeEditText.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.widget;
2 |
3 | import android.annotation.TargetApi;
4 | import android.content.Context;
5 | import android.os.Build;
6 | import android.util.AttributeSet;
7 | import android.widget.EditText;
8 |
9 | /**
10 | * Created by ChenRui on 2017/1/19 0019 14:35.
11 | */
12 | public class RaeEditText extends EditText {
13 | public RaeEditText(Context context) {
14 | super(context);
15 | }
16 |
17 | public RaeEditText(Context context, AttributeSet attrs) {
18 | super(context, attrs);
19 | }
20 |
21 | public RaeEditText(Context context, AttributeSet attrs, int defStyleAttr) {
22 | super(context, attrs, defStyleAttr);
23 | }
24 |
25 | @TargetApi(Build.VERSION_CODES.LOLLIPOP)
26 | public RaeEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
27 | super(context, attrs, defStyleAttr, defStyleRes);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/widget/RaeTextView.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.widget;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 |
6 | import skin.support.widget.SkinCompatTextView;
7 |
8 | /**
9 | * 文本
10 | * Created by ChenRui on 2016/12/1 23:00.
11 | */
12 | public class RaeTextView extends SkinCompatTextView {
13 | public RaeTextView(Context context) {
14 | super(context);
15 | init();
16 | }
17 |
18 | public RaeTextView(Context context, AttributeSet attrs) {
19 | super(context, attrs);
20 | init();
21 |
22 | }
23 |
24 | public RaeTextView(Context context, AttributeSet attrs, int defStyleAttr) {
25 | super(context, attrs, defStyleAttr);
26 | init();
27 |
28 | }
29 |
30 | void init() {
31 | // Typeface tf = Typeface.createFromAsset(getResources().getAssets(),"fonts/cnblogs.ttf");
32 | // setTypeface(tf);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/widget/span/ISpanTouchFix.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.widget.span;
2 |
3 | /**
4 | * @author cginechen
5 | * @date 2017-08-07
6 | */
7 |
8 | public interface ISpanTouchFix {
9 | /**
10 | * 记录当前 Touch 事件对应的点是不是点在了 span 上面
11 | */
12 | void setTouchSpanHit(boolean hit);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/widget/span/ITouchableSpan.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.widget.span;
2 |
3 | import android.view.View;
4 |
5 | /**
6 | * @author cginechen
7 | * @date 2017-03-20
8 | */
9 |
10 | public interface ITouchableSpan {
11 | void setPressed(boolean pressed);
12 | void onClick(View widget);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/rae/cnblogs/wxapi/WXEntryActivity.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.wxapi;
2 |
3 |
4 | import com.umeng.weixin.callback.WXCallbackActivity;
5 |
6 | //import com.umeng.socialize.weixin.view.WXCallbackActivity;
7 |
8 | public class WXEntryActivity extends WXCallbackActivity {
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/ad_scale_fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/at_slide_fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/image_scale_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
13 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/image_scale_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
16 |
17 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/keep_status.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/like_anim.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
15 |
16 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/login_slide_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/login_slide_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
11 |
12 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/scale_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
12 |
13 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/scale_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
15 |
16 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_in_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/slide_out_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
10 |
11 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/toolbar_toast_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/color/text_color_default_tab.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/text_color_default_tab_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/text_color_login_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/text_color_post_moment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/text_color_search_button.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/color/text_color_tab_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/color/text_color_tab_selector_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/account_top_bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/account_top_bg.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/bg_login.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/bg_login.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/bg_moment_reference.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/bg_moment_reference.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/bg_new_version.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/bg_new_version.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/boy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/boy.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/channel_edit_grid_item_del_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/channel_edit_grid_item_del_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/comment_empty.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/comment_empty.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/default_right_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/default_right_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_bar_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_action_bar_avatar.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_bar_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_action_bar_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_bookmark_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_bookmark_delete.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_category_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_category_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_checked_checked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_checked_checked.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_checked_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_checked_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_close.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_close_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_close_light.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_default_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_default_placeholder.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_default_user_avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_default_user_avatar.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_download.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_edit_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_edit_delete.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_empty_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_empty_placeholder.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_empty_placeholder_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_empty_placeholder_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_eyes_closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_eyes_closed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_eyes_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_eyes_open.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_left_top_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_left_top_arrow.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_loading_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_loading_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_login_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_login_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_logo_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_logo_small.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_menu_gallery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_menu_gallery.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_nav_home_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_nav_home_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_network_error_placeholder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_network_error_placeholder.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_search_del.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_search_del.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_share_app.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_share_app.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_task_finish.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/ic_task_finish.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/pic_msg_unlogin.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/pic_msg_unlogin.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/picture_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/picture_loading.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/picture_viewer_no_pic_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/picture_viewer_no_pic_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/tab_channel_background.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/tab_channel_background.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/tab_channel_background_night.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/tab_channel_background_night.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/tab_main_background.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/tab_main_background.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/tab_main_background_night.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/tab_main_background_night.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/toast_failed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/toast_failed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/toast_success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xhdpi/toast_success.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/bg_blogger_blur.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/bg_blogger_blur.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/browser_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/browser_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/browser_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/browser_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/channel_manager_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/channel_manager_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/day_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/day_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/day_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/day_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/hint_card_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/hint_card_close.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/hint_card_close_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/hint_card_close_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_bar_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_action_bar_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_bar_search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_action_bar_search.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_add_photo_holder.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_add_photo_holder.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_back.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_back_closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_back_closed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_back_closed_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_back_closed_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_back_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_back_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_back_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_back_white.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_blog_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_blog_comment.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_blog_content_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_blog_content_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_blog_like.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_blog_like.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_blog_read.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_blog_read.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_collect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_collect.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_comment_badge.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_comment_badge.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_comment_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_comment_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_edit_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_edit_delete.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_empty_message.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_empty_message.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_eyes_closed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_eyes_closed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_eyes_open.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_eyes_open.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_favorite_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_favorite_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_favorite_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_favorite_selected.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_like_badge.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_like_badge.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_like_badge_selected.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_like_badge_selected.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_loading.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_logo_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_logo_small.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_menu_gallery.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_menu_gallery.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_moment_at_me.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_moment_at_me.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_moment_comment.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_moment_comment.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_moment_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_moment_notification.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_moment_post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_moment_post.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_nightmode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_nightmode.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_nightmode_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_nightmode_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_official_flag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_official_flag.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_photo_select_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_photo_select_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_photo_select_selected.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_photo_select_selected.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_progress_loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_progress_loading.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_pull_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/ic_pull_down.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/launcher_background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/launcher_background.jpg
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/link_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/link_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/link_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/link_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/login_btn_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/login_btn_close.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/moment_share_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/moment_share_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/night_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/night_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/night_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/night_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/qq_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/qq_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/qq_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/qq_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/qqkj_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/qqkj_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/qqkj_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/qqkj_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/sina_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/sina_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/sina_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/sina_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_home_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_home_h.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_home_h_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_home_h_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_home_n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_home_n.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_home_n_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_home_n_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_library_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_library_h.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_library_h_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_library_h_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_library_n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_library_n.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_library_n_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_library_n_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_mine_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_mine_h.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_mine_h_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_mine_h_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_mine_n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_mine_n.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_mine_n_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_mine_n_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_news_h.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_news_h.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_news_h_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_news_h_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_news_n.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_news_n.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_news_n_night.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/tab_news_n_night.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/text_allshare_font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/text_allshare_font.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/text_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/text_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/text_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/text_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/weixin_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/weixin_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/weixin_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/weixin_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/weixinpyq_allshare_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/weixinpyq_allshare_normal.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/weixinpyq_allshare_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable-xxhdpi/weixinpyq_allshare_pressed.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/abc_checked.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/anim_picture_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/avoscloud_feedback_contact_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/avoscloud_feedback_contact_background_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/avoscloud_feedback_text_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/avoscloud_feedback_text_background_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_action_bar_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_badge.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_blog_content_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_blog_content_bottom_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 | -
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_blog_item_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_blog_item_selector_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_default_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_follow.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 | -
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_follow_drak.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_send.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_btn_send_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_button_while.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_button_while_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_button_white_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_button_white_selector_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_category.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_category_lock.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_category_lock_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_category_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_count_down.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_default_action_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 | -
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_dialog_default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_dialog_default_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_dialog_hint_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_dialog_hint_card_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_dialog_hint_card_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_edit_comment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_edit_comment_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_font_setting_message.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_login_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_menu_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_message_card.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_message_card_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_nav_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_nav_search_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_quote_comment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_quote_comment_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_tab_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_tab_home_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_tab_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 | -
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_tag.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_tag_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_toast.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_toast_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_user_avatar.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_write_comment.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_write_comment_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/button_image_selected_borderless.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/channel_edit_grid_item_del.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/default_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_comment_toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_eyes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_favorite.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_like_content_badge.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_photo_select.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_browser.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_link.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_night_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_qq.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_qzone.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_sina.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_text.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_wechat.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_wechat_sns.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/item_divider_while_primary.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 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/item_divider_while_primary_night.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 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progress_bar_loading.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progress_bar_loading_white.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/public_button_login.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/res/drawable/public_button_login_borderless.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 | -
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sb_default_back_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
9 |
10 |
11 |
12 |
13 | -
14 |
15 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/sb_default_thumb_drawable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/seekbar_progress_material_font_setting.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/seekbar_tickmark_font_setting.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/setting_divider_while_primary.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 |
9 |
-
10 |
11 |
12 |
13 | -
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | -
22 |
23 |
24 |
25 |
26 |
-
27 |
28 |
29 |
30 | -
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/setting_divider_while_primary_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 |
8 |
9 |
-
10 |
11 |
12 |
13 | -
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | -
22 |
23 |
24 |
25 |
26 |
-
27 |
28 |
29 |
30 | -
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_home_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_library.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_library_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_mine.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_mine_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_news.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/tab_news_night.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/text_cursor.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
8 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_back_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_back_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_btn_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_copy.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_copyurl.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_copyurl.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_delete.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_delete.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_edit_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_menu_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_menu_default.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_share_music.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_share_music.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_share_video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_share_video.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/umeng_socialize_share_web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/drawable/umeng_socialize_share_web.png
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_about_me.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_bookmark.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_category.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
17 |
18 |
19 |
20 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_favorites.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
15 |
16 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_friends.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_single_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_blog_comment.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/dialog_blog_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
17 |
18 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fm_blog_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
15 |
16 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fm_blogger.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fm_moment.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fm_web.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
12 |
13 |
14 |
18 |
19 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fm_web_login.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_comment_placeholder.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_dialog_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_fragment_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_home_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_image_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_moment_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_moment_image_single.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_post_moment_image.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/tab_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/view_toast_home.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-v19/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 24dp
3 |
4 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v19/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v23/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 | 52dp
3 | 52dp
4 | 56dp
5 | 48dp
6 | 16sp
7 | 14sp
8 | 12sp
9 | 10sp
10 | 12dp
11 | 15sp
12 | 45dp
13 | 4dp
14 | 40dp
15 | 2dp
16 | 45dp
17 | 36dp
18 | 86dp
19 | 180dp
20 | 0dp
21 |
22 | 70
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/values/umeng_socialize_colors.xml:
--------------------------------------------------------------------------------
1 |
2 | #F4F4F4
3 | #2c3035
4 | #333333
5 | #FFFFFF
6 | #E6E6E6
7 | #999999
8 | #464f61
9 | #959696
10 | #666666
11 | #EEEEEE
12 | #595959
13 | #C4C4C4
14 | #F8F8F8
15 | #F4F4F4
16 | #D4E0E5
17 | #ffffff
18 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/lc_fileprovider_path.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/test/java/com/rae/cnblogs/ExampleUnitTest.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs;
2 |
3 | import org.junit.Test;
4 |
5 | /**
6 | * Example local unit test, which will execute on the development machine (host).
7 | *
8 | * @see Testing documentation
9 | */
10 | public class ExampleUnitTest {
11 | @Test
12 | public void addition_isCorrect() throws Exception {
13 | }
14 |
15 | }
--------------------------------------------------------------------------------
/app/src/xiaomi/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | 博客园APP
3 |
4 |
--------------------------------------------------------------------------------
/app/xiaomiChannel:
--------------------------------------------------------------------------------
1 | #小米特殊渠道包
2 | xiaomi
--------------------------------------------------------------------------------
/doc/mkdocs.yml:
--------------------------------------------------------------------------------
1 | site_name: My Docs
2 | theme: readthedocs
3 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 | # IDE (e.g. Android Studio) users:
3 | # Gradle settings configured through the IDE *will override*
4 | # any settings specified in this file.
5 | # For more details on how to configure your build environment visit
6 | # http://www.gradle.org/docs/current/userguide/build_environment.html
7 | # Specifies the JVM arguments used for the daemon process.
8 | # The setting is particularly useful for tweaking memory settings.
9 | org.gradle.jvmargs=-Xmx1536m
10 | # When configured, Gradle will run in incubating parallel mode.
11 | # This option should only be used with decoupled projects. More details, visit
12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
13 | # org.gradle.parallel=true
14 | # Enable/Disable Tinker HotFix
15 | enableHotfix=false
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Mar 01 11:25:28 CST 2018
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-4.4-all.zip
7 |
--------------------------------------------------------------------------------
/guide.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/raee/android-cnblogs/651b1b879e4aea76df1165f2ceff1e16306550ad/guide.jpg
--------------------------------------------------------------------------------
/jar2dex.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | d:\sdk\build-tools\27.0.1\dx.bat --dex --output="sdk\build\intermediates\bundles\debug\sdk.dex" sdk\build\intermediates\bundles\debug\classes.jar
3 |
4 |
--------------------------------------------------------------------------------
/push-sdk-patch.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | adb shell mkdir /sdcard/Android/data/com.rae.cnblogs/cache
3 | adb push sdk\build\intermediates\bundles\debug\sdk.dex /sdcard/Android/data/com.rae.cnblogs/cache/sdk-hotfix.patch
4 |
5 |
--------------------------------------------------------------------------------
/sdk/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/sdk/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 C:\AndroidStudio\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 |
--------------------------------------------------------------------------------
/sdk/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
5 |
7 |
8 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/ApiErrorCode.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | /**
4 | * 错误代码
5 | * Created by ChenRui on 2017/7/20 0020 12:42.
6 | */
7 | public final class ApiErrorCode {
8 |
9 | public static final int LOGIN_EXPIRED = 7000;
10 | }
11 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/ApiOptions.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | import java.lang.annotation.Documented;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.Target;
6 |
7 | import static java.lang.annotation.ElementType.METHOD;
8 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
9 |
10 | /**
11 | * 接口选项
12 | * Created by ChenRui on 2017/5/22 0022 23:30.
13 | */
14 | @Documented
15 | @Target(METHOD)
16 | @Retention(RUNTIME)
17 | public @interface ApiOptions {
18 |
19 | /**
20 | * 是否忽略登录
21 | */
22 | boolean ignoreLogin() default false;
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/AppGson.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | import com.google.gson.Gson;
4 | import com.google.gson.GsonBuilder;
5 |
6 | import java.lang.reflect.Modifier;
7 |
8 | /**
9 | * Created by ChenRui on 2017/6/12 0012 18:00.
10 | */
11 | public final class AppGson {
12 | private static Gson sGson;
13 |
14 | static {
15 | GsonBuilder builder = new GsonBuilder();
16 | builder.excludeFieldsWithModifiers(Modifier.FINAL, Modifier.TRANSIENT, Modifier.STATIC);
17 | sGson = builder.create();
18 | }
19 |
20 | public static Gson get() {
21 | return sGson;
22 | }
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/CnblogsReportException.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | /**
4 | * 上报的异常
5 | * Created by ChenRui on 2017/9/7 0007 19:05.
6 | */
7 | public class CnblogsReportException extends RuntimeException {
8 |
9 | public CnblogsReportException(String message, Throwable cause) {
10 | super(message, cause);
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/Empty.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | /**
4 | * 空数据
5 | * Created by ChenRui on 2017/5/24 0024 23:26.
6 | */
7 | public final class Empty {
8 |
9 | public static Empty value() {
10 | return new Empty();
11 | }
12 |
13 | private Empty() {
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/JsonParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | import com.rae.cnblogs.sdk.parser.IJsonParser;
4 |
5 | import java.lang.annotation.Documented;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.Target;
8 |
9 | import static java.lang.annotation.ElementType.METHOD;
10 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
11 |
12 | /**
13 | * JSON解析器
14 | * Created by ChenRui on 2017/6/7 0007 19:18.
15 | */
16 | @Documented
17 | @Target(METHOD)
18 | @Retention(RUNTIME)
19 | public @interface JsonParser {
20 |
21 | /**
22 | * JSON解析器
23 | */
24 | Class extends IJsonParser> value();
25 | }
26 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/Parser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | import com.rae.cnblogs.sdk.parser.IHtmlParser;
4 |
5 | import java.lang.annotation.Documented;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.Target;
8 |
9 | import static java.lang.annotation.ElementType.METHOD;
10 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
11 |
12 | /**
13 | * 解析器
14 | * Created by ChenRui on 2017/5/22 0022 23:30.
15 | */
16 | @Documented
17 | @Target(METHOD)
18 | @Retention(RUNTIME)
19 | public @interface Parser {
20 | /**
21 | * HTML解析器
22 | */
23 | Class extends IHtmlParser> value();
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/PatchCnblogsApiProvider.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk;
2 |
3 | import android.content.Context;
4 |
5 | /**
6 | * 用于动态下发的接口工厂提供者
7 | * Created by ChenRui on 2018/1/26 0026 14:28.
8 | */
9 | public class PatchCnblogsApiProvider extends DefaultCnblogsApiProvider {
10 |
11 | public PatchCnblogsApiProvider(Context applicationContext) {
12 | super(applicationContext);
13 | }
14 |
15 | @Override
16 | public int getApiVersion() {
17 | return 3;
18 | }
19 |
20 | @Override
21 | public String toString() {
22 | return "this is cnblogs patch api provider! version is " + getApiVersion();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/api/ICategoryApi.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.api;
2 |
3 | import com.rae.cnblogs.sdk.Empty;
4 | import com.rae.cnblogs.sdk.bean.CategoryBean;
5 |
6 | import java.util.List;
7 |
8 | import io.reactivex.Observable;
9 |
10 | /**
11 | * 分类接口
12 | * Created by ChenRui on 2016/11/30 0030 17:19.
13 | */
14 | public interface ICategoryApi {
15 |
16 | /**
17 | * 获取分类
18 | */
19 | Observable> getCategories();
20 |
21 | /**
22 | * 获取分类
23 | */
24 | Observable> getHomeCategories();
25 |
26 | /**
27 | * 更新分类
28 | */
29 | Observable updateCategories(List categoryList);
30 | }
31 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/bean/BlogCommentModel.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.bean;
2 |
3 | /**
4 | * 实体
5 | * Created by ChenRui on 2016/12/10 18:28.
6 | */
7 | public class BlogCommentModel {
8 |
9 | private int commentCount;
10 | private String commentsHtml;
11 |
12 | public int getCommentCount() {
13 | return commentCount;
14 | }
15 |
16 | public void setCommentCount(int commentCount) {
17 | this.commentCount = commentCount;
18 | }
19 |
20 | public String getCommentsHtml() {
21 | return commentsHtml;
22 | }
23 |
24 | public void setCommentsHtml(String commentsHtml) {
25 | this.commentsHtml = commentsHtml;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/bean/LoginToken.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.bean;
2 |
3 | /**
4 | * 登录凭证
5 | * Created by ChenRui on 2017/10/7 0007 23:58.
6 | */
7 | public class LoginToken {
8 |
9 | // 登录界面校验的TOKEN
10 | private String verificationToken;
11 |
12 | public String getVerificationToken() {
13 | return verificationToken;
14 | }
15 |
16 | public void setVerificationToken(String verificationToken) {
17 | this.verificationToken = verificationToken;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/bean/MomentPrimaryBean.java:
--------------------------------------------------------------------------------
1 | //package com.rae.cnblogs.sdk.bean;
2 | //
3 | ///**
4 | // * 主要的闪存
5 | // * Created by ChenRui on 2017/9/25 0025 17:09.
6 | // */
7 | //public class MomentPrimaryBean extends MomentBean {
8 | //
9 | //}
10 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/db/CnblogsContentProvider.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.db;
2 |
3 | import com.activeandroid.content.ContentProvider;
4 |
5 | /**
6 | * 博客园数据库提供者
7 | * Created by ChenRui on 2017/11/17 0017 11:23.
8 | */
9 | public class CnblogsContentProvider extends ContentProvider {
10 |
11 | @Override
12 | public boolean onCreate() {
13 | // 初始化数据库
14 | DbFactory.init(getContext());
15 | return super.onCreate();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/db/DbCategory.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.db;
2 |
3 | import com.activeandroid.query.Select;
4 | import com.rae.cnblogs.sdk.bean.CategoryBean;
5 |
6 | import java.util.List;
7 |
8 |
9 | /**
10 | * 分类表
11 | * Created by ChenRui on 2016/12/1 00:24.
12 | */
13 | public class DbCategory extends DbCnblogs {
14 |
15 | DbCategory() {
16 | }
17 |
18 | // public void clear() {
19 | // new Delete().from(CategoryBean.class).execute();
20 | // }
21 |
22 | /**
23 | * 重置分类
24 | *
25 | * @param list 数据
26 | */
27 | public void reset(final List list) {
28 |
29 | executeTransaction(new Runnable() {
30 | @Override
31 | public void run() {
32 | for (CategoryBean category : list) {
33 | category.save();
34 | }
35 | }
36 | });
37 |
38 | }
39 |
40 | public List list() {
41 | return new Select().from(CategoryBean.class).orderBy("orderNo").execute();
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/BlogContentParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import org.w3c.dom.Document;
4 |
5 | import java.io.ByteArrayInputStream;
6 |
7 | import javax.xml.parsers.DocumentBuilderFactory;
8 |
9 | /**
10 | * 博文解析
11 | * Created by ChenRui on 2016/11/30 0030 17:00.
12 | */
13 | public class BlogContentParser implements IHtmlParser {
14 |
15 | @Override
16 | public String parse(org.jsoup.nodes.Document document, String html) {
17 | // 解析XML
18 | try {
19 | ByteArrayInputStream inputStream = new ByteArrayInputStream(html.getBytes("UTF-8"));
20 | Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(inputStream);
21 | return doc.getDocumentElement().getTextContent();
22 | } catch (Exception e) {
23 | e.printStackTrace();
24 | }
25 | return null;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/BlogOpenStatusParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import org.jsoup.nodes.Document;
4 |
5 | import java.io.IOException;
6 |
7 | /**
8 | * 博客开通状态
9 | * Created by ChenRui on 2017/11/8 0008 16:57.
10 | */
11 | public class BlogOpenStatusParser implements IHtmlParser {
12 |
13 | @Override
14 | public Boolean parse(Document document, String html) throws IOException {
15 | return document.select(".topic_title:contains(开通博客)").size() <= 0;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/BookmarksDelParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import android.text.TextUtils;
4 |
5 | import com.rae.cnblogs.sdk.CnblogsApiException;
6 | import com.rae.cnblogs.sdk.Empty;
7 |
8 | import org.jsoup.nodes.Document;
9 |
10 | import java.io.IOException;
11 |
12 | /**
13 | * 删除收藏
14 | * Created by ChenRui on 2017/6/11 0011 1:28.
15 | */
16 | public class BookmarksDelParser implements IHtmlParser {
17 |
18 | @Override
19 | public Empty parse(Document document, String html) throws IOException {
20 | if (TextUtils.equals(html, "1")) {
21 | // 成功
22 | return Empty.value();
23 | }
24 | throw new CnblogsApiException(html);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/IHtmlParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import org.jsoup.nodes.Document;
4 |
5 | import java.io.IOException;
6 |
7 | /**
8 | * 解析器
9 | * Created by ChenRui on 2017/5/22 0022 0:07.
10 | */
11 | public interface IHtmlParser {
12 | T parse(Document document, String html) throws IOException;
13 | }
14 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/IJsonParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import java.io.IOException;
4 |
5 | /**
6 | * JSON解析器
7 | * Created by ChenRui on 2017/6/7 0007 19:16.
8 | */
9 | public interface IJsonParser {
10 | T parse(String json) throws IOException;
11 | }
12 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/ImagePostParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import com.rae.cnblogs.sdk.CnblogsApiException;
4 |
5 | import org.json.JSONException;
6 | import org.json.JSONObject;
7 |
8 | import java.io.IOException;
9 |
10 | /**
11 | * 图片上传返回解析
12 | * Created by ChenRui on 2017/10/27 0027 17:31.
13 | */
14 | public class ImagePostParser implements IJsonParser {
15 |
16 | @Override
17 | public String parse(String json) throws IOException {
18 | try {
19 | JSONObject object = new JSONObject(json);
20 | boolean isSuccess = object.getBoolean("success");
21 | String url = object.getString("message");
22 | if (isSuccess) {
23 | return url;
24 | }
25 | throw new CnblogsApiException(url);
26 | } catch (JSONException e) {
27 | throw new CnblogsApiException(e);
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/KBContentParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import org.jsoup.nodes.Document;
4 |
5 | /**
6 | * 知识库内容解析器
7 | * Created by ChenRui on 2017/1/18 0018 18:27.
8 | */
9 | public class KBContentParser implements IHtmlParser {
10 |
11 | @Override
12 | public String parse(Document document, String html) {
13 | return document.select(".contents_main").html();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/LoginParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import com.rae.cnblogs.sdk.ApiErrorCode;
4 | import com.rae.cnblogs.sdk.CnblogsApiException;
5 | import com.rae.cnblogs.sdk.Empty;
6 |
7 | import org.jsoup.nodes.Document;
8 |
9 | import java.io.IOException;
10 |
11 | /**
12 | * 登录错误,通过博客园接口登录成功的都会返回JSON数据,所以这里处理返回HTML时候的逻辑,一般都是登录错误了
13 | * Created by ChenRui on 2017/7/20 0020 10:41.
14 | */
15 | public class LoginParser implements IHtmlParser {
16 |
17 | @Override
18 | public Empty parse(Document document, String html) throws IOException {
19 |
20 | if (document.title().contains("用户登录")) {
21 | throw new CnblogsApiException(ApiErrorCode.LOGIN_EXPIRED, "用户名或者密码错误");
22 | }
23 |
24 | throw new CnblogsApiException("未知的登录错误");
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/MomentCommentParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import com.rae.cnblogs.sdk.bean.MomentCommentBean;
4 |
5 | import org.jsoup.nodes.Document;
6 |
7 | import java.io.IOException;
8 | import java.util.List;
9 |
10 | /**
11 | * 闪存解析器
12 | * Created by ChenRui on 2017/9/25 0025 17:16.
13 | */
14 | public class MomentCommentParser implements IHtmlParser> {
15 |
16 | private final MomentCommentHelper mMomentCommentHelper = new MomentCommentHelper();
17 |
18 | @Override
19 | public List parse(Document doc, String html) throws IOException {
20 | return mMomentCommentHelper.parseCommentInList(doc);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/MomentDelParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import com.rae.cnblogs.sdk.CnblogsApiException;
4 | import com.rae.cnblogs.sdk.Empty;
5 |
6 | import org.jsoup.nodes.Document;
7 |
8 | import java.io.IOException;
9 |
10 | /**
11 | * 删除闪存
12 | * Created by ChenRui on 2017/11/3 0003 0:45.
13 | */
14 | public class MomentDelParser implements IHtmlParser {
15 |
16 | @Override
17 | public Empty parse(Document document, String html) throws IOException {
18 | if (html.contains("成功")) {
19 | return Empty.value();
20 | }
21 |
22 | throw new CnblogsApiException(html);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/NewsAddCommentParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import android.text.TextUtils;
4 |
5 | import com.rae.cnblogs.sdk.CnblogsApiException;
6 | import com.rae.cnblogs.sdk.Empty;
7 |
8 | import org.jsoup.Jsoup;
9 | import org.jsoup.nodes.Document;
10 |
11 | import java.io.IOException;
12 |
13 | /**
14 | * 发布新闻评论
15 | * Created by ChenRui on 2017/1/18 0018 18:27.
16 | */
17 | public class NewsAddCommentParser implements IHtmlParser {
18 |
19 | @Override
20 | public Empty parse(Document document, String json) throws IOException {
21 | if (!TextUtils.isEmpty(json) && json.startsWith(" {
13 |
14 | @Override
15 | public String parse(Document document, String html) {
16 | Elements elements = document.select("Content");
17 | String text = Html.fromHtml(elements.html()).toString().replace("src=\"//", "src=\"http://");
18 | return text;
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/NewsDelCommentParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import android.text.TextUtils;
4 |
5 | import com.rae.cnblogs.sdk.Empty;
6 |
7 | import org.jsoup.nodes.Document;
8 |
9 | import java.io.IOException;
10 |
11 | /**
12 | * 删除新闻评论
13 | * Created by ChenRui on 2017/1/18 0018 18:27.
14 | */
15 | public class NewsDelCommentParser implements IHtmlParser {
16 |
17 | @Override
18 | public Empty parse(Document document, String json) throws IOException {
19 | if (!TextUtils.isEmpty(json) && json.startsWith("0")) {
20 | return null;
21 | }
22 | return Empty.value();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/SearchKbListParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import com.rae.cnblogs.sdk.bean.BlogType;
4 |
5 | /**
6 | * 搜索知识库列表解析
7 | * Created by ChenRui on 2017/2/8 0008 10:05.
8 | */
9 | public class SearchKbListParser extends SearchBlogListParser {
10 |
11 | public SearchKbListParser() {
12 | super(BlogType.KB);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/SearchNewsListParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import com.rae.cnblogs.sdk.bean.BlogType;
4 |
5 | /**
6 | * 搜索新闻列表解析
7 | * Created by ChenRui on 2017/2/8 0008 10:05.
8 | */
9 | public class SearchNewsListParser extends SearchBlogListParser {
10 |
11 | public SearchNewsListParser() {
12 | super(BlogType.NEWS);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/SinaShotenParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import com.rae.cnblogs.sdk.CnblogsApiException;
4 |
5 | import org.json.JSONArray;
6 | import org.json.JSONException;
7 | import org.json.JSONObject;
8 |
9 | import java.io.IOException;
10 |
11 | /**
12 | * 新浪短连接
13 | * Created by ChenRui on 2017/10/31 0031 17:11.
14 | */
15 | public class SinaShotenParser implements IJsonParser {
16 |
17 | @Override
18 | public String parse(String json) throws IOException {
19 | json = json.trim();
20 | if (!json.startsWith("[")) throw new CnblogsApiException("新浪接口返回错误");
21 | try {
22 | JSONArray array = new JSONArray(json);
23 | int length = array.length();
24 | for (int i = 0; i < length; i++) {
25 | JSONObject o = array.getJSONObject(i);
26 | return o.getString("url_short");
27 | }
28 | } catch (JSONException e) {
29 | e.printStackTrace();
30 | }
31 | throw new CnblogsApiException("新浪接口返回错误");
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/sdk/src/main/java/com/rae/cnblogs/sdk/parser/UserInfoParser.java:
--------------------------------------------------------------------------------
1 | package com.rae.cnblogs.sdk.parser;
2 |
3 | import android.text.TextUtils;
4 |
5 | import com.rae.cnblogs.sdk.UserProvider;
6 | import com.rae.cnblogs.sdk.bean.UserInfoBean;
7 |
8 | import org.jsoup.nodes.Document;
9 |
10 | /**
11 | * 用户信息解析
12 | * Created by ChenRui on 2017/2/7 0007 15:31.
13 | */
14 | public class UserInfoParser extends AbsUserInfoParser {
15 |
16 | @Override
17 | public UserInfoBean parse(Document document, String html) {
18 | UserInfoBean result = new UserInfoBean();
19 | onParseUserInfo(result, document);
20 | // 保存登录信息
21 | if (!TextUtils.isEmpty(result.getUserId())) {
22 | UserProvider.getInstance().setLoginUserInfo(result);
23 | }
24 | return result;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/sdk/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | CnblogsSdk
3 | 提供博客离线下载,节省流量,建议开启。
4 | 离线下载服务
5 |
6 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':sdk', ':app'
2 |
--------------------------------------------------------------------------------