├── .gitignore
├── .idea
├── caches
│ └── build_file_checksums.ser
├── codeStyles
│ └── Project.xml
├── gradle.xml
├── misc.xml
├── modules.xml
├── runConfigurations.xml
└── vcs.xml
├── EManual-Android.iml
├── LICENSE
├── README.md
├── app
├── .gitignore
├── app.iml
├── build.gradle
├── keystore
├── libs
│ ├── gson-2.3.1.jar
│ ├── umeng-analytics-v5.6.4.jar
│ └── zip4j_1.3.2.jar
├── proguard-rules.pro
└── src
│ ├── androidTest
│ └── java
│ │ └── io
│ │ └── github
│ │ └── emanual
│ │ └── app
│ │ └── ApplicationTest.java
│ └── main
│ ├── AndroidManifest.xml
│ ├── assets
│ ├── 404.html
│ ├── 404.md
│ ├── bootstrap
│ │ ├── css
│ │ │ ├── bootstrap-responsive.css
│ │ │ ├── bootstrap-responsive.min.css
│ │ │ ├── bootstrap.css
│ │ │ └── bootstrap.min.css
│ │ ├── img
│ │ │ ├── glyphicons-halflings-white.png
│ │ │ └── glyphicons-halflings.png
│ │ └── js
│ │ │ ├── bootstrap.js
│ │ │ └── bootstrap.min.js
│ ├── css
│ │ └── common.css
│ ├── fontawesome-webfont.ttf
│ ├── forum
│ │ ├── bundle.js
│ │ ├── css
│ │ │ └── font-awesome
│ │ │ │ └── css
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── font-awesome.css
│ │ │ │ ├── font-awesome.css.map
│ │ │ │ ├── font-awesome.min.css
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ └── fontawesome-webfont.woff2
│ │ └── index.html
│ ├── img
│ │ ├── binding_dark.png
│ │ ├── brushed.png
│ │ ├── graphy.png
│ │ └── sandpaper.png
│ ├── js
│ │ ├── highlight.pack.js
│ │ ├── jquery.js
│ │ └── marked.js
│ ├── preview-question
│ │ ├── css
│ │ │ ├── github-markdown.css
│ │ │ ├── main.css
│ │ │ └── weui.min.css
│ │ ├── index.html
│ │ └── script
│ │ │ ├── bridge.js
│ │ │ ├── main.js
│ │ │ └── zepto.min.js
│ ├── preview.html
│ ├── preview1.html
│ └── styles
│ │ ├── arta.css
│ │ ├── ascetic.css
│ │ ├── atelier-dune.dark.css
│ │ ├── atelier-dune.light.css
│ │ ├── atelier-forest.dark.css
│ │ ├── atelier-forest.light.css
│ │ ├── atelier-heath.dark.css
│ │ ├── atelier-heath.light.css
│ │ ├── atelier-lakeside.dark.css
│ │ ├── atelier-lakeside.light.css
│ │ ├── atelier-seaside.dark.css
│ │ ├── atelier-seaside.light.css
│ │ ├── brown_paper.css
│ │ ├── brown_papersq.png
│ │ ├── dark.css
│ │ ├── default.css
│ │ ├── docco.css
│ │ ├── far.css
│ │ ├── foundation.css
│ │ ├── github.css
│ │ ├── googlecode.css
│ │ ├── idea.css
│ │ ├── ir_black.css
│ │ ├── magula.css
│ │ ├── mono-blue.css
│ │ ├── monokai.css
│ │ ├── monokai_sublime.css
│ │ ├── obsidian.css
│ │ ├── paraiso.dark.css
│ │ ├── paraiso.light.css
│ │ ├── pojoaque.css
│ │ ├── pojoaque.jpg
│ │ ├── railscasts.css
│ │ ├── rainbow.css
│ │ ├── school_book.css
│ │ ├── school_book.png
│ │ ├── solarized_dark.css
│ │ ├── solarized_light.css
│ │ ├── sunburst.css
│ │ ├── tomorrow-night-blue.css
│ │ ├── tomorrow-night-bright.css
│ │ ├── tomorrow-night-eighties.css
│ │ ├── tomorrow-night.css
│ │ ├── tomorrow.css
│ │ ├── vs.css
│ │ ├── xcode.css
│ │ └── zenburn.css
│ ├── java
│ └── io
│ │ └── github
│ │ └── emanual
│ │ └── app
│ │ ├── App.java
│ │ ├── CoreService.java
│ │ ├── api
│ │ ├── EmanualAPI.java
│ │ ├── JavaAPI.java
│ │ ├── NewFeedsAPI.java
│ │ └── RestClient.java
│ │ ├── entity
│ │ ├── BaseEntity.java
│ │ ├── BookInfoEntity.java
│ │ ├── BookJSONEntity.java
│ │ ├── FeedsItemEntity.java
│ │ ├── FileTreeEntity.java
│ │ ├── InterviewInfoEntity.java
│ │ ├── InterviewJSONEntity.java
│ │ ├── MaintainerEntity.java
│ │ ├── NewsFeedsEntity.java
│ │ └── QuestionEntity.java
│ │ ├── ui
│ │ ├── AboutActivity.java
│ │ ├── AppStartActivity.java
│ │ ├── BookFeedsListActivity.java
│ │ ├── BrowserActivity.java
│ │ ├── DetailActivity.java
│ │ ├── FeedbackActivity.java
│ │ ├── FileTreeActivity.java
│ │ ├── InterviewFeedsActivity.java
│ │ ├── MainActivity.java
│ │ ├── QuestionDetailActivity.java
│ │ ├── QuestionListActivity.java
│ │ ├── adapter
│ │ │ ├── ArticleListAdapter.java
│ │ │ ├── BookListAdapter.java
│ │ │ ├── FeedsListAdapter.java
│ │ │ ├── FileTreeAdapter.java
│ │ │ ├── InterviewListAdapter.java
│ │ │ ├── MainFragmentPagerAdapter.java
│ │ │ ├── NewFeedsAdapter.java
│ │ │ ├── QuestionListAdapter.java
│ │ │ └── TopicListAdapter.java
│ │ ├── base
│ │ │ ├── activity
│ │ │ │ ├── BaseActivity.java
│ │ │ │ ├── SwipeBackActivity.java
│ │ │ │ └── SwipeRefreshActivity.java
│ │ │ └── fragment
│ │ │ │ ├── BaseFragment.java
│ │ │ │ └── SwipeRefreshFragment.java
│ │ ├── event
│ │ │ ├── BaseEvent.java
│ │ │ ├── BookDownloadEndEvent.java
│ │ │ ├── BookDownloadFaildEvent.java
│ │ │ ├── BookDownloadProgressEvent.java
│ │ │ ├── BookDownloadStartEvent.java
│ │ │ ├── EmptyEvent.java
│ │ │ ├── FinishLoadQuestionListEvent.java
│ │ │ ├── FinishQueryBookListEvent.java
│ │ │ ├── FinishQueryInterviewListEvent.java
│ │ │ ├── GetQuestionListEvent.java
│ │ │ ├── InterviewDownloadEndEvent.java
│ │ │ ├── InterviewDownloadFaildEvent.java
│ │ │ ├── InterviewDownloadProgressEvent.java
│ │ │ ├── InterviewDownloadStartEvent.java
│ │ │ ├── QueryBookListEvent.java
│ │ │ ├── QueryInterviewListEvent.java
│ │ │ ├── QuestionUpdateEvent.java
│ │ │ └── UnPackFinishEvent.java
│ │ └── fragment
│ │ │ ├── BookListFragment.java
│ │ │ ├── ExploreFragment.java
│ │ │ ├── InterviewDetailFragment.java
│ │ │ ├── InterviewListFragment.java
│ │ │ ├── NewFeedsFragment.java
│ │ │ └── ResourceCenterFragment.java
│ │ ├── utils
│ │ ├── AndroidUtils.java
│ │ ├── AppPath.java
│ │ ├── BookResource.java
│ │ ├── DataPool.java
│ │ ├── EManualUtils.java
│ │ ├── InterviewResource.java
│ │ ├── MyDBManager.java
│ │ ├── ParseUtils.java
│ │ ├── StorageUtils.java
│ │ ├── SwipeRefreshLayoutUtils.java
│ │ ├── UmengAnalytics.java
│ │ ├── ZipUtils.java
│ │ └── _.java
│ │ └── widget
│ │ ├── DefaultWebView.java
│ │ ├── DownloadConfirmDialog.java
│ │ ├── NewVersionDialog.java
│ │ └── SwipeBackLayout.java
│ └── res
│ ├── anim
│ ├── alpha.xml
│ ├── layout_listview_top_to_bottom_alpha.xml
│ ├── left_in.xml
│ ├── left_out.xml
│ ├── right_in.xml
│ ├── right_out.xml
│ ├── stay.xml
│ ├── zoom_in.xml
│ └── zoom_out.xml
│ ├── drawable-hdpi
│ ├── ic_action_about.png
│ ├── ic_action_about_light.png
│ ├── ic_action_accept.png
│ ├── ic_action_cleanup.png
│ ├── ic_action_more.png
│ ├── ic_action_rating_important.png
│ ├── ic_action_rating_important_dark.png
│ ├── ic_action_rating_not_important.png
│ ├── ic_action_rating_not_important_dark.png
│ ├── ic_action_settings.png
│ ├── ic_action_settings_dark.png
│ ├── ic_action_social_share.png
│ ├── ic_action_social_share_dark.png
│ ├── ic_bg_dialog_white.9.png
│ ├── ic_btn_blue_transparent_normal.9.png
│ ├── ic_btn_blue_transparent_pressed.9.png
│ ├── ic_btn_green_normal.9.png
│ ├── ic_btn_green_pressed.9.png
│ ├── ic_btn_red_normal.9.png
│ ├── ic_btn_red_pressed.9.png
│ ├── ic_check_circle_black_48dp.png
│ ├── ic_cloud_download_black_36dp.png
│ ├── ic_icon_code.png
│ ├── ic_icon_code_small.png
│ ├── ic_icon_code_small_pure.png
│ ├── ic_icon_document.png
│ ├── ic_icon_file.png
│ ├── ic_keyboard_arrow_right_black_36dp.png
│ ├── ic_line_1.png
│ ├── ic_line_2.png
│ ├── ic_line_3.png
│ ├── ic_module_android.png
│ ├── ic_module_angular.png
│ ├── ic_module_c.png
│ ├── ic_module_http2.png
│ ├── ic_module_java.png
│ ├── ic_module_javascript.png
│ ├── ic_module_php.png
│ ├── ic_module_python.png
│ ├── ic_module_scala.png
│ ├── ic_navigation_previous_item.png
│ ├── ic_notify_new.png
│ ├── ic_progressbar_blue.png
│ └── ic_widget_download.png
│ ├── drawable-xhdpi
│ └── ic_app_launcher.png
│ ├── drawable
│ ├── btn_common_green.xml
│ ├── btn_common_red.xml
│ ├── btn_item_whit2grey.xml
│ └── progressbar_blue.xml
│ ├── layout
│ ├── acty_about.xml
│ ├── acty_appstart.xml
│ ├── acty_browser.xml
│ ├── acty_detail.xml
│ ├── acty_favouritelist.xml
│ ├── acty_feedback.xml
│ ├── acty_feeds_list.xml
│ ├── acty_filetree.xml
│ ├── acty_interview_feeds.xml
│ ├── acty_main.xml
│ ├── acty_question_detail.xml
│ ├── acty_question_list.xml
│ ├── acty_topiclist.xml
│ ├── adapter_articlelist.xml
│ ├── adapter_booklist.xml
│ ├── adapter_favouritelist.xml
│ ├── adapter_feedslist.xml
│ ├── adapter_filetree.xml
│ ├── adapter_interviewlist.xml
│ ├── adapter_newfeeds.xml
│ ├── adapter_questionlist.xml
│ ├── adapter_topiclist.xml
│ ├── dlg_newversion.xml
│ ├── fragment_book_list.xml
│ ├── fragment_explore.xml
│ ├── fragment_interview_detail.xml
│ ├── fragment_interview_list.xml
│ ├── fragment_newfeeds.xml
│ ├── fragment_resource_center.xml
│ └── toolbar.xml
│ ├── menu
│ ├── browser.xml
│ ├── detail.xml
│ ├── favouritelist.xml
│ ├── favouritelist_selected.xml
│ ├── main.xml
│ └── menu_question_detail.xml
│ ├── mipmap-hdpi
│ └── ic_launcher.png
│ ├── mipmap-mdpi
│ └── ic_launcher.png
│ ├── mipmap-xhdpi
│ ├── ic_launcher.png
│ └── shadow_left.png
│ ├── mipmap-xxhdpi
│ └── ic_launcher.png
│ ├── values-land-v19
│ └── bools.xml
│ ├── values-sw600dp
│ └── dimens.xml
│ ├── values-sw720dp
│ └── dimens.xml
│ ├── values-v11
│ └── styles.xml
│ ├── values-v14
│ └── styles.xml
│ ├── values-v19
│ ├── bools.xml
│ ├── dimens.xml
│ └── theme.xml
│ ├── values-v21
│ └── styles.xml
│ ├── values-w820dp
│ └── dimens.xml
│ └── values
│ ├── color.xml
│ ├── dimens.xml
│ ├── strings.xml
│ ├── styles.xml
│ └── themes.xml
├── build.gradle
├── extras
├── .gitkeep
├── extras.iml
└── umeng-update
│ ├── .gitignore
│ ├── build.gradle
│ ├── libs
│ └── umeng-update-v2.6.0.1.jar
│ ├── proguard-rules.pro
│ ├── src
│ ├── androidTest
│ │ └── java
│ │ │ └── com
│ │ │ └── iemanual
│ │ │ └── umeng_update
│ │ │ └── ApplicationTest.java
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── jniLibs
│ │ └── libbspatch.so
│ │ └── res
│ │ ├── drawable-hdpi
│ │ ├── umeng_update_btn_check_off_focused_holo_light.png
│ │ ├── umeng_update_btn_check_off_holo_light.png
│ │ ├── umeng_update_btn_check_off_pressed_holo_light.png
│ │ ├── umeng_update_btn_check_on_focused_holo_light.png
│ │ ├── umeng_update_btn_check_on_holo_light.png
│ │ ├── umeng_update_btn_check_on_pressed_holo_light.png
│ │ ├── umeng_update_close_bg_normal.png
│ │ └── umeng_update_close_bg_tap.png
│ │ ├── drawable
│ │ ├── tb_munion_icon.xml
│ │ ├── tb_munion_item_selector.xml
│ │ ├── umeng_common_gradient_green.xml
│ │ ├── umeng_common_gradient_orange.xml
│ │ ├── umeng_common_gradient_red.xml
│ │ ├── umeng_update_button_cancel_bg_focused.xml
│ │ ├── umeng_update_button_cancel_bg_normal.xml
│ │ ├── umeng_update_button_cancel_bg_selector.xml
│ │ ├── umeng_update_button_cancel_bg_tap.xml
│ │ ├── umeng_update_button_check_selector.xml
│ │ ├── umeng_update_button_close_bg_selector.xml
│ │ ├── umeng_update_button_ok_bg_focused.xml
│ │ ├── umeng_update_button_ok_bg_normal.xml
│ │ ├── umeng_update_button_ok_bg_selector.xml
│ │ ├── umeng_update_button_ok_bg_tap.xml
│ │ ├── umeng_update_dialog_bg.xml
│ │ ├── umeng_update_title_bg.xml
│ │ └── umeng_update_wifi_disable.png
│ │ ├── layout-v9
│ │ └── umeng_common_download_notification.xml
│ │ ├── layout
│ │ ├── tb_munion_aditem.xml
│ │ ├── tb_munion_adview.xml
│ │ ├── umeng_common_download_notification.xml
│ │ └── umeng_update_dialog.xml
│ │ ├── values-zh
│ │ ├── umeng_common_strings.xml
│ │ └── umeng_update_string.xml
│ │ └── values
│ │ ├── strings.xml
│ │ ├── tb_munion_strings.xml
│ │ ├── umeng_common_strings.xml
│ │ └── umeng_update_string.xml
│ └── umeng-update.iml
├── gradle-app.setting
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | /local.properties
3 | /.idea/workspace.xml
4 | /.idea/libraries
5 | .DS_Store
6 | build
7 |
8 | # Built application files
9 | *.apk
10 | *.ap_
11 |
12 | # Files for the Dalvik VM
13 | *.dex
14 |
15 | # Java class files
16 | *.class
17 |
18 | # Generated files
19 | bin/
20 | gen/
21 |
22 | # Gradle files
23 | .gradle/
24 | build/
25 | /*/build/
26 |
27 | # Local configuration file (sdk path, etc)
28 | local.properties
29 |
30 | # Proguard folder generated by Eclipse
31 | proguard/
32 |
33 | # Log Files
34 | *.log
35 |
36 | #iml
--------------------------------------------------------------------------------
/.idea/caches/build_file_checksums.ser:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/.idea/caches/build_file_checksums.ser
--------------------------------------------------------------------------------
/.idea/codeStyles/Project.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 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/EManual-Android.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | EManual-Android
2 | ---
3 | [](https://badge.fury.io/gh/EManual%2FEManual-Android)  
4 |
5 |
6 |
7 | **Android client for EManual.**
8 | EManual makes you learn programming language more easier.
9 | Currently, it focuse on **Java and Android**
10 |
11 | Configuration
12 | ---
13 | ### for Eclipse
14 |
15 | 1. Java Compiler → Annotation Processing and check `"Enable project specific settings".`
16 |
17 | 2. Expand the Annotation Processing section and select Factory Path. Check `"Enable project specific settings"` and then click `"Add JARs…"`. Navigate to the project's `libs/` folder and select the Butter Knife jar.
18 |
19 | 3. Click `"Ok"` to save the new settings. Eclipse will ask you to rebuild your project to which you should click `"Yes"`
20 | Make sure that the `.apt_generated/` folder is in your project root. It should contain files like `YOURACTIVITY$$ViewInjector.java`. If these files are not present trigger a clean build by selected `Project → Clean`. This folder and files should **not** be checked into revision control
21 |
22 | 4.still error faild? restart the Eclipse
23 |
24 | ### for IntelliJ IDEA
25 |
26 | familiar with Eclipse.Click [here](http://jakewharton.github.io/butterknife/ide-idea.html)
27 |
28 |
29 | License
30 | =======
31 | ```
32 | Copyright 2014 Jayin Ton
33 |
34 | Licensed under the Apache License, Version 2.0 (the "License");
35 | you may not use this file except in compliance with the License.
36 | You may obtain a copy of the License at
37 |
38 | http://www.apache.org/licenses/LICENSE-2.0
39 |
40 | Unless required by applicable law or agreed to in writing, software
41 | distributed under the License is distributed on an "AS IS" BASIS,
42 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
43 | See the License for the specific language governing permissions and
44 | limitations under the License.
45 |
46 | ```
47 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/keystore:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/keystore
--------------------------------------------------------------------------------
/app/libs/gson-2.3.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/libs/gson-2.3.1.jar
--------------------------------------------------------------------------------
/app/libs/umeng-analytics-v5.6.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/libs/umeng-analytics-v5.6.4.jar
--------------------------------------------------------------------------------
/app/libs/zip4j_1.3.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/libs/zip4j_1.3.2.jar
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/jayin/jayin/App/adt-bundle-mac-x86_64-20140702/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/io/github/emanual/app/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/app/src/main/assets/404.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 请求失败
5 |
6 |
8 |
9 |
19 |
20 |
21 |
22 | 请求失败,刷新重试看看
23 |
24 |
25 |
26 | o(╯□╰)o
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/assets/404.md:
--------------------------------------------------------------------------------
1 | 哎呀,出错了!
2 | ---------
3 |
4 |
5 | ### 可能原因:
6 |
7 | * 访问的资源已经被删除
8 | * 网络不稳定
9 | * 尚未接入互联网
10 | * 网络链接地址不正确
11 | * 安全软件禁止访问网络
12 |
13 | ### Tips:
14 |
15 | **下拉即可刷新页面**
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/assets/bootstrap/img/glyphicons-halflings-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/bootstrap/img/glyphicons-halflings-white.png
--------------------------------------------------------------------------------
/app/src/main/assets/bootstrap/img/glyphicons-halflings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/bootstrap/img/glyphicons-halflings.png
--------------------------------------------------------------------------------
/app/src/main/assets/css/common.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/css/common.css
--------------------------------------------------------------------------------
/app/src/main/assets/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/forum/css/font-awesome/css/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/forum/css/font-awesome/css/FontAwesome.otf
--------------------------------------------------------------------------------
/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/forum/css/font-awesome/css/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/app/src/main/assets/forum/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 问答
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/assets/img/binding_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/img/binding_dark.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/brushed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/img/brushed.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/graphy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/img/graphy.png
--------------------------------------------------------------------------------
/app/src/main/assets/img/sandpaper.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/img/sandpaper.png
--------------------------------------------------------------------------------
/app/src/main/assets/preview-question/css/main.css:
--------------------------------------------------------------------------------
1 | /*https://github.com/sindresorhus/github-markdown-css*/
2 | .markdown-body {
3 | box-sizing: border-box;
4 | min-width: 200px;
5 | max-width: 980px;
6 | margin: 0 auto;
7 | }
8 | /*让段落铺满再换行*/
9 | p {
10 | word-break: break-all;
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/assets/preview-question/script/main.js:
--------------------------------------------------------------------------------
1 | (function(window, $) {
2 | $(document).ready(function() {
3 | var selector_title = $('title');
4 | var selector_description = $('#question_description')
5 | var selector_option_container = $('#option-container')
6 | var select_tpl_option = $('#tpl_option')
7 | var select_question_answer = $('#question_answer')
8 | /**
9 | * 渲染题目
10 | */
11 | window.updateQuestion = function(question) {
12 | //渲染描述
13 | selector_description.html(question.description)
14 | selector_title.html(selector_description.text())
15 |
16 | if (question.type === 'choice') {
17 | var options = []
18 | question.options.forEach(function(option, index) {
19 | options.push(select_tpl_option.html().replace(/{{option_id}}/g, 'option_' + index).replace(/{{option_description}}/g, option))
20 | })
21 | selector_option_container.html(options.join(''))
22 | }
23 | //渲染答案
24 | var answer_wrapper = '参考答案:
';
25 | question.answer = answer_wrapper + (question.answer || '无')
26 | select_question_answer.html(question.answer)
27 | }
28 | /**
29 | * @return array 已选择的东西列表
30 | */
31 | window.getUserAnswer = function() {
32 | var checkeds = []
33 | $('#option-container input').forEach(function(input, index) {
34 | if ($(input)[0].checked) {
35 | checkeds.push(index)
36 | }
37 | })
38 | return checkeds
39 | }
40 | })
41 | })(window, Zepto);
42 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/ascetic.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Original style from softwaremaniacs.org (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | .hljs {
8 | display: block; padding: 0.5em;
9 | background: white; color: black;
10 | }
11 |
12 | .hljs-string,
13 | .hljs-tag .hljs-value,
14 | .hljs-filter .hljs-argument,
15 | .hljs-addition,
16 | .hljs-change,
17 | .apache .hljs-tag,
18 | .apache .hljs-cbracket,
19 | .nginx .hljs-built_in,
20 | .tex .hljs-formula {
21 | color: #888;
22 | }
23 |
24 | .hljs-comment,
25 | .hljs-template_comment,
26 | .hljs-shebang,
27 | .hljs-doctype,
28 | .hljs-pi,
29 | .hljs-javadoc,
30 | .hljs-deletion,
31 | .apache .hljs-sqbracket {
32 | color: #CCC;
33 | }
34 |
35 | .hljs-keyword,
36 | .hljs-tag .hljs-title,
37 | .ini .hljs-title,
38 | .lisp .hljs-title,
39 | .clojure .hljs-title,
40 | .http .hljs-title,
41 | .nginx .hljs-title,
42 | .css .hljs-tag,
43 | .hljs-winutils,
44 | .hljs-flow,
45 | .apache .hljs-tag,
46 | .tex .hljs-command,
47 | .hljs-request,
48 | .hljs-status {
49 | font-weight: bold;
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-dune.dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Dune Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Dune Dark Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #999580;
10 | }
11 |
12 | /* Atelier Dune Dark Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #d73737;
26 | }
27 |
28 | /* Atelier Dune Dark Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #b65611;
37 | }
38 |
39 | /* Atelier Dune Dark Yellow */
40 | .ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #cfb017;
43 | }
44 |
45 | /* Atelier Dune Dark Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #60ac39;
53 | }
54 |
55 | /* Atelier Dune Dark Aqua */
56 | .css .hljs-hexcolor {
57 | color: #1fad83;
58 | }
59 |
60 | /* Atelier Dune Dark Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #6684e1;
70 | }
71 |
72 | /* Atelier Dune Dark Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #b854d4;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #292824;
81 | color: #a6a28c;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-dune.light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Dune Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Dune Light Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #7d7a68;
10 | }
11 |
12 | /* Atelier Dune Light Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #d73737;
26 | }
27 |
28 | /* Atelier Dune Light Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #b65611;
37 | }
38 |
39 | /* Atelier Dune Light Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #cfb017;
43 | }
44 |
45 | /* Atelier Dune Light Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #60ac39;
53 | }
54 |
55 | /* Atelier Dune Light Aqua */
56 | .css .hljs-hexcolor {
57 | color: #1fad83;
58 | }
59 |
60 | /* Atelier Dune Light Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #6684e1;
70 | }
71 |
72 | /* Atelier Dune Light Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #b854d4;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #fefbec;
81 | color: #6e6b5e;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-forest.dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Forest Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Forest Dark Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #9c9491;
10 | }
11 |
12 | /* Atelier Forest Dark Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #f22c40;
26 | }
27 |
28 | /* Atelier Forest Dark Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #df5320;
37 | }
38 |
39 | /* Atelier Forest Dark Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #d5911a;
43 | }
44 |
45 | /* Atelier Forest Dark Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #5ab738;
53 | }
54 |
55 | /* Atelier Forest Dark Aqua */
56 | .css .hljs-hexcolor {
57 | color: #00ad9c;
58 | }
59 |
60 | /* Atelier Forest Dark Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #407ee7;
70 | }
71 |
72 | /* Atelier Forest Dark Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #6666ea;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #2c2421;
81 | color: #a8a19f;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-forest.light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Forest Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Forest Light Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #766e6b;
10 | }
11 |
12 | /* Atelier Forest Light Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #f22c40;
26 | }
27 |
28 | /* Atelier Forest Light Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #df5320;
37 | }
38 |
39 | /* Atelier Forest Light Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #d5911a;
43 | }
44 |
45 | /* Atelier Forest Light Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #5ab738;
53 | }
54 |
55 | /* Atelier Forest Light Aqua */
56 | .css .hljs-hexcolor {
57 | color: #00ad9c;
58 | }
59 |
60 | /* Atelier Forest Light Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #407ee7;
70 | }
71 |
72 | /* Atelier Forest Light Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #6666ea;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #f1efee;
81 | color: #68615e;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-heath.dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Heath Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Heath Dark Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #9e8f9e;
10 | }
11 |
12 | /* Atelier Heath Dark Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #ca402b;
26 | }
27 |
28 | /* Atelier Heath Dark Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #a65926;
37 | }
38 |
39 | /* Atelier Heath Dark Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #bb8a35;
43 | }
44 |
45 | /* Atelier Heath Dark Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #379a37;
53 | }
54 |
55 | /* Atelier Heath Dark Aqua */
56 | .css .hljs-hexcolor {
57 | color: #159393;
58 | }
59 |
60 | /* Atelier Heath Dark Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #516aec;
70 | }
71 |
72 | /* Atelier Heath Dark Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #7b59c0;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #292329;
81 | color: #ab9bab;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-heath.light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Heath Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Heath Light Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #776977;
10 | }
11 |
12 | /* Atelier Heath Light Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #ca402b;
26 | }
27 |
28 | /* Atelier Heath Light Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #a65926;
37 | }
38 |
39 | /* Atelier Heath Light Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #bb8a35;
43 | }
44 |
45 | /* Atelier Heath Light Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #379a37;
53 | }
54 |
55 | /* Atelier Heath Light Aqua */
56 | .css .hljs-hexcolor {
57 | color: #159393;
58 | }
59 |
60 | /* Atelier Heath Light Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #516aec;
70 | }
71 |
72 | /* Atelier Heath Light Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #7b59c0;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #f7f3f7;
81 | color: #695d69;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-lakeside.dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Lakeside Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Lakeside Dark Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #7195a8;
10 | }
11 |
12 | /* Atelier Lakeside Dark Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #d22d72;
26 | }
27 |
28 | /* Atelier Lakeside Dark Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #935c25;
37 | }
38 |
39 | /* Atelier Lakeside Dark Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #8a8a0f;
43 | }
44 |
45 | /* Atelier Lakeside Dark Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #568c3b;
53 | }
54 |
55 | /* Atelier Lakeside Dark Aqua */
56 | .css .hljs-hexcolor {
57 | color: #2d8f6f;
58 | }
59 |
60 | /* Atelier Lakeside Dark Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #257fad;
70 | }
71 |
72 | /* Atelier Lakeside Dark Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #5d5db1;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #1f292e;
81 | color: #7ea2b4;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-lakeside.light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Lakeside Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Lakeside Light Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #5a7b8c;
10 | }
11 |
12 | /* Atelier Lakeside Light Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #d22d72;
26 | }
27 |
28 | /* Atelier Lakeside Light Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #935c25;
37 | }
38 |
39 | /* Atelier Lakeside Light Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #8a8a0f;
43 | }
44 |
45 | /* Atelier Lakeside Light Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #568c3b;
53 | }
54 |
55 | /* Atelier Lakeside Light Aqua */
56 | .css .hljs-hexcolor {
57 | color: #2d8f6f;
58 | }
59 |
60 | /* Atelier Lakeside Light Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #257fad;
70 | }
71 |
72 | /* Atelier Lakeside Light Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #5d5db1;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #ebf8ff;
81 | color: #516d7b;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-seaside.dark.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Seaside Dark - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Seaside Dark Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #809980;
10 | }
11 |
12 | /* Atelier Seaside Dark Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #e6193c;
26 | }
27 |
28 | /* Atelier Seaside Dark Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #87711d;
37 | }
38 |
39 | /* Atelier Seaside Dark Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #c3c322;
43 | }
44 |
45 | /* Atelier Seaside Dark Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #29a329;
53 | }
54 |
55 | /* Atelier Seaside Dark Aqua */
56 | .css .hljs-hexcolor {
57 | color: #1999b3;
58 | }
59 |
60 | /* Atelier Seaside Dark Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #3d62f5;
70 | }
71 |
72 | /* Atelier Seaside Dark Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #ad2bee;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #242924;
81 | color: #8ca68c;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/atelier-seaside.light.css:
--------------------------------------------------------------------------------
1 | /* Base16 Atelier Seaside Light - Theme */
2 | /* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */
3 | /* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */
4 | /* https://github.com/jmblog/color-themes-for-highlightjs */
5 |
6 | /* Atelier Seaside Light Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #687d68;
10 | }
11 |
12 | /* Atelier Seaside Light Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #e6193c;
26 | }
27 |
28 | /* Atelier Seaside Light Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #87711d;
37 | }
38 |
39 | /* Atelier Seaside Light Yellow */
40 | .hljs-ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #c3c322;
43 | }
44 |
45 | /* Atelier Seaside Light Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #29a329;
53 | }
54 |
55 | /* Atelier Seaside Light Aqua */
56 | .css .hljs-hexcolor {
57 | color: #1999b3;
58 | }
59 |
60 | /* Atelier Seaside Light Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #3d62f5;
70 | }
71 |
72 | /* Atelier Seaside Light Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #ad2bee;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #f0fff0;
81 | color: #5e6e5e;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/brown_papersq.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/styles/brown_papersq.png
--------------------------------------------------------------------------------
/app/src/main/assets/styles/foundation.css:
--------------------------------------------------------------------------------
1 | /*
2 | Description: Foundation 4 docs style for highlight.js
3 | Author: Dan Allen
4 | Website: http://foundation.zurb.com/docs/
5 | Version: 1.0
6 | Date: 2013-04-02
7 | */
8 |
9 | .hljs {
10 | display: block; padding: 0.5em;
11 | background: #eee;
12 | }
13 |
14 | .hljs-header,
15 | .hljs-decorator,
16 | .hljs-annotation {
17 | color: #000077;
18 | }
19 |
20 | .hljs-horizontal_rule,
21 | .hljs-link_url,
22 | .hljs-emphasis,
23 | .hljs-attribute {
24 | color: #070;
25 | }
26 |
27 | .hljs-emphasis {
28 | font-style: italic;
29 | }
30 |
31 | .hljs-link_label,
32 | .hljs-strong,
33 | .hljs-value,
34 | .hljs-string,
35 | .scss .hljs-value .hljs-string {
36 | color: #d14;
37 | }
38 |
39 | .hljs-strong {
40 | font-weight: bold;
41 | }
42 |
43 | .hljs-blockquote,
44 | .hljs-comment {
45 | color: #998;
46 | font-style: italic;
47 | }
48 |
49 | .asciidoc .hljs-title,
50 | .hljs-function .hljs-title {
51 | color: #900;
52 | }
53 |
54 | .hljs-class {
55 | color: #458;
56 | }
57 |
58 | .hljs-id,
59 | .hljs-pseudo,
60 | .hljs-constant,
61 | .hljs-hexcolor {
62 | color: teal;
63 | }
64 |
65 | .hljs-variable {
66 | color: #336699;
67 | }
68 |
69 | .hljs-bullet,
70 | .hljs-javadoc {
71 | color: #997700;
72 | }
73 |
74 | .hljs-pi,
75 | .hljs-doctype {
76 | color: #3344bb;
77 | }
78 |
79 | .hljs-code,
80 | .hljs-number {
81 | color: #099;
82 | }
83 |
84 | .hljs-important {
85 | color: #f00;
86 | }
87 |
88 | .smartquote,
89 | .hljs-label {
90 | color: #970;
91 | }
92 |
93 | .hljs-preprocessor,
94 | .hljs-pragma {
95 | color: #579;
96 | }
97 |
98 | .hljs-reserved,
99 | .hljs-keyword,
100 | .scss .hljs-value {
101 | color: #000;
102 | }
103 |
104 | .hljs-regexp {
105 | background-color: #fff0ff;
106 | color: #880088;
107 | }
108 |
109 | .hljs-symbol {
110 | color: #990073;
111 | }
112 |
113 | .hljs-symbol .hljs-string {
114 | color: #a60;
115 | }
116 |
117 | .hljs-tag {
118 | color: #007700;
119 | }
120 |
121 | .hljs-at_rule,
122 | .hljs-at_rule .hljs-keyword {
123 | color: #088;
124 | }
125 |
126 | .hljs-at_rule .hljs-preprocessor {
127 | color: #808;
128 | }
129 |
130 | .scss .hljs-tag,
131 | .scss .hljs-attribute {
132 | color: #339;
133 | }
134 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/ir_black.css:
--------------------------------------------------------------------------------
1 | /*
2 | IR_Black style (c) Vasily Mikhailitchenko
3 | */
4 |
5 | .hljs {
6 | display: block; padding: 0.5em;
7 | background: #000; color: #f8f8f8;
8 | }
9 |
10 | .hljs-shebang,
11 | .hljs-comment,
12 | .hljs-template_comment,
13 | .hljs-javadoc {
14 | color: #7c7c7c;
15 | }
16 |
17 | .hljs-keyword,
18 | .hljs-tag,
19 | .tex .hljs-command,
20 | .hljs-request,
21 | .hljs-status,
22 | .clojure .hljs-attribute {
23 | color: #96CBFE;
24 | }
25 |
26 | .hljs-sub .hljs-keyword,
27 | .method,
28 | .hljs-list .hljs-title,
29 | .nginx .hljs-title {
30 | color: #FFFFB6;
31 | }
32 |
33 | .hljs-string,
34 | .hljs-tag .hljs-value,
35 | .hljs-cdata,
36 | .hljs-filter .hljs-argument,
37 | .hljs-attr_selector,
38 | .apache .hljs-cbracket,
39 | .hljs-date,
40 | .coffeescript .hljs-attribute {
41 | color: #A8FF60;
42 | }
43 |
44 | .hljs-subst {
45 | color: #DAEFA3;
46 | }
47 |
48 | .hljs-regexp {
49 | color: #E9C062;
50 | }
51 |
52 | .hljs-title,
53 | .hljs-sub .hljs-identifier,
54 | .hljs-pi,
55 | .hljs-decorator,
56 | .tex .hljs-special,
57 | .haskell .hljs-type,
58 | .hljs-constant,
59 | .smalltalk .hljs-class,
60 | .hljs-javadoctag,
61 | .hljs-yardoctag,
62 | .hljs-phpdoc,
63 | .nginx .hljs-built_in {
64 | color: #FFFFB6;
65 | }
66 |
67 | .hljs-symbol,
68 | .ruby .hljs-symbol .hljs-string,
69 | .hljs-number,
70 | .hljs-variable,
71 | .vbscript,
72 | .hljs-literal {
73 | color: #C6C5FE;
74 | }
75 |
76 | .css .hljs-tag {
77 | color: #96CBFE;
78 | }
79 |
80 | .css .hljs-rules .hljs-property,
81 | .css .hljs-id {
82 | color: #FFFFB6;
83 | }
84 |
85 | .css .hljs-class {
86 | color: #FFF;
87 | }
88 |
89 | .hljs-hexcolor {
90 | color: #C6C5FE;
91 | }
92 |
93 | .hljs-number {
94 | color:#FF73FD;
95 | }
96 |
97 | .coffeescript .javascript,
98 | .javascript .xml,
99 | .tex .hljs-formula,
100 | .xml .javascript,
101 | .xml .vbscript,
102 | .xml .css,
103 | .xml .hljs-cdata {
104 | opacity: 0.7;
105 | }
106 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/mono-blue.css:
--------------------------------------------------------------------------------
1 | /*
2 | Five-color theme from a single blue hue.
3 | */
4 | .hljs {
5 | display: block; padding: 0.5em;
6 | background: #EAEEF3; color: #00193A;
7 | }
8 |
9 | .hljs-keyword,
10 | .hljs-title,
11 | .hljs-important,
12 | .hljs-request,
13 | .hljs-header,
14 | .hljs-javadoctag {
15 | font-weight: bold;
16 | }
17 |
18 | .hljs-comment,
19 | .hljs-chunk,
20 | .hljs-template_comment {
21 | color: #738191;
22 | }
23 |
24 | .hljs-string,
25 | .hljs-title,
26 | .hljs-parent,
27 | .hljs-built_in,
28 | .hljs-literal,
29 | .hljs-filename,
30 | .hljs-value,
31 | .hljs-addition,
32 | .hljs-tag,
33 | .hljs-argument,
34 | .hljs-link_label,
35 | .hljs-blockquote,
36 | .hljs-header {
37 | color: #0048AB;
38 | }
39 |
40 | .hljs-decorator,
41 | .hljs-prompt,
42 | .hljs-yardoctag,
43 | .hljs-subst,
44 | .hljs-symbol,
45 | .hljs-doctype,
46 | .hljs-regexp,
47 | .hljs-preprocessor,
48 | .hljs-pragma,
49 | .hljs-pi,
50 | .hljs-attribute,
51 | .hljs-attr_selector,
52 | .hljs-javadoc,
53 | .hljs-xmlDocTag,
54 | .hljs-deletion,
55 | .hljs-shebang,
56 | .hljs-string .hljs-variable,
57 | .hljs-link_url,
58 | .hljs-bullet,
59 | .hljs-sqbracket,
60 | .hljs-phony {
61 | color: #4C81C9;
62 | }
63 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/paraiso.dark.css:
--------------------------------------------------------------------------------
1 | /*
2 | Paraíso (dark)
3 | Created by Jan T. Sott (http://github.com/idleberg)
4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
5 | */
6 |
7 | /* Paraíso Comment */
8 | .hljs-comment,
9 | .hljs-title {
10 | color: #8d8687;
11 | }
12 |
13 | /* Paraíso Red */
14 | .hljs-variable,
15 | .hljs-attribute,
16 | .hljs-tag,
17 | .hljs-regexp,
18 | .ruby .hljs-constant,
19 | .xml .hljs-tag .hljs-title,
20 | .xml .hljs-pi,
21 | .xml .hljs-doctype,
22 | .html .hljs-doctype,
23 | .css .hljs-id,
24 | .css .hljs-class,
25 | .css .hljs-pseudo {
26 | color: #ef6155;
27 | }
28 |
29 | /* Paraíso Orange */
30 | .hljs-number,
31 | .hljs-preprocessor,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #f99b15;
37 | }
38 |
39 | /* Paraíso Yellow */
40 | .ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #fec418;
43 | }
44 |
45 | /* Paraíso Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #48b685;
53 | }
54 |
55 | /* Paraíso Aqua */
56 | .css .hljs-hexcolor {
57 | color: #5bc4bf;
58 | }
59 |
60 | /* Paraíso Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #06b6ef;
70 | }
71 |
72 | /* Paraíso Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #815ba4;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #2f1e2e;
81 | color: #a39e9b;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/paraiso.light.css:
--------------------------------------------------------------------------------
1 | /*
2 | Paraíso (light)
3 | Created by Jan T. Sott (http://github.com/idleberg)
4 | Inspired by the art of Rubens LP (http://www.rubenslp.com.br)
5 | */
6 |
7 | /* Paraíso Comment */
8 | .hljs-comment,
9 | .hljs-title {
10 | color: #776e71;
11 | }
12 |
13 | /* Paraíso Red */
14 | .hljs-variable,
15 | .hljs-attribute,
16 | .hljs-tag,
17 | .hljs-regexp,
18 | .ruby .hljs-constant,
19 | .xml .hljs-tag .hljs-title,
20 | .xml .hljs-pi,
21 | .xml .hljs-doctype,
22 | .html .hljs-doctype,
23 | .css .hljs-id,
24 | .css .hljs-class,
25 | .css .hljs-pseudo {
26 | color: #ef6155;
27 | }
28 |
29 | /* Paraíso Orange */
30 | .hljs-number,
31 | .hljs-preprocessor,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #f99b15;
37 | }
38 |
39 | /* Paraíso Yellow */
40 | .ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #fec418;
43 | }
44 |
45 | /* Paraíso Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #48b685;
53 | }
54 |
55 | /* Paraíso Aqua */
56 | .css .hljs-hexcolor {
57 | color: #5bc4bf;
58 | }
59 |
60 | /* Paraíso Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #06b6ef;
70 | }
71 |
72 | /* Paraíso Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #815ba4;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #e7e9db;
81 | color: #4f424c;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/pojoaque.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Pojoaque Style by Jason Tate
4 | http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html
5 | Based on Solarized Style from http://ethanschoonover.com/solarized
6 |
7 | */
8 |
9 | .hljs {
10 | display: block; padding: 0.5em;
11 | color: #DCCF8F;
12 | background: url(./pojoaque.jpg) repeat scroll left top #181914;
13 | }
14 |
15 | .hljs-comment,
16 | .hljs-template_comment,
17 | .diff .hljs-header,
18 | .hljs-doctype,
19 | .lisp .hljs-string,
20 | .hljs-javadoc {
21 | color: #586e75;
22 | font-style: italic;
23 | }
24 |
25 | .hljs-keyword,
26 | .css .rule .hljs-keyword,
27 | .hljs-winutils,
28 | .javascript .hljs-title,
29 | .method,
30 | .hljs-addition,
31 | .css .hljs-tag,
32 | .clojure .hljs-title,
33 | .nginx .hljs-title {
34 | color: #B64926;
35 | }
36 |
37 | .hljs-number,
38 | .hljs-command,
39 | .hljs-string,
40 | .hljs-tag .hljs-value,
41 | .hljs-phpdoc,
42 | .tex .hljs-formula,
43 | .hljs-regexp,
44 | .hljs-hexcolor {
45 | color: #468966;
46 | }
47 |
48 | .hljs-title,
49 | .hljs-localvars,
50 | .hljs-function .hljs-title,
51 | .hljs-chunk,
52 | .hljs-decorator,
53 | .hljs-built_in,
54 | .lisp .hljs-title,
55 | .clojure .hljs-built_in,
56 | .hljs-identifier,
57 | .hljs-id {
58 | color: #FFB03B;
59 | }
60 |
61 | .hljs-attribute,
62 | .hljs-variable,
63 | .lisp .hljs-body,
64 | .smalltalk .hljs-number,
65 | .hljs-constant,
66 | .hljs-class .hljs-title,
67 | .hljs-parent,
68 | .haskell .hljs-type {
69 | color: #b58900;
70 | }
71 |
72 | .css .hljs-attribute {
73 | color: #b89859;
74 | }
75 |
76 | .css .hljs-number,
77 | .css .hljs-hexcolor {
78 | color: #DCCF8F;
79 | }
80 |
81 | .css .hljs-class {
82 | color: #d3a60c;
83 | }
84 |
85 | .hljs-preprocessor,
86 | .hljs-pragma,
87 | .hljs-pi,
88 | .hljs-shebang,
89 | .hljs-symbol,
90 | .hljs-symbol .hljs-string,
91 | .diff .hljs-change,
92 | .hljs-special,
93 | .hljs-attr_selector,
94 | .hljs-important,
95 | .hljs-subst,
96 | .hljs-cdata {
97 | color: #cb4b16;
98 | }
99 |
100 | .hljs-deletion {
101 | color: #dc322f;
102 | }
103 |
104 | .tex .hljs-formula {
105 | background: #073642;
106 | }
107 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/pojoaque.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/styles/pojoaque.jpg
--------------------------------------------------------------------------------
/app/src/main/assets/styles/rainbow.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Style with support for rainbow parens
4 |
5 | */
6 |
7 | .hljs {
8 | display: block; padding: 0.5em;
9 | background: #474949; color: #D1D9E1;
10 | }
11 |
12 |
13 | .hljs-body,
14 | .hljs-collection {
15 | color: #D1D9E1;
16 | }
17 |
18 | .hljs-comment,
19 | .hljs-template_comment,
20 | .diff .hljs-header,
21 | .hljs-doctype,
22 | .lisp .hljs-string,
23 | .hljs-javadoc {
24 | color: #969896;
25 | font-style: italic;
26 | }
27 |
28 | .hljs-keyword,
29 | .clojure .hljs-attribute,
30 | .hljs-winutils,
31 | .javascript .hljs-title,
32 | .hljs-addition,
33 | .css .hljs-tag {
34 | color: #cc99cc;
35 | }
36 |
37 | .hljs-number { color: #f99157; }
38 |
39 | .hljs-command,
40 | .hljs-string,
41 | .hljs-tag .hljs-value,
42 | .hljs-phpdoc,
43 | .tex .hljs-formula,
44 | .hljs-regexp,
45 | .hljs-hexcolor {
46 | color: #8abeb7;
47 | }
48 |
49 | .hljs-title,
50 | .hljs-localvars,
51 | .hljs-function .hljs-title,
52 | .hljs-chunk,
53 | .hljs-decorator,
54 | .hljs-built_in,
55 | .lisp .hljs-title,
56 | .hljs-identifier
57 | {
58 | color: #b5bd68;
59 | }
60 |
61 | .hljs-class .hljs-keyword
62 | {
63 | color: #f2777a;
64 | }
65 |
66 | .hljs-variable,
67 | .lisp .hljs-body,
68 | .smalltalk .hljs-number,
69 | .hljs-constant,
70 | .hljs-class .hljs-title,
71 | .hljs-parent,
72 | .haskell .hljs-label,
73 | .hljs-id,
74 | .lisp .hljs-title,
75 | .clojure .hljs-title .hljs-built_in {
76 | color: #ffcc66;
77 | }
78 |
79 | .hljs-tag .hljs-title,
80 | .hljs-rules .hljs-property,
81 | .django .hljs-tag .hljs-keyword,
82 | .clojure .hljs-title .hljs-built_in {
83 | font-weight: bold;
84 | }
85 |
86 | .hljs-attribute,
87 | .clojure .hljs-title {
88 | color: #81a2be;
89 | }
90 |
91 | .hljs-preprocessor,
92 | .hljs-pragma,
93 | .hljs-pi,
94 | .hljs-shebang,
95 | .hljs-symbol,
96 | .hljs-symbol .hljs-string,
97 | .diff .hljs-change,
98 | .hljs-special,
99 | .hljs-attr_selector,
100 | .hljs-important,
101 | .hljs-subst,
102 | .hljs-cdata {
103 | color: #f99157;
104 | }
105 |
106 | .hljs-deletion {
107 | color: #dc322f;
108 | }
109 |
110 | .tex .hljs-formula {
111 | background: #eee8d5;
112 | }
113 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/school_book.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/assets/styles/school_book.png
--------------------------------------------------------------------------------
/app/src/main/assets/styles/solarized_dark.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | padding: 0.5em;
10 | background: #002b36;
11 | color: #839496;
12 | }
13 |
14 | .hljs-comment,
15 | .hljs-template_comment,
16 | .diff .hljs-header,
17 | .hljs-doctype,
18 | .hljs-pi,
19 | .lisp .hljs-string,
20 | .hljs-javadoc {
21 | color: #586e75;
22 | }
23 |
24 | /* Solarized Green */
25 | .hljs-keyword,
26 | .hljs-winutils,
27 | .method,
28 | .hljs-addition,
29 | .css .hljs-tag,
30 | .hljs-request,
31 | .hljs-status,
32 | .nginx .hljs-title {
33 | color: #859900;
34 | }
35 |
36 | /* Solarized Cyan */
37 | .hljs-number,
38 | .hljs-command,
39 | .hljs-string,
40 | .hljs-tag .hljs-value,
41 | .hljs-rules .hljs-value,
42 | .hljs-phpdoc,
43 | .tex .hljs-formula,
44 | .hljs-regexp,
45 | .hljs-hexcolor,
46 | .hljs-link_url {
47 | color: #2aa198;
48 | }
49 |
50 | /* Solarized Blue */
51 | .hljs-title,
52 | .hljs-localvars,
53 | .hljs-chunk,
54 | .hljs-decorator,
55 | .hljs-built_in,
56 | .hljs-identifier,
57 | .vhdl .hljs-literal,
58 | .hljs-id,
59 | .css .hljs-function {
60 | color: #268bd2;
61 | }
62 |
63 | /* Solarized Yellow */
64 | .hljs-attribute,
65 | .hljs-variable,
66 | .lisp .hljs-body,
67 | .smalltalk .hljs-number,
68 | .hljs-constant,
69 | .hljs-class .hljs-title,
70 | .hljs-parent,
71 | .haskell .hljs-type,
72 | .hljs-link_reference {
73 | color: #b58900;
74 | }
75 |
76 | /* Solarized Orange */
77 | .hljs-preprocessor,
78 | .hljs-preprocessor .hljs-keyword,
79 | .hljs-pragma,
80 | .hljs-shebang,
81 | .hljs-symbol,
82 | .hljs-symbol .hljs-string,
83 | .diff .hljs-change,
84 | .hljs-special,
85 | .hljs-attr_selector,
86 | .hljs-subst,
87 | .hljs-cdata,
88 | .clojure .hljs-title,
89 | .css .hljs-pseudo,
90 | .hljs-header {
91 | color: #cb4b16;
92 | }
93 |
94 | /* Solarized Red */
95 | .hljs-deletion,
96 | .hljs-important {
97 | color: #dc322f;
98 | }
99 |
100 | /* Solarized Violet */
101 | .hljs-link_label {
102 | color: #6c71c4;
103 | }
104 |
105 | .tex .hljs-formula {
106 | background: #073642;
107 | }
108 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/solarized_light.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | padding: 0.5em;
10 | background: #fdf6e3;
11 | color: #657b83;
12 | }
13 |
14 | .hljs-comment,
15 | .hljs-template_comment,
16 | .diff .hljs-header,
17 | .hljs-doctype,
18 | .hljs-pi,
19 | .lisp .hljs-string,
20 | .hljs-javadoc {
21 | color: #93a1a1;
22 | }
23 |
24 | /* Solarized Green */
25 | .hljs-keyword,
26 | .hljs-winutils,
27 | .method,
28 | .hljs-addition,
29 | .css .hljs-tag,
30 | .hljs-request,
31 | .hljs-status,
32 | .nginx .hljs-title {
33 | color: #859900;
34 | }
35 |
36 | /* Solarized Cyan */
37 | .hljs-number,
38 | .hljs-command,
39 | .hljs-string,
40 | .hljs-tag .hljs-value,
41 | .hljs-rules .hljs-value,
42 | .hljs-phpdoc,
43 | .tex .hljs-formula,
44 | .hljs-regexp,
45 | .hljs-hexcolor,
46 | .hljs-link_url {
47 | color: #2aa198;
48 | }
49 |
50 | /* Solarized Blue */
51 | .hljs-title,
52 | .hljs-localvars,
53 | .hljs-chunk,
54 | .hljs-decorator,
55 | .hljs-built_in,
56 | .hljs-identifier,
57 | .vhdl .hljs-literal,
58 | .hljs-id,
59 | .css .hljs-function {
60 | color: #268bd2;
61 | }
62 |
63 | /* Solarized Yellow */
64 | .hljs-attribute,
65 | .hljs-variable,
66 | .lisp .hljs-body,
67 | .smalltalk .hljs-number,
68 | .hljs-constant,
69 | .hljs-class .hljs-title,
70 | .hljs-parent,
71 | .haskell .hljs-type,
72 | .hljs-link_reference {
73 | color: #b58900;
74 | }
75 |
76 | /* Solarized Orange */
77 | .hljs-preprocessor,
78 | .hljs-preprocessor .hljs-keyword,
79 | .hljs-pragma,
80 | .hljs-shebang,
81 | .hljs-symbol,
82 | .hljs-symbol .hljs-string,
83 | .diff .hljs-change,
84 | .hljs-special,
85 | .hljs-attr_selector,
86 | .hljs-subst,
87 | .hljs-cdata,
88 | .clojure .hljs-title,
89 | .css .hljs-pseudo,
90 | .hljs-header {
91 | color: #cb4b16;
92 | }
93 |
94 | /* Solarized Red */
95 | .hljs-deletion,
96 | .hljs-important {
97 | color: #dc322f;
98 | }
99 |
100 | /* Solarized Violet */
101 | .hljs-link_label {
102 | color: #6c71c4;
103 | }
104 |
105 | .tex .hljs-formula {
106 | background: #eee8d5;
107 | }
108 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/tomorrow-night-blue.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Blue Theme */
2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
5 |
6 | /* Tomorrow Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #7285b7;
10 | }
11 |
12 | /* Tomorrow Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #ff9da4;
26 | }
27 |
28 | /* Tomorrow Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #ffc58f;
37 | }
38 |
39 | /* Tomorrow Yellow */
40 | .ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #ffeead;
43 | }
44 |
45 | /* Tomorrow Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #d1f1a9;
53 | }
54 |
55 | /* Tomorrow Aqua */
56 | .css .hljs-hexcolor {
57 | color: #99ffff;
58 | }
59 |
60 | /* Tomorrow Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #bbdaff;
70 | }
71 |
72 | /* Tomorrow Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #ebbbff;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #002451;
81 | color: white;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/tomorrow-night-bright.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Bright Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
4 |
5 | /* Tomorrow Comment */
6 | .hljs-comment,
7 | .hljs-title {
8 | color: #969896;
9 | }
10 |
11 | /* Tomorrow Red */
12 | .hljs-variable,
13 | .hljs-attribute,
14 | .hljs-tag,
15 | .hljs-regexp,
16 | .ruby .hljs-constant,
17 | .xml .hljs-tag .hljs-title,
18 | .xml .hljs-pi,
19 | .xml .hljs-doctype,
20 | .html .hljs-doctype,
21 | .css .hljs-id,
22 | .css .hljs-class,
23 | .css .hljs-pseudo {
24 | color: #d54e53;
25 | }
26 |
27 | /* Tomorrow Orange */
28 | .hljs-number,
29 | .hljs-preprocessor,
30 | .hljs-pragma,
31 | .hljs-built_in,
32 | .hljs-literal,
33 | .hljs-params,
34 | .hljs-constant {
35 | color: #e78c45;
36 | }
37 |
38 | /* Tomorrow Yellow */
39 | .ruby .hljs-class .hljs-title,
40 | .css .hljs-rules .hljs-attribute {
41 | color: #e7c547;
42 | }
43 |
44 | /* Tomorrow Green */
45 | .hljs-string,
46 | .hljs-value,
47 | .hljs-inheritance,
48 | .hljs-header,
49 | .ruby .hljs-symbol,
50 | .xml .hljs-cdata {
51 | color: #b9ca4a;
52 | }
53 |
54 | /* Tomorrow Aqua */
55 | .css .hljs-hexcolor {
56 | color: #70c0b1;
57 | }
58 |
59 | /* Tomorrow Blue */
60 | .hljs-function,
61 | .python .hljs-decorator,
62 | .python .hljs-title,
63 | .ruby .hljs-function .hljs-title,
64 | .ruby .hljs-title .hljs-keyword,
65 | .perl .hljs-sub,
66 | .javascript .hljs-title,
67 | .coffeescript .hljs-title {
68 | color: #7aa6da;
69 | }
70 |
71 | /* Tomorrow Purple */
72 | .hljs-keyword,
73 | .javascript .hljs-function {
74 | color: #c397d8;
75 | }
76 |
77 | .hljs {
78 | display: block;
79 | background: black;
80 | color: #eaeaea;
81 | padding: 0.5em;
82 | }
83 |
84 | .coffeescript .javascript,
85 | .javascript .xml,
86 | .tex .hljs-formula,
87 | .xml .javascript,
88 | .xml .vbscript,
89 | .xml .css,
90 | .xml .hljs-cdata {
91 | opacity: 0.5;
92 | }
93 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/tomorrow-night-eighties.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Eighties Theme */
2 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
3 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
4 |
5 | /* Tomorrow Comment */
6 | .hljs-comment,
7 | .hljs-title {
8 | color: #999999;
9 | }
10 |
11 | /* Tomorrow Red */
12 | .hljs-variable,
13 | .hljs-attribute,
14 | .hljs-tag,
15 | .hljs-regexp,
16 | .ruby .hljs-constant,
17 | .xml .hljs-tag .hljs-title,
18 | .xml .hljs-pi,
19 | .xml .hljs-doctype,
20 | .html .hljs-doctype,
21 | .css .hljs-id,
22 | .css .hljs-class,
23 | .css .hljs-pseudo {
24 | color: #f2777a;
25 | }
26 |
27 | /* Tomorrow Orange */
28 | .hljs-number,
29 | .hljs-preprocessor,
30 | .hljs-pragma,
31 | .hljs-built_in,
32 | .hljs-literal,
33 | .hljs-params,
34 | .hljs-constant {
35 | color: #f99157;
36 | }
37 |
38 | /* Tomorrow Yellow */
39 | .ruby .hljs-class .hljs-title,
40 | .css .hljs-rules .hljs-attribute {
41 | color: #ffcc66;
42 | }
43 |
44 | /* Tomorrow Green */
45 | .hljs-string,
46 | .hljs-value,
47 | .hljs-inheritance,
48 | .hljs-header,
49 | .ruby .hljs-symbol,
50 | .xml .hljs-cdata {
51 | color: #99cc99;
52 | }
53 |
54 | /* Tomorrow Aqua */
55 | .css .hljs-hexcolor {
56 | color: #66cccc;
57 | }
58 |
59 | /* Tomorrow Blue */
60 | .hljs-function,
61 | .python .hljs-decorator,
62 | .python .hljs-title,
63 | .ruby .hljs-function .hljs-title,
64 | .ruby .hljs-title .hljs-keyword,
65 | .perl .hljs-sub,
66 | .javascript .hljs-title,
67 | .coffeescript .hljs-title {
68 | color: #6699cc;
69 | }
70 |
71 | /* Tomorrow Purple */
72 | .hljs-keyword,
73 | .javascript .hljs-function {
74 | color: #cc99cc;
75 | }
76 |
77 | .hljs {
78 | display: block;
79 | background: #2d2d2d;
80 | color: #cccccc;
81 | padding: 0.5em;
82 | }
83 |
84 | .coffeescript .javascript,
85 | .javascript .xml,
86 | .tex .hljs-formula,
87 | .xml .javascript,
88 | .xml .vbscript,
89 | .xml .css,
90 | .xml .hljs-cdata {
91 | opacity: 0.5;
92 | }
93 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/tomorrow-night.css:
--------------------------------------------------------------------------------
1 | /* Tomorrow Night Theme */
2 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
3 | /* Original theme - https://github.com/chriskempson/tomorrow-theme */
4 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
5 |
6 | /* Tomorrow Comment */
7 | .hljs-comment,
8 | .hljs-title {
9 | color: #969896;
10 | }
11 |
12 | /* Tomorrow Red */
13 | .hljs-variable,
14 | .hljs-attribute,
15 | .hljs-tag,
16 | .hljs-regexp,
17 | .ruby .hljs-constant,
18 | .xml .hljs-tag .hljs-title,
19 | .xml .hljs-pi,
20 | .xml .hljs-doctype,
21 | .html .hljs-doctype,
22 | .css .hljs-id,
23 | .css .hljs-class,
24 | .css .hljs-pseudo {
25 | color: #cc6666;
26 | }
27 |
28 | /* Tomorrow Orange */
29 | .hljs-number,
30 | .hljs-preprocessor,
31 | .hljs-pragma,
32 | .hljs-built_in,
33 | .hljs-literal,
34 | .hljs-params,
35 | .hljs-constant {
36 | color: #de935f;
37 | }
38 |
39 | /* Tomorrow Yellow */
40 | .ruby .hljs-class .hljs-title,
41 | .css .hljs-rules .hljs-attribute {
42 | color: #f0c674;
43 | }
44 |
45 | /* Tomorrow Green */
46 | .hljs-string,
47 | .hljs-value,
48 | .hljs-inheritance,
49 | .hljs-header,
50 | .ruby .hljs-symbol,
51 | .xml .hljs-cdata {
52 | color: #b5bd68;
53 | }
54 |
55 | /* Tomorrow Aqua */
56 | .css .hljs-hexcolor {
57 | color: #8abeb7;
58 | }
59 |
60 | /* Tomorrow Blue */
61 | .hljs-function,
62 | .python .hljs-decorator,
63 | .python .hljs-title,
64 | .ruby .hljs-function .hljs-title,
65 | .ruby .hljs-title .hljs-keyword,
66 | .perl .hljs-sub,
67 | .javascript .hljs-title,
68 | .coffeescript .hljs-title {
69 | color: #81a2be;
70 | }
71 |
72 | /* Tomorrow Purple */
73 | .hljs-keyword,
74 | .javascript .hljs-function {
75 | color: #b294bb;
76 | }
77 |
78 | .hljs {
79 | display: block;
80 | background: #1d1f21;
81 | color: #c5c8c6;
82 | padding: 0.5em;
83 | }
84 |
85 | .coffeescript .javascript,
86 | .javascript .xml,
87 | .tex .hljs-formula,
88 | .xml .javascript,
89 | .xml .vbscript,
90 | .xml .css,
91 | .xml .hljs-cdata {
92 | opacity: 0.5;
93 | }
94 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/tomorrow.css:
--------------------------------------------------------------------------------
1 | /* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
2 |
3 | /* Tomorrow Comment */
4 | .hljs-comment,
5 | .hljs-title {
6 | color: #8e908c;
7 | }
8 |
9 | /* Tomorrow Red */
10 | .hljs-variable,
11 | .hljs-attribute,
12 | .hljs-tag,
13 | .hljs-regexp,
14 | .ruby .hljs-constant,
15 | .xml .hljs-tag .hljs-title,
16 | .xml .hljs-pi,
17 | .xml .hljs-doctype,
18 | .html .hljs-doctype,
19 | .css .hljs-id,
20 | .css .hljs-class,
21 | .css .hljs-pseudo {
22 | color: #c82829;
23 | }
24 |
25 | /* Tomorrow Orange */
26 | .hljs-number,
27 | .hljs-preprocessor,
28 | .hljs-pragma,
29 | .hljs-built_in,
30 | .hljs-literal,
31 | .hljs-params,
32 | .hljs-constant {
33 | color: #f5871f;
34 | }
35 |
36 | /* Tomorrow Yellow */
37 | .ruby .hljs-class .hljs-title,
38 | .css .hljs-rules .hljs-attribute {
39 | color: #eab700;
40 | }
41 |
42 | /* Tomorrow Green */
43 | .hljs-string,
44 | .hljs-value,
45 | .hljs-inheritance,
46 | .hljs-header,
47 | .ruby .hljs-symbol,
48 | .xml .hljs-cdata {
49 | color: #718c00;
50 | }
51 |
52 | /* Tomorrow Aqua */
53 | .css .hljs-hexcolor {
54 | color: #3e999f;
55 | }
56 |
57 | /* Tomorrow Blue */
58 | .hljs-function,
59 | .python .hljs-decorator,
60 | .python .hljs-title,
61 | .ruby .hljs-function .hljs-title,
62 | .ruby .hljs-title .hljs-keyword,
63 | .perl .hljs-sub,
64 | .javascript .hljs-title,
65 | .coffeescript .hljs-title {
66 | color: #4271ae;
67 | }
68 |
69 | /* Tomorrow Purple */
70 | .hljs-keyword,
71 | .javascript .hljs-function {
72 | color: #8959a8;
73 | }
74 |
75 | .hljs {
76 | display: block;
77 | background: white;
78 | color: #4d4d4c;
79 | padding: 0.5em;
80 | }
81 |
82 | .coffeescript .javascript,
83 | .javascript .xml,
84 | .tex .hljs-formula,
85 | .xml .javascript,
86 | .xml .vbscript,
87 | .xml .css,
88 | .xml .hljs-cdata {
89 | opacity: 0.5;
90 | }
91 |
--------------------------------------------------------------------------------
/app/src/main/assets/styles/vs.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Visual Studio-like style based on original C# coloring by Jason Diamond
4 |
5 | */
6 | .hljs {
7 | display: block; padding: 0.5em;
8 | background: white; color: black;
9 | }
10 |
11 | .hljs-comment,
12 | .hljs-annotation,
13 | .hljs-template_comment,
14 | .diff .hljs-header,
15 | .hljs-chunk,
16 | .apache .hljs-cbracket {
17 | color: #008000;
18 | }
19 |
20 | .hljs-keyword,
21 | .hljs-id,
22 | .hljs-built_in,
23 | .smalltalk .hljs-class,
24 | .hljs-winutils,
25 | .bash .hljs-variable,
26 | .tex .hljs-command,
27 | .hljs-request,
28 | .hljs-status,
29 | .nginx .hljs-title,
30 | .xml .hljs-tag,
31 | .xml .hljs-tag .hljs-value {
32 | color: #00f;
33 | }
34 |
35 | .hljs-string,
36 | .hljs-title,
37 | .hljs-parent,
38 | .hljs-tag .hljs-value,
39 | .hljs-rules .hljs-value,
40 | .hljs-rules .hljs-value .hljs-number,
41 | .ruby .hljs-symbol,
42 | .ruby .hljs-symbol .hljs-string,
43 | .hljs-aggregate,
44 | .hljs-template_tag,
45 | .django .hljs-variable,
46 | .hljs-addition,
47 | .hljs-flow,
48 | .hljs-stream,
49 | .apache .hljs-tag,
50 | .hljs-date,
51 | .tex .hljs-formula,
52 | .coffeescript .hljs-attribute {
53 | color: #a31515;
54 | }
55 |
56 | .ruby .hljs-string,
57 | .hljs-decorator,
58 | .hljs-filter .hljs-argument,
59 | .hljs-localvars,
60 | .hljs-array,
61 | .hljs-attr_selector,
62 | .hljs-pseudo,
63 | .hljs-pi,
64 | .hljs-doctype,
65 | .hljs-deletion,
66 | .hljs-envvar,
67 | .hljs-shebang,
68 | .hljs-preprocessor,
69 | .hljs-pragma,
70 | .userType,
71 | .apache .hljs-sqbracket,
72 | .nginx .hljs-built_in,
73 | .tex .hljs-special,
74 | .hljs-prompt {
75 | color: #2b91af;
76 | }
77 |
78 | .hljs-phpdoc,
79 | .hljs-javadoc,
80 | .hljs-xmlDocTag {
81 | color: #808080;
82 | }
83 |
84 | .vhdl .hljs-typename { font-weight: bold; }
85 | .vhdl .hljs-string { color: #666666; }
86 | .vhdl .hljs-literal { color: #a31515; }
87 | .vhdl .hljs-attribute { color: #00B0E8; }
88 |
89 | .xml .hljs-attribute { color: #f00; }
90 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/api/EmanualAPI.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.api;
2 |
3 | import android.annotation.SuppressLint;
4 |
5 | import com.loopj.android.http.AsyncHttpResponseHandler;
6 |
7 | public class EmanualAPI {
8 | /**
9 | * 下载对应的语言
10 | *
11 | * @param lang
12 | * @param responseHandler
13 | */
14 | @SuppressLint("DefaultLocale") public static void downloadLang(String lang, AsyncHttpResponseHandler responseHandler) {
15 | RestClient.get(String.format("/md-%s/dist/%s.zip", lang.toLowerCase(), lang.toLowerCase()), null, responseHandler);
16 | }
17 |
18 | /**
19 | * 获得最新版本的信息
20 | *
21 | * @param responseHandler
22 | */
23 | public static void getVersionInfo(AsyncHttpResponseHandler responseHandler) {
24 | RestClient.get("/md-release/dist/info.json", null, responseHandler);
25 | }
26 |
27 | /**
28 | * 获取对应语言的信息
29 | * @param lang
30 | * @param responseHandler
31 | */
32 | public static void getLangInfo(String lang, AsyncHttpResponseHandler responseHandler ){
33 | RestClient.get(String.format("/md-%s/dist/%s/info.json", lang.toLowerCase(), lang.toLowerCase()), null, responseHandler);
34 | }
35 |
36 | /**
37 | * 获取Book feeds
38 | * @param responseHandler
39 | */
40 | public static void getBookFeeds(AsyncHttpResponseHandler responseHandler){
41 | RestClient.get(RestClient.URL_FEEDS,"/feeds-book/feeds/all.min.json", null, responseHandler);
42 | }
43 |
44 | /**
45 | * 获取Interview feeds
46 | * @param responseHandler
47 | */
48 | public static void getInterviewFeeds(AsyncHttpResponseHandler responseHandler){
49 | RestClient.get(RestClient.URL_FEEDS,"/feeds-interview/feeds/all.min.json", null, responseHandler);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/api/JavaAPI.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.api;
2 |
3 | import com.loopj.android.http.AsyncHttpResponseHandler;
4 |
5 | public class JavaAPI {
6 | public static void getKindInfo(String kind, AsyncHttpResponseHandler responseHandler) {
7 | RestClient.get("/java/" + kind + "/info.json", null, responseHandler);
8 | }
9 |
10 | //include topic list
11 | public static void getTopicInfo(String kind, String topic, AsyncHttpResponseHandler responseHandler) {
12 | RestClient.get("/java/" + kind + "/" + topic + "/info.json", null, responseHandler);
13 | }
14 |
15 | public static void getArticleList(int page, String kind, String topic, AsyncHttpResponseHandler responseHandler) {
16 | RestClient.get("/java/" + kind + "/" + topic + "/" + page + ".json", null, responseHandler);
17 | }
18 |
19 | public static String getArticleUrl(String kind, String topic, String article_name) {
20 | return RestClient.BASE_URL + "/java/" + kind + "/" + topic + "/" + article_name;
21 | }
22 |
23 | public static String getArticleParam(String kind, String topic, String article_name) {
24 | return "path=java/" + kind + "/" + topic + "/" + article_name;
25 | }
26 |
27 | public static void getVersionInfo(AsyncHttpResponseHandler responseHandler) {
28 | RestClient.get("/released/java/update.json", null, responseHandler);
29 | }
30 |
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/api/NewFeedsAPI.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.api;
2 |
3 | import com.loopj.android.http.AsyncHttpResponseHandler;
4 |
5 | public class NewFeedsAPI {
6 |
7 | public NewFeedsAPI() {
8 |
9 | }
10 |
11 | public void getInfo(AsyncHttpResponseHandler responseHandler) {
12 | RestClient.get("/java-newfeeds/article/info.json", null, responseHandler);
13 | }
14 |
15 | public void getNewFeeds(int page, AsyncHttpResponseHandler responseHandler) {
16 | RestClient.get("/md-newsfeeds/dist/" + page + ".json", null, responseHandler);
17 | }
18 |
19 | public static String getNewFeedsParam(String filename) {
20 | return "?path=java-newfeeds/article/" + filename;
21 | }
22 |
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/entity/BaseEntity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.entity;
2 |
3 | import com.google.gson.Gson;
4 |
5 | import org.json.JSONArray;
6 | import org.json.JSONException;
7 |
8 | import java.io.Serializable;
9 | import java.util.ArrayList;
10 | import java.util.List;
11 |
12 | /**
13 | * Author: jayin
14 | * Date: 2/1/16
15 | */
16 | public class BaseEntity implements Serializable {
17 | public static T createByJSON(String json, Class cls) {
18 | Gson gson = new Gson();
19 | try {
20 | T t = gson.fromJson(json, cls);
21 | return t;
22 | } catch (Exception e) {
23 | return null;
24 | }
25 | }
26 |
27 |
28 | public static List createByJSONArray(String json, Class cls) {
29 | List list = new ArrayList();
30 | JSONArray jsonArray = null;
31 | try {
32 | jsonArray = new JSONArray(json.toString());
33 | for (int i = 0; i < jsonArray.length(); i++) {
34 | list.add(createByJSON(jsonArray.getJSONObject(i).toString(), cls)
35 | );
36 | }
37 | } catch (JSONException e) {
38 | // TODO Auto-generated catch block
39 | e.printStackTrace();
40 | }
41 | return list;
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/entity/BookJSONEntity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.entity;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * 合并后的book.json
7 | * 实体类详见:https://github.com/EManualResource/book-docker-practice/blob/gh-pages/dist/book/book.json
8 | * Author: jayin
9 | * Date: 1/31/16
10 | */
11 | public class BookJSONEntity extends BaseEntity implements Serializable {
12 | private String title;
13 | private BookInfoEntity info;
14 |
15 | public BookInfoEntity getInfo() {
16 | return info;
17 | }
18 |
19 | public void setInfo(BookInfoEntity info) {
20 | this.info = info;
21 | }
22 |
23 | public String getTitle() {
24 | return title;
25 | }
26 |
27 | public void setTitle(String title) {
28 | this.title = title;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/entity/InterviewJSONEntity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.entity;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/25/16
6 | */
7 | public class InterviewJSONEntity extends BaseEntity {
8 |
9 | private String title;
10 | private InterviewInfoEntity info;
11 |
12 | public InterviewInfoEntity getInfo() {
13 | return info;
14 | }
15 |
16 | public void setInfo(InterviewInfoEntity info) {
17 | this.info = info;
18 | }
19 |
20 | public String getTitle() {
21 | return title;
22 | }
23 |
24 | public void setTitle(String title) {
25 | this.title = title;
26 | }
27 |
28 | @Override public String toString() {
29 | return "InterviewJSONEntity{" +
30 | "info=" + info +
31 | ", title='" + title + '\'' +
32 | '}';
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/entity/MaintainerEntity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.entity;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/10/16
6 | */
7 | public class MaintainerEntity extends BaseEntity {
8 | private String name;
9 | private String email;
10 |
11 | public String getEmail() {
12 | return email;
13 | }
14 |
15 | public void setEmail(String email) {
16 | this.email = email;
17 | }
18 |
19 | public String getName() {
20 | return name;
21 | }
22 |
23 | public void setName(String name) {
24 | this.name = name;
25 | }
26 |
27 | @Override public String toString() {
28 | return "MaintainerEntity{" +
29 | "email='" + email + '\'' +
30 | ", name='" + name + '\'' +
31 | '}';
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/entity/NewsFeedsEntity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.entity;
2 |
3 | import com.google.gson.Gson;
4 | import com.google.gson.reflect.TypeToken;
5 |
6 | import java.io.Serializable;
7 | import java.lang.reflect.Type;
8 | import java.util.List;
9 |
10 | public class NewsFeedsEntity implements Serializable {
11 | private String path;
12 | private String name;
13 | private String rname;
14 | private String description;
15 |
16 | public static NewsFeedsEntity create(String json) {
17 | return new Gson().fromJson(json, NewsFeedsEntity.class);
18 | }
19 |
20 | public static List createNewsFeedsObjects(String json) throws Exception{
21 | Type collectionType = new TypeToken>() {
22 | }.getType();
23 | List result = null;
24 |
25 | try{
26 | //json格式不一定对,应为网络原因
27 | result = new Gson().fromJson(json, collectionType);
28 | return result;
29 | }catch (Exception e){
30 | throw e;
31 | }
32 | }
33 |
34 | public String getPath() {
35 | return path;
36 | }
37 |
38 | public void setPath(String path) {
39 | this.path = path;
40 | }
41 |
42 | public String getName() {
43 | return name;
44 | }
45 |
46 | public void setName(String name) {
47 | this.name = name;
48 | }
49 |
50 | public String getRname() {
51 | return rname;
52 | }
53 |
54 | public void setRname(String rname) {
55 | this.rname = rname;
56 | }
57 |
58 | public String getDescription() {
59 | return description;
60 | }
61 |
62 | public void setDescription(String description) {
63 | this.description = description;
64 | }
65 |
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/AboutActivity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui;
2 |
3 | import android.content.pm.PackageManager.NameNotFoundException;
4 | import android.os.Bundle;
5 | import android.support.v7.widget.Toolbar;
6 | import android.view.MenuItem;
7 | import android.widget.TextView;
8 |
9 | import butterknife.Bind;
10 | import io.github.emanual.app.R;
11 | import io.github.emanual.app.ui.base.activity.SwipeBackActivity;
12 | import io.github.emanual.app.utils.AndroidUtils;
13 |
14 | /**
15 | * 关于
16 | */
17 | public class AboutActivity extends SwipeBackActivity {
18 |
19 | @Bind(R.id.tv_version) TextView tv_version;
20 |
21 | @Override protected void initData(Bundle savedInstanceState) {
22 |
23 | }
24 |
25 | @Override protected void initLayout(Bundle savedInstanceState) {
26 |
27 | setSupportActionBar((Toolbar) findViewById(R.id.toolbar));
28 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
29 | getSupportActionBar().setTitle(R.string.acty_about);
30 |
31 | try {
32 | String text = String.format("%s v%s",
33 | getResources().getString(R.string.application_name),
34 | AndroidUtils.getAppVersionName(getContext()));
35 | tv_version.setText(text);
36 | } catch (NameNotFoundException e) {
37 | e.printStackTrace();
38 | }
39 | }
40 |
41 | @Override protected int getContentViewId() {
42 | return R.layout.acty_about;
43 | }
44 |
45 | @Override public boolean onOptionsItemSelected(MenuItem item) {
46 | if (item.getItemId() == android.R.id.home) {
47 | finish();
48 | return true;
49 | }
50 | return super.onOptionsItemSelected(item);
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/AppStartActivity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui;
2 |
3 | import android.app.Activity;
4 | import android.content.Intent;
5 | import android.os.Bundle;
6 | import android.os.Handler;
7 |
8 | import io.github.emanual.app.R;
9 |
10 | /**
11 | * 启动页
12 | */
13 | public class AppStartActivity extends Activity {
14 |
15 | @Override
16 | protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 | setContentView(R.layout.acty_appstart);
19 | new Handler().postDelayed(new Runnable() {
20 |
21 | @Override
22 | public void run() {
23 | if (!isFinishing()) {
24 | startActivity(new Intent(AppStartActivity.this, MainActivity.class));
25 | finish();
26 | }
27 | }
28 | }, 1000);
29 | }
30 |
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/adapter/ArticleListAdapter.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.TextView;
9 |
10 | import java.util.List;
11 |
12 | import butterknife.Bind;
13 | import butterknife.ButterKnife;
14 | import io.github.emanual.app.R;
15 | import io.github.emanual.app.utils.ParseUtils;
16 |
17 | public class ArticleListAdapter extends BaseAdapter {
18 | List data;
19 | Context context;
20 |
21 | public ArticleListAdapter(Context context, List data) {
22 | this.data = data;
23 | this.context = context;
24 | }
25 |
26 | @Override
27 | public int getCount() {
28 | return data.size();
29 | }
30 |
31 | @Override
32 | public Object getItem(int position) {
33 | return data.get(position);
34 | }
35 |
36 | @Override
37 | public long getItemId(int position) {
38 | return position;
39 | }
40 |
41 | @Override
42 | public View getView(int position, View convertView, ViewGroup parent) {
43 | ViewHolder h = null;
44 | if (convertView == null) {
45 | convertView = LayoutInflater.from(context).inflate(
46 | R.layout.adapter_articlelist, null);
47 | h = new ViewHolder(convertView);
48 | convertView.setTag(h);
49 | } else {
50 | h = (ViewHolder) convertView.getTag();
51 |
52 | }
53 | h.title.setText(ParseUtils.getArticleName(data.get(position)));
54 | return convertView;
55 | }
56 |
57 | static class ViewHolder {
58 | @Bind(R.id.tv_title)
59 | TextView title;
60 |
61 | public ViewHolder(View view) {
62 | ButterKnife.bind(this, view);
63 | }
64 | }
65 |
66 | }
67 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/adapter/MainFragmentPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.adapter;
2 |
3 | import java.util.List;
4 |
5 | import android.support.v4.app.Fragment;
6 | import android.support.v4.app.FragmentManager;
7 | import android.support.v4.app.FragmentPagerAdapter;
8 |
9 | public class MainFragmentPagerAdapter extends FragmentPagerAdapter {
10 | FragmentManager fm;
11 | List fragments;
12 | String[] titles;
13 |
14 | public MainFragmentPagerAdapter(FragmentManager fm, List fragments, String[] titles) {
15 | super(fm);
16 | this.fm = fm;
17 | this.fragments = fragments;
18 | this.titles = titles;
19 | }
20 |
21 | @Override
22 | public Fragment getItem(int position) {
23 |
24 | return fragments.get(position);
25 | }
26 |
27 | @Override
28 | public int getCount() {
29 | return fragments.size();
30 | }
31 |
32 | @Override
33 | public CharSequence getPageTitle(int position) {
34 | return titles[position];
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/adapter/NewFeedsAdapter.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.TextView;
9 |
10 | import java.util.List;
11 |
12 | import butterknife.Bind;
13 | import butterknife.ButterKnife;
14 | import io.github.emanual.app.R;
15 | import io.github.emanual.app.entity.NewsFeedsEntity;
16 | import io.github.emanual.app.utils.EManualUtils;
17 |
18 | public class NewFeedsAdapter extends BaseAdapter {
19 | List data;
20 | Context context;
21 |
22 | public NewFeedsAdapter(Context context, List data) {
23 | this.data = data;
24 | this.context = context;
25 | }
26 |
27 | @Override
28 | public int getCount() {
29 | return data.size();
30 | }
31 |
32 | @Override
33 | public Object getItem(int position) {
34 | return data.get(position);
35 | }
36 |
37 | @Override
38 | public long getItemId(int position) {
39 | return position;
40 | }
41 |
42 | @Override
43 | public View getView(int position, View convertView, ViewGroup parent) {
44 | ViewHolder h = null;
45 | if (convertView == null) {
46 | convertView = LayoutInflater.from(context).inflate(
47 | R.layout.adapter_newfeeds, null);
48 | h = new ViewHolder(convertView);
49 | convertView.setTag(h);
50 | } else {
51 | h = (ViewHolder) convertView.getTag();
52 | }
53 |
54 | h.title.setText(EManualUtils.getNewsFeedsTitle(data.get(position).getRname()));
55 | h.time.setText(EManualUtils.getNewsFeedsTime(data.get(position).getRname()));
56 | h.description.setText(data.get(position).getDescription());
57 | return convertView;
58 | }
59 |
60 | class ViewHolder {
61 | @Bind(R.id.tv_title) TextView title;
62 | @Bind(R.id.tv_time) TextView time;
63 | @Bind(R.id.tv_description) TextView description;
64 |
65 | public ViewHolder(View view) {
66 | ButterKnife.bind(this, view);
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/adapter/TopicListAdapter.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.adapter;
2 |
3 | import android.content.Context;
4 | import android.view.LayoutInflater;
5 | import android.view.View;
6 | import android.view.ViewGroup;
7 | import android.widget.BaseAdapter;
8 | import android.widget.TextView;
9 |
10 | import java.util.List;
11 |
12 | import butterknife.Bind;
13 | import butterknife.ButterKnife;
14 | import io.github.emanual.app.R;
15 |
16 | public class TopicListAdapter extends BaseAdapter {
17 | List data;
18 | Context context;
19 |
20 | public TopicListAdapter(Context context, List data) {
21 | this.data = data;
22 | this.context = context;
23 | }
24 |
25 | @Override
26 | public int getCount() {
27 | return data.size();
28 | }
29 |
30 | @Override
31 | public Object getItem(int position) {
32 | return data.get(position);
33 | }
34 |
35 | @Override
36 | public long getItemId(int position) {
37 | return position;
38 | }
39 |
40 | @Override
41 | public View getView(int position, View convertView, ViewGroup parent) {
42 | ViewHolder h = null;
43 | if (convertView == null) {
44 | convertView = LayoutInflater.from(context).inflate(R.layout.adapter_topiclist, null);
45 | h = new ViewHolder(convertView);
46 | convertView.setTag(h);
47 | } else {
48 | h = (ViewHolder) convertView.getTag();
49 | }
50 | h.title.setText(data.get(position));
51 | return convertView;
52 | }
53 |
54 | class ViewHolder {
55 | @Bind(R.id.tv_title)
56 | TextView title;
57 |
58 | public ViewHolder(View view) {
59 | ButterKnife.bind(this, view);
60 | }
61 | }
62 |
63 | }
64 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/base/activity/SwipeBackActivity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.base.activity;
2 |
3 | import android.os.Bundle;
4 |
5 | import butterknife.Bind;
6 | import io.github.emanual.app.R;
7 | import io.github.emanual.app.widget.SwipeBackLayout;
8 |
9 | /**
10 | * Author: jayin
11 | * Date: 1/11/16
12 | */
13 | public abstract class SwipeBackActivity extends BaseActivity {
14 | @Bind(R.id.swipBackLayout) SwipeBackLayout mSwipeBackLayout;
15 |
16 | @Override protected void onCreate(Bundle savedInstanceState) {
17 | super.onCreate(savedInstanceState);
18 |
19 | mSwipeBackLayout.setCallBack(new SwipeBackLayout.CallBack() {
20 | @Override
21 | public void onFinish() {
22 | finish();
23 | }
24 | });
25 | }
26 |
27 | public SwipeBackLayout getSwipeBackLayout() {
28 | return mSwipeBackLayout;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/base/activity/SwipeRefreshActivity.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.base.activity;
2 |
3 | import android.os.Bundle;
4 | import android.support.v4.widget.SwipeRefreshLayout;
5 |
6 | import butterknife.Bind;
7 | import io.github.emanual.app.R;
8 |
9 | /**
10 | * Author: jayin
11 | * Date: 2/5/16
12 | */
13 | public abstract class SwipeRefreshActivity extends SwipeBackActivity implements SwipeRefreshLayout.OnRefreshListener {
14 | @Bind(R.id.swipeRefreshLayout) SwipeRefreshLayout swipeRefreshLayout;
15 |
16 | public SwipeRefreshLayout getSwipeRefreshLayout() {
17 | return swipeRefreshLayout;
18 | }
19 |
20 | @Override public void onCreate(Bundle savedInstanceState) {
21 | super.onCreate(savedInstanceState);
22 |
23 | swipeRefreshLayout.setOnRefreshListener(this);
24 | swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
25 | android.R.color.holo_blue_light,
26 | android.R.color.holo_blue_bright,
27 | android.R.color.holo_blue_light);
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/base/fragment/BaseFragment.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.base.fragment;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.Nullable;
5 | import android.support.design.widget.Snackbar;
6 | import android.support.v4.app.Fragment;
7 | import android.view.LayoutInflater;
8 | import android.view.View;
9 | import android.view.ViewGroup;
10 | import android.widget.Toast;
11 |
12 | import butterknife.ButterKnife;
13 | import de.greenrobot.event.EventBus;
14 | import de.greenrobot.event.Subscribe;
15 | import io.github.emanual.app.R;
16 | import io.github.emanual.app.ui.event.EmptyEvent;
17 |
18 | public abstract class BaseFragment extends Fragment {
19 |
20 | /**
21 | * EventBus 3必须要有一个@Subscribe
22 | */
23 | @Subscribe
24 | public void onEmpty(EmptyEvent event){
25 |
26 | }
27 |
28 | protected abstract void initData(Bundle savedInstanceState);
29 | protected abstract void initLayout(Bundle savedInstanceState);
30 | protected abstract int getContentViewId();
31 |
32 | @Override public void onCreate(@Nullable Bundle savedInstanceState) {
33 | super.onCreate(savedInstanceState);
34 | if(!EventBus.getDefault().isRegistered(this)){
35 | EventBus.getDefault().register(this);
36 | }
37 | }
38 |
39 | @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
40 | View view = inflater.from(getActivity()).inflate(getContentViewId(), container, false);
41 | ButterKnife.bind(this, view);
42 | initData(savedInstanceState);
43 | initLayout(savedInstanceState);
44 | return view;
45 | }
46 |
47 | @Override public void onDestroy() {
48 | super.onDestroy();
49 | if(EventBus.getDefault().isRegistered(this)){
50 | EventBus.getDefault().unregister(this);
51 | }
52 | }
53 |
54 | public void toast(String content) {
55 | if (getActivity() != null) {
56 | try{
57 | Snackbar.make(getActivity().findViewById(R.id.layout_container), content, Snackbar.LENGTH_LONG).show();
58 | }catch(Exception e){
59 | Toast.makeText(getActivity(), content, Toast.LENGTH_LONG).show();
60 | }
61 |
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/base/fragment/SwipeRefreshFragment.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.base.fragment;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.Nullable;
5 | import android.support.v4.widget.SwipeRefreshLayout;
6 | import android.view.LayoutInflater;
7 | import android.view.View;
8 | import android.view.ViewGroup;
9 |
10 | import butterknife.Bind;
11 | import io.github.emanual.app.R;
12 |
13 | /**
14 | * Author: jayin
15 | * Date: 2/5/16
16 | */
17 | public abstract class SwipeRefreshFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
18 | @Bind(R.id.swipeRefreshLayout) SwipeRefreshLayout swipeRefreshLayout;
19 |
20 | public SwipeRefreshLayout getSwipeRefreshLayout() {
21 | return swipeRefreshLayout;
22 | }
23 |
24 | @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
25 | View view = super.onCreateView(inflater, container, savedInstanceState);
26 | swipeRefreshLayout.setOnRefreshListener(this);
27 | swipeRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
28 | android.R.color.holo_blue_light,
29 | android.R.color.holo_blue_bright,
30 | android.R.color.holo_blue_light);
31 | return view;
32 |
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/BaseEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/11/16
6 | */
7 | public class BaseEvent {
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/BookDownloadEndEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import java.io.File;
4 |
5 | import io.github.emanual.app.entity.FeedsItemEntity;
6 |
7 | /**
8 | * 书下载完毕事件
9 | * Author: jayin
10 | * Date: 1/22/16
11 | */
12 | public class BookDownloadEndEvent extends BaseEvent{
13 | private File file;
14 | private FeedsItemEntity feedsItemEntity;
15 |
16 | public BookDownloadEndEvent(File file, FeedsItemEntity feedsItemEntity){
17 | this.file = file;
18 | this.feedsItemEntity = feedsItemEntity;
19 | }
20 |
21 | public File getFile() {
22 | return file;
23 | }
24 |
25 | public void setFile(File file) {
26 | this.file = file;
27 | }
28 |
29 | public FeedsItemEntity getFeedsItemEntity() {
30 | return feedsItemEntity;
31 | }
32 |
33 | public void setFeedsItemEntity(FeedsItemEntity feedsItemEntity) {
34 | this.feedsItemEntity = feedsItemEntity;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/BookDownloadFaildEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import cz.msebera.android.httpclient.Header;
4 |
5 | /**
6 | * Author: jayin
7 | * Date: 2/11/16
8 | */
9 | public class BookDownloadFaildEvent extends BaseEvent {
10 |
11 | private int statusCode;
12 | private Header[] headers;
13 | private Throwable throwable;
14 |
15 | public BookDownloadFaildEvent(int statusCode, Header[] headers, Throwable throwable) {
16 | this.statusCode = statusCode;
17 | this.headers = headers;
18 | this.throwable = throwable;
19 | }
20 |
21 | public Header[] getHeaders() {
22 | return headers;
23 | }
24 |
25 | public int getStatusCode() {
26 | return statusCode;
27 | }
28 |
29 | public Throwable getThrowable() {
30 | return throwable;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/BookDownloadProgressEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/11/16
6 | */
7 | public class BookDownloadProgressEvent extends BaseEvent {
8 |
9 | private long bytesWritten;
10 | private long totalSize;
11 |
12 | /**
13 | * @param bytesWritten 已下载
14 | * @param totalSize 总大小
15 | */
16 | public BookDownloadProgressEvent(long bytesWritten, long totalSize) {
17 | this.bytesWritten = bytesWritten;
18 | this.totalSize = totalSize;
19 | }
20 |
21 | public long getBytesWritten() {
22 | return bytesWritten;
23 | }
24 |
25 | public void setBytesWritten(long bytesWritten) {
26 | this.bytesWritten = bytesWritten;
27 | }
28 |
29 | public long getTotalSize() {
30 | return totalSize;
31 | }
32 |
33 | public void setTotalSize(long totalSize) {
34 | this.totalSize = totalSize;
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/BookDownloadStartEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/11/16
6 | */
7 | public class BookDownloadStartEvent extends BaseEvent {
8 |
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/EmptyEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * 空事件
5 | * Author: jayin
6 | * Date: 1/22/16
7 | */
8 | public class EmptyEvent extends BaseEvent {
9 | String message;
10 |
11 | public EmptyEvent(String message) {
12 | this.message = message;
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/FinishLoadQuestionListEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import java.util.List;
4 |
5 | import io.github.emanual.app.entity.QuestionEntity;
6 |
7 | /**
8 | * Author: jayin
9 | * Date: 2/27/16
10 | */
11 | public class FinishLoadQuestionListEvent extends BaseEvent {
12 |
13 | private List questionEntityList;
14 |
15 | public FinishLoadQuestionListEvent(List data) {
16 | this.questionEntityList = data;
17 | }
18 |
19 | public List getQuestionEntityList() {
20 | return questionEntityList;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/FinishQueryBookListEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import java.util.List;
4 |
5 | import io.github.emanual.app.entity.BookJSONEntity;
6 |
7 | /**
8 | * 完成查询本地的BookList事件
9 | * Author: jayin
10 | * Date: 1/25/16
11 | */
12 | public class FinishQueryBookListEvent extends BaseEvent {
13 |
14 | List data;
15 |
16 | public FinishQueryBookListEvent(List data) {
17 | this.data = data;
18 | }
19 |
20 | public List getData() {
21 | return data;
22 | }
23 |
24 | public void setData(List data) {
25 | this.data = data;
26 | }
27 |
28 | @Override public String toString() {
29 | return "FinishQueryBookListEvent{" +
30 | "data=" + data +
31 | '}';
32 | }
33 | }
34 |
35 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/FinishQueryInterviewListEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import java.util.List;
4 |
5 | import io.github.emanual.app.entity.InterviewJSONEntity;
6 |
7 | /**
8 | * Author: jayin
9 | * Date: 2/25/16
10 | */
11 | public class FinishQueryInterviewListEvent extends BaseEvent {
12 | List data;
13 |
14 | public FinishQueryInterviewListEvent(List data) {
15 | this.data = data;
16 | }
17 |
18 | public List getData() {
19 | return data;
20 | }
21 |
22 | public void setData(List data) {
23 | this.data = data;
24 | }
25 |
26 | @Override public String toString() {
27 | return "FinishQueryInterviewListEvent{" +
28 | "data=" + data +
29 | '}';
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/GetQuestionListEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import io.github.emanual.app.entity.BaseEntity;
4 |
5 | /**
6 | * 获取问题列表
7 | * Author: jayin
8 | * Date: 2/27/16
9 | */
10 | public class GetQuestionListEvent extends BaseEntity {
11 |
12 | private String interviewName;
13 |
14 | public GetQuestionListEvent(String interviewName) {
15 | this.interviewName = interviewName;
16 | }
17 |
18 | public String getInterviewName() {
19 | return interviewName;
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/InterviewDownloadEndEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import java.io.File;
4 |
5 | import io.github.emanual.app.entity.FeedsItemEntity;
6 |
7 | /**
8 | * Author: jayin
9 | * Date: 2/23/16
10 | */
11 | public class InterviewDownloadEndEvent extends BaseEvent {
12 | private File file;
13 | private FeedsItemEntity feedsItemEntity;
14 |
15 | public InterviewDownloadEndEvent(File file, FeedsItemEntity feedsItemEntity){
16 | this.file = file;
17 | this.feedsItemEntity = feedsItemEntity;
18 | }
19 |
20 | public File getFile() {
21 | return file;
22 | }
23 |
24 | public void setFile(File file) {
25 | this.file = file;
26 | }
27 |
28 | public FeedsItemEntity getFeedsItemEntity() {
29 | return feedsItemEntity;
30 | }
31 |
32 | public void setFeedsItemEntity(FeedsItemEntity feedsItemEntity) {
33 | this.feedsItemEntity = feedsItemEntity;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/InterviewDownloadFaildEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import cz.msebera.android.httpclient.Header;
4 |
5 | /**
6 | * Author: jayin
7 | * Date: 2/23/16
8 | */
9 | public class InterviewDownloadFaildEvent extends BaseEvent {
10 | private int statusCode;
11 | private Header[] headers;
12 | private Throwable throwable;
13 |
14 | public InterviewDownloadFaildEvent(int statusCode, Header[] headers, Throwable throwable) {
15 | this.statusCode = statusCode;
16 | this.headers = headers;
17 | this.throwable = throwable;
18 | }
19 |
20 | public Header[] getHeaders() {
21 | return headers;
22 | }
23 |
24 | public int getStatusCode() {
25 | return statusCode;
26 | }
27 |
28 | public Throwable getThrowable() {
29 | return throwable;
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/InterviewDownloadProgressEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/23/16
6 | */
7 | public class InterviewDownloadProgressEvent extends BaseEvent {
8 | private long bytesWritten;
9 | private long totalSize;
10 |
11 | /**
12 | * @param bytesWritten 已下载
13 | * @param totalSize 总大小
14 | */
15 | public InterviewDownloadProgressEvent(long bytesWritten, long totalSize) {
16 | this.bytesWritten = bytesWritten;
17 | this.totalSize = totalSize;
18 | }
19 |
20 | public long getBytesWritten() {
21 | return bytesWritten;
22 | }
23 |
24 | public void setBytesWritten(long bytesWritten) {
25 | this.bytesWritten = bytesWritten;
26 | }
27 |
28 | public long getTotalSize() {
29 | return totalSize;
30 | }
31 |
32 | public void setTotalSize(long totalSize) {
33 | this.totalSize = totalSize;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/InterviewDownloadStartEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/23/16
6 | */
7 | public class InterviewDownloadStartEvent extends BaseEvent {
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/QueryBookListEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * 去查询BookList事件
5 | * Author: jayin
6 | * Date: 1/25/16
7 | */
8 | public class QueryBookListEvent extends BaseEvent {
9 |
10 | public QueryBookListEvent(){
11 |
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/QueryInterviewListEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * Author: jayin
5 | * Date: 2/25/16
6 | */
7 | public class QueryInterviewListEvent extends BaseEvent{
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/QuestionUpdateEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | import io.github.emanual.app.entity.QuestionEntity;
4 |
5 | /**
6 | * Author: jayin
7 | * Date: 3/9/16
8 | */
9 | public class QuestionUpdateEvent extends BaseEvent{
10 | private QuestionEntity questionEntity;
11 |
12 | public QuestionUpdateEvent(QuestionEntity questionEntity){
13 | this.questionEntity = questionEntity;
14 | }
15 |
16 | public QuestionEntity getQuestionEntity() {
17 | return questionEntity;
18 | }
19 |
20 | public void setQuestionEntity(QuestionEntity questionEntity) {
21 | this.questionEntity = questionEntity;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/event/UnPackFinishEvent.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.event;
2 |
3 | /**
4 | * 教程下载后解压完成事件
5 | * Author: jayin
6 | * Date: 1/22/16
7 | */
8 | public class UnPackFinishEvent extends BaseEvent {
9 | private Exception exception;
10 |
11 | public UnPackFinishEvent() {
12 | this(null);
13 | }
14 |
15 | public UnPackFinishEvent(Exception exception) {
16 | this.exception = exception;
17 | }
18 |
19 | public Exception getException() {
20 | return exception;
21 | }
22 |
23 | public void setException(Exception exception) {
24 | this.exception = exception;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/ui/fragment/InterviewDetailFragment.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.ui.fragment;
2 |
3 | import android.os.Bundle;
4 |
5 | import io.github.emanual.app.R;
6 | import io.github.emanual.app.entity.InterviewJSONEntity;
7 | import io.github.emanual.app.ui.base.fragment.BaseFragment;
8 |
9 | /**
10 | * A placeholder fragment containing a simple view.
11 | */
12 | public class InterviewDetailFragment extends BaseFragment {
13 |
14 | public static final String EXTRA_INTERVIEW = "EXTRA_INTERVIEW";
15 | public static final String EXTRA_INDEX_PAGE = "INDEX_PAGE";
16 |
17 | InterviewJSONEntity interviewJSONEntity;
18 | int indexPage = 0;
19 |
20 | public InterviewDetailFragment newInstance(InterviewJSONEntity interviewJSONEntity, int index) {
21 | InterviewDetailFragment fragment = new InterviewDetailFragment();
22 | Bundle args = new Bundle();
23 | args.putSerializable(InterviewDetailFragment.EXTRA_INTERVIEW, interviewJSONEntity);
24 | args.putInt(InterviewDetailFragment.EXTRA_INDEX_PAGE, index);
25 | fragment.setArguments(args);
26 | return fragment;
27 | }
28 |
29 |
30 | @Override protected void initData(Bundle savedInstanceState) {
31 | interviewJSONEntity = (InterviewJSONEntity) getArguments().getSerializable(EXTRA_INTERVIEW);
32 | indexPage = getArguments().getInt(EXTRA_INDEX_PAGE);
33 |
34 | }
35 |
36 | @Override protected void initLayout(Bundle savedInstanceState) {
37 |
38 | }
39 |
40 | @Override protected int getContentViewId() {
41 | return R.layout.fragment_interview_detail;
42 | }
43 |
44 | //load question
45 | //render
46 | //do action - feed back :1. show the answer at once
47 | //do action - next : note: NO NEXT
48 | //do action - pre : not : NO Preview
49 |
50 |
51 |
52 | }
53 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/utils/BookResource.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.utils;
2 |
3 | import android.content.Context;
4 |
5 | import java.io.File;
6 | import java.util.ArrayList;
7 | import java.util.Arrays;
8 | import java.util.List;
9 |
10 | import io.github.emanual.app.entity.BookJSONEntity;
11 |
12 | /**
13 | * Author: jayin
14 | * Date: 1/23/16
15 | */
16 | public class BookResource {
17 | /**
18 | * 获取所有books/* 所有文件名(英文书名)列表
19 | * @param context
20 | * @return
21 | */
22 | public static List getBookNameList(Context context) {
23 | List books = new ArrayList<>();
24 | File bookDir = new File(AppPath.getBooksPath(context));
25 | if (!bookDir.exists()) {
26 | bookDir.mkdirs();
27 | }
28 | books.addAll(Arrays.asList(bookDir.list()));
29 | return books;
30 | }
31 |
32 | /**
33 | * 获取所有books//book/book.json
34 | * @param context
35 | * @return
36 | */
37 | public static List getBookJSONList(Context context) {
38 | List books = new ArrayList<>();
39 | File bookDir = new File(AppPath.getBooksPath(context));
40 | if (!bookDir.exists()) {
41 | bookDir.mkdirs();
42 | }
43 | for (String bookName : bookDir.list()) {
44 | String json = _.readFile(AppPath.getBookJSONFilePath(context, bookName));
45 | BookJSONEntity bookJSONEntity = BookJSONEntity.createByJSON(json, BookJSONEntity.class);
46 | books.add(bookJSONEntity);
47 |
48 | }
49 | return books;
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/utils/MyDBManager.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.utils;
2 |
3 | import android.content.Context;
4 |
5 |
6 | public class MyDBManager {
7 |
8 | // public static DbUtils getDBUtils(Context context){
9 | // return DbUtils.create(context, "manual_java.db").configDebug(true);
10 | // }
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/utils/ParseUtils.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.utils;
2 |
3 | import java.io.UnsupportedEncodingException;
4 | import java.net.URLEncoder;
5 |
6 | import android.util.Log;
7 |
8 | import io.github.emanual.app.api.RestClient;
9 |
10 | public class ParseUtils {
11 |
12 | public static int getArticleId(String filename) {
13 | return Integer.parseInt(filename.split("-")[0]);
14 | }
15 |
16 | // [(2013-1-1,0010)]title].md
17 | public static String getArticleName(String filename) {
18 | String[] s = filename.replaceAll("\\.[Mm]{1}[Dd]{1}", "").split("-");
19 | //这是日期开头
20 | if (_.isNumber(s[0]) && _.isNumber(s[1]) && _.isNumber(s[2])) {
21 | return s[3];
22 | } else { //这是文章编号
23 | return s[1];
24 | }
25 | }
26 |
27 | // http:xxxxx/assets/preview.html?path=/a/b/[(2013-1-1,0010)]title].md
28 | // public static String getArticleNameByUrl(String url) {
29 | // String[] s = url.split("=")[1].split("/");
30 | // return getArticleName(s[s.length - 1]);
31 | // }
32 |
33 | // http:xxxxx/a/b/[(2013-1-1,0010)]title].md
34 | public static String getArticleNameByUrl(String url) {
35 | String[] s = url.split("/");
36 | return getArticleName(s[s.length - 1]);
37 | }
38 |
39 | public static String encodeArticleURL(String url) {
40 | try {
41 | StringBuilder sb = new StringBuilder(RestClient.URL_Preview
42 | + "?path=");
43 | for (String s : url.split("=")[1].split("/")) {
44 | sb.append(URLEncoder.encode(s, "UTF-8")).append("/");
45 | }
46 | sb.deleteCharAt(sb.length() - 1);
47 | return sb.toString();
48 | } catch (UnsupportedEncodingException e) {
49 | e.printStackTrace();
50 | }
51 | return url;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/utils/StorageUtils.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.utils;
2 |
3 | import android.os.Environment;
4 |
5 | public class StorageUtils {
6 | /* Checks if external storage is available for read and write */
7 | public static boolean isExternalStorageWritable() {
8 | String state = Environment.getExternalStorageState();
9 | if (Environment.MEDIA_MOUNTED.equals(state)) {
10 | return true;
11 | }
12 | return false;
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/utils/SwipeRefreshLayoutUtils.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.utils;
2 |
3 | import android.support.v4.widget.SwipeRefreshLayout;
4 |
5 | public class SwipeRefreshLayoutUtils {
6 |
7 | public static void setRefreshing(
8 | final SwipeRefreshLayout swipeRefreshLayout,
9 | final boolean isRefreshing) {
10 | if (swipeRefreshLayout == null)
11 | return;
12 | swipeRefreshLayout.post(new Runnable() {
13 |
14 | @Override public void run() {
15 | swipeRefreshLayout.setRefreshing(isRefreshing);
16 | }
17 | });
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/utils/UmengAnalytics.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.utils;
2 |
3 | /**
4 | * 友盟统计
5 | *
6 | * @author jayin
7 | */
8 | public class UmengAnalytics {
9 |
10 | public static final String ID_EVENT_VIEW_NEWSFEEDS = "view_newsfeeds"; // 查看新鲜事
11 | public static final String ID_EVENT_VIEW_FILE = "view_file";// 查看文档
12 | public static final String ID_EVENT_VIEW_MODULE = "view_module";// 查看语言模块
13 |
14 | public static final int DEAFULT_DURATION = 0;// 默认时常
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/utils/ZipUtils.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.utils;
2 |
3 | import java.io.File;
4 | import java.io.IOException;
5 |
6 | import net.lingala.zip4j.core.ZipFile;
7 | import net.lingala.zip4j.exception.ZipException;
8 |
9 | /**
10 | * Usage:
11 | *
12 | * String path = "/Users/jayin/repos/FileManage/java.zip";
13 | * try {
14 | * ZipUtils.unZipFiles(path, "/Users/jayin/repos/FileManage/java");
15 | * } catch (IOException e) {
16 | * e.printStackTrace();
17 | * }
18 | *
19 | */
20 | public class ZipUtils {
21 |
22 | /**
23 | * 解压到指定目录
24 | *
25 | * @param zipPath
26 | * @param descDir
27 | */
28 | public static void unZipFiles(String zipPath, String descDir) throws IOException {
29 | unZipFiles(new File(zipPath), descDir);
30 | }
31 |
32 | /**
33 | * 解压文件到指定目录
34 | *
35 | * @param source
36 | * @param descDir
37 | */
38 | @SuppressWarnings("rawtypes")
39 | public static void unZipFiles(File source, String descDir) throws IOException {
40 | ZipFile zipFile;
41 | try {
42 | zipFile = new ZipFile(source);
43 | zipFile.extractAll(descDir);
44 | } catch (ZipException e) {
45 | e.printStackTrace();
46 | }
47 |
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/widget/DefaultWebView.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.widget;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 | import android.webkit.WebView;
6 |
7 | /**
8 | * Author: jayin
9 | * Date: 3/8/16
10 | */
11 | public class DefaultWebView extends WebView{
12 |
13 |
14 | public DefaultWebView(Context context, AttributeSet attrs, int defStyleAttr) {
15 | super(context, attrs, defStyleAttr);
16 | init();
17 | }
18 |
19 | public DefaultWebView(Context context, AttributeSet attrs) {
20 | super(context, attrs);
21 | init();
22 | }
23 |
24 | public DefaultWebView(Context context) {
25 | super(context);
26 | init();
27 | }
28 |
29 | private void init() {
30 | this.getSettings().setJavaScriptEnabled(true);
31 | this.getSettings().setDomStorageEnabled(true);
32 | this.getSettings().setAppCacheEnabled(true);
33 | this.getSettings().setDatabaseEnabled(true);
34 | this.getSettings().setGeolocationEnabled(true);
35 | this.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/widget/DownloadConfirmDialog.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.widget;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.Context;
5 | import android.content.DialogInterface;
6 |
7 | /**
8 | * 下载/更新确认框
9 | *
10 | * @author jayin
11 | */
12 | public class DownloadConfirmDialog extends AlertDialog {
13 | private String lang;
14 | private String msg_format = "准备下载/更新 %s 数据包,这会消耗你的数据流量";
15 |
16 | public DownloadConfirmDialog(Context context) {
17 | super(context);
18 | this.setTitle("提醒");
19 | this.setCanceledOnTouchOutside(false);
20 |
21 | this.setCancleListener(new OnClickListener() {
22 |
23 | @Override public void onClick(DialogInterface dialog, int which) {
24 | dismiss();
25 | }
26 | });
27 | }
28 |
29 | public void setConfirmClickListener(DialogInterface.OnClickListener confirmListener) {
30 | this.setButton(BUTTON_POSITIVE, "下载", confirmListener);
31 | }
32 |
33 | public void setCancleListener(DialogInterface.OnClickListener cancleListener) {
34 | this.setButton(BUTTON_NEGATIVE, "取消", cancleListener);
35 | }
36 |
37 | public void show(String lang) {
38 | this.lang = lang;
39 | this.setMessage(String.format(msg_format, lang));
40 | super.show();
41 |
42 |
43 | }
44 |
45 | public String getLang() {
46 | return lang;
47 | }
48 |
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/io/github/emanual/app/widget/NewVersionDialog.java:
--------------------------------------------------------------------------------
1 | package io.github.emanual.app.widget;
2 |
3 | import android.app.AlertDialog;
4 | import android.content.Context;
5 | import android.content.DialogInterface;
6 | import android.content.Intent;
7 | import android.net.Uri;
8 |
9 | public class NewVersionDialog extends AlertDialog {
10 |
11 | Context context;
12 | String updaInfo, url;
13 |
14 | public NewVersionDialog(Context context) {
15 | super(context);
16 | this.context = context;
17 | init();
18 | }
19 |
20 | private void init() {
21 | this.setTitle("发现新版本");
22 | this.setButton(BUTTON_NEGATIVE, "下次更新", new OnClickListener() {
23 |
24 | @Override public void onClick(DialogInterface dialog, int which) {
25 | dismiss();
26 | }
27 | });
28 | this.setButton(BUTTON_POSITIVE, "立即更新", new OnClickListener() {
29 |
30 | @Override public void onClick(DialogInterface dialog, int which) {
31 | Uri uri = Uri.parse(url);
32 | Intent intent = new Intent(Intent.ACTION_VIEW, uri);
33 | context.startActivity(intent);
34 | NewVersionDialog.this.dismiss();
35 | }
36 | });
37 | }
38 |
39 | public void show(String updateInfo, String url) {
40 | this.updaInfo = updateInfo;
41 | this.url = url;
42 | this.setMessage(updateInfo);
43 |
44 | super.show();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/alpha.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/layout_listview_top_to_bottom_alpha.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/left_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/left_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/right_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/right_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/stay.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/zoom_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
14 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/anim/zoom_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
14 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_about.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_about_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_about_light.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_accept.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_accept.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_cleanup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_cleanup.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_more.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_more.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_rating_important.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_rating_important.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_rating_important_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_rating_important_dark.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_rating_not_important.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_rating_not_important.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_rating_not_important_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_rating_not_important_dark.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_settings.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_settings_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_settings_dark.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_social_share.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_social_share.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_social_share_dark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_action_social_share_dark.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_bg_dialog_white.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_bg_dialog_white.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_btn_blue_transparent_normal.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_btn_blue_transparent_normal.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_btn_blue_transparent_pressed.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_btn_blue_transparent_pressed.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_btn_green_normal.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_btn_green_normal.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_btn_green_pressed.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_btn_green_pressed.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_btn_red_normal.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_btn_red_normal.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_btn_red_pressed.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_btn_red_pressed.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_cloud_download_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_cloud_download_black_36dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_icon_code.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_icon_code.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_icon_code_small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_icon_code_small.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_icon_code_small_pure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_icon_code_small_pure.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_icon_document.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_icon_document.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_icon_file.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_icon_file.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_right_black_36dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_keyboard_arrow_right_black_36dp.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_line_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_line_1.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_line_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_line_2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_line_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_line_3.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_android.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_angular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_angular.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_c.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_http2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_http2.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_java.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_java.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_javascript.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_javascript.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_php.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_php.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_python.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_python.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_module_scala.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_module_scala.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_navigation_previous_item.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_navigation_previous_item.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_notify_new.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_notify_new.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_progressbar_blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_progressbar_blue.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_widget_download.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-hdpi/ic_widget_download.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_app_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/drawable-xhdpi/ic_app_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_common_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_common_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/btn_item_whit2grey.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/progressbar_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_appstart.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
15 |
16 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 | >
9 |
10 |
14 |
15 |
17 |
18 |
19 |
20 |
25 |
26 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_favouritelist.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_feeds_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
18 |
19 |
25 |
26 |
27 |
28 |
32 |
33 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_filetree.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
12 |
13 |
15 |
16 |
17 |
18 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_interview_feeds.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
18 |
19 |
25 |
26 |
27 |
28 |
32 |
33 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
19 |
20 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_question_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
17 |
18 |
19 |
20 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/acty_topiclist.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
15 |
16 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_articlelist.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_booklist.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
21 |
22 |
28 |
29 |
36 |
37 |
45 |
46 |
47 |
51 |
52 |
53 |
59 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_favouritelist.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
21 |
22 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_filetree.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
13 |
14 |
20 |
21 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_interviewlist.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
21 |
22 |
28 |
29 |
36 |
37 |
45 |
46 |
47 |
51 |
52 |
53 |
59 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_newfeeds.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
13 |
14 |
22 |
23 |
30 |
31 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_questionlist.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
21 |
22 |
23 |
30 |
31 |
41 |
42 |
43 |
47 |
48 |
49 |
55 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/adapter_topiclist.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_book_list.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_interview_detail.xml:
--------------------------------------------------------------------------------
1 |
7 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_interview_list.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fragment_newfeeds.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
11 |
12 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/browser.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
10 |
11 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/favouritelist.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/favouritelist_selected.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/main.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
9 |
10 | -
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_question_detail.xml:
--------------------------------------------------------------------------------
1 |
5 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/shadow_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/mipmap-xhdpi/shadow_left.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/values-land-v19/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw600dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw720dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 120dp
5 | 120dp
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v11/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v14/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v19/bools.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v19/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 28dp
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v19/theme.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 | >
2 |
3 |
--------------------------------------------------------------------------------
/app/src/main/res/values-w820dp/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 | 64dp
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/values/color.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #FF0033
5 | #000000
6 | #0000CC
7 | #426DED
8 | #ffffff
9 | #FFE1E8EB
10 | #ffccddff
11 | #00ffffff
12 |
13 | #ffeff3f6
14 | #FF339900
15 | #FF6700
16 | #fffea4fd
17 | #fffcffa3
18 | #E34C0B
19 | #BFBFBF
20 | #808080
21 | #404040
22 | #36362B
23 | #FF666666
24 | #6699FF
25 | #3366CC
26 | #003399
27 | #FF3F9FE0
28 | #2CA7EA
29 | #2A94E0
30 | #99CC33
31 | #00CC00
32 | #FF339900
33 | #FF96AA39
34 | #FFCC00
35 | #FF9900
36 | #FF6600
37 | #CC0000
38 | #02bbf3
39 |
40 | #802CA7EA
41 |
42 | #0099CC
43 |
44 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 16dp
5 | 16dp
6 | 60dp
7 | 90dp
8 | 10dp
9 |
10 |
11 | 100.0dp
12 | 100dp
13 |
14 |
15 | 0dp
16 | 16dp
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 编程助手
5 | 更多
6 | Hello world!
7 | 分 享
8 | 错误反馈
9 | 收 藏
10 | 关 于
11 | 清空
12 | 删除所选
13 |
14 |
15 | - 新鲜事
16 | - 学习库
17 | - 应试宝典
18 | - 发 现
19 |
20 |
21 |
22 | 关于
23 | 用户反馈
24 | 浏览
25 | 资源下载
26 | Settings
27 | 面试笔试资源下载
28 | 应试宝典
29 | 问题列表
30 |
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | jcenter()
6 | google()
7 | }
8 | dependencies {
9 | classpath 'com.android.tools.build:gradle:3.0.1'
10 |
11 | }
12 | }
13 |
14 | allprojects {
15 | repositories {
16 | jcenter()
17 |
18 | //这里是 LeanCloud 的包仓库
19 | maven {
20 | url "http://mvn.leancloud.cn/nexus/content/repositories/releases"
21 | }
22 | google()
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/extras/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/.gitkeep
--------------------------------------------------------------------------------
/extras/extras.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/extras/umeng-update/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/extras/umeng-update/build.gradle:
--------------------------------------------------------------------------------
1 | apply plugin: 'com.android.library'
2 |
3 | android {
4 | compileSdkVersion 21
5 | buildToolsVersion '26.0.2'
6 |
7 | defaultConfig {
8 | minSdkVersion 14
9 | targetSdkVersion 21
10 | versionCode 1
11 | versionName "1.0"
12 | }
13 | buildTypes {
14 | release {
15 | minifyEnabled false
16 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
17 | }
18 | }
19 | }
20 |
21 | dependencies {
22 | compile fileTree(dir: 'libs', include: ['*.jar'])
23 | compile 'com.android.support:appcompat-v7:21.0.3'
24 | }
25 |
--------------------------------------------------------------------------------
/extras/umeng-update/libs/umeng-update-v2.6.0.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/libs/umeng-update-v2.6.0.1.jar
--------------------------------------------------------------------------------
/extras/umeng-update/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /Users/jayin/jayin/App/adt-bundle-mac-x86_64-20140702/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 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/androidTest/java/com/iemanual/umeng_update/ApplicationTest.java:
--------------------------------------------------------------------------------
1 | package com.iemanual.umeng_update;
2 |
3 | import android.app.Application;
4 | import android.test.ApplicationTestCase;
5 |
6 | /**
7 | * Testing Fundamentals
8 | */
9 | public class ApplicationTest extends ApplicationTestCase {
10 | public ApplicationTest() {
11 | super(Application.class);
12 | }
13 | }
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/jniLibs/libbspatch.so:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/jniLibs/libbspatch.so
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_off_focused_holo_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_off_focused_holo_light.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_off_holo_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_off_holo_light.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_off_pressed_holo_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_off_pressed_holo_light.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_on_focused_holo_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_on_focused_holo_light.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_on_holo_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_on_holo_light.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_on_pressed_holo_light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_btn_check_on_pressed_holo_light.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_close_bg_normal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_close_bg_normal.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_close_bg_tap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable-hdpi/umeng_update_close_bg_tap.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/tb_munion_icon.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/tb_munion_item_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_common_gradient_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_common_gradient_orange.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_common_gradient_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_cancel_bg_focused.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_cancel_bg_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_cancel_bg_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
8 |
10 |
11 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_cancel_bg_tap.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_check_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
10 |
13 |
16 |
17 |
20 |
23 |
24 |
27 |
30 |
31 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_close_bg_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
8 |
10 |
11 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_ok_bg_focused.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_ok_bg_normal.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_ok_bg_selector.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
8 |
10 |
11 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_button_ok_bg_tap.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_dialog_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_title_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/drawable/umeng_update_wifi_disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/extras/umeng-update/src/main/res/drawable/umeng_update_wifi_disable.png
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/layout/tb_munion_aditem.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
15 |
16 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/layout/tb_munion_adview.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
12 |
13 |
20 |
21 |
24 |
25 |
32 |
33 |
39 |
40 |
47 |
48 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/values-zh/umeng_common_strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 正在下载中.
4 | 下载出错啦,请检查网络后继续。
5 | 暂停
6 | 继续
7 | 取消
8 | 正在下载:
9 | 暂停:
10 | 正在下载应用
11 | 正在更新安装包
12 | 请连接网络后再尝试!
13 | 下载失败
14 | 下载完成,请点击安装
15 | 更新完成,请点击安装
16 | 新版本已经准备好,请点击安装
17 |
18 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/values-zh/umeng_update_string.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 未联网
4 | 发现新版本
5 | 最新版本:
6 | 更新内容
7 | 仅需要下载:
8 | 新版本大小:
9 | (提示:非WIFI环境)
10 | 立即更新
11 | 应用更新
12 | 以后再说
13 | 忽略该版
14 | 正在更新中....
15 | 最新版本已下载,是否安装?
16 |
17 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 | Umeng-update
3 |
4 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/values/tb_munion_strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #e3e3e3
5 | 正在下载:
6 |
7 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/values/umeng_common_strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | The app is already in downloading list.
4 | dowload interrupted.
5 | Pause
6 | Continue
7 | Cancel
8 | Downloading:
9 | Pause:
10 | Download start.
11 | Patch start.
12 | Please make sure you are connected to internet, download failed
13 | Download Failed!
14 | Download finished,click to install it.
15 | Patch finished,click to install it.
16 | New version is ready,click to install it.
17 | icon
18 |
--------------------------------------------------------------------------------
/extras/umeng-update/src/main/res/values/umeng_update_string.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Please make sure you are connected to internet,update failed
5 | New version found
6 | Latest version:
7 | Update Content
8 | Update size:
9 | Target size:
10 | (Warning: Not WIFI Condition)
11 | Update now
12 | App updating
13 | Not now
14 | Ingore this
15 | Updating....
16 | The lastest version has been downloaded, install now ?
17 | 2.6.0.1.20150312
18 |
19 |
--------------------------------------------------------------------------------
/gradle-app.setting:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | # Default value: -Xmx10248m -XX:MaxPermSize=256m
13 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 |
15 | # When configured, Gradle will run in incubating parallel mode.
16 | # This option should only be used with decoupled projects. More details, visit
17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 | # org.gradle.parallel=true
19 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/EManual/EManual-Android/29420ceb3da359ba63f2648309ca930568b17341/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Dec 28 10:00:20 PST 2015
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app', ':extras:umeng-update'
--------------------------------------------------------------------------------