├── .gitignore ├── .gitmodules ├── README.md ├── X5WebDemo ├── .gitignore ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── libs │ └── tbs_sdk_thirdapp_v3.1.0.1034_43100_sharewithdownload_obfs_20170301_182143.jar ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ └── webpage │ │ ├── fileChooser.html │ │ ├── fullscreenVideo.html │ │ ├── hitTestResult.html │ │ └── websocket.html │ ├── java │ └── com │ │ └── example │ │ └── test_webview_demo │ │ ├── APPAplication.java │ │ ├── BrowserActivity.java │ │ ├── FilechooserActivity.java │ │ ├── FullScreenActivity.java │ │ ├── MainActivity.java │ │ └── utils │ │ ├── WebViewJavaScriptFunction.java │ │ └── X5WebView.java │ ├── jniLibs │ └── armeabi │ │ └── liblbs.so │ └── res │ ├── drawable-xhdpi │ ├── color_progressbar.xml │ ├── filechooser.png │ ├── fullscreen.png │ ├── function.png │ ├── ic_launcher.png │ ├── search.png │ ├── tbsvideo.png │ ├── tbsweb.png │ ├── theme_adrbar_btn_refresh_normal0.png │ ├── theme_menu_btn_quit_fg_normal0.png │ ├── theme_toolbar_btn_back_fg_normal0.png │ ├── theme_toolbar_btn_cleardata_normal0.png │ ├── theme_toolbar_btn_forward_fg_normal0.png │ ├── theme_toolbar_btn_home_fg_normal2.png │ ├── theme_toolbar_btn_menu_fg_normal.png │ ├── theme_toolbar_btn_menu_fg_pressed.png │ ├── theme_toolbar_btn_openfile_normal0.png │ ├── theme_toolbar_btn_testprocesses_fg_normal0.png │ └── theme_toolbar_btn_testwebviews_fg_normal0.png │ ├── layout │ ├── activity_main.xml │ ├── activity_main_advanced.xml │ ├── filechooser_layout.xml │ ├── fullscreen_sys_web.xml │ ├── fullscreen_web.xml │ └── function_block.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ └── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml ├── build.gradle ├── config.gradle ├── demoapp ├── .gitignore ├── build.gradle ├── hs_err_pid9987.log ├── libs │ └── tbs_sdk_thirdapp_v3.1.0.1034_43100_sharewithdownload_obfs_20170301_182143.jar ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── assets │ ├── config.properties │ └── html │ │ ├── test.html │ │ └── test.hyperesources │ │ ├── 4619AC-restorable.plist │ │ ├── HYPE-518.full.min.js │ │ ├── HYPE-518.thin.min.js │ │ ├── PIE.htc │ │ ├── b03533fa828ba61e2e39d42e4334970a314e59df.jpg │ │ ├── blank.gif │ │ └── test_hype_generated_script.js │ ├── java │ └── com │ │ └── bailiangjin │ │ └── demo │ │ ├── MainActivity.java │ │ ├── MyApplication.java │ │ ├── SplashActivity.java │ │ ├── activity │ │ ├── TestActivity.java │ │ ├── TestDeviceActivity.java │ │ └── logicutils │ │ │ └── AccountUtils.java │ │ ├── aliandroidguide │ │ ├── Test.java │ │ └── broadcast │ │ │ ├── ILocalBroadcastservice.java │ │ │ └── LocalBroadcastService.java │ │ ├── app │ │ └── AppManager.java │ │ ├── base │ │ ├── BaseActivity.java │ │ ├── BaseFragment.java │ │ └── BtnBaseActivity.java │ │ ├── config │ │ ├── EnumInterFace.java │ │ └── UrlUtils.java │ │ ├── constants │ │ ├── BroadcastAction.java │ │ ├── IntentKey.java │ │ ├── LoginResult.java │ │ └── SPKey.java │ │ ├── db │ │ ├── MySQLiteOpenHelper.java │ │ ├── dao │ │ │ └── PersonDao.java │ │ └── modle │ │ │ └── Person.java │ │ ├── demo │ │ ├── ImageLoadActivity.java │ │ ├── WebViewActivity.java │ │ ├── X5WebViewActivity.java │ │ ├── catche │ │ │ └── CacheUtils.java │ │ ├── dbtest │ │ │ └── DatabaseActivity.java │ │ ├── dynamic │ │ │ ├── DetailActivity.java │ │ │ ├── DynamicPageActivity.java │ │ │ ├── adapter │ │ │ │ ├── AbsBaseBtnGroupAdapter.java │ │ │ │ ├── BtnPhotoGroupAdapter.java │ │ │ │ └── BtnSkipGroupAdapter.java │ │ │ ├── bean │ │ │ │ ├── databean │ │ │ │ │ ├── ClassDataBean.java │ │ │ │ │ ├── PageDataBean.java │ │ │ │ │ ├── PageInfo.java │ │ │ │ │ └── ProjectDataBean.java │ │ │ │ └── viewbean │ │ │ │ │ ├── ViewBean.java │ │ │ │ │ ├── base │ │ │ │ │ ├── AbsSelectedItem.java │ │ │ │ │ ├── BaseItem.java │ │ │ │ │ └── ExtraParam.java │ │ │ │ │ ├── group │ │ │ │ │ ├── BtnGroup.java │ │ │ │ │ ├── CBGroup.java │ │ │ │ │ └── RBGroup.java │ │ │ │ │ ├── item │ │ │ │ │ ├── BtnItem.java │ │ │ │ │ ├── CBItem.java │ │ │ │ │ ├── EditTextItem.java │ │ │ │ │ ├── RBItem.java │ │ │ │ │ └── TextItem.java │ │ │ │ │ └── type │ │ │ │ │ ├── BtnGroupType.java │ │ │ │ │ ├── BtnType.java │ │ │ │ │ ├── TxtType.java │ │ │ │ │ ├── ViewBeanType.java │ │ │ │ │ └── ViewType.java │ │ │ ├── callback │ │ │ │ └── MyOnClickListener.java │ │ │ ├── generater │ │ │ │ ├── ViewGenerator.java │ │ │ │ ├── ViewGeneratorImpl.java │ │ │ │ └── ViewTools.java │ │ │ └── view │ │ │ │ ├── base │ │ │ │ ├── BaseButton.java │ │ │ │ ├── BaseCheckBox.java │ │ │ │ ├── BaseEditText.java │ │ │ │ ├── BaseGridView.java │ │ │ │ ├── BaseGridViewNew.java │ │ │ │ └── BaseTextView.java │ │ │ │ ├── impl │ │ │ │ ├── MyCheckboxGroup.java │ │ │ │ ├── button │ │ │ │ │ └── SaveButton.java │ │ │ │ ├── et │ │ │ │ │ └── CommonEditText.java │ │ │ │ ├── group │ │ │ │ │ ├── PhotoBtnGridView.java │ │ │ │ │ └── SkipBtnGridView.java │ │ │ │ └── textview │ │ │ │ │ ├── ClassNameTextView.java │ │ │ │ │ ├── ContentTextView.java │ │ │ │ │ └── TitleTextView.java │ │ │ │ └── root │ │ │ │ └── BaseView.java │ │ ├── file │ │ │ └── FileOperationActivity.java │ │ ├── filelistener │ │ │ └── FileListenerActivity.java │ │ ├── fragmentdemo │ │ │ ├── FragmentAdapterDemos.java │ │ │ ├── MyFragmentActivity.java │ │ │ └── MyFragmentPagerAdapter.java │ │ ├── keylistener │ │ │ └── KeyListenerActivity.java │ │ ├── launchmode │ │ │ ├── LaunchModeActivity1.java │ │ │ ├── LaunchModeActivity2.java │ │ │ ├── LaunchModeActivity3.java │ │ │ └── LaunchModeActivity4.java │ │ ├── networkdemo │ │ │ ├── NetworkActivity.java │ │ │ └── weather │ │ │ │ ├── WeatherRequest.java │ │ │ │ ├── config │ │ │ │ └── WeatherConfig.java │ │ │ │ └── model │ │ │ │ ├── WeatherCityInfo.java │ │ │ │ ├── WeatherDetail.java │ │ │ │ └── WeatherSK.java │ │ ├── recycleview │ │ │ └── NormalRecyclerViewAdapter.java │ │ ├── switchnetworkstate │ │ │ └── SwitchNetWorkStateActivity.java │ │ ├── viewpager │ │ │ ├── BaseViewPagerFragment.java │ │ │ ├── MyPagerAdapter.java │ │ │ ├── PageUtil.java │ │ │ ├── ViewPagerBean.java │ │ │ └── ViewPagerDemoActivity.java │ │ └── widget │ │ │ ├── WidgetMainActivity.java │ │ │ ├── dialog │ │ │ └── DialogActivity.java │ │ │ ├── draggridview │ │ │ ├── DragAdapter.java │ │ │ └── DragGridViewActivity.java │ │ │ └── searchbar │ │ │ └── SearchActivity.java │ │ ├── fragment │ │ ├── Fragment1.java │ │ └── Fragment2.java │ │ ├── javase │ │ └── Test.java │ │ ├── jni │ │ └── NdkJniUtils.java │ │ ├── kt │ │ ├── HelloKotlin.java │ │ └── HelloWorld.kt │ │ ├── model │ │ └── TaskItemBean.java │ │ ├── net │ │ ├── HttpCallback.java │ │ ├── HttpUtils.java │ │ └── OKHttpUtils.java │ │ ├── utils │ │ ├── ActivityUtils.java │ │ └── image │ │ │ ├── CircleTransform.java │ │ │ ├── CornersTransform.java │ │ │ ├── GetImageCacheAsyncTask.java │ │ │ ├── IImageLoader.java │ │ │ ├── ImImageLoader.java │ │ │ ├── ImageParam.java │ │ │ ├── ImageUtils.java │ │ │ └── MyGlideModule.java │ │ └── view │ │ └── X5WebView.java │ ├── jniLibs │ └── armeabi │ │ └── liblbs.so │ ├── jni_bak │ └── jni.rar │ └── res │ ├── drawable-hdpi │ ├── ic_account_box_black.png │ ├── ic_account_box_white_48dp.png │ ├── ic_alarm_black_48dp.png │ ├── ic_alarm_on_black_48dp.png │ ├── ic_alarm_on_white_48dp.png │ ├── ic_alarm_white_48dp.png │ ├── ic_arrow_back_black_36dp.png │ ├── ic_arrow_back_white_36dp.png │ ├── ic_autorenew_black_48dp.png │ ├── ic_autorenew_white_48dp.png │ ├── ic_backup_black_48dp.png │ ├── ic_backup_white_48dp.png │ ├── ic_build_black_48dp.png │ ├── ic_build_white_48dp.png │ ├── ic_cached_black_48dp.png │ ├── ic_cached_white_48dp.png │ ├── ic_check_circle_black_48dp.png │ ├── ic_check_circle_white_48dp.png │ ├── ic_done_all_black.png │ ├── ic_done_all_white.png │ ├── ic_done_black_48dp.png │ ├── ic_done_white_48dp.png │ ├── ic_explore_black_48dp.png │ ├── ic_explore_white_48dp.png │ ├── ic_favorite_black.png │ ├── ic_favorite_border_black.png │ ├── ic_favorite_border_white.png │ ├── ic_favorite_white.png │ ├── ic_find_replace_black_48dp.png │ ├── ic_find_replace_white_48dp.png │ ├── ic_fingerprint_black_48dp.png │ ├── ic_fingerprint_white_48dp.png │ ├── ic_get_app_black.png │ ├── ic_get_app_white.png │ ├── ic_help_black.png │ ├── ic_help_outline_black.png │ ├── ic_help_outline_white.png │ ├── ic_help_white.png │ ├── ic_highlight_off_black.png │ ├── ic_highlight_off_white.png │ ├── ic_home_black.png │ ├── ic_home_white.png │ ├── ic_launcher.png │ ├── ic_location_black.png │ ├── ic_location_white.png │ ├── ic_lock_outline_lock_black.png │ ├── ic_lock_outline_lock_white.png │ ├── ic_lock_outline_open_black.png │ ├── ic_lock_outline_open_white.png │ ├── ic_power_settings_new_black.png │ ├── ic_power_settings_new_white.png │ ├── ic_query_builder_black.png │ ├── ic_query_builder_white.png │ ├── ic_settings_black.png │ ├── ic_settings_white.png │ ├── ic_share_black.png │ ├── ic_share_white.png │ ├── ic_swap_horiz_black.png │ ├── ic_swap_horiz_white.png │ ├── ic_swap_vert_black.png │ ├── ic_swap_vert_white.png │ ├── ic_thumb_down_black.png │ ├── ic_thumb_down_white.png │ ├── ic_thumb_up_black.png │ ├── ic_thumb_up_white.png │ ├── ic_visibility_black.png │ ├── ic_visibility_off_black.png │ ├── ic_visibility_off_white.png │ ├── ic_visibility_white.png │ ├── ic_zoom_in_black.png │ ├── ic_zoom_in_white.png │ ├── ic_zoom_out_black.png │ └── ic_zoom_out_white.png │ ├── drawable-xhdpi │ ├── btn_photo.png │ ├── icon_app.png │ ├── icon_timeoutsettings.png │ ├── icon_user.png │ └── linear_login.png │ ├── drawable │ ├── app_splash_gradient_bg.xml │ ├── demo_common_gradient_bg.xml │ └── demo_splash_gradient_bg.xml │ ├── layout │ ├── activity_btn_base.xml │ ├── activity_database.xml │ ├── activity_demo_draggridview.xml │ ├── activity_dynamic.xml │ ├── activity_file_operation.xml │ ├── activity_filelistener.xml │ ├── activity_image_load.xml │ ├── activity_keylistener.xml │ ├── activity_network.xml │ ├── activity_search.xml │ ├── activity_splash.xml │ ├── activity_switch_network_state.xml │ ├── activity_test.xml │ ├── activity_webview.xml │ ├── activity_x5_webview.xml │ ├── btn_base_body.xml │ ├── ctn_button.xml │ ├── ctn_edittext.xml │ ├── ctn_gridview.xml │ ├── ctn_ll.xml │ ├── ctn_radiogroup.xml │ ├── ctn_scrollview.xml │ ├── ctn_textview.xml │ ├── fragment1.xml │ ├── fragment2.xml │ ├── fragment_viewpager_demo.xml │ ├── item_btn_photo_gridview.xml │ ├── item_btn_skip_gridview.xml │ ├── item_text.xml │ └── page_item.xml │ ├── menu │ └── menu_main.xml │ ├── mipmap-hdpi │ └── ic_launcher.png │ ├── mipmap-mdpi │ └── ic_launcher.png │ ├── mipmap-xhdpi │ └── ic_launcher.png │ ├── mipmap-xxhdpi │ └── ic_launcher.png │ ├── mipmap-xxxhdpi │ └── ic_launcher.png │ ├── values-v21 │ └── styles.xml │ ├── values-w820dp │ └── dimens.xml │ └── values │ ├── array.xml │ ├── colors.xml │ ├── dimens.xml │ ├── strings.xml │ └── styles.xml ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── hs_err_pid672.log ├── import-summary.txt └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | #Gradle 3 | .gradle/ 4 | build/ 5 | captures/ 6 | 7 | #mac 8 | .DS_Store 9 | 10 | # Local configuration file (sdk path, etc) 11 | local.properties 12 | 13 | # Intellij project files 14 | *.iml 15 | *.ipr 16 | *.iws 17 | .idea/ 18 | 19 | # Eclipse project files 20 | .classpath 21 | .project 22 | 23 | # generated files 24 | bin/ 25 | gen/ 26 | 27 | # Java class files 28 | *.class 29 | 30 | # files for the dex VM 31 | *.dex 32 | 33 | *.apk 34 | *.ap_ -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libs/AndroidRapidDevelopLibrarys"] 2 | path = libs/AndroidRapidDevelopLibrarys 3 | url = https://github.com/bailiangjin/AndroidRapidDevelopLibrarys.git 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BaseLibrary 2 | 因工程整体重构 代码结构有较大调整 为使得工程可以更好地 扩展和使用, 本具体lib代码已经转移到[AndroidRapidDevelopLibrarys](https://github.com/bailiangjin/AndroidRapidDevelopLibrarys) 3 | 4 | 详细代码请到[AndroidRapidDevelopLibrarys](https://github.com/bailiangjin/AndroidRapidDevelopLibrarys) 5 | 6 | 本工程为AndroidRapidDevelopLibrarys 的一个使用示例,该工程将 AndroidRapidDevelopLibrarys 作为git sub moduel 引入 7 | 8 | 实际使用时,可以参考本工程的 git sub moduel 的引用方式 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /X5WebDemo/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /X5WebDemo/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'kotlin-android' 3 | 4 | android { 5 | compileSdkVersion rootProject.ext.compileSdkVersion 6 | buildToolsVersion rootProject.ext.buildToolsVersion 7 | defaultConfig { 8 | 9 | minSdkVersion rootProject.ext.minSdkVersion 10 | targetSdkVersion rootProject.ext.targetSdkVersion 11 | applicationId "com.example.test_webview_demo" 12 | versionCode 1 13 | versionName "1.0" 14 | 15 | // Specifies the ABI configurations of your native 16 | // libraries Gradle should build and package with your APK. 17 | // ndk { 18 | // abiFilters "armeabi", "armeabi-v7a", "x86", "mips" 19 | // } 20 | } 21 | buildTypes { 22 | release { 23 | minifyEnabled false 24 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 25 | } 26 | } 27 | 28 | //android studio默认so文件加载目录为:src/main/jniLibs 29 | //如在module的build.gradle按照如下方式,自定义了so文件加载目录请确保对应目录下只有armeabi目录 30 | // sourceSets { 31 | // main{ 32 | // jniLibs.srcDirs = ['libs'] 33 | // } 34 | // } 35 | } 36 | 37 | dependencies { 38 | implementation fileTree(include: ['*.jar'], dir: 'libs') 39 | 40 | implementation sdkVar.SupportV7 41 | implementation 'com.android.support.constraint:constraint-layout:1.0.0-alpha7' 42 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 43 | } 44 | -------------------------------------------------------------------------------- /X5WebDemo/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /X5WebDemo/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Apr 17 13:26:57 CST 2017 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.14.1-all.zip 7 | -------------------------------------------------------------------------------- /X5WebDemo/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 | -------------------------------------------------------------------------------- /X5WebDemo/libs/tbs_sdk_thirdapp_v3.1.0.1034_43100_sharewithdownload_obfs_20170301_182143.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/libs/tbs_sdk_thirdapp_v3.1.0.1034_43100_sharewithdownload_obfs_20170301_182143.jar -------------------------------------------------------------------------------- /X5WebDemo/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 /home/aczhengliu/programfiles/adt-bundle-linux-x86_64-20140702/sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/assets/webpage/fileChooser.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | file chooser 7 | 15 | 21 | 22 | 23 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/assets/webpage/fullscreenVideo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 16 | 17 | 18 | 21 |
22 | 23 | 24 |
25 | 26 | 27 |
28 | 29 | 30 | 31 | 32 | 33 | 52 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/assets/webpage/hitTestResult.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | <h2>请长按一下html元素</h2> 7 | 12 | 13 | 14 |

请长按一下html元素


15 |

hello world!


16 |
17 |
18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/assets/webpage/websocket.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |

WebSocket 测试

9 |

10 | 11 | 12 | 34 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/java/com/example/test_webview_demo/APPAplication.java: -------------------------------------------------------------------------------- 1 | package com.example.test_webview_demo; 2 | 3 | import android.app.Application; 4 | import android.util.Log; 5 | 6 | import com.tencent.smtt.sdk.QbSdk; 7 | 8 | public class APPAplication extends Application { 9 | 10 | @Override 11 | public void onCreate() { 12 | // TODO Auto-generated method stub 13 | super.onCreate(); 14 | //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。 15 | 16 | QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { 17 | 18 | @Override 19 | public void onViewInitFinished(boolean arg0) { 20 | // TODO Auto-generated method stub 21 | //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。 22 | Log.d("app", " onViewInitFinished is " + arg0); 23 | } 24 | 25 | @Override 26 | public void onCoreInitFinished() { 27 | // TODO Auto-generated method stub 28 | } 29 | }; 30 | //x5内核初始化接口 31 | QbSdk.initX5Environment(getApplicationContext(), cb); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/java/com/example/test_webview_demo/utils/WebViewJavaScriptFunction.java: -------------------------------------------------------------------------------- 1 | package com.example.test_webview_demo.utils; 2 | 3 | public interface WebViewJavaScriptFunction { 4 | 5 | void onJsFunctionCalled(String tag); 6 | } 7 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/jniLibs/armeabi/liblbs.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/jniLibs/armeabi/liblbs.so -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/color_progressbar.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/filechooser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/filechooser.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/fullscreen.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/function.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/function.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/search.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/tbsvideo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/tbsvideo.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/tbsweb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/tbsweb.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_adrbar_btn_refresh_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_adrbar_btn_refresh_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_menu_btn_quit_fg_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_menu_btn_quit_fg_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_back_fg_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_back_fg_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_cleardata_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_cleardata_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_forward_fg_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_forward_fg_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_home_fg_normal2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_home_fg_normal2.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_menu_fg_normal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_menu_fg_normal.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_menu_fg_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_menu_fg_pressed.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_openfile_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_openfile_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_testprocesses_fg_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_testprocesses_fg_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_testwebviews_fg_normal0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/drawable-xhdpi/theme_toolbar_btn_testwebviews_fg_normal0.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/layout/activity_main_advanced.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 17 | 18 | 24 | 25 | 35 | 36 | 37 | 50 | 51 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/layout/filechooser_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 10 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/layout/fullscreen_sys_web.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/layout/fullscreen_web.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/layout/function_block.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 17 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/X5WebDemo/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | X5功能演示 3 | 设置 4 | MiniQBActivity 5 | Hello world! 6 | (X5内核功能演示) 7 | 普通接入直接参考“APPApplication” “BrowserActivity” “X5WebView”中相关实现即可 8 | 9 | 10 | 浏览器demo 11 | 全屏播放 12 | 文件选择器 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /X5WebDemo/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /demoapp/.gitignore: -------------------------------------------------------------------------------- 1 | build/ -------------------------------------------------------------------------------- /demoapp/libs/tbs_sdk_thirdapp_v3.1.0.1034_43100_sharewithdownload_obfs_20170301_182143.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/libs/tbs_sdk_thirdapp_v3.1.0.1034_43100_sharewithdownload_obfs_20170301_182143.jar -------------------------------------------------------------------------------- /demoapp/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:\Program_Files\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /demoapp/src/main/assets/config.properties: -------------------------------------------------------------------------------- 1 | #配置文件demo 2 | testkey =Toast 测试配置文件信息 sub 3 | 4 | 5 | -------------------------------------------------------------------------------- /demoapp/src/main/assets/html/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | test 7 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 |
39 | 40 |
标题栏 41 |
42 |
43 |
确认 44 | 45 |
46 |
Button
47 | 48 |
49 | 50 | 51 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /demoapp/src/main/assets/html/test.hyperesources/4619AC-restorable.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/assets/html/test.hyperesources/4619AC-restorable.plist -------------------------------------------------------------------------------- /demoapp/src/main/assets/html/test.hyperesources/b03533fa828ba61e2e39d42e4334970a314e59df.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/assets/html/test.hyperesources/b03533fa828ba61e2e39d42e4334970a314e59df.jpg -------------------------------------------------------------------------------- /demoapp/src/main/assets/html/test.hyperesources/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/assets/html/test.hyperesources/blank.gif -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/MyApplication.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo; 2 | 3 | import android.util.Log; 4 | 5 | import com.bailiangjin.uilibrary.app.SuperApplication; 6 | import com.bailiangjin.utilslibrary.api.UtilsLibrary; 7 | import com.bugtags.library.Bugtags; 8 | import com.bugtags.library.BugtagsOptions; 9 | import com.tencent.smtt.sdk.QbSdk; 10 | 11 | /** 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/10/12 17:32 15 | */ 16 | public class MyApplication extends SuperApplication { 17 | 18 | 19 | 20 | @Override 21 | public void onCreate() { 22 | super.onCreate(); 23 | 24 | initBugstags(); 25 | 26 | //初始化 ImageLoad工具类 27 | // 只在Application中初始化一次 全局可使用 28 | UtilsLibrary.init(this); 29 | 30 | QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() { 31 | 32 | @Override 33 | public void onViewInitFinished(boolean arg0) { 34 | // TODO Auto-generated method stub 35 | //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。 36 | Log.d("app", " onViewInitFinished is " + arg0); 37 | } 38 | 39 | @Override 40 | public void onCoreInitFinished() { 41 | // TODO Auto-generated method stub 42 | } 43 | }; 44 | //x5内核初始化接口 45 | QbSdk.initX5Environment(getApplicationContext(), cb); 46 | 47 | 48 | 49 | } 50 | 51 | /** 52 | * 初始化Bugstags 53 | */ 54 | private void initBugstags() { 55 | final String BUGTAGS_APP_KEY = "2ee6086adc2bc223e122e1abd3edb16a"; 56 | BugtagsOptions options = new BugtagsOptions.Builder(). 57 | trackingLocation(false).//是否获取位置 58 | trackingCrashLog(true).//是否收集crash 59 | trackingConsoleLog(true).//是否收集console log 60 | trackingUserSteps(true).//是否收集用户操作步骤 61 | build(); 62 | 63 | //BTGInvocationEventBubble(悬浮小球) 64 | //BTGInvocationEventShake(摇一摇) 65 | //BTGInvocationEventNone(静默) 66 | Bugtags.start(BUGTAGS_APP_KEY, this, Bugtags.BTGInvocationEventNone, options); 67 | 68 | 69 | } 70 | 71 | @Override 72 | protected void onAppExit() { 73 | 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/SplashActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo; 2 | 3 | import android.os.Bundle; 4 | import android.os.Handler; 5 | import android.widget.TextView; 6 | 7 | import com.bailiangjin.utilslibrary.utils.app.AppUtils; 8 | import com.bailiangjin.demo.base.BaseActivity; 9 | 10 | /** 11 | * Splash页 12 | */ 13 | public class SplashActivity extends BaseActivity 14 | { 15 | 16 | private TextView tv_app_version_name; 17 | 18 | @Override 19 | protected int getLayoutResId() 20 | { 21 | return R.layout.activity_splash; 22 | } 23 | 24 | @Override 25 | protected void beforeViewBind(Bundle savedInstanceState) { 26 | 27 | } 28 | 29 | 30 | @Override 31 | protected void initView(Bundle savedInstanceState) { 32 | 33 | hideCommonBaseTitle(); 34 | tv_app_version_name = (TextView) findViewById(R.id.tv_app_version_name); 35 | } 36 | 37 | @Override 38 | protected void initData(Bundle savedInstanceState) { 39 | tv_app_version_name.setText(AppUtils.getCurrentAppVersionName()); 40 | 41 | //跳转到 主页 42 | new Handler().postDelayed(new Runnable() 43 | { 44 | @Override 45 | public void run() 46 | { 47 | MainActivity.start(SplashActivity.this); 48 | SplashActivity.this.finish(); 49 | } 50 | }, 1000); 51 | 52 | } 53 | 54 | 55 | 56 | 57 | 58 | } 59 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/activity/logicutils/AccountUtils.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.activity.logicutils; 2 | 3 | import com.bailiangjin.utilslibrary.constant.SuperSPKey; 4 | import com.bailiangjin.utilslibrary.utils.SPUtils; 5 | import com.bailiangjin.demo.constants.SPKey; 6 | 7 | /** 8 | * Author: liangjin.bai 9 | * Email: bailiangjin@gmail.com 10 | * Create Time: 2015/12/10 14:09 11 | */ 12 | public class AccountUtils { 13 | 14 | /** 15 | * 账户信息登出 16 | * 17 | * @return 18 | */ 19 | public static boolean logout() { 20 | 21 | // SPUtils.remove(SuperSPKey.USER_NAME); 22 | //清空存储的密码 23 | SPUtils.remove(SPKey.PASSWORD); 24 | //清空是否清楚密码勾选框状态 25 | SPUtils.remove(SPKey.SAVEPWD); 26 | return true; 27 | } 28 | 29 | 30 | /** 31 | * 保存登录信息 32 | * 33 | * @param userName 用户名 34 | * @param password 密码 35 | * @param isSavePassword 是否记住密码 36 | */ 37 | public static void saveLoginInfo(String userName, String password, boolean isSavePassword) { 38 | SPUtils.putString(SuperSPKey.USER_NAME, userName); 39 | SPUtils.putString(SuperSPKey.PASSWORD, isSavePassword ? password : ""); 40 | SPUtils.putBoolean(SuperSPKey.SAVEPWD, isSavePassword); 41 | 42 | } 43 | 44 | public static String getUserName() { 45 | return SPUtils.getString(SuperSPKey.USER_NAME); 46 | } 47 | 48 | public static String getPassword() { 49 | return SPUtils.getString(SuperSPKey.PASSWORD); 50 | } 51 | 52 | public static boolean isSavePassword() { 53 | return SPUtils.getBoolean(SuperSPKey.SAVEPWD); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/aliandroidguide/Test.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.aliandroidguide; 2 | 3 | /** 4 | * TODD:添加类注释 5 | * 6 | * @author bailiangjin 7 | * @date 2018/3/6 8 | */ 9 | 10 | public class Test { 11 | } 12 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/aliandroidguide/broadcast/ILocalBroadcastservice.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.aliandroidguide.broadcast; 2 | 3 | import android.content.Context; 4 | import android.support.v4.content.LocalBroadcastManager; 5 | 6 | /** 7 | * TODD:添加类注释 8 | * 9 | * @author bailiangjin 10 | * @date 2018/3/6 11 | */ 12 | 13 | public interface ILocalBroadcastservice { 14 | 15 | 16 | /** 17 | * 获取 LocalBroadcastManager 18 | * @param appContext app全局上下文 19 | * @return 20 | */ 21 | LocalBroadcastManager getLocalBroadcastManager(Context appContext); 22 | } 23 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/aliandroidguide/broadcast/LocalBroadcastService.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.aliandroidguide.broadcast; 2 | 3 | import android.content.Context; 4 | import android.support.v4.content.LocalBroadcastManager; 5 | 6 | /** 7 | * TODD:添加类注释 8 | * 9 | * @author bailiangjin 10 | * @date 2018/3/6 11 | */ 12 | 13 | public class LocalBroadcastService implements ILocalBroadcastservice{ 14 | 15 | 16 | @Override 17 | public LocalBroadcastManager getLocalBroadcastManager(Context appContext) { 18 | LocalBroadcastManager localBroadcastManager=getLocalBroadcastManager(appContext); 19 | return localBroadcastManager; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/app/AppManager.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.app; 2 | 3 | import android.app.Activity; 4 | import android.content.Intent; 5 | 6 | import com.bailiangjin.demo.R; 7 | 8 | /** 9 | * 应用程序Activity管理类:用于Activity管理和应用程序 10 | */ 11 | public class AppManager { 12 | // 用来存放所有打开的activity,以便退出便利关闭 13 | 14 | private static AppManager instance; 15 | 16 | private AppManager() { 17 | } 18 | 19 | /** 20 | * 单一实例 21 | */ 22 | public static AppManager getInstance() { 23 | if (instance == null) { 24 | synchronized (AppManager.class) { 25 | instance = new AppManager(); 26 | } 27 | 28 | } 29 | return instance; 30 | } 31 | 32 | /** 33 | * activity 启动 34 | * 35 | * @param activity 36 | * @param intent 37 | */ 38 | public void startActivity(Activity activity, Intent intent) { 39 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 40 | // appIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 41 | activity.startActivity(intent); 42 | activity.overridePendingTransition(R.anim.activity_in, R.anim.activity_out); 43 | } 44 | // 45 | // public void startActivityForResult(Activity activity, Intent intent, int requestCode) { 46 | // intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 47 | // activity.startActivityForResult(intent, requestCode); 48 | // activity.overridePendingTransition(R.anim.activity_in, R.anim.activity_out); 49 | // } 50 | 51 | 52 | 53 | 54 | // /** 55 | // * 注销当前账户 56 | // */ 57 | // public void logout() { 58 | // try { 59 | // finishAllActivityExceptLoginAndMain(); 60 | // } catch (Exception e) { 61 | // } 62 | // } 63 | 64 | // /** 65 | // * 被踢出群 66 | // */ 67 | // public void kickOut(boolean isConnect) 68 | // { 69 | // ArrayList finishList = new ArrayList(); 70 | // if (isConnect) 71 | // { 72 | // for (int i = 0, size = list_activity.size(); i < size; i++) 73 | // { 74 | // if (null != list_activity.get(i) && !(list_activity.get(i) instanceof MainActivity)) 75 | // { 76 | // finishList.add(list_activity.get(i)); 77 | // list_activity.get(i).finish(); 78 | // } 79 | // } 80 | // } 81 | // else 82 | // { 83 | // for (int i = 0, size = list_activity.size(); i < size; i++) 84 | // { 85 | // if (null != list_activity.get(i) && !(list_activity.get(i) instanceof LoginActivity)) 86 | // { 87 | // finishList.add(list_activity.get(i)); 88 | // list_activity.get(i).finish(); 89 | // } 90 | // } 91 | // } 92 | // list_activity.removeAll(finishList); 93 | // } 94 | 95 | } -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/base/BaseFragment.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.base; 2 | 3 | import android.view.View; 4 | 5 | import com.bailiangjin.uilibrary.fragment.SuperBaseFragment; 6 | 7 | 8 | /** 9 | * Author: liangjin.bai 10 | * Email: bailiangjin@gmail.com 11 | * Create Time: 2015/10/12 11:39 12 | */ 13 | public abstract class BaseFragment extends SuperBaseFragment { 14 | 15 | @Override 16 | public String getScreenId() { 17 | return null; 18 | } 19 | 20 | @Override 21 | public void onScreenResume(String screenId) { 22 | 23 | } 24 | 25 | @Override 26 | protected void beforeViewBind() { 27 | 28 | } 29 | 30 | @Override 31 | protected void initListener() { 32 | 33 | } 34 | 35 | @Override 36 | protected void bindView(View view) { 37 | 38 | } 39 | 40 | @Override 41 | protected void unBindView() { 42 | 43 | } 44 | 45 | 46 | } 47 | 48 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/config/EnumInterFace.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.config; 2 | 3 | /** 4 | * 使用接口组织枚举 5 | * 6 | * @author blj 7 | * 8 | */ 9 | public interface EnumInterFace 10 | { 11 | enum Coffee implements EnumInterFace 12 | { 13 | BLACK_COFFEE, DECAF_COFFEE, LATTE, CAPPUCCINO 14 | } 15 | 16 | enum Visiable implements EnumInterFace 17 | { 18 | VISIABLE, GONE, INVISIABLE 19 | } 20 | 21 | enum Dessert implements EnumInterFace 22 | { 23 | FRUIT, CAKE, GELATO 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/config/UrlUtils.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.config; 2 | 3 | import com.bailiangjin.demo.R; 4 | import com.bailiangjin.demo.MyApplication; 5 | 6 | 7 | /** 8 | * Url Tools 9 | * Author: liangjin.bai 10 | * Email: bailiangjin@gmail.com 11 | * Create Time: 2015/9/22 17:46 12 | */ 13 | public class UrlUtils { 14 | 15 | 16 | /** 17 | * get collect base url 18 | * 19 | * @return 20 | */ 21 | public static String getBaseUrl() { 22 | return MyApplication.getContext().getResources().getString(R.string.collectUrl); 23 | 24 | } 25 | 26 | /** 27 | * get H5 base url 28 | * 29 | * @return 30 | */ 31 | public static String getBaseUrl2() { 32 | return MyApplication.getContext().getResources().getString(R.string.ccUrl); 33 | 34 | } 35 | 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/constants/BroadcastAction.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.constants; 2 | 3 | import com.bailiangjin.utilslibrary.constant.SuperBroadcastAction; 4 | 5 | /** 6 | * Author: liangjin.bai 7 | * Email: bailiangjin@gmail.com 8 | * Create Time: 2015/10/13 16:34 9 | */ 10 | public class BroadcastAction extends SuperBroadcastAction { 11 | /** 12 | * 数据推送广播Action 13 | */ 14 | public static final String PUSH_DATA_ACTION = "data.push.action"; 15 | /** 16 | * 应用升级广播Action 17 | */ 18 | public static final String NEW_VERSION_ACTION = "apk.update.action"; 19 | } 20 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/constants/IntentKey.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.constants; 2 | 3 | /** 4 | * intent 传值的 key 5 | * 作者:bailiangjin bailiangjin@gmail.com 6 | * 创建时间:16/2/18 13:25 7 | */ 8 | public class IntentKey { 9 | 10 | /** 11 | * 用户名 12 | */ 13 | public static final String USER_NAME = "USER_NAME"; 14 | 15 | /** 16 | * 密码 17 | */ 18 | public static final String PASSWORD = "PASSWORD"; 19 | 20 | /** 21 | * isNewUser 是否为新用户 22 | */ 23 | public static final String IS_NEW_USER = "IS_NEW_USER"; 24 | } 25 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/constants/LoginResult.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.constants; 2 | 3 | /** 4 | * 登录结果状态码 5 | * 6 | * @author blj 7 | * 8 | */ 9 | public final class LoginResult 10 | { 11 | // SUCCESS,FAILED,ERRROR 12 | /** 13 | * 登录成功 14 | */ 15 | public static final int SUCCESS = 100; 16 | /** 17 | * 登录失败 18 | */ 19 | public static final int FAILED = 101; 20 | /** 21 | * 登录异常 22 | */ 23 | public static final int ERRROR = 102; 24 | 25 | } 26 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/constants/SPKey.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.constants; 2 | 3 | import com.bailiangjin.utilslibrary.constant.SuperSPKey; 4 | 5 | /** 6 | * 7 | SharedPreferences 键值类 8 | * 9 | * @author blj 10 | * 11 | */ 12 | public class SPKey extends SuperSPKey 13 | { 14 | } 15 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/db/MySQLiteOpenHelper.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.db; 2 | 3 | import android.content.Context; 4 | import android.database.Cursor; 5 | import android.database.sqlite.SQLiteDatabase; 6 | import android.database.sqlite.SQLiteDatabase.CursorFactory; 7 | import android.database.sqlite.SQLiteOpenHelper; 8 | 9 | public class MySQLiteOpenHelper extends SQLiteOpenHelper 10 | { 11 | 12 | public static final String DATABASE_NAME = "build.db"; 13 | private static final int DATABASE_VERSION = 1; 14 | private static final String TABLE_PERSON = "person"; 15 | private SQLiteDatabase db = null; 16 | private Cursor cursor = null; 17 | 18 | public MySQLiteOpenHelper(Context context, String name, CursorFactory factory, int version) 19 | { 20 | super(context, name, factory, version); 21 | db = this.getWritableDatabase(); 22 | } 23 | 24 | public MySQLiteOpenHelper(Context context) 25 | { 26 | super(context, DATABASE_NAME, null, DATABASE_VERSION); 27 | db = this.getWritableDatabase(); 28 | } 29 | 30 | @Override 31 | public void onCreate(SQLiteDatabase db) 32 | { 33 | this.db = db; 34 | db.execSQL("CREATE TABLE " + TABLE_PERSON + " (" + "id" + " text not null, " + "name" + " text not null, " 35 | + "age" + " text" + ");"); 36 | 37 | } 38 | 39 | @Override 40 | public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 41 | { 42 | // TODO Auto-generated method stub 43 | 44 | } 45 | 46 | } 47 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/db/dao/PersonDao.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.db.dao; 2 | 3 | import android.content.Context; 4 | import android.database.sqlite.SQLiteDatabase; 5 | 6 | import com.bailiangjin.demo.db.MySQLiteOpenHelper; 7 | import com.bailiangjin.demo.db.modle.Person; 8 | 9 | public class PersonDao 10 | { 11 | private static PersonDao instance = null; 12 | 13 | private MySQLiteOpenHelper helper; 14 | private final String PERSON_TABLE_NAME = "PERSON"; 15 | 16 | public static PersonDao getInstance(Context context) 17 | { 18 | if (null == instance) 19 | { 20 | synchronized (PersonDao.class) 21 | { 22 | if (null == instance) 23 | { 24 | instance = new PersonDao(context); 25 | } 26 | } 27 | } 28 | return instance; 29 | } 30 | 31 | private PersonDao(Context context) 32 | { 33 | helper = new MySQLiteOpenHelper(context); 34 | } 35 | 36 | public boolean insert(Person person) 37 | { 38 | SQLiteDatabase db = helper.getWritableDatabase(); 39 | // db.insert(PERSON_TABLE_NAME, nullColumnHack, values) 40 | 41 | return false; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/db/modle/Person.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.db.modle; 2 | 3 | import java.io.Serializable; 4 | 5 | public class Person implements Serializable 6 | { 7 | /** 8 | * 9 | */ 10 | private static final long serialVersionUID = 1L; 11 | 12 | private String id; 13 | private String name; 14 | private int age; 15 | private String sex; 16 | private String job; 17 | 18 | public String getId() 19 | { 20 | return id; 21 | } 22 | 23 | public void setId(String id) 24 | { 25 | this.id = id; 26 | } 27 | 28 | public String getName() 29 | { 30 | return name; 31 | } 32 | 33 | public void setName(String name) 34 | { 35 | this.name = name; 36 | } 37 | 38 | public int getAge() 39 | { 40 | return age; 41 | } 42 | 43 | public void setAge(int age) 44 | { 45 | this.age = age; 46 | } 47 | 48 | public String getSex() 49 | { 50 | return sex; 51 | } 52 | 53 | public void setSex(String sex) 54 | { 55 | this.sex = sex; 56 | } 57 | 58 | public String getJob() 59 | { 60 | return job; 61 | } 62 | 63 | public void setJob(String job) 64 | { 65 | this.job = job; 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/ImageLoadActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo; 2 | 3 | import android.os.Bundle; 4 | import android.widget.ImageView; 5 | 6 | import com.bailiangjin.demo.R; 7 | import com.bailiangjin.demo.base.BaseActivity; 8 | import com.bailiangjin.utilslibrary.utils.ui.ImageLoadUtils; 9 | 10 | /** 11 | * @author bailiangjin 12 | */ 13 | public class ImageLoadActivity extends BaseActivity { 14 | 15 | ImageView iv_org; 16 | ImageView iv_round; 17 | ImageView iv_rounded_rectangle; 18 | 19 | private static final String picUrl = "https://raw.githubusercontent.com/bailiangjin/bailiangjin.github.io/master/dev/download/picture/HeadPortrait.jpeg"; 20 | 21 | 22 | @Override 23 | protected int getLayoutResId() { 24 | return R.layout.activity_image_load; 25 | } 26 | 27 | @Override 28 | protected void beforeViewBind(Bundle savedInstanceState) { 29 | 30 | } 31 | 32 | @Override 33 | protected void initView(Bundle savedInstanceState) { 34 | 35 | titleBarBuilder.setTitleText("图片加载示例"); 36 | iv_org = (ImageView) findViewById(R.id.iv_org); 37 | iv_round = (ImageView) findViewById(R.id.iv_round); 38 | iv_rounded_rectangle = (ImageView) findViewById(R.id.iv_rounded_rectangle); 39 | 40 | //普通加载效果 41 | ImageLoadUtils.INSTANCE.loadImageView(iv_org, picUrl); 42 | //圆形图片加载效果 43 | ImageLoadUtils.INSTANCE.loadCircleImageView(iv_round, picUrl); 44 | //圆角加载效果 45 | ImageLoadUtils.INSTANCE.loadRoundedImageView(iv_rounded_rectangle, picUrl); 46 | 47 | } 48 | 49 | @Override 50 | protected void initData(Bundle savedInstanceState) { 51 | 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/catche/CacheUtils.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.catche; 2 | 3 | import com.bailiangjin.utilslibrary.utils.app.AppUtils; 4 | import com.bailiangjin.utilslibrary.utils.file.SerializeTools; 5 | import com.bailiangjin.demo.model.TaskItemBean; 6 | 7 | /** 8 | * 封装的缓存类 可在此处添加其他数据缓存方法 9 | * Created by bailiangjin on 16/3/25. 10 | */ 11 | public class CacheUtils { 12 | 13 | public static final String DEMO_CATCH_FILE = "home_page_file"; 14 | 15 | 16 | /** 17 | * 缓存数据 18 | * @param taskItemBean 19 | * @return 20 | */ 21 | public static boolean cacheData(TaskItemBean taskItemBean){ 22 | return SerializeTools.cacheObj(AppUtils.getContext(), DEMO_CATCH_FILE,taskItemBean); 23 | } 24 | 25 | /** 26 | * 从缓存中获取 缓存数据 27 | * @return 28 | */ 29 | public static TaskItemBean getCacheData(){ 30 | return SerializeTools.getObj(AppUtils.getContext(), DEMO_CATCH_FILE, TaskItemBean.class); 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dbtest/DatabaseActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dbtest; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | import android.view.View; 6 | 7 | import com.bailiangjin.utilslibrary.utils.LogUtils; 8 | import com.bailiangjin.demo.R; 9 | import com.bailiangjin.demo.base.BaseActivity; 10 | import com.bailiangjin.demo.db.dao.PersonDao; 11 | import com.bailiangjin.demo.db.modle.Person; 12 | 13 | public class DatabaseActivity extends BaseActivity { 14 | 15 | 16 | private static final int INSERT_USER_MSG_WHAT = 101; 17 | private static final int UPDATE_USER_MSG_WHAT = 102; 18 | private static final int DELETE_USER_MSG_WHAT = 103; 19 | private static final int SEARCH_USER_MSG_WHAT = 104; 20 | 21 | @Override 22 | protected int getLayoutResId() { 23 | return R.layout.activity_database; 24 | } 25 | 26 | @Override 27 | protected void beforeViewBind(Bundle savedInstanceState) { 28 | 29 | } 30 | 31 | @Override 32 | protected void initView(Bundle savedInstanceState) { 33 | titleBarBuilder.setTitleText("测试数据库"); 34 | } 35 | 36 | @Override 37 | protected void initData(Bundle savedInstanceState) { 38 | 39 | } 40 | 41 | 42 | public void onClick_insert(View v) { 43 | 44 | LogUtils.d("执行插入操作"); 45 | 46 | } 47 | 48 | public void onClick_update(View v) { 49 | 50 | LogUtils.d("执行更新操作"); 51 | 52 | } 53 | 54 | public void onClick_delete(View v) { 55 | 56 | LogUtils.d("执行删除操作"); 57 | 58 | } 59 | 60 | public void onClick_search(View v) { 61 | 62 | LogUtils.d("执行搜索操作"); 63 | 64 | } 65 | 66 | 67 | @Override 68 | protected void handleMsg(Message msg) { 69 | switch (msg.what) { 70 | case INSERT_USER_MSG_WHAT: 71 | 72 | if (null != msg.obj && msg.obj instanceof Person) { 73 | PersonDao dao = PersonDao.getInstance(DatabaseActivity.this); 74 | if (dao.insert((Person) msg.obj)) { 75 | LogUtils.d("插入数据成功:" + Person.class.getName()); 76 | } 77 | } else { 78 | LogUtils.e("插入数据类型错误,为null或不是:" + Person.class.getName()); 79 | } 80 | 81 | break; 82 | case UPDATE_USER_MSG_WHAT: 83 | break; 84 | case DELETE_USER_MSG_WHAT: 85 | break; 86 | case SEARCH_USER_MSG_WHAT: 87 | break; 88 | 89 | default: 90 | break; 91 | } 92 | super.handleMsg(msg); 93 | } 94 | 95 | 96 | } 97 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/DetailActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | 6 | import com.bailiangjin.demo.R; 7 | import com.bailiangjin.demo.base.BaseActivity; 8 | 9 | /** 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2015/12/29 11:14 13 | */ 14 | public class DetailActivity extends BaseActivity{ 15 | @Override 16 | protected int getLayoutResId() { 17 | return R.layout.activity_dynamic; 18 | } 19 | 20 | @Override 21 | protected void beforeViewBind(Bundle savedInstanceState) { 22 | 23 | } 24 | 25 | @Override 26 | protected void initView(Bundle savedInstanceState) { 27 | // getIntent().getStringExtra("name"); 28 | 29 | shortToast("detail page:" + getIntent().getStringExtra("name")); 30 | 31 | } 32 | 33 | @Override 34 | protected void initData(Bundle savedInstanceState) { 35 | 36 | } 37 | 38 | 39 | 40 | @Override 41 | protected void handleMsg(Message msg) { 42 | 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/adapter/AbsBaseBtnGroupAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.adapter; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.BaseAdapter; 8 | import android.widget.TextView; 9 | 10 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 11 | 12 | import java.util.List; 13 | 14 | /** 15 | * 抽象类 16 | * 按钮列表Adapter基类 17 | * 子类只需设置引用的 条目layoutResId 和文本TextView ResId 即可 如没有文本条目 子类 getItemTvResId 请返回-1 18 | * Author: liangjin.bai 19 | * Email: bailiangjin@gmail.com 20 | * Create Time: 2015/12/28 16:09 21 | */ 22 | public abstract class AbsBaseBtnGroupAdapter extends BaseAdapter { 23 | 24 | private LayoutInflater mInflater; 25 | private int itemLayoutResId; 26 | private int itemTvResId; 27 | 28 | private List list; 29 | 30 | 31 | public AbsBaseBtnGroupAdapter(Context context, List list) { 32 | this.list = list; 33 | this.itemLayoutResId = getItemLayoutResId(); 34 | this.itemTvResId = getItemTvResId(); 35 | mInflater = LayoutInflater.from(context); 36 | } 37 | 38 | 39 | @Override 40 | public int getCount() { 41 | return null == list ? 0 : list.size(); 42 | } 43 | 44 | @Override 45 | public Object getItem(int position) { 46 | return null == list && !list.isEmpty() ? null : list.get(position); 47 | } 48 | 49 | @Override 50 | public long getItemId(int position) { 51 | return position; 52 | } 53 | 54 | @Override 55 | public View getView(int position, View convertView, ViewGroup parent) { 56 | convertView = mInflater.inflate(itemLayoutResId, null); 57 | 58 | //找到条目的文本字段 给该TV设置文本内容 如没有文本条目 子类 getItemTvResId 请返回-1 59 | if (0 != itemTvResId && -1 != itemTvResId) { 60 | TextView mTextView = (TextView) convertView.findViewById(itemTvResId); 61 | mTextView.setText((CharSequence) list.get(position).getIndexText()); 62 | } 63 | 64 | return convertView; 65 | } 66 | 67 | /** 68 | * 获取条目layoutid 69 | * 70 | * @return 71 | */ 72 | protected abstract int getItemLayoutResId(); 73 | 74 | /** 75 | * 获取条目 文本id 如没有文本条目 子类 getItemTvResId 请返回-1 76 | * 77 | * @return 78 | */ 79 | protected abstract int getItemTvResId(); 80 | } 81 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/adapter/BtnPhotoGroupAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.adapter; 2 | 3 | import android.content.Context; 4 | 5 | import com.bailiangjin.demo.R; 6 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 拍照按钮适配器 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/12/28 16:09 15 | */ 16 | public class BtnPhotoGroupAdapter extends AbsBaseBtnGroupAdapter { 17 | 18 | 19 | public BtnPhotoGroupAdapter(Context context, List list) { 20 | super(context, list); 21 | } 22 | 23 | @Override 24 | protected int getItemLayoutResId() { 25 | return R.layout.item_btn_photo_gridview; 26 | } 27 | 28 | @Override 29 | protected int getItemTvResId() { 30 | return R.id.tv_name; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/adapter/BtnSkipGroupAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.adapter; 2 | 3 | import android.content.Context; 4 | 5 | import com.bailiangjin.demo.R; 6 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * 跳转页面按钮适配器 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/12/28 16:09 15 | */ 16 | public class BtnSkipGroupAdapter extends AbsBaseBtnGroupAdapter { 17 | 18 | 19 | public BtnSkipGroupAdapter(Context context, List list) { 20 | super(context, list); 21 | } 22 | 23 | @Override 24 | protected int getItemLayoutResId() { 25 | return R.layout.item_btn_skip_gridview; 26 | } 27 | 28 | @Override 29 | protected int getItemTvResId() { 30 | return R.id.tv_name; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/databean/ClassDataBean.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.databean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 采集大类 Json数据 实体类 7 | * Author: liangjin.bai 8 | * Email: bailiangjin@gmail.com 9 | * Create Time: 2016/1/26 15:54 10 | */ 11 | public class ClassDataBean { 12 | 13 | /** 14 | * 采集品类id 15 | */ 16 | private String id; 17 | 18 | /** 19 | * 采集大类名称 20 | */ 21 | private String name; 22 | /** 23 | * 该采集类包含的小类采集页面 List 24 | */ 25 | private List pageDataBeanList; 26 | 27 | public String getId() { 28 | return id; 29 | } 30 | 31 | public void setId(String id) { 32 | this.id = id; 33 | } 34 | 35 | public String getName() { 36 | return name; 37 | } 38 | 39 | public void setName(String name) { 40 | this.name = name; 41 | } 42 | 43 | public List getPageDataBeanList() { 44 | return pageDataBeanList; 45 | } 46 | 47 | public void setPageDataBeanList(List pageDataBeanList) { 48 | this.pageDataBeanList = pageDataBeanList; 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/databean/PageDataBean.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.databean; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.ViewBean; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * 页面完整参数Bean 该类对应一个完整的动态页面 9 | *

10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2015/12/28 14:23 13 | */ 14 | public class PageDataBean { 15 | 16 | /** 17 | * 页面基本参数 18 | */ 19 | private PageInfo pageInfo; 20 | 21 | /** 22 | * 界面元素列表 23 | */ 24 | private List viewBeanList; 25 | 26 | public PageDataBean() { 27 | 28 | } 29 | 30 | public PageDataBean(PageInfo pageInfo, List viewBeanList) { 31 | this.pageInfo = pageInfo; 32 | this.viewBeanList = viewBeanList; 33 | } 34 | 35 | 36 | 37 | public PageInfo getPageInfo() { 38 | return pageInfo; 39 | } 40 | 41 | public void setPageInfo(PageInfo pageInfo) { 42 | this.pageInfo = pageInfo; 43 | } 44 | 45 | public List getViewBeanList() { 46 | return viewBeanList; 47 | } 48 | 49 | public void setViewBeanList(List viewBeanList) { 50 | this.viewBeanList = viewBeanList; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/databean/ProjectDataBean.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.databean; 2 | 3 | import java.util.List; 4 | 5 | /** 6 | * 采集项目Bean 7 | * 8 | * Author: liangjin.bai 9 | * Email: bailiangjin@gmail.com 10 | * Create Time: 2016/1/26 15:55 11 | */ 12 | public class ProjectDataBean { 13 | 14 | /** 15 | * 项目id 16 | */ 17 | private String id; 18 | 19 | /** 20 | * 版本号 21 | */ 22 | private String versionNo; 23 | 24 | /** 25 | * 拍摄大类 List 26 | */ 27 | private List classDataBeanList; 28 | 29 | public String getId() { 30 | return id; 31 | } 32 | 33 | public void setId(String id) { 34 | this.id = id; 35 | } 36 | 37 | public String getVersionNo() { 38 | return versionNo; 39 | } 40 | 41 | public void setVersionNo(String versionNo) { 42 | this.versionNo = versionNo; 43 | } 44 | 45 | public List getClassDataBeanList() { 46 | return classDataBeanList; 47 | } 48 | 49 | public void setClassDataBeanList(List classDataBeanList) { 50 | this.classDataBeanList = classDataBeanList; 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/base/AbsSelectedItem.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.base; 2 | 3 | /** 4 | * Item基类 具体Item包括GroupItem 都是BaseItem的子类 5 | * Author: liangjin.bai 6 | * Email: bailiangjin@gmail.com 7 | * Create Time: 2016/1/6 16:05 8 | */ 9 | public abstract class AbsSelectedItem extends BaseItem{ 10 | private boolean selected; 11 | 12 | public boolean isSelected() { 13 | return selected; 14 | } 15 | 16 | public void setSelected(boolean selected) { 17 | this.selected = selected; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/base/ExtraParam.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.base; 2 | 3 | /** 4 | * 扩展字段 类 以后改动的扩展字段可以统一从此处添加 5 | * Author: liangjin.bai 6 | * Email: bailiangjin@gmail.com 7 | * Create Time: 2016/1/20 11:19 8 | */ 9 | public class ExtraParam { 10 | 11 | 12 | 13 | 14 | private String extra1; 15 | private String extra2; 16 | private String extra3; 17 | private String extra4; 18 | 19 | private String extra5; 20 | 21 | 22 | public String getExtra1() { 23 | return extra1; 24 | } 25 | 26 | public void setExtra1(String extra1) { 27 | this.extra1 = extra1; 28 | } 29 | 30 | public String getExtra2() { 31 | return extra2; 32 | } 33 | 34 | public void setExtra2(String extra2) { 35 | this.extra2 = extra2; 36 | } 37 | 38 | public String getExtra3() { 39 | return extra3; 40 | } 41 | 42 | public void setExtra3(String extra3) { 43 | this.extra3 = extra3; 44 | } 45 | 46 | public String getExtra4() { 47 | return extra4; 48 | } 49 | 50 | public void setExtra4(String extra4) { 51 | this.extra4 = extra4; 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/group/BtnGroup.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.group; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 4 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.type.ViewType; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * 按钮群组 GridView 11 | * Author: liangjin.bai 12 | * Email: bailiangjin@gmail.com 13 | * Create Time: 2016/1/6 16:12 14 | */ 15 | public class BtnGroup extends BaseItem { 16 | 17 | private int btnGroupType; 18 | 19 | private List btnList; 20 | 21 | public List getBtnList() { 22 | return btnList; 23 | } 24 | 25 | public void setBtnList(List btnList) { 26 | this.btnList = btnList; 27 | } 28 | 29 | public int getBtnGroupType() { 30 | return btnGroupType; 31 | } 32 | 33 | public void setBtnGroupType(int btnGroupType) { 34 | this.btnGroupType = btnGroupType; 35 | } 36 | 37 | @Override 38 | public void setDefaultViewType() { 39 | 40 | setViewType(ViewType.BTN_GROUP); 41 | } 42 | 43 | 44 | } 45 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/group/CBGroup.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.group; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 4 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.type.ViewType; 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.CBItem; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * CheckBox Group 11 | * Author: liangjin.bai 12 | * Email: bailiangjin@gmail.com 13 | * Create Time: 2016/1/6 16:09 14 | */ 15 | public class CBGroup extends BaseItem { 16 | 17 | private List cbList; 18 | 19 | public List getCbList() { 20 | 21 | return cbList; 22 | } 23 | 24 | public void setCbList(List cbList) { 25 | this.cbList = cbList; 26 | } 27 | 28 | @Override 29 | public void setDefaultViewType() { 30 | setViewType(ViewType.CB_GROUP); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/group/RBGroup.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.group; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 4 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.RBItem; 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.type.ViewType; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * RadioButton Group 11 | * Author: liangjin.bai 12 | * Email: bailiangjin@gmail.com 13 | * Create Time: 2016/1/6 16:08 14 | */ 15 | public class RBGroup extends BaseItem { 16 | 17 | private List rbList; 18 | 19 | public List getRbList() { 20 | return rbList; 21 | } 22 | 23 | public void setRbList(List rbList) { 24 | this.rbList = rbList; 25 | } 26 | 27 | @Override 28 | public void setDefaultViewType() { 29 | setViewType(ViewType.RB_GROUP); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/item/CBItem.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.item; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.type.ViewType; 4 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.AbsSelectedItem; 5 | 6 | /** 7 | * Author: liangjin.bai 8 | * Email: bailiangjin@gmail.com 9 | * Create Time: 2016/1/6 16:07 10 | */ 11 | public class CBItem extends AbsSelectedItem { 12 | @Override 13 | public void setDefaultViewType() { 14 | setViewType(ViewType.CB); 15 | } 16 | 17 | 18 | } 19 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/item/EditTextItem.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.item; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 4 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.type.ViewType; 5 | 6 | /** 7 | * Author: liangjin.bai 8 | * Email: bailiangjin@gmail.com 9 | * Create Time: 2016/1/6 16:00 10 | */ 11 | public class EditTextItem extends BaseItem { 12 | private String content; 13 | private String hint; 14 | 15 | 16 | @Override 17 | public void setDefaultViewType() { 18 | setViewType(ViewType.ET); 19 | } 20 | 21 | public String getContent() { 22 | return content; 23 | } 24 | 25 | public void setContent(String content) { 26 | this.content = content; 27 | } 28 | 29 | public String getHint() { 30 | return hint; 31 | } 32 | 33 | public void setHint(String hint) { 34 | this.hint = hint; 35 | } 36 | 37 | 38 | } 39 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/item/RBItem.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.item; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.type.ViewType; 4 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.AbsSelectedItem; 5 | 6 | /** 7 | * Author: liangjin.bai 8 | * Email: bailiangjin@gmail.com 9 | * Create Time: 2016/1/6 16:03 10 | */ 11 | public class RBItem extends AbsSelectedItem { 12 | 13 | @Override 14 | public void setDefaultViewType() { 15 | setViewType(ViewType.RB); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/item/TextItem.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.item; 2 | 3 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.type.ViewType; 4 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 5 | 6 | /** 7 | * Author: liangjin.bai 8 | * Email: bailiangjin@gmail.com 9 | * Create Time: 2016/1/6 15:57 10 | */ 11 | public class TextItem extends BaseItem { 12 | 13 | /** 14 | * 文本样式类型 15 | */ 16 | private int txtType; 17 | 18 | /** 19 | * 内容类型 普通文本/邮箱/密码 等等 20 | */ 21 | private int contentType; 22 | 23 | public int getTxtType() { 24 | return txtType; 25 | } 26 | 27 | public void setTxtType(int txtType) { 28 | this.txtType = txtType; 29 | } 30 | 31 | 32 | @Override 33 | public void setDefaultViewType() { 34 | setViewType(ViewType.TEXT); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/type/BtnGroupType.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.type; 2 | 3 | /** 4 | * 按钮 Group 类型 5 | * Author: liangjin.bai 6 | * Email: bailiangjin@gmail.com 7 | * Create Time: 2016/1/21 14:19 8 | */ 9 | public class BtnGroupType { 10 | 11 | /** 12 | * 跳转按钮 Group 13 | */ 14 | public static final int SKIP_BTN_GROUP =0; 15 | 16 | /** 17 | * 拍照按钮 Group 18 | */ 19 | public static final int PHOTO_BTN_GROUP =1; 20 | } 21 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/type/BtnType.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.type; 2 | 3 | /** 4 | * 按钮类型 5 | * Author: liangjin.bai 6 | * Email: bailiangjin@gmail.com 7 | * Create Time: 2016/1/19 9:58 8 | */ 9 | public class BtnType { 10 | /** 11 | * 跳转按钮 12 | */ 13 | public static final int SKIP = 0; 14 | 15 | /** 16 | * 保存按钮 17 | */ 18 | public static final int SAVE = 1; 19 | 20 | /** 21 | * 拍照按钮 22 | */ 23 | public static final int PHOTO = 2; 24 | } 25 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/type/TxtType.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.type; 2 | 3 | /** 4 | * 5 | * 文本样式类型类 6 | * 7 | * Author: liangjin.bai 8 | * Email: bailiangjin@gmail.com 9 | * Create Time: 2016/1/18 14:08 10 | */ 11 | public class TxtType { 12 | 13 | /** 14 | * 标题样式 居中 15 | */ 16 | public static final int TITLE =0; 17 | 18 | /** 19 | * 分类名样式 靠左 20 | */ 21 | public static final int CLASS_NAME =1; 22 | 23 | /** 24 | * 详细内容文本样式 居中 小字体 25 | */ 26 | public static final int CONTENT =2; 27 | } 28 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/type/ViewBeanType.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.type; 2 | 3 | /** 4 | * ViewBean 实际条目类型类:基于基本元素组合扩展出的实际使用类型类 5 | * Author: liangjin.bai 6 | * Email: bailiangjin@gmail.com 7 | * Create Time: 2016/1/6 17:08 8 | */ 9 | public class ViewBeanType { 10 | 11 | /** 12 | * 文本 13 | */ 14 | public static final int TEXT = 0; 15 | 16 | /** 17 | * 输入框 18 | */ 19 | public static final int ET = 1; 20 | 21 | /** 22 | * 按钮 23 | */ 24 | public static final int BTN = 2; 25 | 26 | /** 27 | * RadioButton Group 28 | * 29 | */ 30 | public static final int RB_GROUP = 3; 31 | 32 | /** 33 | * CheckBox Group 34 | */ 35 | public static final int CB_GROUP = 4; 36 | 37 | /** 38 | * 跳转按钮 列表 基于基本元素类型 ViewType.BTN_GROUP 扩展出的具体类型 39 | */ 40 | public static final int SKIP_BTN_GROUP = 5; 41 | 42 | /** 43 | * 拍照按钮 列表 基于基本元素类型 ViewType.BTN_GROUP 扩展出的具体类型 44 | */ 45 | public static final int PHOTO_BTN_GROUP = 6; 46 | } 47 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/bean/viewbean/type/ViewType.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.bean.viewbean.type; 2 | 3 | /** 4 | * 5 | * View基本元素 类型 6 | * Author: liangjin.bai 7 | * Email: bailiangjin@gmail.com 8 | * Create Time: 2016/1/6 17:08 9 | */ 10 | public class ViewType { 11 | 12 | /** 13 | * 文本 元素 14 | */ 15 | public static final int TEXT = 0; 16 | /** 17 | * 输入框 元素 18 | */ 19 | public static final int ET = 1; 20 | /** 21 | * 按钮 元素 22 | */ 23 | public static final int BTN = 2; 24 | /** 25 | * RadioButton 元素 26 | */ 27 | public static final int RB = 3; 28 | /** 29 | * CheckBox 元素 30 | */ 31 | public static final int CB = 4; 32 | 33 | /** 34 | * Button 群组 元素 35 | */ 36 | public static final int BTN_GROUP = 5; 37 | /** 38 | * RadioButton 群组 元素 39 | */ 40 | public static final int RB_GROUP = 6; 41 | /** 42 | * CheckBox 群组 元素 43 | */ 44 | public static final int CB_GROUP = 7; 45 | 46 | 47 | 48 | } 49 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/callback/MyOnClickListener.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.callback; 2 | 3 | /** 4 | * 列表点击事件回调 ListView && GridVIew 5 | * Author: liangjin.bai 6 | * Email: bailiangjin@gmail.com 7 | * Create Time: 2015/12/29 11:17 8 | */ 9 | public interface MyOnClickListener { 10 | 11 | /** 12 | * 点击事件 13 | * 14 | * @param position 点击位置 15 | */ 16 | public void onClick(final int position); 17 | } 18 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/generater/ViewGenerator.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.generater; 2 | 3 | 4 | import android.app.Activity; 5 | import android.view.View; 6 | 7 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.group.BtnGroup; 8 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.group.CBGroup; 9 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.group.RBGroup; 10 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 11 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.EditTextItem; 12 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.TextItem; 13 | 14 | /** 15 | * 16 | * View 生成器 接口 17 | * Author: liangjin.bai 18 | * Email: bailiangjin@gmail.com 19 | * Create Time: 2016/1/28 14:01 20 | */ 21 | public interface ViewGenerator { 22 | 23 | /** 24 | * 获取 文本条目View 25 | * @param context 26 | * @param textItem 27 | * @return 28 | */ 29 | public View getTextView(Activity context, TextItem textItem); 30 | 31 | /** 32 | * 获取 输入框条目View 33 | * @param context 34 | * @param editTextItem 35 | * @return 36 | */ 37 | public View getEditText(Activity context, EditTextItem editTextItem); 38 | 39 | /** 40 | * 获取 按钮条目View 41 | * @param context 42 | * @param btnItem 43 | * @return 44 | */ 45 | public View getButton(Activity context, BtnItem btnItem); 46 | 47 | /** 48 | * 获取 跳转按钮组条目View 49 | * @param context 50 | * @param btnGroup 51 | * @return 52 | */ 53 | public View getSkipBtnGroup(Activity context, BtnGroup btnGroup); 54 | 55 | /** 56 | * 获取 拍照按钮组条目View 57 | * @param context 58 | * @param btnGroup 59 | * @return 60 | */ 61 | public View getPhotoBtnGroup(Activity context, BtnGroup btnGroup); 62 | 63 | /** 64 | * 获取 单选按钮组条目View 65 | * @param context 66 | * @param rbGroup 67 | * @return 68 | */ 69 | public View getRbGroup(Activity context, RBGroup rbGroup); 70 | 71 | /** 72 | * 获取 多选按钮组条目View 73 | * @param context 74 | * @param cbGroup 75 | * @return 76 | */ 77 | public View getCbGroup(Activity context, CBGroup cbGroup); 78 | } 79 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/base/BaseButton.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.base; 2 | 3 | import android.content.Context; 4 | import android.widget.TextView; 5 | 6 | import com.bailiangjin.demo.R; 7 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 8 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 9 | import com.bailiangjin.demo.demo.dynamic.view.root.BaseView; 10 | 11 | /** 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/12/29 13:01 15 | */ 16 | public abstract class BaseButton extends BaseView { 17 | 18 | private TextView tv_index; 19 | 20 | private BtnItem btnItem; 21 | 22 | public BaseButton(Context context, BaseItem baseItem) { 23 | super(context, baseItem); 24 | } 25 | 26 | 27 | @Override 28 | protected int getLayoutId() { 29 | return R.layout.ctn_button; 30 | } 31 | 32 | @Override 33 | protected void initBase(BaseItem baseItem) { 34 | btnItem= (BtnItem) baseItem; 35 | } 36 | 37 | @Override 38 | protected void initView() { 39 | tv_index= (TextView) findViewById(R.id.tv_index); 40 | 41 | tv_index.setText(btnItem.getIndexText()); 42 | 43 | } 44 | 45 | @Override 46 | protected void initLogic() { 47 | 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/base/BaseCheckBox.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.base; 2 | 3 | import android.content.Context; 4 | 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 6 | import com.bailiangjin.demo.demo.dynamic.view.root.BaseView; 7 | 8 | /** 9 | * Author: liangjin.bai 10 | * Email: bailiangjin@gmail.com 11 | * Create Time: 2015/12/29 15:34 12 | */ 13 | public abstract class BaseCheckBox extends BaseView { 14 | 15 | 16 | public BaseCheckBox(Context context, BaseItem baseItem) { 17 | super(context, baseItem); 18 | } 19 | 20 | @Override 21 | protected int getLayoutId() { 22 | return 0; 23 | } 24 | 25 | @Override 26 | protected void initBase(BaseItem baseItem) { 27 | 28 | } 29 | 30 | @Override 31 | protected void initView() { 32 | 33 | } 34 | 35 | @Override 36 | protected void initLogic() { 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/base/BaseEditText.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.base; 2 | 3 | import android.content.Context; 4 | import android.widget.EditText; 5 | import android.widget.TextView; 6 | 7 | import com.bailiangjin.demo.R; 8 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 9 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.EditTextItem; 10 | import com.bailiangjin.demo.demo.dynamic.view.root.BaseView; 11 | 12 | /** 13 | * Author: liangjin.bai 14 | * Email: bailiangjin@gmail.com 15 | * Create Time: 2015/12/29 15:32 16 | */ 17 | public abstract class BaseEditText extends BaseView { 18 | 19 | private TextView tv_index; 20 | private EditText editText; 21 | 22 | private EditTextItem editTextItem; 23 | 24 | 25 | public BaseEditText(Context context, BaseItem baseItem) { 26 | super(context, baseItem); 27 | } 28 | 29 | 30 | @Override 31 | protected int getLayoutId() { 32 | return R.layout.ctn_edittext; 33 | } 34 | 35 | @Override 36 | protected void initBase(BaseItem baseItem) { 37 | 38 | editTextItem = (EditTextItem) baseItem; 39 | } 40 | 41 | @Override 42 | protected void initView() { 43 | tv_index = (TextView) findViewById(R.id.tv_index); 44 | editText = (EditText) findViewById(R.id.et_input); 45 | 46 | 47 | tv_index.setText(editTextItem.getIndexText()); 48 | editText.setText(editTextItem.getContent()); 49 | editText.setHint(editTextItem.getHint()); 50 | } 51 | 52 | @Override 53 | protected void initLogic() { 54 | 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/base/BaseGridView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.base; 2 | 3 | import android.content.Context; 4 | 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 6 | import com.bailiangjin.demo.demo.dynamic.view.root.BaseView; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * Author: liangjin.bai 12 | * Email: bailiangjin@gmail.com 13 | * Create Time: 2015/12/29 14:07 14 | */ 15 | public abstract class BaseGridView extends BaseView { 16 | 17 | private List btnList; 18 | 19 | public BaseGridView(Context context, BaseItem baseItem) { 20 | super(context, baseItem); 21 | } 22 | 23 | 24 | @Override 25 | protected int getLayoutId() { 26 | return 0; 27 | } 28 | 29 | @Override 30 | protected void initBase(BaseItem baseItem) { 31 | 32 | } 33 | 34 | @Override 35 | protected void initView() { 36 | 37 | } 38 | 39 | @Override 40 | protected void initLogic() { 41 | 42 | } 43 | 44 | public List getBtnList() { 45 | return btnList; 46 | } 47 | 48 | public void setBtnList(List btnList) { 49 | this.btnList = btnList; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/base/BaseTextView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.base; 2 | 3 | import android.content.Context; 4 | import android.widget.TextView; 5 | 6 | import com.bailiangjin.demo.R; 7 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 8 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.TextItem; 9 | import com.bailiangjin.demo.demo.dynamic.view.root.BaseView; 10 | 11 | /** 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/12/29 14:05 15 | */ 16 | public abstract class BaseTextView extends BaseView { 17 | 18 | private TextView tv_index; 19 | private TextItem textItem; 20 | 21 | 22 | public BaseTextView(Context context, TextItem textItem) { 23 | super(context, textItem); 24 | } 25 | 26 | @Override 27 | protected int getLayoutId() { 28 | return R.layout.ctn_textview; 29 | } 30 | 31 | 32 | /** 33 | * 将父类转为子类 加载初始化View之前的逻辑 34 | * 35 | * @param baseItem 36 | */ 37 | @Override 38 | protected void initBase(BaseItem baseItem) { 39 | textItem = (TextItem) baseItem; 40 | } 41 | 42 | @Override 43 | protected void initView() { 44 | tv_index = (TextView) findViewById(R.id.tv_index); 45 | // tv_index.setGravity(Gravity.CENTER_HORIZONTAL); 46 | 47 | // 48 | // int gravity = 0 != textItem.getGravity() && -1 != textItem.getGravity() ? textItem.getGravity() : getGravity(); 49 | // tv_index.setGravity(gravity); 50 | // 51 | // int textSize = (0 != textItem.getIndexTextSize() && -1 != textItem.getIndexTextSize()) ? textItem.getIndexTextSize() : getTextSize(); 52 | // tv_index.setTextSize(textSize); 53 | 54 | tv_index.setGravity(getGravity()); 55 | 56 | tv_index.setTextSize(getTextSize()); 57 | 58 | tv_index.setText(textItem.getIndexText()); 59 | 60 | 61 | } 62 | 63 | @Override 64 | protected void initLogic() { 65 | 66 | 67 | } 68 | 69 | /** 70 | * 获取默认 重力方向 71 | * 72 | * @return 73 | */ 74 | protected abstract int getGravity(); 75 | 76 | /** 77 | * 获取默认文字大小 78 | * 79 | * @return 80 | */ 81 | protected abstract int getTextSize(); 82 | 83 | 84 | } 85 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/MyCheckboxGroup.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl; 2 | 3 | import android.content.Context; 4 | 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 6 | import com.bailiangjin.demo.demo.dynamic.view.root.BaseView; 7 | 8 | /** 9 | * Author: liangjin.bai 10 | * Email: bailiangjin@gmail.com 11 | * Create Time: 2016/1/4 17:48 12 | */ 13 | public class MyCheckboxGroup extends BaseView { 14 | 15 | 16 | public MyCheckboxGroup(Context context, BaseItem baseItem) { 17 | super(context, baseItem); 18 | } 19 | 20 | @Override 21 | protected int getLayoutId() { 22 | return 0; 23 | } 24 | 25 | @Override 26 | protected void initBase(BaseItem baseItem) { 27 | 28 | } 29 | 30 | @Override 31 | protected void initView() { 32 | 33 | } 34 | 35 | @Override 36 | protected void initLogic() { 37 | 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/button/SaveButton.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl.button; 2 | 3 | import android.content.Context; 4 | 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 6 | import com.bailiangjin.demo.demo.dynamic.view.base.BaseButton; 7 | 8 | /** 9 | * 保存按钮 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2016/1/28 15:30 13 | */ 14 | public class SaveButton extends BaseButton { 15 | public SaveButton(Context context, BaseItem baseItem) { 16 | super(context, baseItem); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/et/CommonEditText.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl.et; 2 | 3 | import android.content.Context; 4 | 5 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 6 | import com.bailiangjin.demo.demo.dynamic.view.base.BaseEditText; 7 | 8 | /** 9 | * 普通输入框 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2016/1/28 15:43 13 | */ 14 | public class CommonEditText extends BaseEditText{ 15 | public CommonEditText(Context context, BaseItem baseItem) { 16 | super(context, baseItem); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/group/PhotoBtnGridView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl.group; 2 | 3 | import android.app.Activity; 4 | 5 | import com.bailiangjin.demo.demo.dynamic.DetailActivity; 6 | import com.bailiangjin.demo.demo.dynamic.adapter.AbsBaseBtnGroupAdapter; 7 | import com.bailiangjin.demo.demo.dynamic.adapter.BtnPhotoGroupAdapter; 8 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 9 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 10 | import com.bailiangjin.demo.demo.dynamic.callback.MyOnClickListener; 11 | import com.bailiangjin.demo.demo.dynamic.view.base.BaseGridViewNew; 12 | import com.bailiangjin.demo.utils.ActivityUtils; 13 | 14 | import java.util.HashMap; 15 | import java.util.List; 16 | 17 | /** 18 | * Author: liangjin.bai 19 | * Email: bailiangjin@gmail.com 20 | * Create Time: 2016/1/28 15:52 21 | */ 22 | public class PhotoBtnGridView extends BaseGridViewNew { 23 | 24 | 25 | public PhotoBtnGridView(Activity context, BaseItem baseItem) { 26 | super(context, baseItem); 27 | } 28 | 29 | 30 | @Override 31 | protected MyOnClickListener getOnClickCallback(final Activity baseActivity, final List btnItemList) { 32 | return new MyOnClickListener() { 33 | @Override 34 | public void onClick(int position) { 35 | BtnItem item = btnItemList.get(position); 36 | HashMap paramMap = new HashMap<>(); 37 | paramMap.put("name", item.getIndexText()); 38 | ActivityUtils.startActivity(baseActivity, DetailActivity.class, paramMap); 39 | 40 | } 41 | }; 42 | } 43 | 44 | @Override 45 | protected AbsBaseBtnGroupAdapter getAdapter(Activity context, List btnItemList) { 46 | return new BtnPhotoGroupAdapter(baseActivity, btnItemList); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/group/SkipBtnGridView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl.group; 2 | 3 | import android.app.Activity; 4 | 5 | import com.bailiangjin.demo.demo.dynamic.DetailActivity; 6 | import com.bailiangjin.demo.demo.dynamic.adapter.AbsBaseBtnGroupAdapter; 7 | import com.bailiangjin.demo.demo.dynamic.adapter.BtnSkipGroupAdapter; 8 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 9 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.BtnItem; 10 | import com.bailiangjin.demo.demo.dynamic.callback.MyOnClickListener; 11 | import com.bailiangjin.demo.demo.dynamic.view.base.BaseGridViewNew; 12 | import com.bailiangjin.demo.utils.ActivityUtils; 13 | 14 | import java.util.HashMap; 15 | import java.util.List; 16 | 17 | /** 18 | * Author: liangjin.bai 19 | * Email: bailiangjin@gmail.com 20 | * Create Time: 2016/1/28 15:52 21 | */ 22 | public class SkipBtnGridView extends BaseGridViewNew { 23 | 24 | 25 | public SkipBtnGridView(Activity context, BaseItem baseItem) { 26 | super(context, baseItem); 27 | } 28 | 29 | 30 | @Override 31 | protected MyOnClickListener getOnClickCallback(final Activity context, final List btnItemList) { 32 | return new MyOnClickListener() { 33 | @Override 34 | public void onClick(int position) { 35 | BtnItem item = btnItemList.get(position); 36 | HashMap paramMap = new HashMap<>(); 37 | paramMap.put("name", item.getIndexText()); 38 | ActivityUtils.startActivity(context, DetailActivity.class, paramMap); 39 | 40 | } 41 | }; 42 | } 43 | 44 | @Override 45 | protected AbsBaseBtnGroupAdapter getAdapter(Activity context, List btnItemList) { 46 | return new BtnSkipGroupAdapter(context, btnItemList); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/textview/ClassNameTextView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl.textview; 2 | 3 | import android.content.Context; 4 | import android.view.Gravity; 5 | 6 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.TextItem; 7 | import com.bailiangjin.demo.demo.dynamic.view.base.BaseTextView; 8 | 9 | /** 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2016/1/19 15:19 13 | */ 14 | public class ClassNameTextView extends BaseTextView { 15 | 16 | 17 | public ClassNameTextView(Context context, TextItem textItem) { 18 | super(context, textItem); 19 | } 20 | 21 | @Override 22 | protected int getGravity() { 23 | return Gravity.LEFT; 24 | } 25 | 26 | @Override 27 | protected int getTextSize() { 28 | return 16; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/textview/ContentTextView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl.textview; 2 | 3 | import android.content.Context; 4 | import android.view.Gravity; 5 | 6 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.TextItem; 7 | import com.bailiangjin.demo.demo.dynamic.view.base.BaseTextView; 8 | 9 | /** 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2015/12/29 14:09 13 | */ 14 | public class ContentTextView extends BaseTextView { 15 | 16 | 17 | public ContentTextView(Context context, TextItem textItem) { 18 | super(context, textItem); 19 | } 20 | 21 | @Override 22 | protected int getGravity() { 23 | return Gravity.CENTER; 24 | } 25 | 26 | @Override 27 | protected int getTextSize() { 28 | return 14; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/impl/textview/TitleTextView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.impl.textview; 2 | 3 | import android.content.Context; 4 | import android.view.Gravity; 5 | 6 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.item.TextItem; 7 | import com.bailiangjin.demo.demo.dynamic.view.base.BaseTextView; 8 | 9 | /** 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2016/1/19 15:19 13 | */ 14 | public class TitleTextView extends BaseTextView { 15 | 16 | public TitleTextView(Context context, TextItem textItem) { 17 | super(context, textItem); 18 | } 19 | 20 | @Override 21 | protected int getGravity() { 22 | return Gravity.CENTER; 23 | } 24 | 25 | @Override 26 | protected int getTextSize() { 27 | return 18; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/dynamic/view/root/BaseView.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.dynamic.view.root; 2 | 3 | import android.app.Activity; 4 | import android.content.Context; 5 | import android.view.LayoutInflater; 6 | import android.widget.FrameLayout; 7 | 8 | import com.bailiangjin.demo.demo.dynamic.bean.viewbean.base.BaseItem; 9 | 10 | /** 11 | * 所有View的基类 根类 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/12/29 13:11 15 | */ 16 | abstract public class BaseView extends FrameLayout { 17 | 18 | private String mId; 19 | private String textContent; 20 | private String paramJson; 21 | 22 | protected Activity baseActivity; 23 | 24 | public BaseView(Context context, BaseItem baseItem) { 25 | super(context); 26 | if (context instanceof Activity) { 27 | this.baseActivity = (Activity) context; 28 | } 29 | LayoutInflater.from(context).inflate(getLayoutId(), this); 30 | initBase(baseItem); 31 | initView(); 32 | initLogic(); 33 | } 34 | 35 | public String getmId() { 36 | return mId; 37 | } 38 | 39 | public void setmId(String mId) { 40 | this.mId = mId; 41 | } 42 | 43 | public String getTextContent() { 44 | return textContent; 45 | } 46 | 47 | public void setTextContent(String textContent) { 48 | this.textContent = textContent; 49 | } 50 | 51 | public String getParamJson() { 52 | return paramJson; 53 | } 54 | 55 | public void setParamJson(String paramJson) { 56 | this.paramJson = paramJson; 57 | } 58 | 59 | abstract protected int getLayoutId(); 60 | 61 | abstract protected void initBase(BaseItem baseItem); 62 | 63 | abstract protected void initView(); 64 | 65 | abstract protected void initLogic(); 66 | } 67 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/fragmentdemo/FragmentAdapterDemos.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.fragmentdemo; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | import android.support.v4.app.FragmentManager; 6 | import android.support.v4.view.ViewPager; 7 | 8 | import com.bailiangjin.demo.R; 9 | import com.bailiangjin.demo.base.BaseActivity; 10 | 11 | /** 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/12/25 15:23 15 | */ 16 | public class FragmentAdapterDemos extends BaseActivity { 17 | 18 | private ViewPager vp_images; 19 | 20 | @Override 21 | protected int getLayoutResId() { 22 | return R.layout.fragment_viewpager_demo; 23 | } 24 | 25 | @Override 26 | protected void beforeViewBind(Bundle savedInstanceState) { 27 | 28 | } 29 | 30 | @Override 31 | protected void initView(Bundle savedInstanceState) { 32 | vp_images = (ViewPager) findViewById(R.id.vp_images); 33 | FragmentManager fm = getSupportFragmentManager(); 34 | vp_images.setAdapter(new MyFragmentPagerAdapter(fm)); 35 | 36 | 37 | // FragmentTransaction fragmentTransaction = fm.beginTransaction(); 38 | // 39 | //// fragmentTransaction.replace(android.R.id.content, getFragment1()); 40 | // 41 | // fragmentTransaction.commit(); 42 | 43 | } 44 | 45 | @Override 46 | protected void initData(Bundle savedInstanceState) { 47 | 48 | } 49 | 50 | 51 | 52 | @Override 53 | protected void handleMsg(Message msg) { 54 | 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/fragmentdemo/MyFragmentPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.fragmentdemo; 2 | 3 | import android.support.v4.app.Fragment; 4 | import android.support.v4.app.FragmentManager; 5 | import android.support.v4.app.FragmentPagerAdapter; 6 | import android.view.ViewGroup; 7 | 8 | import com.bailiangjin.demo.demo.viewpager.BaseViewPagerFragment; 9 | import com.bailiangjin.demo.fragment.Fragment1; 10 | import com.bailiangjin.demo.fragment.Fragment2; 11 | 12 | /** 13 | * Author: liangjin.bai 14 | * Email: bailiangjin@gmail.com 15 | * Create Time: 2015/12/25 15:30 16 | */ 17 | public class MyFragmentPagerAdapter extends FragmentPagerAdapter { 18 | 19 | public MyFragmentPagerAdapter(FragmentManager fm) { 20 | super(fm); 21 | } 22 | 23 | @Override 24 | public void destroyItem(ViewGroup container, int position, Object object) { 25 | super.destroyItem(container, position, object); 26 | } 27 | 28 | @Override 29 | public Object instantiateItem(ViewGroup container, int position) { 30 | return super.instantiateItem(container, position); 31 | } 32 | 33 | @Override 34 | public Fragment getItem(int position) { 35 | switch (position) { 36 | case 0: 37 | return new Fragment1(); 38 | case 1: 39 | return new Fragment2(); 40 | case 2: 41 | return new BaseViewPagerFragment(); 42 | default: 43 | return null; 44 | } 45 | } 46 | 47 | @Override 48 | public int getCount() { 49 | return 3; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/keylistener/KeyListenerActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.keylistener; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | import android.view.KeyEvent; 6 | import android.view.View; 7 | 8 | import com.bailiangjin.demo.R; 9 | import com.bailiangjin.demo.base.BaseActivity; 10 | 11 | /** 12 | * Created by bailiangjin on 16/3/22. 13 | */ 14 | public class KeyListenerActivity extends BaseActivity { 15 | @Override 16 | protected int getLayoutResId() { 17 | return R.layout.activity_keylistener; 18 | } 19 | 20 | @Override 21 | protected void beforeViewBind(Bundle savedInstanceState) { 22 | 23 | } 24 | 25 | @Override 26 | protected void initView(Bundle savedInstanceState) { 27 | 28 | } 29 | 30 | @Override 31 | protected void initData(Bundle savedInstanceState) { 32 | 33 | } 34 | 35 | 36 | 37 | @Override 38 | protected void handleMsg(Message msg) { 39 | 40 | } 41 | 42 | public void onClick_testListen(View v){ 43 | shortToast("点击了测试"); 44 | } 45 | 46 | @Override 47 | public boolean onKeyDown (int keyCode, KeyEvent event) { 48 | switch (keyCode) { 49 | // int i = getCurrentRingValue (); //获取手机当前音量值 50 | case KeyEvent.KEYCODE_VOLUME_DOWN: 51 | shortToast("音量-"); 52 | break; 53 | 54 | case KeyEvent.KEYCODE_VOLUME_UP: 55 | shortToast("音量+"); 56 | break; 57 | case KeyEvent.KEYCODE_BACK: 58 | shortToast("返回"); 59 | break; 60 | case KeyEvent.KEYCODE_MENU: 61 | shortToast("菜单"); 62 | break; 63 | case KeyEvent.KEYCODE_HOME: 64 | shortToast("Home键盘"); 65 | //invalid... 66 | break; 67 | default: 68 | break; 69 | } 70 | return super.onKeyDown (keyCode, event); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/launchmode/LaunchModeActivity2.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.launchmode; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.os.Message; 6 | 7 | import com.bailiangjin.utilslibrary.utils.LogUtils; 8 | 9 | /** 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2015/10/14 13:58 13 | */ 14 | public class LaunchModeActivity2 extends LaunchModeActivity1 { 15 | // private int lastTaskId = -1; 16 | 17 | @Override 18 | protected void onNewIntent(Intent intent) { 19 | super.onNewIntent(intent); 20 | LogUtils.e("onNewIntent:test"); 21 | LogUtils.e("taskId:" + getLocalClassName() + ":" + getTaskId()); 22 | shortToast("onNewIntent"); 23 | // lastTaskId = getIntent().getIntExtra("lastTaskId", -1); 24 | } 25 | 26 | @Override 27 | protected void onCreate(Bundle savedInstanceState) { 28 | super.onCreate(savedInstanceState); 29 | shortToast("onCreate"); 30 | // lastTaskId = getIntent().getIntExtra("lastTaskId", -1); 31 | } 32 | 33 | @Override 34 | protected void onRestart() { 35 | 36 | super.onRestart(); 37 | 38 | } 39 | 40 | @Override 41 | protected void onStart() { 42 | // if(!LifecycleUtils.isTaskRunning(lastTaskId)){ 43 | // finish(); 44 | // } 45 | 46 | super.onStart(); 47 | } 48 | 49 | @Override 50 | protected void onResume() { 51 | 52 | super.onResume(); 53 | } 54 | 55 | @Override 56 | protected void initView(Bundle savedInstanceState) { 57 | super.initView(savedInstanceState); 58 | titleBarBuilder.setTitleText("Activity2"); 59 | } 60 | 61 | 62 | @Override 63 | protected void handleMsg(Message msg) { 64 | 65 | } 66 | 67 | @Override 68 | public void onBackPressed() { 69 | // LifecycleUtils.onBackPressedToLastTask(LaunchModeActivity2.this, lastTaskId); 70 | moveTaskToBack(true); 71 | 72 | } 73 | 74 | 75 | } 76 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/launchmode/LaunchModeActivity3.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.launchmode; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | 6 | /** 7 | * Author: liangjin.bai 8 | * Email: bailiangjin@gmail.com 9 | * Create Time: 2015/10/14 13:58 10 | */ 11 | public class LaunchModeActivity3 extends LaunchModeActivity1 { 12 | 13 | 14 | @Override 15 | protected void initView(Bundle savedInstanceState) { 16 | super.initView(savedInstanceState); 17 | titleBarBuilder.setTitleText("Activity3"); 18 | 19 | } 20 | 21 | 22 | 23 | 24 | 25 | @Override 26 | protected void handleMsg(Message msg) { 27 | 28 | } 29 | 30 | 31 | 32 | } 33 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/launchmode/LaunchModeActivity4.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.launchmode; 2 | 3 | import android.content.Intent; 4 | import android.os.Bundle; 5 | import android.os.Message; 6 | 7 | import com.bailiangjin.uilibrary.titlebar.ItemClickListener; 8 | 9 | 10 | /** 11 | * Author: liangjin.bai 12 | * Email: bailiangjin@gmail.com 13 | * Create Time: 2015/10/14 13:58 14 | */ 15 | public class LaunchModeActivity4 extends LaunchModeActivity1 { 16 | 17 | 18 | @Override 19 | protected void initView(Bundle savedInstanceState) { 20 | super.initView(savedInstanceState); 21 | titleBarBuilder.setTitleText("Activity4"); 22 | 23 | titleBarBuilder.addItem("onResult", new ItemClickListener() { 24 | @Override 25 | public void onClick() { 26 | Intent intent = new Intent(); 27 | setResult(1,intent); 28 | LaunchModeActivity4.this.finish(); 29 | } 30 | }).build(); 31 | } 32 | 33 | 34 | 35 | 36 | 37 | @Override 38 | protected void handleMsg(Message msg) { 39 | 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/networkdemo/weather/WeatherRequest.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.networkdemo.weather; 2 | 3 | import com.bailiangjin.demo.demo.networkdemo.weather.config.WeatherConfig; 4 | 5 | /** 6 | * Author: liangjin.bai 7 | * Email: bailiangjin@gmail.com 8 | * Create Time: 2015/12/11 11:22 9 | */ 10 | public class WeatherRequest { 11 | 12 | private String cityId; 13 | private String cityInfoUrl; 14 | private String skUrl; 15 | private String detailUrl; 16 | 17 | 18 | public WeatherRequest(String cityId) { 19 | this.cityId = cityId; 20 | this.cityInfoUrl = WeatherConfig.cityInfoUrlPrifix + cityId + WeatherConfig.urlPostfix; 21 | this.skUrl = WeatherConfig.skUrlPrifix + cityId + WeatherConfig.urlPostfix; 22 | this.detailUrl = WeatherConfig.detailUrlPrifix + cityId + WeatherConfig.urlPostfix; 23 | } 24 | 25 | public String getCityId() { 26 | return cityId; 27 | } 28 | 29 | public String getCityInfoUrl() { 30 | return cityInfoUrl; 31 | } 32 | 33 | public String getSkUrl() { 34 | return skUrl; 35 | } 36 | 37 | public String getDetailUrl() { 38 | return detailUrl; 39 | } 40 | 41 | 42 | } 43 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/networkdemo/weather/config/WeatherConfig.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.networkdemo.weather.config; 2 | 3 | /** 4 | * Author: liangjin.bai 5 | * Email: bailiangjin@gmail.com 6 | * Create Time: 2015/12/11 11:24 7 | */ 8 | public class WeatherConfig { 9 | 10 | public static final String skUrlPrifix ="http://www.weather.com.cn/data/sk/"; 11 | public static final String cityInfoUrlPrifix ="http://www.weather.com.cn/data/cityinfo/"; 12 | public static final String detailUrlPrifix ="http://m.weather.com.cn/data/"; 13 | 14 | public static final String urlPostfix =".html"; 15 | 16 | } 17 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/recycleview/NormalRecyclerViewAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.recycleview; 2 | 3 | import android.content.Context; 4 | import android.support.v7.widget.RecyclerView; 5 | import android.util.Log; 6 | import android.view.LayoutInflater; 7 | import android.view.View; 8 | import android.view.ViewGroup; 9 | import android.widget.TextView; 10 | 11 | import com.bailiangjin.demo.R; 12 | 13 | 14 | /** 15 | * Created by bailiangjin on 16/7/4. 16 | */ 17 | public class NormalRecyclerViewAdapter extends RecyclerView.Adapter { 18 | private final LayoutInflater mLayoutInflater; 19 | private final Context mContext; 20 | private String[] mTitles; 21 | 22 | public NormalRecyclerViewAdapter(Context context) { 23 | mTitles = context.getResources().getStringArray(R.array.titles); 24 | mContext = context; 25 | mLayoutInflater = LayoutInflater.from(context); 26 | } 27 | 28 | @Override 29 | public NormalTextViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 30 | return new NormalTextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false)); 31 | } 32 | 33 | @Override 34 | public void onBindViewHolder(NormalTextViewHolder holder, int position) { 35 | holder.mTextView.setText(mTitles[position]); 36 | } 37 | 38 | @Override 39 | public int getItemCount() { 40 | return mTitles == null ? 0 : mTitles.length; 41 | } 42 | 43 | public static class NormalTextViewHolder extends RecyclerView.ViewHolder { 44 | // @Bind(R.id.text_view) 45 | TextView mTextView; 46 | 47 | NormalTextViewHolder(View view) { 48 | super(view); 49 | // ButterKnife.bind(this, view); 50 | mTextView= (TextView) view.findViewById(R.id.text_view); 51 | view.setOnClickListener(new View.OnClickListener() { 52 | @Override 53 | public void onClick(View v) { 54 | Log.d("NormalTextViewHolder", "onClick--> position = " + getPosition()); 55 | } 56 | }); 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/switchnetworkstate/SwitchNetWorkStateActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.switchnetworkstate; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | import android.view.View; 6 | 7 | import com.bailiangjin.utilslibrary.utils.device.NetUtils; 8 | import com.bailiangjin.demo.R; 9 | import com.bailiangjin.demo.base.BaseActivity; 10 | 11 | /** 12 | * Created by bailiangjin on 16/3/22. 13 | */ 14 | public class SwitchNetWorkStateActivity extends BaseActivity { 15 | @Override 16 | protected int getLayoutResId() { 17 | return R.layout.activity_switch_network_state; 18 | } 19 | 20 | @Override 21 | protected void beforeViewBind(Bundle savedInstanceState) { 22 | 23 | } 24 | 25 | @Override 26 | protected void initView(Bundle savedInstanceState) { 27 | 28 | } 29 | 30 | @Override 31 | protected void initData(Bundle savedInstanceState) { 32 | 33 | } 34 | 35 | 36 | @Override 37 | protected void handleMsg(Message msg) { 38 | 39 | } 40 | 41 | 42 | public void onClick_Switch_WiFi_open(View v) { 43 | shortToast("打开 WiFi"); 44 | NetUtils.toggleWiFi(true); 45 | } 46 | 47 | public void onClick_Switch_WiFi_close(View v) { 48 | shortToast("关闭 WiFi"); 49 | NetUtils.toggleWiFi(false); 50 | } 51 | 52 | public void onClick_Switch_mobile_open(View v) { 53 | shortToast("打开 移动网络"); 54 | NetUtils.toggleMobileData(true); 55 | } 56 | 57 | public void onClick_Switch_mobile_close(View v) { 58 | shortToast("关闭 移动网络"); 59 | NetUtils.toggleMobileData(false); 60 | } 61 | 62 | 63 | } 64 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/viewpager/MyPagerAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.viewpager; 2 | 3 | import android.support.v4.view.PagerAdapter; 4 | import android.view.View; 5 | import android.view.ViewGroup; 6 | 7 | import java.util.List; 8 | 9 | /** 10 | * Author: liangjin.bai 11 | * Email: bailiangjin@gmail.com 12 | * Create Time: 2015/12/24 10:38 13 | */ 14 | public class MyPagerAdapter extends PagerAdapter { 15 | 16 | private List pageList; 17 | private int pageCount; 18 | 19 | public MyPagerAdapter(List pageList) { 20 | this.pageList = pageList; 21 | pageCount=pageList.size(); 22 | } 23 | 24 | @Override 25 | public int getCount() { 26 | if (PageUtil.isCycle) { 27 | return pageList == null ? 0 : Integer.MAX_VALUE; 28 | } else { 29 | return pageList == null ? 0 : pageList.size(); 30 | } 31 | } 32 | 33 | @Override 34 | public boolean isViewFromObject(View view, Object object) { 35 | return view == object; 36 | } 37 | 38 | @Override 39 | public void destroyItem(ViewGroup container, int position, Object object) { 40 | if (PageUtil.isCycle) { 41 | position = position % pageCount; 42 | } 43 | container.removeView(pageList.get(position).getView()); 44 | } 45 | 46 | 47 | @Override 48 | public Object instantiateItem(ViewGroup container, int position) { 49 | if (PageUtil.isCycle) { 50 | position = position % pageCount; 51 | } 52 | container.addView(pageList.get(position).getView()); 53 | return pageList.get(position).getView(); 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/viewpager/PageUtil.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.viewpager; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.widget.ImageView; 7 | 8 | import com.bailiangjin.demo.R; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | public class PageUtil { 14 | /** 15 | * 是否循环 16 | */ 17 | public static final boolean isCycle = false; 18 | 19 | /** 20 | * 获取ViewPage适配器数据 ViewPage List 21 | * 22 | * @return 23 | */ 24 | public static List getPageList(Context context) { 25 | List pageList = new ArrayList(); 26 | for (int i = 0; i < 5; i++) { 27 | ViewPagerBean vpBean = new ViewPagerBean(); 28 | vpBean.setTitle("Page" + (i + 1)); 29 | vpBean.setLayoutResId(R.drawable.linear_login); 30 | vpBean.setView(getPageView(context, vpBean.getLayoutResId())); 31 | pageList.add(vpBean); 32 | } 33 | return pageList; 34 | } 35 | 36 | 37 | /** 38 | * 构造ViewPage页面 39 | * 40 | * @param context 41 | * @param imgResId 42 | * @return 43 | */ 44 | private static View getPageView(Context context, int imgResId) { 45 | LayoutInflater inflater = LayoutInflater.from(context); 46 | View pageView = inflater.inflate(R.layout.page_item, null); 47 | ImageView imgPage = (ImageView) pageView.findViewById(R.id.imgPage); 48 | imgPage.setImageResource(imgResId); 49 | return pageView; 50 | } 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/viewpager/ViewPagerBean.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.viewpager; 2 | 3 | import android.view.View; 4 | 5 | /** 6 | * Author: liangjin.bai 7 | * Email: bailiangjin@gmail.com 8 | * Create Time: 2015/12/24 14:09 9 | */ 10 | public class ViewPagerBean { 11 | /** 12 | * 标题 13 | */ 14 | private String title; 15 | /** 16 | * 对应资源id 17 | */ 18 | private int layoutResId; 19 | /** 20 | * view 21 | */ 22 | private View view; 23 | 24 | public String getTitle() { 25 | return title; 26 | } 27 | 28 | public void setTitle(String title) { 29 | this.title = title; 30 | } 31 | 32 | public int getLayoutResId() { 33 | return layoutResId; 34 | } 35 | 36 | public void setLayoutResId(int layoutResId) { 37 | this.layoutResId = layoutResId; 38 | } 39 | 40 | public View getView() { 41 | return view; 42 | } 43 | 44 | public void setView(View view) { 45 | this.view = view; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/viewpager/ViewPagerDemoActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.viewpager; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | import android.support.v4.app.FragmentManager; 6 | import android.support.v4.app.FragmentTransaction; 7 | 8 | import com.bailiangjin.demo.base.BaseActivity; 9 | 10 | /** 11 | * Author: liangjin.bai 12 | * Email: bailiangjin@gmail.com 13 | * Create Time: 2015/12/24 10:27 14 | */ 15 | public class ViewPagerDemoActivity extends BaseActivity { 16 | 17 | private BaseViewPagerFragment fragment1; 18 | 19 | @Override 20 | protected int getLayoutResId() { 21 | return 0; 22 | } 23 | 24 | @Override 25 | protected void beforeViewBind(Bundle savedInstanceState) { 26 | 27 | } 28 | 29 | @Override 30 | protected void initView(Bundle savedInstanceState) { 31 | 32 | FragmentManager fm = getSupportFragmentManager(); 33 | FragmentTransaction fragmentTransaction = fm.beginTransaction(); 34 | 35 | fragmentTransaction.replace(android.R.id.content, getFragment1()); 36 | 37 | fragmentTransaction.commit(); 38 | 39 | } 40 | 41 | @Override 42 | protected void initData(Bundle savedInstanceState) { 43 | 44 | 45 | } 46 | 47 | 48 | @Override 49 | protected void handleMsg(Message msg) { 50 | 51 | } 52 | 53 | 54 | public BaseViewPagerFragment getFragment1() { 55 | if (fragment1 == null) { 56 | fragment1 = new BaseViewPagerFragment(); 57 | } 58 | return fragment1; 59 | } 60 | 61 | 62 | } 63 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/widget/draggridview/DragAdapter.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.widget.draggridview; 2 | 3 | import android.content.Context; 4 | import android.view.LayoutInflater; 5 | import android.view.View; 6 | import android.view.ViewGroup; 7 | import android.widget.BaseAdapter; 8 | import android.widget.TextView; 9 | 10 | import com.bailiangjin.uilibrary.view.DragGridBaseAdapter; 11 | import com.bailiangjin.demo.R; 12 | import com.bailiangjin.demo.model.TaskItemBean; 13 | 14 | import java.util.Collections; 15 | import java.util.List; 16 | 17 | 18 | public class DragAdapter extends BaseAdapter implements DragGridBaseAdapter { 19 | // private List> list; 20 | private List list; 21 | private LayoutInflater mInflater; 22 | private int mHidePosition = -1; 23 | 24 | public DragAdapter(Context context, List list){ 25 | this.list = list; 26 | mInflater = LayoutInflater.from(context); 27 | } 28 | 29 | @Override 30 | public int getCount() { 31 | return list.size(); 32 | } 33 | 34 | @Override 35 | public Object getItem(int position) { 36 | return list.get(position); 37 | } 38 | 39 | @Override 40 | public long getItemId(int position) { 41 | return position; 42 | } 43 | 44 | /** 45 | * 由于复用convertView导致某些item消失了,所以这里不复用item, 46 | */ 47 | @Override 48 | public View getView(int position, View convertView, ViewGroup parent) { 49 | convertView = mInflater.inflate(R.layout.drag_gridview_item, null); 50 | TextView mTextView = (TextView) convertView.findViewById(R.id.item_text); 51 | 52 | mTextView.setText((CharSequence) list.get(position).getName()); 53 | 54 | if(position == mHidePosition){ 55 | convertView.setVisibility(View.INVISIBLE); 56 | } 57 | 58 | return convertView; 59 | } 60 | 61 | 62 | @Override 63 | public void reorderItems(int oldPosition, int newPosition) { 64 | TaskItemBean temp = list.get(oldPosition); 65 | if(oldPosition < newPosition){ 66 | for(int i=oldPosition; i newPosition){ 70 | for(int i=oldPosition; i>newPosition; i--){ 71 | Collections.swap(list, i, i - 1); 72 | } 73 | } 74 | 75 | list.set(newPosition, temp); 76 | } 77 | 78 | @Override 79 | public void setHideItem(int hidePosition) { 80 | this.mHidePosition = hidePosition; 81 | notifyDataSetChanged(); 82 | } 83 | 84 | 85 | } 86 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/widget/draggridview/DragGridViewActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.widget.draggridview; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.bailiangjin.uilibrary.view.DragGridView; 7 | import com.bailiangjin.demo.R; 8 | import com.bailiangjin.demo.model.TaskItemBean; 9 | 10 | import java.util.ArrayList; 11 | import java.util.List; 12 | 13 | 14 | public class DragGridViewActivity extends Activity { 15 | private List dataSourceList = new ArrayList(); 16 | 17 | @Override 18 | protected void onCreate(Bundle savedInstanceState) { 19 | super.onCreate(savedInstanceState); 20 | setContentView(R.layout.activity_demo_draggridview); 21 | 22 | DragGridView mDragGridView = (DragGridView) findViewById(R.id.dragGridView); 23 | for (int i = 0; i < 15; i++) { 24 | TaskItemBean taskItemBean = new TaskItemBean(); 25 | taskItemBean.setName("拖拽 " + Integer.toString(i)); 26 | dataSourceList.add(taskItemBean); 27 | } 28 | 29 | final DragAdapter mDragAdapter = new DragAdapter(this, dataSourceList); 30 | 31 | mDragGridView.setAdapter(mDragAdapter); 32 | } 33 | 34 | 35 | } 36 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/demo/widget/searchbar/SearchActivity.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.demo.widget.searchbar; 2 | 3 | import android.os.Bundle; 4 | import android.os.Message; 5 | 6 | import com.bailiangjin.uilibrary.widget.SearchBarListener; 7 | import com.bailiangjin.uilibrary.widget.SearchBar; 8 | import com.bailiangjin.demo.R; 9 | import com.bailiangjin.demo.base.BaseActivity; 10 | 11 | /** 12 | * Author: liangjin.bai 13 | * Email: bailiangjin@gmail.com 14 | * Create Time: 2015/10/26 11:29 15 | */ 16 | public class SearchActivity extends BaseActivity { 17 | 18 | private SearchBar searchBar; 19 | 20 | @Override 21 | protected int getLayoutResId() { 22 | return R.layout.activity_search; 23 | } 24 | 25 | @Override 26 | protected void beforeViewBind(Bundle savedInstanceState) { 27 | 28 | } 29 | 30 | @Override 31 | protected void initView(Bundle savedInstanceState) { 32 | 33 | titleBarBuilder.setTitleText("搜索"); 34 | 35 | 36 | searchBar = (SearchBar) findViewById(R.id.search_bar); 37 | searchBar.setHint("请输入关键词搜索"); 38 | searchBar.setSearchBarListener(new SearchBarListener() { 39 | @Override 40 | public boolean onSearch(String searchKey) { 41 | shortToast("点击了搜索"); 42 | return false; 43 | } 44 | 45 | @Override 46 | public boolean onTextChange(String curTextStr) { 47 | shortToast("内容变化:" + curTextStr); 48 | return true; 49 | 50 | } 51 | 52 | @Override 53 | public boolean onCancelClick() { 54 | shortToast("点击了取消"); 55 | return true; 56 | } 57 | }); 58 | 59 | } 60 | 61 | @Override 62 | protected void initData(Bundle savedInstanceState) { 63 | 64 | } 65 | 66 | 67 | @Override 68 | protected void handleMsg(Message msg) { 69 | 70 | } 71 | 72 | 73 | } 74 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/fragment/Fragment1.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.fragment; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.bailiangjin.demo.R; 7 | import com.bailiangjin.demo.base.BaseFragment; 8 | 9 | public class Fragment1 extends BaseFragment 10 | { 11 | 12 | @Override 13 | public void onAttach(Activity activity) 14 | { 15 | // TODO Auto-generated method stub 16 | super.onAttach(activity); 17 | } 18 | 19 | @Override 20 | public void onCreate(Bundle savedInstanceState) 21 | { 22 | // TODO Auto-generated method stub 23 | super.onCreate(savedInstanceState); 24 | } 25 | 26 | @Override 27 | public void onActivityCreated(Bundle savedInstanceState) 28 | { 29 | // TODO Auto-generated method stub 30 | super.onActivityCreated(savedInstanceState); 31 | } 32 | 33 | @Override 34 | public void onStart() 35 | { 36 | // TODO Auto-generated method stub 37 | super.onStart(); 38 | } 39 | 40 | @Override 41 | public void onResume() 42 | { 43 | // TODO Auto-generated method stub 44 | super.onResume(); 45 | } 46 | 47 | @Override 48 | public void onPause() 49 | { 50 | // TODO Auto-generated method stub 51 | super.onPause(); 52 | } 53 | 54 | @Override 55 | public void onStop() 56 | { 57 | // TODO Auto-generated method stub 58 | super.onStop(); 59 | } 60 | 61 | @Override 62 | public void onDestroyView() 63 | { 64 | // TODO Auto-generated method stub 65 | super.onDestroyView(); 66 | } 67 | 68 | @Override 69 | public void onDestroy() 70 | { 71 | // TODO Auto-generated method stub 72 | super.onDestroy(); 73 | } 74 | 75 | @Override 76 | public void onDetach() 77 | { 78 | // TODO Auto-generated method stub 79 | super.onDetach(); 80 | } 81 | 82 | @Override 83 | protected int getLayoutResId() { 84 | return R.layout.fragment1; 85 | } 86 | 87 | @Override 88 | protected void initView() { 89 | 90 | } 91 | 92 | @Override 93 | protected void initData(Bundle savedInstanceState) { 94 | 95 | } 96 | 97 | 98 | } 99 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/fragment/Fragment2.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.fragment; 2 | 3 | import android.app.Activity; 4 | import android.os.Bundle; 5 | 6 | import com.bailiangjin.demo.R; 7 | import com.bailiangjin.demo.base.BaseFragment; 8 | 9 | public class Fragment2 extends BaseFragment 10 | { 11 | 12 | 13 | @Override 14 | protected int getLayoutResId() { 15 | return R.layout.fragment2; 16 | } 17 | 18 | @Override 19 | protected void initView() { 20 | 21 | } 22 | 23 | @Override 24 | protected void initData(Bundle savedInstanceState) { 25 | 26 | } 27 | 28 | 29 | @Override 30 | public void onAttach(Activity activity) 31 | { 32 | // TODO Auto-generated method stub 33 | super.onAttach(activity); 34 | } 35 | 36 | @Override 37 | public void onCreate(Bundle savedInstanceState) 38 | { 39 | // TODO Auto-generated method stub 40 | super.onCreate(savedInstanceState); 41 | } 42 | 43 | 44 | 45 | @Override 46 | public void onActivityCreated(Bundle savedInstanceState) 47 | { 48 | // TODO Auto-generated method stub 49 | super.onActivityCreated(savedInstanceState); 50 | } 51 | 52 | @Override 53 | public void onStart() 54 | { 55 | // TODO Auto-generated method stub 56 | super.onStart(); 57 | } 58 | 59 | @Override 60 | public void onResume() 61 | { 62 | // TODO Auto-generated method stub 63 | super.onResume(); 64 | } 65 | 66 | @Override 67 | public void onPause() 68 | { 69 | // TODO Auto-generated method stub 70 | super.onPause(); 71 | } 72 | 73 | @Override 74 | public void onStop() 75 | { 76 | // TODO Auto-generated method stub 77 | super.onStop(); 78 | } 79 | 80 | @Override 81 | public void onDestroyView() 82 | { 83 | // TODO Auto-generated method stub 84 | super.onDestroyView(); 85 | } 86 | 87 | @Override 88 | public void onDestroy() 89 | { 90 | // TODO Auto-generated method stub 91 | super.onDestroy(); 92 | } 93 | 94 | @Override 95 | public void onDetach() 96 | { 97 | // TODO Auto-generated method stub 98 | super.onDetach(); 99 | } 100 | 101 | 102 | } 103 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/jni/NdkJniUtils.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.jni; 2 | 3 | /** 4 | * 作者:bailiangjin bailiangjin@gmail.com 5 | * 创建时间:15/10/28 22:31 6 | */ 7 | public class NdkJniUtils { 8 | 9 | // static { 10 | // System.loadLibrary("testjni"); //defaultConfig.ndk.moduleName 11 | // } 12 | // 13 | // public native String getCLanguageString(); 14 | } 15 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/kt/HelloKotlin.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.kt; 2 | 3 | /** 4 | * TODD:添加类注释 5 | * 6 | * @author bailiangjin 7 | * @date 2017/11/14 8 | */ 9 | 10 | public class HelloKotlin { 11 | public static void main(String[] args) { 12 | new HelloWorld().greet(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/kt/HelloWorld.kt: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.kt 2 | /** 3 | * TODD:添加类注释 4 | * 5 | * @author bailiangjin 6 | * 7 | * @date 2017/11/14 8 | */ 9 | class HelloWorld() { 10 | fun greet() { 11 | print("Hello") 12 | } 13 | 14 | fun main(args: Array) { // 包级可见的函数,接受一个字符串数组作为参数 15 | println("Hello World!") // 分号可以省略 16 | } 17 | } -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/model/TaskItemBean.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.model; 2 | 3 | /** 4 | * Author: liangjin.bai 5 | * Email: bailiangjin@gmail.com 6 | * Create Time: 2015/10/20 14:08 7 | */ 8 | public class TaskItemBean { 9 | 10 | private String id; 11 | private String name; 12 | 13 | private int order; 14 | 15 | public String getId() { 16 | return id; 17 | } 18 | 19 | public void setId(String id) { 20 | this.id = id; 21 | } 22 | 23 | public String getName() { 24 | return name; 25 | } 26 | 27 | public void setName(String name) { 28 | this.name = name; 29 | } 30 | 31 | public int getOrder() { 32 | return order; 33 | } 34 | 35 | public void setOrder(int order) { 36 | this.order = order; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/net/HttpCallback.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.net; 2 | 3 | public interface HttpCallback { 4 | /** 5 | * 请求成功 6 | * 7 | * @param json 返回参数 8 | */ 9 | void onSuccess(final String json); 10 | 11 | /** 12 | * 请求失败 13 | * 14 | * @param json 返回参数 15 | */ 16 | void onFailed(final String json); 17 | 18 | /** 19 | * 请求异常 20 | * 21 | * @param json 返回参数 22 | */ 23 | void onError(final String json); 24 | } 25 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/utils/image/CircleTransform.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.utils.image; 2 | 3 | import android.content.Context; 4 | import android.graphics.Bitmap; 5 | import android.graphics.BitmapShader; 6 | import android.graphics.Canvas; 7 | import android.graphics.Matrix; 8 | import android.graphics.Paint; 9 | 10 | import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool; 11 | import com.bumptech.glide.load.resource.bitmap.BitmapTransformation; 12 | 13 | /** 14 | * 圆形Transform 15 | * 16 | * @author bailiangjin 17 | * 18 | * @date 2018/4/13 19 | */ 20 | public class CircleTransform extends BitmapTransformation { 21 | public CircleTransform(Context context) { 22 | super(context); 23 | } 24 | 25 | @Override 26 | protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) { 27 | return circleCrop(pool,toTransform); 28 | } 29 | private Bitmap circleCrop(BitmapPool pool, Bitmap source) { 30 | 31 | int size = Math.min(source.getWidth(), source.getHeight()); 32 | 33 | int width = (source.getWidth() - size) / 2; 34 | int height = (source.getHeight() - size) / 2; 35 | 36 | Bitmap bitmap = pool.get(size, size, Bitmap.Config.ARGB_8888); 37 | if (bitmap == null) { 38 | bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); 39 | } 40 | 41 | Canvas canvas = new Canvas(bitmap); 42 | Paint paint = new Paint(); 43 | BitmapShader shader = 44 | new BitmapShader(source, BitmapShader.TileMode.CLAMP, BitmapShader.TileMode.CLAMP); 45 | if (width != 0 || height != 0) { 46 | // source isn't square, move viewport to center 47 | Matrix matrix = new Matrix(); 48 | matrix.setTranslate(-width, -height); 49 | shader.setLocalMatrix(matrix); 50 | } 51 | paint.setShader(shader); 52 | paint.setAntiAlias(true); 53 | 54 | float r = size / 2f; 55 | canvas.drawCircle(r, r, r, paint); 56 | 57 | return bitmap; 58 | } 59 | 60 | @Override 61 | public String getId() { 62 | return getClass().getName(); 63 | } 64 | } -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/utils/image/GetImageCacheAsyncTask.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.utils.image; 2 | 3 | import android.content.Context; 4 | import android.os.AsyncTask; 5 | import android.util.Log; 6 | 7 | import com.bumptech.glide.Glide; 8 | import com.bumptech.glide.request.target.Target; 9 | 10 | import org.reactivestreams.Subscriber; 11 | 12 | import java.io.File; 13 | 14 | /** 15 | * 获取缓存图片异步任务 16 | * 17 | * @author bailiangjin 18 | * @date 2018/4/11 19 | */ 20 | public class GetImageCacheAsyncTask extends AsyncTask { 21 | private final Context context; 22 | private final Subscriber subscriber; 23 | 24 | public GetImageCacheAsyncTask(Context context, Subscriber subscriber) { 25 | this.context = context; 26 | this.subscriber = subscriber; 27 | } 28 | 29 | @Override 30 | protected File doInBackground(String... params) { 31 | String imgUrl = params[0]; 32 | try { 33 | return Glide.with(context) 34 | .load(imgUrl) 35 | .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL) 36 | .get(); 37 | } catch (Exception ex) { 38 | return null; 39 | } 40 | } 41 | 42 | @Override 43 | protected void onPostExecute(File imageFile) { 44 | if (null == imageFile || 0 == imageFile.length()) { 45 | subscriber.onError(new RuntimeException("download image failed")); 46 | return; 47 | } 48 | //此path就是对应文件的缓存路径 49 | Log.d("path", imageFile.getAbsolutePath()); 50 | subscriber.onNext(imageFile); 51 | 52 | } 53 | } -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/utils/image/IImageLoader.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.utils.image; 2 | 3 | import android.widget.ImageView; 4 | 5 | /** 6 | * 图片加载接口 7 | * 8 | * @author bailiangjin 9 | * @date 2018/4/11 10 | */ 11 | 12 | public interface IImageLoader { 13 | 14 | /** 15 | * 加载网络图片 16 | * 17 | * @param iv 18 | * @param imageUrl 19 | */ 20 | void loadImage(ImageView iv, String imageUrl); 21 | 22 | /** 23 | * 加载本地图片 24 | * 25 | * @param iv 26 | * @param imageFilePath 27 | */ 28 | void loadLocalImage(ImageView iv, String imageFilePath); 29 | 30 | /** 31 | * 以静态图的方式加载本地图片 32 | * 33 | * @param iv 34 | * @param imageUrl 35 | */ 36 | void loadAsStaticImage(ImageView iv, String imageUrl); 37 | 38 | /** 39 | * 以静态图的方式加载本地图片 40 | * 41 | * @param iv 42 | * @param imageFilePath 43 | */ 44 | void loadLocalAsStaticImage(ImageView iv, String imageFilePath); 45 | 46 | class Builder { 47 | private String url = ""; 48 | private boolean isLocal = false; 49 | private boolean isLoadAsStatic = false; 50 | private CacheType cacheType = CacheType.FIT_VIEW; 51 | 52 | public void url(String url) { 53 | this.url = url; 54 | } 55 | 56 | public void localImage(boolean local) { 57 | isLocal = local; 58 | } 59 | 60 | public void asStaticImage(boolean loadAsStatic) { 61 | isLoadAsStatic = loadAsStatic; 62 | } 63 | 64 | public void cacheType(CacheType cacheType) { 65 | this.cacheType = cacheType; 66 | } 67 | } 68 | 69 | enum CacheType { 70 | ALL, 71 | FIT_VIEW, 72 | ORG 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/utils/image/ImageParam.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.utils.image; 2 | 3 | /** 4 | * 图片宽高参数 5 | * 6 | * @author bailiangjin 7 | * @date 2018/4/17 8 | */ 9 | 10 | public class ImageParam { 11 | 12 | private int width; 13 | private int height; 14 | 15 | public ImageParam(int width, int height) { 16 | this.width = width; 17 | this.height = height; 18 | } 19 | 20 | public int getWidth() { 21 | return width; 22 | } 23 | 24 | public void setWidth(int width) { 25 | this.width = width; 26 | } 27 | 28 | public int getHeight() { 29 | return height; 30 | } 31 | 32 | public void setHeight(int height) { 33 | this.height = height; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /demoapp/src/main/java/com/bailiangjin/demo/utils/image/MyGlideModule.java: -------------------------------------------------------------------------------- 1 | package com.bailiangjin.demo.utils.image; 2 | 3 | import android.content.Context; 4 | 5 | import com.bumptech.glide.Glide; 6 | import com.bumptech.glide.GlideBuilder; 7 | import com.bumptech.glide.module.GlideModule; 8 | 9 | 10 | public class MyGlideModule implements GlideModule { 11 | 12 | /** 13 | * 缓存路径 14 | */ 15 | // private final String CACHE_DIR = CustomExpressionImageManager.INSTANCE.getCustomExpressionTempDir(); 16 | 17 | /** 18 | * 缓存名 19 | */ 20 | private final String CACHE_NAME = "custom_expression_glide_cache"; 21 | 22 | /** 23 | * 缓存大小80M 24 | */ 25 | private final int CACHE_SIZE = 80 * 1024 * 1024; 26 | 27 | @Override 28 | public void applyOptions(Context context, GlideBuilder builder) { 29 | //builder.setDecodeFormat(DecodeFormat.ALWAYS_ARGB_8888); 30 | // builder.setDiskCache(new DiskLruCacheFactory(CACHE_DIR, CACHE_NAME, CACHE_SIZE)); 31 | } 32 | 33 | @Override 34 | public void registerComponents(Context context, Glide glide) { 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /demoapp/src/main/jniLibs/armeabi/liblbs.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/jniLibs/armeabi/liblbs.so -------------------------------------------------------------------------------- /demoapp/src/main/jni_bak/jni.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/jni_bak/jni.rar -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_account_box_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_account_box_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_account_box_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_account_box_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_alarm_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_alarm_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_alarm_on_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_alarm_on_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_alarm_on_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_alarm_on_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_alarm_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_alarm_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_arrow_back_black_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_arrow_back_black_36dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_arrow_back_white_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_arrow_back_white_36dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_autorenew_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_autorenew_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_autorenew_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_autorenew_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_backup_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_backup_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_backup_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_backup_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_build_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_build_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_build_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_build_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_cached_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_cached_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_cached_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_cached_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_check_circle_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_check_circle_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_check_circle_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_done_all_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_done_all_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_done_all_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_done_all_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_done_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_done_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_done_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_done_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_explore_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_explore_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_explore_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_explore_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_favorite_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_favorite_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_favorite_border_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_favorite_border_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_favorite_border_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_favorite_border_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_favorite_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_favorite_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_find_replace_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_find_replace_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_find_replace_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_find_replace_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_fingerprint_black_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_fingerprint_black_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_fingerprint_white_48dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_fingerprint_white_48dp.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_get_app_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_get_app_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_get_app_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_get_app_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_help_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_help_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_help_outline_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_help_outline_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_help_outline_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_help_outline_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_help_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_help_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_highlight_off_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_highlight_off_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_highlight_off_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_highlight_off_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_home_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_home_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_home_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_home_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_location_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_location_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_location_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_location_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_lock_outline_lock_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_lock_outline_lock_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_lock_outline_lock_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_lock_outline_lock_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_lock_outline_open_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_lock_outline_open_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_lock_outline_open_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_lock_outline_open_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_power_settings_new_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_power_settings_new_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_power_settings_new_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_power_settings_new_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_query_builder_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_query_builder_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_query_builder_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_query_builder_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_settings_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_settings_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_settings_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_settings_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_share_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_share_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_share_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_share_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_swap_horiz_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_swap_horiz_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_swap_horiz_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_swap_horiz_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_swap_vert_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_swap_vert_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_swap_vert_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_swap_vert_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_thumb_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_thumb_down_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_thumb_down_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_thumb_down_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_thumb_up_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_thumb_up_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_thumb_up_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_thumb_up_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_visibility_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_visibility_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_visibility_off_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_visibility_off_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_visibility_off_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_visibility_off_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_visibility_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_visibility_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_zoom_in_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_zoom_in_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_zoom_in_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_zoom_in_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_zoom_out_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_zoom_out_black.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-hdpi/ic_zoom_out_white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-hdpi/ic_zoom_out_white.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-xhdpi/btn_photo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-xhdpi/btn_photo.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-xhdpi/icon_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-xhdpi/icon_app.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-xhdpi/icon_timeoutsettings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-xhdpi/icon_timeoutsettings.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-xhdpi/icon_user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-xhdpi/icon_user.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable-xhdpi/linear_login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bailiangjin/BaseLibrary/edba56c145d3ba1447b96a681059e92da5bbbbfb/demoapp/src/main/res/drawable-xhdpi/linear_login.png -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable/app_splash_gradient_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable/demo_common_gradient_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /demoapp/src/main/res/drawable/demo_splash_gradient_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 9 | 10 | -------------------------------------------------------------------------------- /demoapp/src/main/res/layout/activity_btn_base.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /demoapp/src/main/res/layout/activity_database.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 14 | 15 |