├── .gitattributes ├── .gitignore ├── .gradle └── 2.8 │ └── taskArtifacts │ ├── cache.properties │ ├── cache.properties.lock │ ├── fileHashes.bin │ ├── fileSnapshots.bin │ ├── outputFileStates.bin │ └── taskArtifacts.bin ├── .idea ├── .name ├── compiler.xml ├── copyright │ ├── AndroidView.xml │ └── profiles_settings.xml ├── encodings.xml ├── gradle.xml ├── libraries │ ├── appcompat_v7_23_1_0.xml │ ├── bmob_sdk_3_4_5.xml │ ├── cardview_v7_23_1_0.xml │ ├── design_23_1_0.xml │ ├── iosswitch_0_5.xml │ ├── logger.xml │ ├── okhttp_2_4_0.xml │ ├── okio_1_4_0.xml │ ├── recyclerview_v7_23_1_0.xml │ ├── rsv_1_0_1.xml │ ├── support_annotations_23_1_0.xml │ ├── support_v4_23_1_0.xml │ └── ultra_ptr_1_0_11.xml ├── misc.xml ├── modules.xml ├── runConfigurations.xml ├── vcs.xml └── workspace.xml ├── AndroidReview.iml ├── LICENSE ├── README.md ├── apk ├── v1.0.0.apk └── v1.0.1.apk ├── app ├── .gitignore ├── app.iml ├── build.gradle ├── hs_err_pid3528.log ├── hs_err_pid3728.log ├── hs_err_pid5952.log ├── libs │ └── logger.jar ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── vv │ │ └── androidreview │ │ └── ApplicationTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── css │ │ │ └── common.css │ │ └── js │ │ │ └── common.js │ ├── java │ │ └── com │ │ │ └── vv │ │ │ └── androidreview │ │ │ ├── adapter │ │ │ ├── ContentListAdapter.java │ │ │ ├── FavTestListAdatper.java │ │ │ ├── ReviewListAdapter.java │ │ │ └── ReviewListAdapterGV.java │ │ │ ├── base │ │ │ ├── BaseActivity.java │ │ │ ├── BaseApplication.java │ │ │ ├── BaseFragment.java │ │ │ ├── MyBaseAdapter.java │ │ │ └── system │ │ │ │ ├── AppContext.java │ │ │ │ ├── AppManager.java │ │ │ │ ├── Settings.java │ │ │ │ └── StatusBarCompat.java │ │ │ ├── cache │ │ │ ├── CacheHelper.java │ │ │ ├── ReadCacheAsyncTask.java │ │ │ └── SaveCacheAsyncTask.java │ │ │ ├── entity │ │ │ ├── Content.java │ │ │ ├── Point.java │ │ │ ├── Suggest.java │ │ │ ├── Test.java │ │ │ ├── Unit.java │ │ │ └── VersionNote.java │ │ │ ├── ui │ │ │ ├── activites │ │ │ │ ├── AboutActivity.java │ │ │ │ ├── AppStartActivity.java │ │ │ │ ├── AuthorActivity.java │ │ │ │ ├── CreateTableActivity.java │ │ │ │ ├── DetailActivity.java │ │ │ │ ├── FavActivity.java │ │ │ │ ├── ListActivity.java │ │ │ │ ├── MainActivity.java │ │ │ │ ├── PermissionsActivity.java │ │ │ │ ├── SettingCacheActivity.java │ │ │ │ ├── SuggestActivity.java │ │ │ │ └── VersionNoteActivity.java │ │ │ ├── fragment │ │ │ │ ├── BasePutToRefreshFragment.java │ │ │ │ ├── FavListFragment.java │ │ │ │ ├── Indicator.java │ │ │ │ ├── ReviewContentListFragment.java │ │ │ │ ├── ReviewFragment.java │ │ │ │ ├── SettingFragment.java │ │ │ │ └── TestFragment.java │ │ │ └── view │ │ │ │ ├── AnswerItem.java │ │ │ │ ├── GridViewEx.java │ │ │ │ ├── LoadingLayout.java │ │ │ │ ├── RangeSliderViewEx.java │ │ │ │ ├── ScrollViewEx.java │ │ │ │ └── SquareCarView.java │ │ │ └── utils │ │ │ ├── DoubleClickExitHelper.java │ │ │ ├── PermissionsChecker.java │ │ │ ├── TDevice.java │ │ │ ├── ToastHelper.java │ │ │ └── WebViewHelper.java │ └── res │ │ ├── color │ │ ├── bt_next.xml │ │ ├── bt_next_text.xml │ │ └── primarybar_txt.xml │ │ ├── drawable │ │ ├── bt_bg.xml │ │ ├── bt_selector.xml │ │ ├── circle_false.xml │ │ ├── circle_stroke.xml │ │ ├── circle_true.xml │ │ ├── progressloading.xml │ │ ├── tab_icon_other.xml │ │ ├── tab_icon_review.xml │ │ └── tab_icon_test.xml │ │ ├── layout │ │ ├── activity_about.xml │ │ ├── activity_app_start.xml │ │ ├── activity_author.xml │ │ ├── activity_create_table.xml │ │ ├── activity_detail.xml │ │ ├── activity_fav.xml │ │ ├── activity_list.xml │ │ ├── activity_main.xml │ │ ├── activity_setting_cache.xml │ │ ├── activity_suggest.xml │ │ ├── activity_version_note.xml │ │ ├── carview_review.xml │ │ ├── fragment_fav_list.xml │ │ ├── fragment_review.xml │ │ ├── fragment_review_content_list.xml │ │ ├── fragment_setting.xml │ │ ├── fragment_test.xml │ │ ├── include_toolbar.xml │ │ ├── itme_note_text.xml │ │ ├── list_content_item.xml │ │ ├── list_fav_item.xml │ │ ├── list_footer.xml │ │ ├── list_review_item.xml │ │ ├── list_review_item_gv.xml │ │ ├── loading.xml │ │ ├── main_test.xml │ │ ├── tab_indicator.xml │ │ └── test_answer_item.xml │ │ ├── menu │ │ ├── menu_cache.xml │ │ └── menu_suggest.xml │ │ ├── mipmap-hdpi │ │ ├── bg_start.png │ │ ├── edt_gb.9.png │ │ ├── ic_launcher.png │ │ ├── ic_top_back.png │ │ ├── icon_about_24dp.png │ │ ├── icon_blog.png │ │ ├── icon_cache_24dp.png │ │ ├── icon_create_table_24dp.png │ │ ├── icon_false.png │ │ ├── icon_fav.png │ │ ├── icon_fav_24dp.png │ │ ├── icon_fav_select.png │ │ ├── icon_github.png │ │ ├── icon_layout_setting_24dp.png │ │ ├── icon_loading.png │ │ ├── icon_mail.png │ │ ├── icon_other_off.png │ │ ├── icon_other_on.png │ │ ├── icon_qq.png │ │ ├── icon_review_off.png │ │ ├── icon_review_on.png │ │ ├── icon_suggest_24dp.png │ │ ├── icon_test_off.png │ │ ├── icon_test_on.png │ │ ├── icon_true.png │ │ ├── icon_update_24dp.png │ │ ├── pagefailed_bg.png │ │ └── submit_36dp.png │ │ ├── mipmap-xhdpi │ │ ├── bg_start.png │ │ ├── edt_gb.9.png │ │ ├── ic_launcher.png │ │ ├── ic_top_back.png │ │ ├── icon_about_24dp.png │ │ ├── icon_blog.png │ │ ├── icon_cache_24dp.png │ │ ├── icon_create_table_24dp.png │ │ ├── icon_false.png │ │ ├── icon_fav.png │ │ ├── icon_fav_24dp.png │ │ ├── icon_fav_select.png │ │ ├── icon_github.png │ │ ├── icon_layout_setting_24dp.png │ │ ├── icon_loading.png │ │ ├── icon_mail.png │ │ ├── icon_other_off.png │ │ ├── icon_other_on.png │ │ ├── icon_qq.png │ │ ├── icon_review_off.png │ │ ├── icon_review_on.png │ │ ├── icon_suggest_24dp.png │ │ ├── icon_test_off.png │ │ ├── icon_test_on.png │ │ ├── icon_true.png │ │ ├── icon_update_24dp.png │ │ ├── pagefailed_bg.png │ │ └── submit_36dp.png │ │ ├── mipmap-xxhdpi │ │ ├── bg_start.png │ │ ├── edt_gb.9.png │ │ ├── ic_launcher.png │ │ ├── ic_top_back.png │ │ ├── icon_about_24dp.png │ │ ├── icon_blog.png │ │ ├── icon_cache_24dp.png │ │ ├── icon_create_table_24dp.png │ │ ├── icon_false.png │ │ ├── icon_fav.png │ │ ├── icon_fav_24dp.png │ │ ├── icon_fav_select.png │ │ ├── icon_github.png │ │ ├── icon_layout_setting_24dp.png │ │ ├── icon_loading.png │ │ ├── icon_mail.png │ │ ├── icon_other_off.png │ │ ├── icon_other_on.png │ │ ├── icon_qq.png │ │ ├── icon_review_off.png │ │ ├── icon_review_on.png │ │ ├── icon_suggest_24dp.png │ │ ├── icon_test_off.png │ │ ├── icon_test_on.png │ │ ├── icon_true.png │ │ ├── icon_update_24dp.png │ │ └── submit_36dp.png │ │ ├── mipmap-xxxhdpi │ │ ├── bg_start.png │ │ ├── edt_gb.9.png │ │ ├── ic_launcher.png │ │ ├── icon_about_24dp.png │ │ ├── icon_blog.png │ │ ├── icon_cache_24dp.png │ │ ├── icon_create_table_24dp.png │ │ ├── icon_false.png │ │ ├── icon_fav.png │ │ ├── icon_fav_24dp.png │ │ ├── icon_fav_select.png │ │ ├── icon_github.png │ │ ├── icon_layout_setting_24dp.png │ │ ├── icon_loading.png │ │ ├── icon_mail.png │ │ ├── icon_other_off.png │ │ ├── icon_other_on.png │ │ ├── icon_qq.png │ │ ├── icon_review_off.png │ │ ├── icon_review_on.png │ │ ├── icon_suggest_24dp.png │ │ ├── icon_test_off.png │ │ ├── icon_test_on.png │ │ ├── icon_true.png │ │ ├── icon_update_24dp.png │ │ ├── me.png │ │ └── submit_36dp.png │ │ ├── values-v19 │ │ └── styles.xml │ │ ├── values-v21 │ │ └── styles.xml │ │ ├── values-w820dp │ │ └── dimens.xml │ │ └── values │ │ ├── arrays.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── vv │ └── androidreview │ └── ExampleUnitTest.java ├── build.gradle ├── build └── intermediates │ └── dex-cache │ └── cache.xml ├── develop.iml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── local.properties ├── pic ├── 1.png ├── 2.png ├── 23d.png ├── 2qq.png ├── 3.png ├── 312w.png ├── 4.png ├── 5.png ├── 6.png ├── 7.png ├── abccc.png ├── dfv4.png ├── pics.png ├── ss.png └── v110.png └── settings.gradle /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # files for the dex VM 2 | *.dex 3 | 4 | # Java class files 5 | *.class 6 | 7 | # generated files 8 | bin/ 9 | gen/ 10 | 11 | # Local configuration file (sdk path, etc) 12 | local.properties 13 | 14 | # Windows thumbnail db 15 | Thumbs.db 16 | 17 | # OSX files 18 | .DS_Store 19 | 20 | # Eclipse project files 21 | .classpath 22 | .project 23 | 24 | # Android Studio 25 | *.iml 26 | /.idea/ 27 | #.idea/workspace.xml - remove # and delete .idea if it better suit your needs. 28 | .gradle 29 | build/ 30 | captures/ 31 | 32 | #NDK 33 | obj/ 34 | /.sonar/ -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Feb 29 21:24:07 CST 2016 2 | -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/cache.properties.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/.gradle/2.8/taskArtifacts/cache.properties.lock -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/fileHashes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/.gradle/2.8/taskArtifacts/fileHashes.bin -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/fileSnapshots.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/.gradle/2.8/taskArtifacts/fileSnapshots.bin -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/outputFileStates.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/.gradle/2.8/taskArtifacts/outputFileStates.bin -------------------------------------------------------------------------------- /.gradle/2.8/taskArtifacts/taskArtifacts.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/.gradle/2.8/taskArtifacts/taskArtifacts.bin -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | develop -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/copyright/AndroidView.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/libraries/appcompat_v7_23_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/bmob_sdk_3_4_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/cardview_v7_23_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/design_23_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/iosswitch_0_5.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /.idea/libraries/logger.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/libraries/okhttp_2_4_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/okio_1_4_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/recyclerview_v7_23_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /.idea/libraries/rsv_1_0_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/libraries/support_annotations_23_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/support_v4_23_1_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /.idea/libraries/ultra_ptr_1_0_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 19 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /AndroidReview.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AndroidReview (Android面试复习) # 2 | 3 | ## 一、项目简介 ## 4 | 5 | 为了更好地准备面试Android开发这一职位,于是就到应用市场查找相关的复习App,结果发现只有寥寥无几的几款,而且很不好用,AndroidReview因此而诞生。 6 | 7 | AndroidReview是一款面向Android开发者的一款面试复习App,里面包含知识点复习和面试题目测试两大模块。使用者不管在何时何地都可以通过该App复习巩固Android知识点。如果你有比较好的资源(博文或者测试题目)也可以联系我更新到该应用哦。(QQ群在下面^_^)**[APK点我下载](https://github.com/envyfan/AndroidReview/blob/master/apk/v1.0.1.apk?raw=true)** 8 | 9 | **特点:** 10 | * 知识点归类明细,并且每一篇博文都通过作者阅读后采集进后台,不是简单地采集博文。 11 | 12 | * 博文采用了缓存机制,会根据不同网络环境调整缓存存活时间,给使用者一个良好的体验。(缓存策略思路来自OSChina客户端)。 13 | 14 | * 随机读取题库题目,保证每次读取题库题目题序都是乱序。 15 | 16 | * 提供测试题目收藏,便于使用者随时翻阅感兴趣的题目。 17 | 18 | * 对于资料收集者可从Bmob云后台服务动态增删改查任意题目、博文、知识点数据。 19 | 20 | ## 二、第三方引用 ## 21 | 22 | 1、[下拉刷新android-Ultra-Pull-To-Refresh](https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh) 23 | 24 | 2、[mob移动云服务](http://www.bmob.cn/) 25 | 26 | 3、[logger调试日志插件](https://github.com/orhanobut/logger) 27 | 28 | 4、[应用崩溃异常提示crashwoodpecker](https://github.com/drakeet/CrashWoodpecker) 29 | 30 | ## 三、运行截图 ## 31 | 32 | ![](https://github.com/envyfan/AndroidReview/blob/master/pic/v110.png?raw=true) 33 | 34 | ## 四、导入说明 ## 35 | 36 | 为了避免移动云数据不被删改,所以在上传该项目的时候已经把ApplicationID删除了,如果你想运行该项目,那么需要到Bmob中创建一个应用,并且建立好数据表后把ApplicationID替换到AppContext中即可。 37 | * **Step 1:申请Bmob账号并且创建一个应用** 38 | 该步骤可参考Bmob官方文档: 39 | http://docs.bmob.cn/android/faststart/index.html?menukey=fast_start&key=start_android 40 | 41 | * **Step 2:替换ApplicationId** 42 | 43 | 把com.vv.androidreview.base.system.AppContext下的ApplicationId替换成你在Bmob中创建应用的ApplicationId 44 | ```java 45 | @Override 46 | public void onCreate() { 47 | super.onCreate(); 48 | instance = this; 49 | Bmob.initialize(this, "这里换成你的Bmob ApplicationID"); 50 | //初始化Log系统 51 | Logger.init("MyDemo") // default PRETTYLOGGER or use just init() 52 | .setMethodCount(1) // default 2 53 | .hideThreadInfo(); // default shown 54 | } 55 | ``` 56 | * **Step 3:运行项目一键插入数据** 57 | 58 | 点击这里进入一键插入数据界面(首次插入数据则自动创建数据表省去了第一版本时候建表的繁琐步骤,记得刷新列表) 59 | ![](https://github.com/envyfan/AndroidReview/blob/master/pic/23d.png?raw=true) 60 | 61 | ## 五、致谢 ## 62 | 知识点复习大部分博文都来自鸿洋、郭林等大神的博客,非常感谢像他们一样的开发者在网上分享自己的技术经验,让我们受益匪浅。另外也非常感谢oschina这个开源项目,在里面我学习到了很多东西,包括基类的封装、使用缓存策略、网络环境判断等等。 63 | 64 | ## 六、声明 ## 65 | 应用中展示的所有内容均搜集自互联网,若内容有侵权请联系作者进行删除处理。本应用仅用作分享与学习,[**源代码在 GPL v3 协议下发布**](https://github.com/envyfan/AndroidReview/blob/master/LICENSE), 使用前, 请确保你了解这个协议!。 66 | **交流QQ群:206944327** 67 | 68 | [**Android程序员:做一款属于自己的实用小应用**](http://www.v-sounds.com/2016/03/11/作品/做一款属于自己的实用小应用/) 69 | -------------------------------------------------------------------------------- /apk/v1.0.0.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/apk/v1.0.0.apk -------------------------------------------------------------------------------- /apk/v1.0.1.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/apk/v1.0.1.apk -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | apply plugin: 'com.android.application' 21 | 22 | android { 23 | compileSdkVersion 23 24 | buildToolsVersion "23.0.1" 25 | 26 | defaultConfig { 27 | applicationId "com.vv.androidreview" 28 | minSdkVersion 14 29 | targetSdkVersion 23 30 | versionCode 2 31 | versionName "V1.0,1" 32 | } 33 | buildTypes { 34 | release { 35 | minifyEnabled false 36 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 37 | } 38 | } 39 | } 40 | 41 | dependencies { 42 | compile fileTree(include: ['*.jar'], dir: 'libs') 43 | testCompile 'junit:junit:4.12' 44 | compile files('libs/logger.jar') 45 | //bmob-sdk :Bmob的android sdk包 46 | compile 'cn.bmob.android:bmob-sdk:3.4.5' 47 | //okhttp(选填):为解决弱网情况下SDK请求失败及响应慢的问题,自`V3.4.3版本`开始使用`okhttp`优化SDK的网络框架。 48 | compile 'com.squareup.okhttp:okhttp:2.4.0' 49 | compile 'com.squareup.okio:okio:1.4.0' 50 | compile 'com.android.support:appcompat-v7:23.1.0' 51 | compile 'com.android.support:design:23.1.0' 52 | //下拉刷新 53 | compile 'in.srain.cube:ultra-ptr:1.0.11' 54 | compile 'com.android.support:cardview-v7:23.1.0' 55 | compile 'com.android.support:support-v4:23.1.0' 56 | //分段选择View 57 | compile 'com.github.channguyen:rsv:1.0.1' 58 | //开关View 59 | compile 'com.7heaven.ioswidget:iosswitch:0.5' 60 | 61 | //异常捕获(调试用 参考drakeet的开源项目) 62 | //debugCompile 'me.drakeet.library:crashwoodpecker:0.9.81' 63 | //releaseCompile 'me.drakeet.library:crashwoodpecker-do-nothing:0.9.7' 64 | 65 | } 66 | -------------------------------------------------------------------------------- /app/hs_err_pid3528.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/hs_err_pid3528.log -------------------------------------------------------------------------------- /app/hs_err_pid3728.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/hs_err_pid3728.log -------------------------------------------------------------------------------- /app/hs_err_pid5952.log: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/hs_err_pid5952.log -------------------------------------------------------------------------------- /app/libs/logger.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/libs/logger.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 E:\android-sdks/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/vv/androidreview/ApplicationTest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview; 21 | 22 | import android.app.Application; 23 | import android.test.ApplicationTestCase; 24 | 25 | /** 26 | * Testing Fundamentals 27 | */ 28 | public class ApplicationTest extends ApplicationTestCase { 29 | public ApplicationTest() { 30 | super(Application.class); 31 | } 32 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 39 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /app/src/main/assets/css/common.css: -------------------------------------------------------------------------------- 1 | /* 图片大小自适应 */ 2 | img { 3 | max-width:100%; 4 | height:auto; 5 | } 6 | p { 7 | line-height:2; 8 | } 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/assets/js/common.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | function removeImageAttribute() 4 | { 5 | var imgs = document.getElementsByTagName("img"); 6 | for (var i=0;i 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.adapter; 21 | 22 | import android.content.Context; 23 | import android.view.LayoutInflater; 24 | import android.view.View; 25 | import android.view.ViewGroup; 26 | import android.widget.TextView; 27 | 28 | import com.vv.androidreview.R; 29 | import com.vv.androidreview.base.MyBaseAdapter; 30 | import com.vv.androidreview.entity.Content; 31 | 32 | /** 33 | * Author:Vv on . 34 | * Mail:envyfan@qq.com 35 | * Description: 36 | */ 37 | public class ContentListAdapter extends MyBaseAdapter { 38 | 39 | 40 | public ContentListAdapter(Context context) { 41 | super(context); 42 | } 43 | 44 | @Override 45 | public View getView(int position, View convertView, ViewGroup parent) { 46 | Content content = mDatas.get(position); 47 | ViewHolder holder; 48 | if (convertView == null) { 49 | convertView = LayoutInflater.from(mContext).inflate(R.layout.list_content_item, null, false); 50 | holder = new ViewHolder(convertView); 51 | convertView.setTag(holder); 52 | } else { 53 | holder = (ViewHolder) convertView.getTag(); 54 | } 55 | holder.tv_content_title.setText(content.getTitle()); 56 | holder.tv_content_small.setText(content.getSmall()); 57 | holder.tv_create_time.setText(content.getCreatedAt()); 58 | return convertView; 59 | } 60 | 61 | private class ViewHolder { 62 | private TextView tv_content_title, tv_content_small, tv_create_time; 63 | 64 | public ViewHolder(View view) { 65 | tv_content_title = (TextView) view.findViewById(R.id.tv_content_title); 66 | tv_content_small = (TextView) view.findViewById(R.id.tv_content_small); 67 | tv_create_time = (TextView) view.findViewById(R.id.tv_create_time); 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/adapter/FavTestListAdatper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.adapter; 21 | 22 | import android.content.Context; 23 | import android.view.LayoutInflater; 24 | import android.view.View; 25 | import android.view.ViewGroup; 26 | import android.widget.TextView; 27 | 28 | import com.vv.androidreview.R; 29 | import com.vv.androidreview.base.MyBaseAdapter; 30 | import com.vv.androidreview.entity.Test; 31 | 32 | /** 33 | * Author:Vv on . 34 | * Mail:envyfan@qq.com 35 | * Description: 36 | */ 37 | public class FavTestListAdatper extends MyBaseAdapter { 38 | 39 | public FavTestListAdatper(Context context) { 40 | super(context); 41 | } 42 | 43 | @Override 44 | public View getView(int position, View convertView, ViewGroup parent) { 45 | Test test = mDatas.get(position); 46 | ViewHolder holder; 47 | if (convertView == null) { 48 | convertView = LayoutInflater.from(mContext).inflate(R.layout.list_fav_item, null, false); 49 | holder = new ViewHolder(convertView); 50 | convertView.setTag(holder); 51 | 52 | }else { 53 | holder = (ViewHolder) convertView.getTag(); 54 | } 55 | holder.tv_test_question.setText(test.getQuestion()); 56 | holder.tv_create_time.setText(test.getCreatedAt()); 57 | 58 | return convertView; 59 | } 60 | 61 | private class ViewHolder{ 62 | TextView tv_test_question,tv_create_time; 63 | 64 | public ViewHolder(View view) { 65 | tv_test_question = (TextView) view.findViewById(R.id.tv_test_question); 66 | tv_create_time = (TextView) view.findViewById(R.id.tv_create_time); 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/base/BaseApplication.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.base; 21 | 22 | import android.app.Application; 23 | import android.content.Context; 24 | import android.content.res.Resources; 25 | import android.os.Build; 26 | 27 | /** 28 | * Author:Vv on 2015/7/20 20:39 29 | * Mail:envyfan@qq.com 30 | * Description: 31 | */ 32 | public class BaseApplication extends Application{ 33 | 34 | public static Context sContext; 35 | public static Resources sResource; 36 | 37 | private static String PREF_NAME = "creativelocker.pref"; 38 | private static String LAST_REFRESH_TIME = "last_refresh_time.pref"; 39 | private static long lastToastTime; 40 | //运行系统是否为2.3或以上 41 | public static boolean isAtLeastGB; 42 | 43 | static { 44 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { 45 | isAtLeastGB = true; 46 | } 47 | } 48 | 49 | @Override 50 | public void onCreate() { 51 | super.onCreate(); 52 | sContext = getApplicationContext(); 53 | sResource = sContext.getResources(); 54 | } 55 | 56 | public static synchronized BaseApplication context() { 57 | return (BaseApplication) sContext; 58 | } 59 | 60 | public static Resources resources() { 61 | return sResource; 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/base/BaseFragment.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.base; 21 | 22 | import android.app.Activity; 23 | import android.os.Bundle; 24 | import android.support.v4.app.Fragment; 25 | 26 | import com.vv.androidreview.ui.activites.MainActivity; 27 | 28 | 29 | /** 30 | * Author: Vv on 2015/8/12 17:26 31 | * Mail: envyfan@qq.com 32 | * Description: 33 | */ 34 | public abstract class BaseFragment extends Fragment { 35 | 36 | /** 37 | * Fragment当前状态是否可见 38 | */ 39 | protected boolean isVisible; 40 | protected boolean isCreate = true; 41 | 42 | protected BaseActivity mActivity; 43 | 44 | @Override 45 | public void onAttach(Activity activity) { 46 | this.mActivity = (BaseActivity) activity; 47 | super.onAttach(activity); 48 | 49 | } 50 | 51 | @Override 52 | public void onCreate(Bundle savedInstanceState) { 53 | super.onCreate(savedInstanceState); 54 | 55 | } 56 | 57 | @Override 58 | public void setUserVisibleHint(boolean isVisibleToUser) { 59 | super.setUserVisibleHint(isVisibleToUser); 60 | isCreate = false; 61 | if (getUserVisibleHint()) { 62 | isVisible = true; 63 | onVisible(); 64 | } else { 65 | isVisible = false; 66 | onInvisible(); 67 | } 68 | } 69 | 70 | 71 | /** 72 | * 当Fragment可见时调用该方法 73 | */ 74 | protected void onVisible() { 75 | 76 | } 77 | 78 | /** 79 | * Fragment不可见时调用 80 | */ 81 | protected void onInvisible() { 82 | } 83 | 84 | 85 | } 86 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/base/MyBaseAdapter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.base; 21 | 22 | import android.content.Context; 23 | import android.view.View; 24 | import android.view.ViewGroup; 25 | import android.widget.BaseAdapter; 26 | 27 | import java.util.ArrayList; 28 | import java.util.List; 29 | 30 | /** 31 | * Author:Vv on . 32 | * Mail:envyfan@qq.com 33 | * Description: 34 | */ 35 | public abstract class MyBaseAdapter extends BaseAdapter { 36 | 37 | protected List mDatas = new ArrayList<>(); 38 | 39 | protected Context mContext; 40 | 41 | public MyBaseAdapter(Context context) { 42 | this.mContext = context; 43 | } 44 | 45 | @Override 46 | public int getCount() { 47 | return mDatas.size(); 48 | } 49 | 50 | @Override 51 | public Object getItem(int position) { 52 | return mDatas.get(position); 53 | } 54 | 55 | @Override 56 | public long getItemId(int position) { 57 | return position; 58 | } 59 | 60 | public void addData(List datas) { 61 | if (mDatas != null && datas != null && !datas.isEmpty()) { 62 | mDatas.addAll(datas); 63 | } 64 | notifyDataSetChanged(); 65 | } 66 | 67 | public void notifyAdapter(List datas) { 68 | this.mDatas = datas; 69 | notifyDataSetChanged(); 70 | } 71 | 72 | public void setDatas(List datas){ 73 | this.mDatas = datas; 74 | } 75 | 76 | } 77 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/base/system/AppContext.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.base.system; 21 | 22 | 23 | import com.orhanobut.logger.Logger; 24 | import com.vv.androidreview.base.BaseApplication; 25 | 26 | import cn.bmob.v3.Bmob; 27 | /** 28 | * Author:Vv on 2015/7/20 20:51 29 | * Mail:envyfan@qq.com 30 | * Description: 31 | */ 32 | public class AppContext extends BaseApplication { 33 | 34 | private static AppContext instance; 35 | 36 | private static final String ApplicationID = "这里输入你的Bmob ApplicationID"; 37 | 38 | @Override 39 | public void onCreate() { 40 | super.onCreate(); 41 | instance = this; 42 | Bmob.initialize(this, ApplicationID); 43 | //初始化Log系统 44 | Logger.init("MyDemo") // default PRETTYLOGGER or use just init() 45 | .setMethodCount(1) // default 2 46 | .hideThreadInfo(); // default shown 47 | //异常捕获收集 48 | // CrashWoodpecker.fly().to(this); 49 | } 50 | 51 | /** 52 | * 获得当前app运行的AppContext 53 | * 54 | * @return 55 | */ 56 | public static AppContext getInstance() { 57 | return instance; 58 | } 59 | 60 | 61 | } 62 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/base/system/Settings.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.base.system; 21 | 22 | import android.content.Context; 23 | import android.content.SharedPreferences; 24 | 25 | /** 26 | * Author:Vv on . 27 | * Mail:envyfan@qq.com 28 | * Description:存取Settings SharePrefrence 配置 29 | */ 30 | public class Settings { 31 | 32 | public final static String FILE_CONFIG = "file_config"; 33 | 34 | /** 35 | * wifi缓存过期时间 分钟为单位 36 | */ 37 | public final static String CACHE_OVERTIME_WIFI = "cache_overtime_wifi"; 38 | /** 39 | * 其他网络缓存过期时间 天为单位 40 | */ 41 | public final static String CACHE_OVERTIME_OTHER = "cache_overtime_other"; 42 | /** 43 | * 是否开启缓存不过期 44 | */ 45 | public final static String CACHE_OVERTIME = "cache_overtime"; 46 | 47 | public static SharedPreferences getPreferences(String prefName) { 48 | return AppContext.getInstance().getSharedPreferences(prefName, Context.MODE_PRIVATE); 49 | } 50 | 51 | private static void apply(SharedPreferences.Editor editor) { 52 | if (AppContext.isAtLeastGB) { 53 | editor.apply(); 54 | } else { 55 | editor.commit(); 56 | } 57 | } 58 | 59 | public static void putInt(String key, int value) { 60 | SharedPreferences preferences = getPreferences(FILE_CONFIG); 61 | SharedPreferences.Editor editor = preferences.edit(); 62 | editor.putInt(key, value); 63 | apply(editor); 64 | } 65 | 66 | public static int getInt(String key) { 67 | return getPreferences(FILE_CONFIG).getInt(key, -1); 68 | } 69 | 70 | public static int getInt(String key,int defaultInt) { 71 | return getPreferences(FILE_CONFIG).getInt(key, defaultInt); 72 | } 73 | 74 | public static void putBoolean(String key, boolean value) { 75 | SharedPreferences preferences = getPreferences(FILE_CONFIG); 76 | SharedPreferences.Editor editor = preferences.edit(); 77 | editor.putBoolean(key, value); 78 | apply(editor); 79 | } 80 | 81 | public static Boolean getBoolean(String key) { 82 | return getPreferences(FILE_CONFIG).getBoolean(key, false); 83 | } 84 | 85 | public static Boolean getBoolean(String key,boolean defaultBoolean) { 86 | return getPreferences(FILE_CONFIG).getBoolean(key, defaultBoolean); 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/base/system/StatusBarCompat.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.base.system; 21 | 22 | /** 23 | * Author: Vv on 2015/9/25 15:35 24 | * Mail: envyfan@qq.com 25 | * Description: 26 | */ 27 | import android.annotation.TargetApi; 28 | import android.app.Activity; 29 | import android.content.Context; 30 | import android.graphics.Color; 31 | import android.os.Build; 32 | import android.view.View; 33 | import android.view.ViewGroup; 34 | 35 | /** 36 | * Created by zhy on 15/9/21. 37 | */ 38 | public class StatusBarCompat 39 | { 40 | private static final int INVALID_VAL = -1; 41 | private static final int COLOR_DEFAULT = Color.parseColor("#20000000"); 42 | 43 | @TargetApi(Build.VERSION_CODES.LOLLIPOP) 44 | public static void compat(Activity activity, int statusColor) 45 | { 46 | 47 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 48 | { 49 | if (statusColor != INVALID_VAL) 50 | { 51 | activity.getWindow().setStatusBarColor(statusColor); 52 | } 53 | return; 54 | } 55 | 56 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) 57 | { 58 | int color = COLOR_DEFAULT; 59 | ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content); 60 | if (statusColor != INVALID_VAL) 61 | { 62 | color = statusColor; 63 | } 64 | View statusBarView = new View(activity); 65 | ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 66 | getStatusBarHeight(activity)); 67 | statusBarView.setBackgroundColor(color); 68 | contentView.addView(statusBarView, lp); 69 | } 70 | 71 | } 72 | 73 | public static void compat(Activity activity) 74 | { 75 | compat(activity, INVALID_VAL); 76 | } 77 | 78 | 79 | public static int getStatusBarHeight(Context context) 80 | { 81 | int result = 0; 82 | int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); 83 | if (resourceId > 0) 84 | { 85 | result = context.getResources().getDimensionPixelSize(resourceId); 86 | } 87 | return result; 88 | } 89 | } -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/cache/ReadCacheAsyncTask.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.cache; 21 | 22 | import android.content.Context; 23 | import android.os.AsyncTask; 24 | 25 | import java.io.Serializable; 26 | import java.lang.ref.WeakReference; 27 | 28 | /** 29 | * Author:Vv on . 30 | * Mail:envyfan@qq.com 31 | * Description: 32 | */ 33 | public class ReadCacheAsyncTask extends AsyncTask { 34 | private WeakReference mContext; 35 | 36 | public interface OnReadCacheToDo { 37 | void preExecute(); 38 | 39 | void postExectue(T data); 40 | } 41 | 42 | private OnReadCacheToDo onReadCacheToDo; 43 | 44 | public void setOnReadCacheToDo(OnReadCacheToDo onReadCacheToDo) { 45 | this.onReadCacheToDo = onReadCacheToDo; 46 | } 47 | 48 | public ReadCacheAsyncTask(Context context) { 49 | mContext = new WeakReference(context); 50 | } 51 | 52 | @Override 53 | protected void onPreExecute() { 54 | super.onPreExecute(); 55 | if (onReadCacheToDo != null) { 56 | onReadCacheToDo.preExecute(); 57 | } 58 | } 59 | 60 | @Override 61 | protected T doInBackground(String... params) { 62 | if (mContext.get() != null) { 63 | Serializable seri = CacheHelper.readObject(mContext.get(), params[0]); 64 | if (seri == null) { 65 | return null; 66 | } else { 67 | return (T) seri; 68 | } 69 | } 70 | return null; 71 | } 72 | 73 | @Override 74 | protected void onPostExecute(T data) { 75 | super.onPostExecute(data); 76 | if (onReadCacheToDo != null) { 77 | onReadCacheToDo.postExectue(data); 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/cache/SaveCacheAsyncTask.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.cache; 21 | 22 | import android.content.Context; 23 | import android.os.AsyncTask; 24 | 25 | import java.io.Serializable; 26 | import java.lang.ref.WeakReference; 27 | 28 | /** 29 | * Author:Vv on . 30 | * Mail:envyfan@qq.com 31 | * Description: 32 | */ 33 | public class SaveCacheAsyncTask extends AsyncTask { 34 | private WeakReference mContext; 35 | private Serializable seri; 36 | private String cacheKey; 37 | 38 | public SaveCacheAsyncTask(Context context, Serializable seri, String cacheKey) { 39 | mContext = new WeakReference(context); 40 | this.seri = seri; 41 | this.cacheKey = cacheKey; 42 | } 43 | 44 | @Override 45 | protected Void doInBackground(Void... params) { 46 | CacheHelper.saveObject(mContext.get(), seri, cacheKey); 47 | return null; 48 | } 49 | 50 | 51 | } 52 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/entity/Content.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.entity; 21 | 22 | import cn.bmob.v3.BmobObject; 23 | 24 | /** 25 | * Author:Vv on 2016/1/17. 26 | * Mail:envyfan@qq.com 27 | * Description:单元--知识点--内容 28 | */ 29 | public class Content extends BmobObject { 30 | 31 | //标题 32 | private String title; 33 | 34 | //内容正文 35 | private String content; 36 | 37 | //作者 38 | private String author; 39 | 40 | //内容来源 41 | private String source; 42 | 43 | //创建者 44 | private String creater; 45 | 46 | //所属知识点 47 | private Point point; 48 | 49 | //简介 50 | private String small; 51 | 52 | public String getSmall() { 53 | return small; 54 | } 55 | 56 | public void setSmall(String small) { 57 | this.small = small; 58 | } 59 | 60 | public Point getPoint() { 61 | return point; 62 | } 63 | 64 | public void setPoint(Point point) { 65 | this.point = point; 66 | } 67 | 68 | public String getTitle() { 69 | return title; 70 | } 71 | 72 | public void setTitle(String title) { 73 | this.title = title; 74 | } 75 | 76 | public String getContent() { 77 | return content; 78 | } 79 | 80 | public void setContent(String content) { 81 | this.content = content; 82 | } 83 | 84 | public String getAuthor() { 85 | return author; 86 | } 87 | 88 | public void setAuthor(String author) { 89 | this.author = author; 90 | } 91 | 92 | public String getSource() { 93 | return source; 94 | } 95 | 96 | public void setSource(String source) { 97 | this.source = source; 98 | } 99 | 100 | public String getCreater() { 101 | return creater; 102 | } 103 | 104 | public void setCreater(String creater) { 105 | this.creater = creater; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/entity/Point.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.entity; 21 | 22 | import java.util.List; 23 | 24 | import cn.bmob.v3.BmobObject; 25 | import cn.bmob.v3.datatype.BmobPointer; 26 | 27 | /** 28 | * Author:Vv on 2016/1/17. 29 | * Mail:envyfan@qq.com 30 | * Description:单元--知识点 31 | */ 32 | public class Point extends BmobObject{ 33 | 34 | //知识点名字 35 | private String name; 36 | 37 | //方块颜色 38 | private Integer color; 39 | 40 | private Unit unit; 41 | 42 | public Unit getUnit() { 43 | return unit; 44 | } 45 | 46 | public void setUnit(Unit unit) { 47 | this.unit = unit; 48 | } 49 | 50 | public String getName() { 51 | return name; 52 | } 53 | 54 | public void setName(String name) { 55 | this.name = name; 56 | } 57 | 58 | public Integer getColor() { 59 | return color; 60 | } 61 | 62 | public void setColor(Integer color) { 63 | this.color = color; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/entity/Suggest.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.entity; 21 | 22 | import cn.bmob.v3.BmobObject; 23 | 24 | /** 25 | * Author:Vv on . 26 | * Mail:envyfan@qq.com 27 | * Description: 28 | */ 29 | public class Suggest extends BmobObject{ 30 | private String msg; 31 | 32 | public String getMail_qq() { 33 | return mail_qq; 34 | } 35 | 36 | public void setMail_qq(String mail_qq) { 37 | this.mail_qq = mail_qq; 38 | } 39 | 40 | private String mail_qq; 41 | 42 | public String getMsg() { 43 | return msg; 44 | } 45 | 46 | public void setMsg(String msg) { 47 | this.msg = msg; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/entity/Unit.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.entity; 21 | 22 | import java.util.List; 23 | 24 | import cn.bmob.v3.BmobObject; 25 | import cn.bmob.v3.datatype.BmobPointer; 26 | 27 | /** 28 | * Author:Vv on 2016/1/17. 29 | * Mail:envyfan@qq.com 30 | * Description:单元 31 | */ 32 | public class Unit extends BmobObject { 33 | 34 | //单元名称 35 | private String name ; 36 | 37 | public String getName() { 38 | return name; 39 | } 40 | 41 | public void setName(String name) { 42 | this.name = name; 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/entity/VersionNote.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.entity; 21 | 22 | /** 23 | * Author:Vv on . 24 | * Mail:envyfan@qq.com 25 | * Description:记录更新日志 26 | */ 27 | public class VersionNote { 28 | 29 | private String versionName; 30 | private String updateTime; 31 | private String updateNote; 32 | 33 | public VersionNote(String versionName, String updateTime, String updateNote) { 34 | this.versionName = versionName; 35 | this.updateTime = updateTime; 36 | this.updateNote = updateNote; 37 | } 38 | 39 | public String getUpdateNote() { 40 | return updateNote; 41 | } 42 | 43 | public String getVersionName() { 44 | return versionName; 45 | } 46 | 47 | public String getUpdateTime() { 48 | return updateTime; 49 | } 50 | 51 | 52 | } 53 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/activites/AboutActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.activites; 21 | 22 | import android.app.Activity; 23 | import android.content.Intent; 24 | import android.os.Bundle; 25 | import android.view.View; 26 | import android.widget.TextView; 27 | 28 | import com.vv.androidreview.R; 29 | import com.vv.androidreview.base.BaseActivity; 30 | 31 | public class AboutActivity extends BaseActivity { 32 | 33 | private TextView mBtAuthor,mBtUpdate; 34 | 35 | @Override 36 | protected void onCreate(Bundle savedInstanceState) { 37 | super.onCreate(savedInstanceState); 38 | setContentView(R.layout.activity_about); 39 | initToolBar(); 40 | showOrHideToolBarNavigation(true); 41 | 42 | mBtAuthor = (TextView) findViewById(R.id.bt_about_author); 43 | mBtAuthor.setOnClickListener(new View.OnClickListener() { 44 | @Override 45 | public void onClick(View v) { 46 | Intent intent = new Intent(AboutActivity.this,AuthorActivity.class); 47 | startActivity(intent); 48 | } 49 | }); 50 | 51 | mBtUpdate = (TextView) findViewById(R.id.bt_update_text); 52 | mBtUpdate.setOnClickListener(new View.OnClickListener() { 53 | @Override 54 | public void onClick(View v) { 55 | Intent intent = new Intent(AboutActivity.this,VersionNoteActivity.class); 56 | startActivity(intent); 57 | } 58 | }); 59 | 60 | setStatusBarCompat(); 61 | } 62 | 63 | @Override 64 | public String returnToolBarTitle() { 65 | return getString(R.string.about); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/activites/AppStartActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.activites; 21 | 22 | import android.Manifest; 23 | import android.app.Activity; 24 | import android.content.Intent; 25 | import android.content.pm.PackageManager; 26 | import android.os.Bundle; 27 | import android.os.Handler; 28 | import android.support.v4.app.ActivityCompat; 29 | import android.support.v4.content.ContextCompat; 30 | 31 | import com.vv.androidreview.R; 32 | import com.vv.androidreview.base.system.AppManager; 33 | import com.vv.androidreview.utils.PermissionsChecker; 34 | import com.vv.androidreview.utils.ToastHelper; 35 | 36 | 37 | public class AppStartActivity extends Activity { 38 | 39 | private final int SPLASH_DISPLAY_LENGHT = 2000; // 休眠2秒 40 | 41 | private static final int REQUEST_CODE = 0; // 请求码 42 | 43 | // 所需的全部权限 44 | static final String[] PERMISSIONS = new String[]{ 45 | Manifest.permission.READ_PHONE_STATE, 46 | Manifest.permission.WRITE_EXTERNAL_STORAGE 47 | }; 48 | private PermissionsChecker mPermissionsChecker; // 权限检测器 49 | 50 | 51 | @Override 52 | protected void onCreate(Bundle savedInstanceState) { 53 | super.onCreate(savedInstanceState); 54 | 55 | // 防止第三方跳转时出现双实例 56 | Activity aty = AppManager.getActivity(MainActivity.class); 57 | if (aty != null && !aty.isFinishing()) { 58 | finish(); 59 | } 60 | setContentView(R.layout.activity_app_start); 61 | 62 | mPermissionsChecker = new PermissionsChecker(this); 63 | 64 | } 65 | 66 | @Override 67 | protected void onResume() { 68 | super.onResume(); 69 | // 缺少权限时, 进入权限配置页面 70 | if (mPermissionsChecker.lacksPermissions(PERMISSIONS)) { 71 | PermissionsActivity.startActivityForResult(this, REQUEST_CODE, PERMISSIONS); 72 | }else{ 73 | enterMainDelay(); 74 | } 75 | } 76 | 77 | @Override 78 | protected void onActivityResult(int requestCode, int resultCode, Intent data) { 79 | super.onActivityResult(requestCode, resultCode, data); 80 | // 拒绝时, 关闭页面, 缺少主要权限, 无法运行 81 | if (requestCode == REQUEST_CODE && resultCode == PermissionsActivity.PERMISSIONS_DENIED) { 82 | finish(); 83 | } 84 | } 85 | 86 | private void enterMainDelay() { 87 | new Handler().postDelayed(new Runnable() { 88 | @Override 89 | public void run() { 90 | redirectTo(); 91 | } 92 | }, SPLASH_DISPLAY_LENGHT); 93 | } 94 | 95 | /** 96 | * 跳转到主Activity 97 | */ 98 | private void redirectTo() { 99 | Intent intent = new Intent(this, MainActivity.class); 100 | startActivity(intent); 101 | finish(); 102 | } 103 | 104 | 105 | } 106 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/activites/AuthorActivity.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.activites; 21 | 22 | import android.app.Activity; 23 | import android.os.Bundle; 24 | 25 | import com.vv.androidreview.R; 26 | import com.vv.androidreview.base.BaseActivity; 27 | 28 | public class AuthorActivity extends BaseActivity { 29 | 30 | @Override 31 | protected void onCreate(Bundle savedInstanceState) { 32 | super.onCreate(savedInstanceState); 33 | setContentView(R.layout.activity_author); 34 | initToolBar(); 35 | showOrHideToolBarNavigation(true); 36 | setStatusBarCompat(); 37 | } 38 | 39 | @Override 40 | public String returnToolBarTitle() { 41 | return getString(R.string.author); 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/fragment/Indicator.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.fragment; 21 | 22 | 23 | import com.vv.androidreview.R; 24 | 25 | /** 26 | * Author: Vv on 2015/7/24 16:08 27 | * Mail: envyfan@qq.com 28 | * Description: 29 | */ 30 | public enum Indicator { 31 | 32 | REVIEW(0, R.string.main_tab_name_review, R.drawable.tab_icon_review, 33 | ReviewFragment.class), 34 | 35 | TEST(1, R.string.main_tab_name_test, R.drawable.tab_icon_test, 36 | TestFragment.class), 37 | 38 | SETTING(2, R.string.main_tab_name_setting, R.drawable.tab_icon_other, 39 | SettingFragment.class); 40 | 41 | 42 | 43 | private int idx; 44 | private int resName; 45 | private int resIcon; 46 | private Class clz; 47 | 48 | private Indicator(int idx, int resName, int resIcon, Class clz) { 49 | this.idx = idx; 50 | this.resName = resName; 51 | this.resIcon = resIcon; 52 | this.clz = clz; 53 | } 54 | 55 | public int getIdx() { 56 | return idx; 57 | } 58 | 59 | public void setIdx(int idx) { 60 | this.idx = idx; 61 | } 62 | 63 | public int getResName() { 64 | return resName; 65 | } 66 | 67 | public void setResName(int resName) { 68 | this.resName = resName; 69 | } 70 | 71 | public int getResIcon() { 72 | return resIcon; 73 | } 74 | 75 | public void setResIcon(int resIcon) { 76 | this.resIcon = resIcon; 77 | } 78 | 79 | public Class getClz() { 80 | return clz; 81 | } 82 | 83 | public void setClz(Class clz) { 84 | this.clz = clz; 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/view/AnswerItem.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.view; 21 | 22 | import android.content.Context; 23 | import android.util.AttributeSet; 24 | import android.view.LayoutInflater; 25 | import android.view.View; 26 | import android.view.ViewGroup; 27 | import android.widget.LinearLayout; 28 | import android.widget.TextView; 29 | 30 | import com.vv.androidreview.R; 31 | import com.vv.androidreview.entity.Test; 32 | 33 | /** 34 | * Author:Vv on . 35 | * Mail:envyfan@qq.com 36 | * Description: 37 | */ 38 | public class AnswerItem extends LinearLayout { 39 | 40 | private TextView mChoice, mChoiceContent; 41 | private Test mTest; 42 | 43 | public AnswerItem(Context context) { 44 | this(context, null); 45 | } 46 | 47 | public AnswerItem(Context context, AttributeSet attrs) { 48 | this(context, attrs, 0); 49 | } 50 | 51 | public AnswerItem(Context context, AttributeSet attrs, int defStyleAttr) { 52 | super(context, attrs, defStyleAttr); 53 | init(); 54 | } 55 | 56 | private void init() { 57 | ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); 58 | View view = LayoutInflater.from(getContext()).inflate(R.layout.test_answer_item, null); 59 | mChoice = (TextView) view.findViewById(R.id.tv_choice); 60 | mChoiceContent = (TextView) view.findViewById(R.id.tv_choice_content); 61 | addView(view,lp); 62 | } 63 | 64 | public void setChoiceText(String str) { 65 | mChoice.setText(str); 66 | } 67 | 68 | public void setChoiceContent(String content) { 69 | mChoiceContent.setText(content); 70 | } 71 | 72 | public void setTest(Test test) { 73 | this.mTest = test; 74 | } 75 | 76 | public void click() { 77 | // mChoice.setTextColor(getResources().getColor(R.color.white)); 78 | if (mChoice.getText().toString().equals(mTest.getAnswer())) { 79 | mChoice.setBackgroundResource(R.mipmap.icon_true); 80 | mChoice.setText(""); 81 | } else{ 82 | mChoice.setBackgroundResource(R.mipmap.icon_false); 83 | mChoice.setText(""); 84 | } 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/view/GridViewEx.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.view; 21 | 22 | import android.content.Context; 23 | import android.util.AttributeSet; 24 | import android.widget.GridView; 25 | 26 | /** 27 | * Author:Vv on . 28 | * Mail:envyfan@qq.com 29 | * Description: 30 | */ 31 | public class GridViewEx extends GridView { 32 | public GridViewEx(Context context) { 33 | this(context, null); 34 | } 35 | 36 | public GridViewEx(Context context, AttributeSet attrs) { 37 | this(context, attrs, 0); 38 | } 39 | 40 | public GridViewEx(Context context, AttributeSet attrs, int defStyleAttr) { 41 | super(context, attrs, defStyleAttr); 42 | } 43 | @Override 44 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 45 | // TODO Auto-generated method stub 46 | int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); 47 | super.onMeasure(widthMeasureSpec, expandSpec); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/view/ScrollViewEx.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.view; 21 | 22 | import android.content.Context; 23 | import android.util.AttributeSet; 24 | import android.view.GestureDetector; 25 | import android.view.MotionEvent; 26 | import android.view.View; 27 | import android.widget.ScrollView; 28 | 29 | /** 30 | * Author:Vv on . 31 | * Mail:envyfan@qq.com 32 | * Description: 33 | */ 34 | public class ScrollViewEx extends ScrollView { 35 | private GestureDetector mGestureDetector; 36 | View.OnTouchListener mGestureListener; 37 | 38 | public ScrollViewEx(Context context, AttributeSet attrs) { 39 | super(context, attrs); 40 | mGestureDetector = new GestureDetector(context, new YScrollDetector()); 41 | setFadingEdgeLength(0); 42 | } 43 | 44 | @Override 45 | public boolean onInterceptTouchEvent(MotionEvent ev) { 46 | return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev); 47 | } 48 | 49 | // Return false if we're scrolling in the x direction 50 | class YScrollDetector extends GestureDetector.SimpleOnGestureListener { 51 | @Override 52 | public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 53 | if (Math.abs(distanceY) > Math.abs(distanceX)) { 54 | return true; 55 | } 56 | return false; 57 | } 58 | } 59 | } -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/ui/view/SquareCarView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.ui.view; 21 | 22 | import android.content.Context; 23 | import android.support.v7.widget.CardView; 24 | import android.util.AttributeSet; 25 | 26 | /** 27 | * Author:Vv on . 28 | * Mail:envyfan@qq.com 29 | * Description: 30 | */ 31 | public class SquareCarView extends CardView { 32 | public SquareCarView(Context context) { 33 | this(context, null); 34 | } 35 | 36 | public SquareCarView(Context context, AttributeSet attrs) { 37 | this(context, attrs, 0); 38 | } 39 | 40 | public SquareCarView(Context context, AttributeSet attrs, int defStyleAttr) { 41 | super(context, attrs, defStyleAttr); 42 | } 43 | 44 | @Override 45 | protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 46 | 47 | setMeasuredDimension(getDefaultSize(0, widthMeasureSpec), getDefaultSize(0, heightMeasureSpec)); 48 | 49 | // Children are just made to fill our space. 50 | int childWidthSize = getMeasuredWidth(); 51 | int childHeightSize = getMeasuredHeight(); 52 | //高度和宽度一样 53 | widthMeasureSpec = MeasureSpec.makeMeasureSpec(childWidthSize, MeasureSpec.EXACTLY); 54 | heightMeasureSpec = MeasureSpec.makeMeasureSpec(childWidthSize/4*3, MeasureSpec.EXACTLY); 55 | super.onMeasure(widthMeasureSpec, heightMeasureSpec); 56 | } 57 | 58 | 59 | } 60 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/utils/DoubleClickExitHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.utils; 21 | 22 | import android.app.Activity; 23 | import android.os.Handler; 24 | import android.os.Looper; 25 | import android.view.KeyEvent; 26 | import android.widget.Toast; 27 | 28 | import com.vv.androidreview.R; 29 | import com.vv.androidreview.base.system.AppManager; 30 | 31 | 32 | /** 33 | * Author:Vv on 2015/7/21 15:30 34 | * Mail:envyfan@qq.com 35 | * Description:双击退出 36 | */ 37 | public class DoubleClickExitHelper { 38 | private final Activity mActivity; 39 | 40 | private boolean isOnKeyBacking; 41 | private Handler mHandler; 42 | private Toast mBackToast; 43 | 44 | public DoubleClickExitHelper(Activity activity) { 45 | mActivity = activity; 46 | mHandler = new Handler(Looper.getMainLooper()); 47 | } 48 | 49 | /** 50 | * Activity onKeyDown事件 51 | * */ 52 | public boolean onKeyDown(int keyCode, KeyEvent event) { 53 | if(keyCode != KeyEvent.KEYCODE_BACK) { 54 | return false; 55 | } 56 | if(isOnKeyBacking) { 57 | mHandler.removeCallbacks(onBackTimeRunnable); 58 | if(mBackToast != null){ 59 | mBackToast.cancel(); 60 | } 61 | // �?�? 62 | AppManager.getAppManager().AppExit(mActivity); 63 | return true; 64 | } else { 65 | isOnKeyBacking = true; 66 | if(mBackToast == null) { 67 | mBackToast = Toast.makeText(mActivity, R.string.tip_double_click_exit, Toast.LENGTH_SHORT); 68 | } 69 | mBackToast.show(); 70 | mHandler.postDelayed(onBackTimeRunnable, 2000); 71 | return true; 72 | } 73 | } 74 | 75 | private Runnable onBackTimeRunnable = new Runnable() { 76 | 77 | @Override 78 | public void run() { 79 | isOnKeyBacking = false; 80 | if(mBackToast != null){ 81 | mBackToast.cancel(); 82 | } 83 | } 84 | }; 85 | } 86 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/utils/PermissionsChecker.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.utils; 21 | 22 | import android.content.Context; 23 | import android.content.pm.PackageManager; 24 | import android.support.v4.content.ContextCompat; 25 | 26 | /** 27 | * 检查权限的工具类 28 | *

29 | * Created by wangchenlong on 16/1/26. 30 | */ 31 | public class PermissionsChecker { 32 | private final Context mContext; 33 | 34 | public PermissionsChecker(Context context) { 35 | mContext = context.getApplicationContext(); 36 | } 37 | 38 | // 判断权限集合 39 | public boolean lacksPermissions(String... permissions) { 40 | for (String permission : permissions) { 41 | if (lacksPermission(permission)) { 42 | return true; 43 | } 44 | } 45 | return false; 46 | } 47 | 48 | // 判断是否缺少权限 49 | private boolean lacksPermission(String permission) { 50 | return ContextCompat.checkSelfPermission(mContext, permission) == 51 | PackageManager.PERMISSION_DENIED; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /app/src/main/java/com/vv/androidreview/utils/ToastHelper.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2016. Vv 3 | * 4 | * This file is part of AndroidReview (Android面试复习) 5 | * 6 | * AndroidReview is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * AndroidReview is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with AndroidReview. If not, see . 18 | */ 19 | 20 | package com.vv.androidreview.utils; 21 | 22 | import android.content.Context; 23 | import android.widget.Toast; 24 | 25 | /** 26 | * Author:Vv on 2016/1/17. 27 | * Mail:envyfan@qq.com 28 | * Description: 29 | */ 30 | public class ToastHelper { 31 | 32 | public static void showString(Context context,String msg){ 33 | Toast.makeText(context,msg,Toast.LENGTH_SHORT).show(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/res/color/bt_next.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/color/bt_next_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/color/primarybar_txt.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bt_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 27 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bt_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_false.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_stroke.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 24 | 25 | 26 | 29 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_true.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/progressloading.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 29 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_icon_other.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_icon_review.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_icon_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_app_start.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 26 | 27 | 33 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_create_table.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 26 | 27 | 28 | 37 | 38 | 46 | 59 | 66 | 73 | 74 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 26 | 27 | 28 | 29 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 27 | 28 | 29 | 30 | 35 | 36 | 40 | 41 | 42 | 47 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_suggest.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 25 | 26 | 27 | 28 | 35 | 36 | 42 | 43 | 44 | 51 | 52 | 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_version_note.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 27 | 28 | 29 | 30 | 35 | 36 | -------------------------------------------------------------------------------- /app/src/main/res/layout/carview_review.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 21 | 22 | 32 | 33 | 34 | 41 | 42 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_fav_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 25 | 29 | 42 | 43 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_review.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 25 | 26 | 30 | 31 | 42 | 43 | 56 | 57 | 58 | 59 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_review_content_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 24 | 25 | 29 | 30 | 41 | 42 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_test.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 26 | 27 | 31 | 32 | 33 | 34 | 38 | 39 | 49 | 50 | 63 | 64 | 65 | 79 | 80 | -------------------------------------------------------------------------------- /app/src/main/res/layout/include_toolbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 27 | 28 | 32 | 33 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /app/src/main/res/layout/itme_note_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 26 | 27 | 34 | 35 | 43 | 44 | 53 | 54 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_content_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 28 | 29 | 38 | 39 | 50 | 51 | 52 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_fav_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 27 | 28 | 41 | 42 | 43 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_footer.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 26 | 27 | 32 | 33 | 38 | 39 | 49 | 50 | 60 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_review_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 25 | 26 | 34 | 35 | 39 | 40 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/main/res/layout/list_review_item_gv.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 25 | 26 | 34 | 35 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/main/res/layout/loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 24 | 25 | 31 | 32 | 38 | 39 | 45 | 46 | 54 | 55 | 56 | 69 | 70 | -------------------------------------------------------------------------------- /app/src/main/res/layout/tab_indicator.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 25 | 26 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /app/src/main/res/layout/test_answer_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 30 | 40 | 41 | 49 | 50 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_cache.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 |

23 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_suggest.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 23 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/bg_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/bg_start.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/edt_gb.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/edt_gb.9.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_top_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/ic_top_back.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_about_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_about_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_blog.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_cache_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_cache_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_create_table_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_create_table_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_false.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_fav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_fav.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_fav_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_fav_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_fav_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_fav_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_github.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_layout_setting_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_layout_setting_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_loading.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_mail.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_other_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_other_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_other_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_other_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_qq.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_review_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_review_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_review_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_review_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_suggest_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_suggest_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_test_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_test_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_test_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_test_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_true.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/icon_update_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/icon_update_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/pagefailed_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/pagefailed_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/submit_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-hdpi/submit_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/bg_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/bg_start.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/edt_gb.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/edt_gb.9.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_top_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/ic_top_back.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_about_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_about_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_blog.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_cache_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_cache_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_create_table_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_create_table_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_false.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_fav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_fav.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_fav_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_fav_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_fav_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_fav_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_github.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_layout_setting_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_layout_setting_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_loading.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_mail.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_other_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_other_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_other_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_other_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_qq.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_review_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_review_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_review_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_review_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_suggest_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_suggest_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_test_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_test_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_test_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_test_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_true.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/icon_update_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/icon_update_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/pagefailed_bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/pagefailed_bg.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/submit_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xhdpi/submit_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/bg_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/bg_start.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/edt_gb.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/edt_gb.9.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_top_back.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/ic_top_back.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_about_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_about_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_blog.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_cache_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_cache_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_create_table_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_create_table_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_false.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_fav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_fav.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_fav_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_fav_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_fav_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_fav_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_github.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_layout_setting_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_layout_setting_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_loading.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_mail.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_other_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_other_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_other_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_other_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_qq.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_review_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_review_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_review_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_review_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_suggest_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_suggest_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_test_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_test_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_test_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_test_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_true.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/icon_update_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/icon_update_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/submit_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxhdpi/submit_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/bg_start.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/bg_start.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/edt_gb.9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/edt_gb.9.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_about_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_about_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_blog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_blog.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_cache_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_cache_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_create_table_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_create_table_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_false.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_fav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_fav.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_fav_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_fav_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_fav_select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_fav_select.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_github.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_github.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_layout_setting_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_layout_setting_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_loading.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_loading.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_mail.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_other_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_other_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_other_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_other_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_qq.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_review_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_review_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_review_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_review_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_suggest_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_suggest_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_test_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_test_off.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_test_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_test_on.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_true.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_true.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/icon_update_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/icon_update_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/me.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/me.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/submit_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/app/src/main/res/mipmap-xxxhdpi/submit_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/values-v19/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 26 | 27 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/values-v21/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 24 | 64dp 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | @color/red 24 | @color/blue 25 | @color/yellow 26 | @color/green 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | #FFC93437 23 | #FF375BF1 24 | #FFF7D23E 25 | #FF34A350 26 | #000000 27 | #ffffff 28 | #9e9e9e 29 | 30 | 31 | #9e9e9e 32 | #795548 33 | #bf360c 34 | #e65100 35 | #0d5320 36 | #01579b 37 | #6a1b9a 38 | #b0120a 39 | #c41411 40 | #d81b60 41 | 42 | #1e000000 43 | 44 | 45 | #3F51B5 46 | #5c6bc0 47 | #f4f4f4 48 | #19000000 49 | 50 | #b16e09 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 16dp 23 | 16dp 24 | 25 | 120dp 26 | 100dp 27 | 35dp 28 | 35dp 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | Android面试复习 22 | 23 | 再按一次退出 24 | 复习 25 | 测试 26 | 其他 27 | 网络不太好请重新尝试 28 | 加载中 29 | 收藏的题目 30 | 建表/插入默认数据 31 | 意见反馈 32 | 提交 33 | 关于 34 | V.v 35 | 已经全部加载完 36 | 加载失败请重试 37 | 答案: 38 | 答案 39 | 下一题 40 | (。﹏。*) \n题库已经没有题目了 41 | 再做一遍 42 | Sorry,不能提交空白信息T_T 43 | 非常感谢您的建议,我会做得更好 44 | 信息反馈失败请重试T_T 45 | 您宝贵的意见正在提交中哦,请不要重复提交 46 | 隐藏 47 | 显示 48 | 取消收藏 49 | 收藏成功 50 | 作者: 51 | 来源: 52 | V1.0.0 53 | 留下您的QQ或邮箱(选填) 54 | 您的建议是我最大的动力 55 | 其他内容 56 | 缓存设置 57 | 设置缓存有效期 58 | 开启后正文缓存将会在设定的时间内失效 59 | 意见反馈 60 | 更新 61 | 关于 62 | 应用需要必要的运行权限 63 | 设置 64 | 帮助 65 | 当前应用缺少必要权限。\n\n请点击\"设置\"-\"权限\"-打开所需权限。\n\n最后点击两次后退按钮,即可返回。 66 | 退出 67 | 缓存有效时间不能为空哦 68 | 执行 69 | 更新日志 70 | 71 | 72 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 28 | 29 | 32 | 33 | 38 | 39 | 40 | 43 | 44 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /app/src/test/java/com/vv/androidreview/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.vv.androidreview; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * To work on unit tests, switch the Test Artifact in the Build Variants view. 9 | */ 10 | public class ExampleUnitTest { 11 | @Test 12 | public void addition_isCorrect() throws Exception { 13 | assertEquals(4, 2 + 2); 14 | } 15 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | } 7 | dependencies { 8 | classpath 'com.android.tools.build:gradle:1.5.0' 9 | 10 | // NOTE: Do not place your application dependencies here; they belong 11 | // in the individual module build.gradle files 12 | } 13 | } 14 | 15 | allprojects { 16 | repositories { 17 | jcenter() 18 | //Bmob的maven仓库地址,必须填写 19 | maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" } 20 | } 21 | } 22 | 23 | task clean(type: Delete) { 24 | delete rootProject.buildDir 25 | } 26 | -------------------------------------------------------------------------------- /build/intermediates/dex-cache/cache.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /develop.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /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 -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Oct 21 11:34:03 PDT 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-2.8-all.zip 7 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /local.properties: -------------------------------------------------------------------------------- 1 | ## This file is automatically generated by Android Studio. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file should *NOT* be checked into Version Control Systems, 5 | # as it contains information specific to your local configuration. 6 | # 7 | # Location of the SDK. This is only used by Gradle. 8 | # For customization when using a Version Control System, please read the 9 | # header note. 10 | sdk.dir=E\:\\android-sdks -------------------------------------------------------------------------------- /pic/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/1.png -------------------------------------------------------------------------------- /pic/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/2.png -------------------------------------------------------------------------------- /pic/23d.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/23d.png -------------------------------------------------------------------------------- /pic/2qq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/2qq.png -------------------------------------------------------------------------------- /pic/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/3.png -------------------------------------------------------------------------------- /pic/312w.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/312w.png -------------------------------------------------------------------------------- /pic/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/4.png -------------------------------------------------------------------------------- /pic/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/5.png -------------------------------------------------------------------------------- /pic/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/6.png -------------------------------------------------------------------------------- /pic/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/7.png -------------------------------------------------------------------------------- /pic/abccc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/abccc.png -------------------------------------------------------------------------------- /pic/dfv4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/dfv4.png -------------------------------------------------------------------------------- /pic/pics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/pics.png -------------------------------------------------------------------------------- /pic/ss.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/ss.png -------------------------------------------------------------------------------- /pic/v110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/envyfan/AndroidReview/4e054290df4abfaec2e1938af5b75beb8bef0803/pic/v110.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | --------------------------------------------------------------------------------