gitextract_me0tpa6o/ ├── .gitignore ├── .travis.yml ├── 3rdlib/ │ ├── commonlog/ │ │ ├── AndroidManifest.xml │ │ ├── README.md │ │ ├── build.gradle │ │ ├── build.xml │ │ ├── proguard-project.txt │ │ ├── project.properties │ │ └── src/ │ │ └── com/ │ │ └── halzhang/ │ │ └── android/ │ │ └── common/ │ │ └── CDLog.java │ └── commontoast/ │ ├── AndroidManifest.xml │ ├── README.md │ ├── build.gradle │ ├── build.xml │ ├── proguard-project.txt │ ├── project.properties │ └── src/ │ └── com/ │ └── halzhang/ │ └── android/ │ └── common/ │ └── CDToast.java ├── README.md ├── android-wait-for-emulator ├── app/ │ ├── build.gradle │ ├── libs/ │ │ └── libGoogleAnalyticsServices.jar │ ├── proguard-project.txt │ └── src/ │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── halzhang/ │ │ └── android/ │ │ └── apps/ │ │ └── startupnews/ │ │ ├── ApplicationModule.java │ │ ├── Constants.java │ │ ├── MyApplication.java │ │ ├── SnApiComponent.java │ │ ├── analytics/ │ │ │ ├── MyExceptionParser.java │ │ │ └── Tracker.java │ │ ├── presenter/ │ │ │ ├── BasePresenter.java │ │ │ ├── BaseView.java │ │ │ ├── CommentsListContract.java │ │ │ ├── CommentsListPresenter.java │ │ │ ├── CommentsListPresenterModule.java │ │ │ ├── DiscussComponent.java │ │ │ ├── DiscussContract.java │ │ │ ├── DiscussPresenter.java │ │ │ ├── DiscussPresenterModule.java │ │ │ ├── LoginComponent.java │ │ │ ├── LoginContract.java │ │ │ ├── LoginPresenter.java │ │ │ ├── LoginPresenterModule.java │ │ │ ├── MainActivityContract.java │ │ │ ├── MainActivityPresenter.java │ │ │ ├── MainActivityPresenterModule.java │ │ │ ├── MainComponent.java │ │ │ ├── NewsListContract.java │ │ │ ├── NewsListFragmentComponent.java │ │ │ ├── NewsListPresenter.java │ │ │ └── NewsListPresenterModule.java │ │ ├── ui/ │ │ │ ├── AboutActivity.java │ │ │ ├── BaseActivity.java │ │ │ ├── BaseFragmentActivity.java │ │ │ ├── DiscussActivity.java │ │ │ ├── LauncherActivity.java │ │ │ ├── LoginActivity.java │ │ │ ├── MainActivity.java │ │ │ ├── ShareHelper.java │ │ │ ├── SubmitActivity.java │ │ │ ├── fragment/ │ │ │ │ ├── BaseFragment.java │ │ │ │ ├── CommentsListFragment.java │ │ │ │ ├── LoginFragment.java │ │ │ │ ├── NewsListFragment.java │ │ │ │ └── SwipeRefreshRecyclerFragment.java │ │ │ ├── phone/ │ │ │ │ └── BrowseActivity.java │ │ │ ├── tablet/ │ │ │ │ ├── BrowseFragment.java │ │ │ │ └── DiscussFragment.java │ │ │ └── widgets/ │ │ │ ├── CardViewDividerDecoration.java │ │ │ ├── DividerDecoration.java │ │ │ ├── ObservableWebView.java │ │ │ ├── SwitchPreference.java │ │ │ └── WebViewController.java │ │ └── utils/ │ │ ├── ActivityScoped.java │ │ ├── ActivityUtils.java │ │ ├── AppUtils.java │ │ ├── CrashHandler.java │ │ ├── CustomTabsActivityHelper.java │ │ ├── CustomTabsHelper.java │ │ ├── DateUtils.java │ │ ├── FragmentScoped.java │ │ ├── PreferenceUtils.java │ │ └── UIUtils.java │ └── res/ │ ├── anim/ │ │ ├── push_down_out.xml │ │ ├── push_up_in.xml │ │ ├── slide_in_left.xml │ │ ├── slide_in_right.xml │ │ ├── slide_out_left.xml │ │ └── slide_out_right.xml │ ├── drawable/ │ │ ├── action_bar_background.xml │ │ ├── background_boardless.xml │ │ ├── background_holo_dark.xml │ │ ├── background_holo_light.xml │ │ ├── bg_discuss_article.xml │ │ ├── fragment_shadow.xml │ │ ├── send_button_selector.xml │ │ └── sidebar_shadow.xml │ ├── layout/ │ │ ├── actionbar_indeterminate_progress.xml │ │ ├── activity_browse.xml │ │ ├── activity_discuss.xml │ │ ├── activity_login.xml │ │ ├── activity_main.xml │ │ ├── browse_bar.xml │ │ ├── comment_list_item.xml │ │ ├── discuss_comment_item.xml │ │ ├── discuss_header_view.xml │ │ ├── fragment_browse.xml │ │ ├── fragment_discuss.xml │ │ ├── fragment_login.xml │ │ ├── news_list_item.xml │ │ ├── preference_toolbar.xml │ │ ├── ptr_list_layout.xml │ │ └── refresh_recycler_view_layout.xml │ ├── menu/ │ │ ├── activity_browse.xml │ │ ├── activity_login.xml │ │ ├── activity_main.xml │ │ ├── fragment_browse.xml │ │ ├── fragment_discuss.xml │ │ └── fragment_news.xml │ ├── values/ │ │ ├── analytics.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ids.xml │ │ ├── integers.xml │ │ ├── strings.xml │ │ └── themes.xml │ └── xml/ │ └── preferences.xml ├── build.gradle ├── buildsystem/ │ └── dependencies.gradle ├── changelog.md ├── data/ │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src/ │ ├── androidTest/ │ │ └── java/ │ │ └── com/ │ │ └── halzhang/ │ │ └── android/ │ │ └── startupnews/ │ │ └── data/ │ │ └── ApplicationTest.java │ └── main/ │ ├── AndroidManifest.xml │ ├── java/ │ │ └── com/ │ │ └── halzhang/ │ │ └── android/ │ │ └── startupnews/ │ │ └── data/ │ │ ├── Constant.java │ │ ├── CookieFactoryModule.java │ │ ├── JsoupConnectorModule.java │ │ ├── OkHttpClientModule.java │ │ ├── SessionManagerModule.java │ │ ├── SnApiModule.java │ │ ├── entity/ │ │ │ ├── SNComment.java │ │ │ ├── SNComments.java │ │ │ ├── SNDiscuss.java │ │ │ ├── SNFeed.java │ │ │ ├── SNNew.java │ │ │ ├── SNSession.java │ │ │ ├── SNUser.java │ │ │ └── Status.java │ │ ├── exception/ │ │ │ ├── LoginException.java │ │ │ ├── NetworkException.java │ │ │ └── SessionExpiredException.java │ │ ├── net/ │ │ │ ├── ISnApi.java │ │ │ ├── JsoupConnector.java │ │ │ └── SnApiImpl.java │ │ ├── parser/ │ │ │ ├── BaseHTMLParser.java │ │ │ ├── SNCommentsParser.java │ │ │ ├── SNCommentsParserV1.java │ │ │ ├── SNDiscussParser.java │ │ │ └── SNFeedParser.java │ │ └── utils/ │ │ ├── CookieFactoryImpl.java │ │ ├── NetworkUtils.java │ │ ├── OkHttpClientHelper.java │ │ ├── PersistentCookieStore.java │ │ ├── PrefUtils.java │ │ ├── SerializableCookie.java │ │ └── SessionManager.java │ └── res/ │ └── values/ │ └── strings.xml ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── release/ │ ├── StartupNews-release-0.1.apk │ ├── StartupNews-release-0.2.0.0.apk │ ├── StartupNews-release-0.3.0.0.apk │ ├── StartupNews-release-0.3.1.0.apk │ ├── StartupNews-release-0.4.0.0.apk │ ├── StartupNews-release-0.5.0.0.apk │ ├── StartupNews-release-0.5.1.0.apk │ ├── StartupNews-release-0.5.2.0.apk │ ├── StartupNews-release-0.6.0.0.apk │ ├── StartupNews-release-1.0.0.0.apk │ ├── StartupNews-release-1.0.1.0.apk │ └── StartupNews-release.apk ├── settings.gradle └── wait_for_emulator.sh