diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000000..750e8ac81a --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,12 @@ +# These are supported funding model platforms + +github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] +patreon: # Replace with a single Patreon username +open_collective: # Replace with a single Open Collective username +ko_fi: # Replace with a single Ko-fi username +tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel +community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry +liberapay: # Replace with a single Liberapay username +issuehunt: # Replace with a single IssueHunt username +otechie: # Replace with a single Otechie username +custom: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/donate.png diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000000..e29c2e45b6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,52 @@ +--- +name: Bug report +about: Make AndroidUtilCode more perfect! +labels: bug +assignees: Blankj + +--- + +## Describe the bug + +A clear and concise description of what the bug is. + +- The version of AndroidUtilCode: +- The device: +- The version of device: + +## The code of bug + + +``` +put your code here +``` + +## The stack of crash + + + +``` +put the stack of crash here +``` + +## Screenshots + +If applicable, add screenshots to help explain your problem. + + +## Please delete the current line and the following. + +Thank you for supporting [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). diff --git a/.github/ISSUE_TEMPLATE/bug_report_cn.md b/.github/ISSUE_TEMPLATE/bug_report_cn.md new file mode 100644 index 0000000000..02ea0223e3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report_cn.md @@ -0,0 +1,52 @@ +--- +name: 提交 Bug +about: 让工具类更完美! +labels: bug +assignees: Blankj + +--- + +## 描述 Bug + +简洁地描述下 Bug。 + +- AndroidUtilCode 的版本: +- 出现 Bug 的设备型号: +- 设备的 Android 版本: + +## 相关代码 + + +``` +put your code here +``` + +## 异常堆栈 + + + +``` +put the stack of crash here +``` + +## 截图 + +如果有的话请添加屏幕截图以帮助解释问题。 + + +## 请删除当前行及以下内容 + +感谢支持 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md new file mode 100644 index 0000000000..90a0fe1993 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request.md @@ -0,0 +1,21 @@ +--- +name: Feature request +about: Make AndroidUtilCode more perfect! +labels: help wanted +assignees: Blankj + +--- + +## Describe the feature + +A clear and concise description of what the feature is. + + +## Reference + +Hope to give some reference articles, links, code, if any. + + +## Please delete the current line and the following + +Thank you for supporting [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). diff --git a/.github/ISSUE_TEMPLATE/feature-request_cn.md b/.github/ISSUE_TEMPLATE/feature-request_cn.md new file mode 100644 index 0000000000..20862d047b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature-request_cn.md @@ -0,0 +1,21 @@ +--- +name: 提交需求 +about: 让工具类更健全! +labels: help wanted +assignees: Blankj + +--- + +## 描述需求 + +简洁地描述下需求。 + + +## 可借鉴的 + +如果有的话,可以给出一些参考文章、链接、代码 + + +## 请删除当前行及以下内容 + +感谢支持 [AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode). diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml new file mode 100644 index 0000000000..311fc1deaa --- /dev/null +++ b/.github/workflows/android.yml @@ -0,0 +1,17 @@ +name: Android CI + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: set up JDK 1.8 + uses: actions/setup-java@v1 + with: + java-version: 1.8 + - name: Build with Gradle + run: ./gradlew build aR diff --git a/.gitignore b/.gitignore index ff9841fba7..9d11f56a24 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,15 @@ *.iml +__api__.json +__bus__.json .gradle -/local.properties +local.properties .idea .DS_Store /build /captures -.externalNativeBuild \ No newline at end of file +.externalNativeBuild +/apk +*.phrof +/mavenLocal +/reports +*/reports \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3c5d485703..0000000000 --- a/.travis.yml +++ /dev/null @@ -1,26 +0,0 @@ -language: android -jdk: oraclejdk8 -sudo: false - -android: - components: - - tools - - platform-tools - - tools - - build-tools-26.0.2 - - android-26 - - licenses: - - 'android-sdk-license-.+' - - '.+' - - notifications: - email: false - -before_install: - - mkdir "$ANDROID_HOME/licenses" || true - - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" - - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" - -script: - - ./gradlew build connectedCheck --info diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000000..73e8145bf1 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,522 @@ +* `22/10/15` [add] Fix some issue. Publish v1.31.1 +* `21/12/06` [add] Publish v1.31.0 +* `21/05/13` [add] Support publish mavenCentral. +* `21/02/22` [add] Fix ToastUtils rtl bug. Publish v1.30.6. +* `20/11/16` [add] Add ImageUtils#save2Album support param of dirName. +* `20/11/13` [add] Fix MessengerUtils ANR. Add NetworkUtils#getWifiScanResult, [add|remove]OnWifiChangedConsumer. Publish v1.30.5. +* `20/10/29` [add] Fix MessengerUtils startService IllegalStateException. Publish v1.30.4. +* `20/10/28` [add] Fix BusUtils ConcurrentModificationException. Publish v1.30.3. +* `20/10/27` [add] Fix AppUtils#getAppSignatures. Add DeviceUtils#isDevelopmentSettingsEnabled. Publish v1.30.2. +* `20/10/26` [add] Fix AppUtils#isAppForeground. Publish v1.30.1. +* `20/10/24` [add] Publish v1.30.0. +* `20/10/23` [fix] LanguageUtils crash on some device. +* `20/10/21` [add] LogUtils.Config#setOnConsoleOutputListener, setOnFileOutputListener, addFileExtraHead. LogUtils.getCurrentLogFilePath. +* `20/10/20` [opt] ToastUtils. +* `20/10/12` [add] PermissionUtils#explain. +* `20/10/10` [add] ClipboardUtils. +* `20/10/08` [add] VolumeUtils. +* `20/09/06` [add] DebouncingUtils#isValid. +* `20/09/04` [fix] ToastUtils adapt SDK 30. +* `20/05/28` [fix] IntentUtils#getInstallAppIntent file exist wrong. Publish v1.29.0. +* `20/05/23` [fix] BusUtils#postSticky times not right. Publish v1.28.6. +* `20/05/22` [add] IntentUtils#getInstallAppIntent support Uri param. +* `20/05/21` [add] Publish bus plugin v2.6. Publish api plugin v1.4. Publish. Publish v1.28.5. +* `20/05/19` [fix] FileUtils#copyOrMoveDird NPE. +* `20/05/18` [add] IntentUtils#getLaunchAppDetailsSettingsIntent support isNewTask. +* `20/05/17` [add] ImageUtils#save2Album, NetworkUtils#getSSID, UtilsTransActivity4MainProcess. +* `20/05/03` [add] Publish bus plugin v2.5. Publish api plugin v1.3. Publish. Publish v1.28.4. +* `20/04/30` [add] BaseItem support partialUpdate. +* `20/04/29` [add] Publish plugin lib com.blankj:base-transform:1.0. +* `20/04/28` [fix] LanguageUtils#applyLanguage. +* `20/04/27` [fix] BarUtils#isNavBarVisible. +* `20/04/26` [fix] Utils#init fit tinker. Publish v1.28.3. +* `20/04/25` [fix] UriUtils#uri2File Unknown URI. Publish 1.28.2. +* `20/04/24` [add] SnackbarUtils support show on the top; UriUtils#uri2InputStream. +* `20/04/23` [fix] UriUtils#uri2File not support HW; TransActivity crash below 21. +* `20/04/23` [fix] PhoneUtils#getSerial, PhoneUtils#getSerial crash on Android 10. +* `20/04/20` [fix] ImageUtils#isImage. +* `20/04/18` [fix] PermissionUtils#callback. Publish v1.28.1. +* `20/04/17` [fix] ImageUtils#view2Bitmap, ImageUtils.getBitmap(InputStream). +* `20/04/16` [add] ConvertUtils#int2HexString, hexString2Int. +* `20/04/15` [add] UiMessageUtils' demo. +* `20/04/13` [add] NumberUtils. Publish v1.28.0. +* `20/04/12` [opt] TimeUtils#SDF_THREAD_LOCAL. +* `20/04/11` [add] SDCardUtils#getXxTotalSize, SDCardUtils#getXxAvailableSize. FileUtils#getFsTotalSize, FileUtils#getFsAvailableSize. +* `20/04/10` [fix] FileUtils#isFileExists; FragmentUtils#getTop bug. Publish v1.27.6. +* `20/04/09` [add] UriUtils#res2Uri, UriUtils#uri2File support QQBrowser; ThreadUtils#getMainHandler; PathUtils#getxxPathExternalFirst. +* `20/04/08` [fix] ActivityUtils#finish bug. Publish v1.27.5. +* `20/04/08` [fix] CleanUtils clean dir not work. FileUtils#isFileExists. Publish v1.27.4. +* `20/04/08` [fix] CrashUtils DefaultUncaughtExceptionHandler is wrong; LogUtils write file failed; Utils#getApp failed run on remote process. Publish v1.27.3. +* `20/04/07` [mdf] GsonUtils#getGson() method public. +* `20/04/04` [fix] ShadowUtils bug running on lower version devices. Publish v1.27.2. +* `20/04/03` [fix] UtilsActivityLifecycleImpl#HashMap#remove IllegalStateException bug. +* `20/04/02` [fix] PathUtils sdcard enable state is wrong; ActivityUtils finish activity wrong; Publish v1.27.1. +* `20/03/31` [add] Publish v1.27.0. +* `20/03/30` [add] BatteryUtils in subutil. +* `20/03/27` [add] publish.gradle. +* `20/03/24` [add] UtilsBridge to clean the utils. +* `20/03/22` [upd] GsonUtils support custom gson. +* `20/03/20` [add] ActivityUtils#addActivityLifecycleCallbacks, ActivityUtils#removeActivityLifecycleCallbacks. +* `20/01/17` [upd] Leak Canary to v2.1. +* `20/01/06` [add] ClickUtils#expandClickArea, ClickUtils#back2HomeFriendly +* `19/11/30` [add] Publish bus plugin v2.4. Publish api plugin v1.2. +* `19/11/28` [add] Publish v1.26.0. +* `19/11/27` [add] Shadow demo. +* `19/11/26` [add] MVP demo. +* `19/11/22` [fix] Adapt the project for Gradle version of 6.0. +* `19/10/30` [add] Publish bus plugin v2.3. Publish api plugin v1.1. +* `19/10/24` [upd] Demo's UI. +* `19/10/22` [add] NotificationUtils and demo. +* `19/10/20` [add] UiMessageUtils. +* `19/09/20` [add] ShadowUtils. +* `19/08/27` [add] DebugUtils. +* `19/08/26` [fix] PermissionUtils NPE. +* `19/08/25` [upd] ImageUtils#getImageType. [add] LogUtils#getLogFiles. Publish v1.25.9. +* `19/08/24` [fix] PhoneUtils#getIMEI crash on SDK 29. +* `19/08/23` [add] ViewUtils#isLayoutRtl. +* `19/08/22` [add] LogUtils#getLogFiles. +* `19/08/13` [add] MapUtils and MapUtilsTest. Publish v1.25.8. +* `19/08/12` [add] CollectionUtils and CollectionUtilsTest. +* `19/08/11` [add] ArrayUtils and ArrayUtilsTest. +* `19/08/09` [fix] https://www.virustotal.com/gui/home/upload with ESET-NOD32. Publish v1.25.7. +* `19/08/08` [add] BusUtils#post tag support one-to-many. Publish v1.25.6. +* `19/08/04` [add] ThreadUtils#Task support timeout. +* `19/08/01` [upd] EncryptUtils#rsa. +* `19/07/31` [add] DeviceUtils#getUniqueDeviceId, DeviceUtils#isSameDevice. Publish v1.25.5. +* `19/07/30` [fix] ThreadUtils's task can only be executed once. PhoneUtils#getIMEI wrong. +* `19/07/29` [fix] BusUtils post father class useless. KeyboardUtils#hideSoft bug. Publish v1.25.4. +* `19/07/28` [add] NetworkUtils#(un)registerNetworkStatusChangedListener. Publish v1.25.3. +* `19/07/27` [fix] ThreadUtils memory leak. +* `19/07/26` [add] ContainerUtils. Publish v1.25.2. +* `19/07/25` [fix] PermissionUtils' NullPointException. +* `19/07/24` [fix] ZipUtils#unzipFile. +* `19/07/23` [fix] ThreadUtils of cache pool. Publish v1.25.1. +* `19/07/18` [add] README of ApiUtils and BusUtils. +* `19/07/15` [add] Publish v1.25.0. +* `19/07/14` [upd] Bus plugin for use BusUtils. Publish bus plugin v2.0. +* `19/07/13` [add] Api plugin for use ApiUtils. Publish api plugin v1.0. +* `19/07/09` [upd] The frame of project. +* `19/07/06` [upd] BusUtils which behave same as EventBus. +* `19/07/03` [add] ApiUtils which decoupling modules. +* `19/06/30` [add] LanguageUtils support activity's class name. +* `19/06/29` [add] ClickUtils#OnMultiClickListener, and remove dangerous function. Publish v1.24.6. +* `19/06/28` [add] LanguageUtils. Publish v1.24.5. +* `19/06/20` [fix] BusUtils' permission. Publish v1.24.4. +* `19/06/19` [fix] UriUtils. Publish v1.24.3. +* `19/06/18` [add] ClickUtils, ViewUtils. +* `19/06/07` [fix] LogUtils file name contains ':'. Publish v1.24.2. +* `19/06/06` [fix] LogUtils write to file. Publish v1.24.1. +* `19/06/03` [fix] Refactoring framework. Publish v1.24.0. +* `19/04/25` [fix] LogUtils delete due log. +* `19/04/24` [upd] The swipe panel. +* `19/03/17` [fix] The ugly UI. +* `19/03/14` [fix] AdaptScreenUtils didn't work on some HaWei tablet. +* `19/03/09` [fix] UriUtils#uri2File. +* `19/03/08` [add] LogUtils support multi process. Publish v1.23.7. +* `19/03/02` [fix] LogUtils#file. +* `19/02/28` [fix] ImageUtils#calculateInSampleSize. Publish v1.23.6. +* `19/02/26` [fix] UriUtils#uri2File. Publish v1.23.5. +* `19/01/31` [add] HttpUtils. +* `19/01/30` [add] RomUtils. Publish v1.23.4. +* `19/01/29` [fix] LogUtils format json when json not start with '{'. Publish v1.23.3. +* `19/01/28` [fix] KeyboardUtils#fixSoftInputLeaks don't work on the device of HuaWei. +* `19/01/26` [fix] NetworkUtils#getNetworkType. +* `19/01/25` [add] CloneUtils, PermissionUtils support request permission of WRITE_SETTINGS and DRAW_OVERLAYS. Publish v1.23.2. +* `19/01/24` [add] BrightnessUtils and FlashlightUtils. +* `19/01/23` [add] Modify the demo of utilcode use kotlin. Publish v1.23.1. +* `19/01/22` [fix] AppUtils#installApp. +* `19/01/17` [fix] Publish v1.23.0. +* `19/01/16` [fix] BarUtils get Activity from view and delete the function of set status bar alpha. +* `19/01/15` [add] ColorUtils. +* `19/01/04` [add] CacheDiskStaticUtils, CacheDoubleStaticUtils, CacheMemoryStaticUtils. +* `19/01/03` [add] SPStaticUtils. +* `19/01/02` [fix] LogUtils log object. Publish v1.22.10. +* `19/01/01` [add] GsonUtils. +* `18/12/29` [add] AntiShakeUtils and VibrateUtils. Publish v1.22.9. +* `18/12/28` [fix] ToastUtils show behind the dialog when close notification. +* `18/12/27` [fix] LogUtils print StringBuilder failed. +* `18/12/24` [fix] Utils$ActivityLifecycleImpl.consumeOnActivityDestroyedListener ConcurrentModificationException. Publish v1.22.7. +* `18/12/22` [fix] AdaptScreenUtils#pt2px don't work when start webview. Publish v1.22.6. +* `18/12/21` [add] LogUtils support print Map, Collection and Object to String. +* `18/12/19` [fix] AdaptScreenUtils don't work in MIUI on Android 5.1.1. Publish v1.22.5. +* `18/12/18` [fix] ToastUtils multi show crash when run API 25. Publish v1.22.4. +* `18/12/18` [fix] ImageUtils recycle ret equals src. Publish v1.22.3. +* `18/12/17` [fix] Utils$FileProvider4UtilCode not found. Publish v1.22.3. +* `18/12/17` [fix] ToastUtils leak. Publish v1.22.2. +* `18/12/09` [add] Component for the project. +* `18/12/04` [add] BusUtils. Publish v1.22.1. +* `18/11/18` [fix] ToastUtils don't show in the devices grater than API 24 when close the permission of notification. Publish v1.22.0. +* `18/11/17` [fix] AppUtils#isAppInstalled don't work in no launcher app. +* `18/11/16` [fix] ThreadUtils#cancel block the main thread. +* `18/11/15` [add] module of bus-gradle-plugin and change style of gradle. +* `18/11/14` [add] BusUtils. +* `18/11/13` [add] AdaptScreenUtils. +* `18/11/12` [fix] SPUtils bug when use in multi threads. +* `18/10/25` [fix] SpanUtils#setLineHeight bug of multi lines. Publish v1.21.2. +* `18/10/24` [fix] SpanUtils#appendImage on VIVO. Publish v1.21.1. +* `18/10/16` [add] BusUtils, DeviceUtils#isAdbEnabled. Publish v1.21.0. +* `18/09/29` [fix] ToastUtils which causes crash in the some devices of Xiaomi. Publish v1.20.4. +* `18/09/13` 修复 ToastUtils 在小米手机显示 Toast 带有 App 名,发布 1.20.3 +* `18/09/12` 修复 KeyBoardUtils#fixAndroidBug5497,完善 ToastUtils,发布 1.20.2 +* `18/09/11` 新增 BarUtils#isSupportNavBar,删除 BarUtils#setNavBarImmersive +* `18/09/10` 修复 KeyboardUtils 中 getWindowVisibleDisplayFrame 空指针异常,更新 BarUtils#isNavBarVisible +* `18/09/06` 新增 PathUtils,发布 1.20.1 +* `18/09/05` 新增 KeyboardUtils#showSoftInputUsingToggle 和 KeyboardUtils#hideSoftInputUsingToggle +* `18/09/04` 修复 SHA 算法名 +* `18/09/03` 新增 MetaDataUtils,发布 1.20.0 +* `18/08/30` 修复 PermissionUtils$PermissionActivity 的 window 背景为黑色的问题,发布 1.19.4 +* `18/08/28` 新增 RegexUtils#isIDCard18Exact +* `18/08/26` 新增 AppUtils#getAppSignatureSHA256 和 AppUtils#getAppSignatureMD5,发布 1.19.3 +* `18/08/24` 新增 ScreenUtils#restoreAdaptScreen,利用 FileProvider4UtilCode 不再需要初始化,发布 1.19.2 +* `18/08/23` 修复 适配后 ToastUtils 原生 Toast 尺寸发生改变的问题,修复 KeyboardUtils#fixSoftInputLeaks,发布 1.19.1 +* `18/08/10` 修复 ScreenUtils#adaptxx 导致获取状态栏和导航栏尺寸不对问题,发布 1.19.0 +* `18/08/09` 新增 IntentUtils#isIntentAvailable,ToastUtils 传入空显示 null,发布 1.18.6 +* `18/08/08` 修复 ScreenUtils#adaptxx 在第三方 SDK 会出现的问题,发布 1.18.5 +* `18/08/07` 修复 ScreenUtils#adaptxx 在 API 26 以下无效的 bug,发布 1.18.4 +* `18/08/06` 修复 ScreenUtils#screenShot 中 decorView.getDrawingCache() 为空的问题,发布 1.18.3 +* `18/08/05` 修复 1.18.0 版本删去 `if (activity.getClass() == PermissionUtils.PermissionActivity.class) return;` 造成 PermissionUtils 获取栈顶 Activity 问题,发布 1.18.2 +* `18/08/04` 新增 LogUtils#Config#setSaveDays,发布 1.18.1 +* `18/08/03` 新增 LogUtils#Config#addFormatter,并新增 Array, Throwable, Bundle, Intent 的格式化输出 +* `18/08/02` 修复 TimeUtils 中的 SimpleDateFormat 为 ThreadLocal 实现 +* `18/08/01` 删除 标记废弃的 CacheUtils, AppUtils#installApp, TimeUtils#getWeekIndex,发布 1.18.0 +* `18/07/30` 替换 ScreenUtils#adaptPortraitScreen 和 ScreenUtils#adaptLandscapeScreen,为 ScreenUtils#adaptScreen4VerticalSlide 和 ScreenUtils#adaptScreen4HorizontalSlide +* `18/07/28` 修复 NetworkUtils#getIPAddress +* `18/07/16` 新增 ScreenUtils#adaptPortraitScreen 和 ScreenUtils#adaptLandscapeScreen,发布 1.17.3 +* `18/07/13` 修复 IntentUtils 分享图片判断逻辑,CacheDiskUtils 可放入 byte[0] +* `18/06/29` 修复 FragmentUtils 中 getFragmentManager 空指针错误,发布 1.17.2 +* `18/06/27` 新增 UriUtils#uri2File +* `18/06/25` 新增 KeyboardUtils#fixAndroidBug5497,发布 1.17.1 版本 +* `18/06/21` 修复 FragmentUtils#add 死循环的 BUG +* `18/06/14` 替换 CacheUtils 为 CacheDiskUtils,CacheUtils 标记 deprecated,发布 1.17.0 版本 +* `18/06/13` 新增 CacheMemoryUtils 和 CacheDoubleUtils +* `18/06/12` 完善 FragmentUtils#add 和 replace 新增 tag +* `18/05/30` 完善 DeviceUtils#getMacAddress,发布 1.16.4 版本 +* `18/05/30` 修复 ToastUtils 在 targetSdkVersion 为 27 在 api 25 机器快速 show 两次崩溃的异常,发布 1.16.3 版本 +* `18/05/29` 完善 TimeUtils 的 timeSpan 带符号位,ToastUtils 去除弱引用,发布 1.16.2 版本 +* `18/05/25` 新增 AppUtils#registerAppStatusChangedListener 和 AppUtils#unregisterAppStatusChangedListener,发布 1.16.1 版本 +* `18/05/22` 新增 ThreadUtils,发布 1.16.0 版本 +* `18/05/15` 新增 MetaDataUtils 和 ActivityUtils#startActivityForResult,发布 1.15.1 版本 +* `18/05/08` 新增 ResourceUtils,发布 1.15.0 版本 +* `18/05/07` 修复 ZipUtils 漏洞,发布 1.14.4 版本 +* `18/05/03` 修复 ToastUtils 默认字体大小问题,发布 1.14.3 版本 +* `18/05/02` 修复 PermissionUtils 空异常,发布 1.14.2 版本 +* `18/04/28` 新增 FlashlightUtils,发布 1.14.1 版本 +* `18/04/26` 修复 KeyboardUtils 全屏 NO_LIMIT 的 bug +* `18/04/25` 修复 多个空异常 +* `18/04/24` 修复 多 FileProvider 带来的问题,发布 1.14.0 版本 +* `18/04/23` 新增 RSA 加解密,发布 1.13.16 版本 +* `18/04/22` 新增 LogUtils 设置栈偏移 +* `18/04/21` 新增 AppUtils#relaunchApp、DeviceUtils#getABIs,发布 1.13.15 版本 +* `18/04/20` 新增 BarUtils#setNavBarColor、BarUtils#getNavBarColor +* `18/04/19` 新增 Process#isMainProcess、Process#getCurrentProcessName,发布 1.13.14 版本 +* `18/04/18` 修复 LogUtils 头部空指针异常,SPUtils、CacheUtils 存储空值异常,发布 1.13.13 版本 +* `18/04/17` 修复 ToastUtils 内存泄漏问题,感谢 [LambertCoding](https://github.com/LambertCoding),发布 1.13.12 版本 +* `18/04/16` 完善 AppUtils#installAppSilent 路径包含空格问题,发布 1.13.11 版本 +* `18/04/10` 完善 OnCrashListener 回调崩溃信息,发布 1.13.10 版本 +* `18/04/09` 修复 静默安装重载错误,发布 1.13.9 版本 +* `18/04/08` 修复 获取栈顶 Activity 链表为空的异常,获取栈顶 Activity 放到 Utils 中,发布 1.13.8 版本 +* `18/04/06` 新增 GsonUtils 及单元测试 +* `18/04/05` 完善 README 文档 +* `18/04/03` 修复 LogUtils 在 Android Studio 3.1 版本日志丑陋的问题,发布 1.13.7 版本 +* `18/03/29` 兼容 Utils 的初始化传入 application,发布 1.13.6 版本 +* `18/03/20` 修复 PermissionUtils 子进程的问题,发布 1.13.5 版本 +* `18/03/16` 新增 gradle 插件来格式化 README +* `18/03/14` 修复 KeyboardUtils#getContentViewInvisibleHeight,发布 1.13.4 版本 +* `18/03/10` 完善 AppUtils#installAppSilent 和 DeviceUtils#getMacAddress,发布 1.13.3 版本 +* `18/03/09` 完善 ActivityUtils#getTopActivity +* `18/03/08` 新增 反射获取栈顶 Activity 的方法,发布 1.13.2 版本 +* `18/03/07` 修复 PermissionUtils 请求权限为 0 的 崩溃 +* `18/03/05` 修复 Library Source does not match the bytecode for class LogUtils 问题,发布 1.13.1 版本 +* `18/03/04` 完善 Javadoc 中文版为英文版,发布 1.13.0 版本 +* `18/03/04` 完善 Javadoc 中文版为英文版 +* `18/03/03` 完善 Javadoc 中文版为英文版 +* `18/03/02` 完善 Javadoc 中文版为英文版 +* `18/03/01` 完善 Javadoc 中文版为英文版 +* `18/02/28` 完善 Javadoc 中文版为英文版 +* `18/02/27` 完善 Javadoc 中文版为英文版 +* `18/02/26` 完善 Javadoc 中文版为英文版 +* `18/02/25` 完善 Javadoc 中文版为英文版 +* `18/02/24` 完善 Javadoc 中文版为英文版 +* `18/02/23` 完善 Javadoc 中文版为英文版 +* `18/02/22` 完善 Javadoc 中文版为英文版 +* `18/02/21` 完善 Javadoc 中文版为英文版 +* `18/02/10` 完善 Javadoc 中文版为英文版 +* `18/02/09` 完善 非空转换插件 traute 的使用方式 +* `18/02/08` 修复 ActivityUtils option 低版本为空的异常 +* `18/01/31` 修复 default 相关的逻辑错误,发布 1.12.4,修复 ToastUtils 在 kotlin 中转义失败,发布 1.12.5 +* `18/01/28` 修复 ToastUtils 默认样式问题,发布 1.12.2,新增 DeviceUtils#getSDKVersionName,发布 1.12.3 +* `18/01/27` 修复 PermissionUtils 某些机型闪烁问题,发布 1.12.1 +* `18/01/17` 完善 ReflectUtils 及单元测试,发布 1.12.0 版本 +* `18/01/16` 完善 ReflectUtils 及单元测试 +* `18/01/15` 完善 ReflectUtils 及单元测试 +* `18/01/14` 完善 ReflectUtils 及单元测试 +* `18/01/13` 完善 ReflectUtils 及单元测试 +* `18/01/12` 完善 ReflectUtils 及单元测试 +* `18/01/11` 修复 ImageUtils 的 fastBlur radius 为 1 recycle 的 bug,新增 CrashUtils 初始化崩溃监听事件,发布 1.11.1 版本 +* `18/01/10` 完善 PermissionUtils 及 readme,发布 1.11.0 版本 +* `18/01/09` 完善 demo 动态权限适配 +* `18/01/08` 新增 SPActivity,删除 SPUtils 的单元测试 +* `18/01/08` 修复 ToastUtils 在 SDK 为 18 的自定义 toast 崩溃问题 +* `18/01/07` 新增 PermissionUtils 的 Demo +* `18/01/06` 修复 权限相关工具类内存泄漏问题 +* `18/01/05` 新增 获取 Activity icon 和 logo +* `18/01/04` 完善 6.0 动态权限相关工具类 +* `18/01/03` 完善 6.0 动态权限相关工具类 +* `18/01/02` 完善 6.0 动态权限相关工具类 +* `18/01/01` 新增 6.0 动态权限相关工具类 +* `17/12/30` 删除 SpanUtils 中设置图标 +* `17/12/29` 完善 SpanUtils 的 appendImage 对齐方式 +* `17/12/28` 完善 ScreenUtils 设置全屏的方式,发布 1.10.0 +* `17/12/26` 新增 状态栏、导航栏设置是否可见和判断是否可见 +* `17/12/22` 新增 注册软键盘改变监听器、注册导航栏改变监听器方法 +* `17/12/21` 完善 获取屏幕宽高,修复行宽度大于 100 字符 +* `17/12/20` 修复 SpanUtils 图标的 bug,不高于 6.0 的版本不支持居中和底部对齐 +* `17/12/19` 修复 SpanUtils 多图的 bug +* `17/12/15` 新增 ReflectUtils +* `17/12/14` 完善 手机号(精确)正则,发布 1.9.12 +* `17/12/12` 完善 LogUtils,当最终日志长度为 0 时,输出 log nothing +* `17/12/11` 完善 ActivityUtils 的 finish 系列,发布 1.9.11 +* `17/12/04` 完善 LogUtils 边框改为单线清爽型 +* `17/11/30` 修复 ToastUtils 背景问题,发布 1.9.10 +* `17/11/30` 修复 ToastUtils 获取背景为空,发布 1.9.9 +* `17/11/28` 修复 EmptyUtils 对 CharSequence 的判断,感谢 jiezigg +* `17/11/24` 新增 readme 格式化的 gradle 脚本 +* `17/11/15` 完善 资源分包位置,使其更合理 +* `17/11/10` 完善 LogUtils 新增日志头部,感谢 Kanade +* `17/11/07` 完善 LogUtils 无 tag 的多参数 +* `17/11/06` 修复 LogUtils 多参数打印失败的问题 +* `17/11/01` 完善 ShellUtil 的 Msg 换行,感谢香脆的大鸡排 +* `17/10/30` 完善 README +* `17/10/29` 修复 6.0 内部存储安装失败问题 +* `17/10/28` 完善 compile 为 implementation, provided 为 compileOnly +* `17/10/27` 修复 兼容 AS3.0 +* `17/10/27` 修复 LogUtils 在 kotlin 中使用的问题 +* `17/10/25` 修复 LogUtils 边框,修复 getBitmap 从流获取 +* `17/09/30` 完善 FragmentUtils,发布 1.9.2 +* `17/09/29` 完善 FragmentUtils 和 isInstallApp +* `17/09/28` 完善 FragmentUtils +* `17/09/27` 完善 FragmentUtils +* `17/09/26` 完善 ActivityUtils 及 Demo,发布 1.9.1 +* `17/09/25` 完善 ActivityUtils 及 Demo +* `17/09/24` 完善 ActivityUtils 及 Demo +* `17/09/23` 完善 FragmentUtils +* `17/09/19` 修复 CrashUtils 自定义路径错误 +* `17/09/18` 完善 ImageUtils 的 Demo +* `17/09/17` 完善 ImageUtils 的 compress +* `17/09/13` 完善 ImageUtils 的 addBorder +* `17/09/13` 完善 ImageUtils 的 toRound +* `17/09/13` 完善 ImageUtils 和 LogUtils +* `17/09/12` 完善 ImageUtils +* `17/09/10` 完善 单元测试 +* `17/09/08` 完善 单元测试 +* `17/09/06` 完善 SDCardUtils 获取 SD 卡路径,完善 SPUtils 新增 commit +* `17/09/05` 完善 LogUtils,发布版本 1.9.0 +* `17/09/04` 完善 ToastUtils,去除相关 safe 函数,都改为 safe 实现,新增 CustomToast 的 Demo +* `17/09/02` 完善 ToastUtils,去除引入 view 带来的问题,发布版本 1.8.6 +* `17/08/30` 修复 ToastUtils 弱引用带来的问题,修复 CacheUtils 异步问题,发布版本 1.8.5 +* `17/08/28` 修复 ToastUtils 内存泄露,新增 toast 可根据系统字体显示不同字体,发布版本 1.8.4 +* `17/08/20` 新增 监听 Activity 生命周期,退出 App,发布版本 1.8.3 +* `17/08/11` 完善 LogUtils 的 Builder 改为 Config,发布版本 1.8.2 +* `17/08/10` 完善 FileUtils 的 deleteFilesInDir 和 listFilesInDir +* `17/08/08` 新增 反射工具类 ReflectUtils +* `17/08/06` 完善 为按功能分包,增加 subutil 的 Demo +* `17/07/31` 修复 NetworkUtils 的 isAvailableByPing 循环递归,发布 1.8.1 +* `17/07/31` 完善 BarUtils,发布 1.8.0 +* `17/07/31` 完善 BarUtils +* `17/07/30` 完善 BarUtils +* `17/07/29` 完善 BarUtils +* `17/07/28` 完善 BarUtils +* `17/07/27` 完善 BarUtils +* `17/07/26` 完善 ActivityUtils +* `17/07/25` 完善 BarUtils,更新布局文件 +* `17/07/24` 完善 BarUtils +* `17/07/23` 完善 BarUtils +* `17/07/22` 完善 BarUtils +* `17/07/21` 完善 xml 文件的格式化 +* `17/07/17` 完善 NetworkUtils 的 isAvailableByPing 函数新增 ip 参数 +* `17/07/14` 修复 FragmentUtils 的 FragmentNode 为 public +* `17/07/11` 完善 将不常用的工具类放在 subutil 中 +* `17/07/10` 新增 subutil 库 +* `17/07/07` 修复 TimeUtils 中获取当天零点的 bug +* `17/07/02` 完善 BarUtils 的 Demo +* `17/07/01` 完善 BarUtils 的 Demo +* `17/06/30` 完善 BarUtils 的 Demo +* `17/06/29` 新增 README logo +* `17/06/28` 新增 返回键及右划返回 +* `17/06/27` 新增 Toolbar +* `17/06/26` 新增 final 参数 +* `17/06/23` 完善 Demo 主页 +* `17/06/20` 完善 ToastUtil, SnackbarUtils 新增设置底边距 +* `17/06/17` 删除 HandlerUtils +* `17/06/16` 新增 insight.io 的 bandage +* `17/06/14` 完善 LogUtils 回退栈,发布 1.7.1 版本 +* `17/06/13` 完善 Snackbar 和 Toast 的 Demo +* `17/06/12` 完善 Snackbar 为建造者模式 +* `17/06/11` 完善 SpanUtils,发布版本 1.7.0 +* `17/06/08` 完善 SpanUtils +* `17/06/07` 完善 SpannableStringUtils 改名为 SpanUtils,即将完工 +* `17/06/06` 完善 SpannableStringUtils +* `17/06/05` 完善 SpannableStringUtils +* `17/06/04` 完善 SpannableStringUtils +* `17/06/03` 完善 SpannableStringUtils +* `17/06/02` 完善 SpannableStringUtils +* `17/06/01` 完善 KeyBoardUtils 及 Demo +* `17/05/30` 完善 CrashUtils,发布 1.6.4 +* `17/05/28` 修复 CacheUtils 的 bug,发布 1.6.3 +* `17/05/27` 修复 CacheUtils 的 bug,发布 1.6.2 +* `17/05/26` 完善 CacheUtils,发布 1.6.0 和 1.6.1 +* `17/05/25` 完善 FileIOUtils 和 CacheUtils +* `17/05/23` 新增 读取文件到字符数组中两种方式 +* `17/05/19` 新增 LogUtils 文件过滤和控制台开关 +* `17/05/16` 新增 ActivityUtils 动画 +* `17/05/12` 新增 base 系列 +* `17/05/11` 修复 SpannableStringUtils 的 setDrawable 的 bug,发布 1.5.1 +* `17/05/10` 完善 7.0 安装 App,完善 AppActivity +* `17/05/09` 完善 TimeUtils 单元测试 +* `17/05/08` 更新 BarUtils, LogUtils 新增配置文件,TimeUtils 将 pattern 改为 format,发布 1.5.0 +* `17/05/04` 新增 签名 +* `17/05/03` 修复 对齐头部日期 +* `17/05/02` 完善 Demo 的 string 字符串变更,完善 ToastUtils 和 SnackbarUtils +* `17/04/27` 新增 Travis CI,使用 shields,发布 1.4.1 +* `17/04/26` 完善 HandlerUtils 使用 Handler#CallBack 的回调接口及 SpannableStringUtils 图片对齐 +* `17/04/24` 修复 拼写错误,修复 StringUtils 的 equalsIgnoreCase +* `17/04/23` 完善 README +* `17/04/21` 完善 TimeUtils,发布 1.4.0 +* `17/04/20` 新增 SpannableStringUtils 设置字体尺寸 +* `17/03/29` 修改 README +* `17/03/27` 更新 LogUtils +* `17/03/26` 更新 LogUtils +* `17/03/25` 更新 LogUtils +* `17/03/24` 完善 StringUtils +* `17/03/20` 修复 链接错误 +* `17/03/19` 新增 LogUtils 栈回溯 +* `17/03/14` 新增 常量包 +* `17/02/14` 完善 FragmentUtils 中,Demo 测试中 +* `17/02/13` 完善 FragmentUtils 中 +* `17/02/12` 完善 FragmentUtils 中 +* `17/02/11` 完善 FragmentUtils 中 +* `17/02/10` 完善 FragmentUtils 中,LogUtils 对长度进行分割 +* `17/02/09` 完善 FragmentUtils 中 +* `17/02/08` 完善 FragmentUtils 中 +* `17/02/07` 完善 FragmentUtils 中 +* `17/02/06` 完善 FragmentUtils 中,炸断肠 +* `17/02/05` 完善 FragmentUtils 中 +* `17/02/04` 完善 FragmentUtils 中 +* `17/02/03` 完善 FragmentUtils 中 +* `17/02/02` 完善 FragmentUtils 中 +* `17/02/01` 完善 FragmentUtils 中 +* `17/01/24` 完善 并发布版本 1.3.6 +* `17/01/16` 新增 LogUtils 打印类名函数名及所在行 +* `17/12/26` 新增 阴历相关工具类 +* `17/12/21` 完善 SpannableStringUtils +* `16/12/19` 完善 SpannableStringUtils +* `16/12/18` 完善 SpannableStringUtils,采用构造者模式 +* `16/12/17` 完善 SpannableStringUtils +* `16/12/16` 完善 拼音工具类 +* `16/12/15` 完善 拼音工具类 +* `16/12/14` 新增 不低于 7.0 的 Html 解码 +* `16/12/13` 新增 获取文件最后修改时间 +* `16/12/12` 新增 Utils 来做初始化 context +* `16/12/10` 完善 权限中 +* `16/12/09` 新增 6.0 以上权限判断 +* `16/12/07` 修复升级到 6.0 bug 中 +* `16/12/06` 完善 FlashlightUtils 中 +* `16/12/05` 完善 FlashlightUtils 兼容 Api21 之后 +* `16/12/04` 新增 FlashlightUtils +* `16/12/03` 完善 时间工具类 +* `16/12/02` 新增 获取合适型时间差 +* `16/12/01` 新增 获取生肖和星座 +* `16/11/30` 新增 获取友好型时间差 +* `16/11/23` 完善 LocationUtils 测试,发布 1.3.4 +* `16/11/22` 修复 LocationActivity 内存泄漏 +* `16/11/21` 完善 README +* `16/11/20` 完善 LocationUtils +* `16/11/19` 完善 SizeUtils +* `16/11/18` 完善 LocationUtils +* `16/11/17` 完善 LocationUtils +* `16/11/16` 新增 拼音工具类,单独拎出来做了整理 +* `16/11/15` 完善 正则工具类 +* `16/11/14` 新增 启动服务 +* `16/11/13` 新增 判断 sim 卡是否准备好 +* `16/11/12` 新增 重启到 recovery 和 bootloader,新增获取 launcher activity,最近一直在博客搬家,所以更得有点少 +* `16/11/04` 修复 README 的缺少 process 的 bug +* `16/11/03` 修复 SnackbarUtils 中 Snackbar 持有弱引用来消除内存泄漏 +* `16/11/02` 修复 内存泄漏中 +* `16/11/01` 完善 发布版本 1.3.3 内存泄漏检测中 +* `16/10/31` 完善 发布版本 1.3.1 和 1.3.2 +* `16/10/30` 修复 获取 IpAddress 对于小米手机的 Bug +* `16/10/29` 新增 文件重命名和完善 root +* `16/10/23` 完善 测试中 +* `16/10/22` 完善 测试中 +* `16/10/21` 完善 测试中 +* `16/10/20` 完善 测试中 +* `16/10/19` 修复 判断网络是否可用 +* `16/10/18` 完善 是否前台应用,完善网络状态 +* `16/10/17` 修复 获取签名,完善是否前台应用,完善网络状态 +* `16/10/16` 新增 SnackbarUtils +* `16/10/15` 完善 AppUtils 的 isAppForeground +* `16/10/14` 完善 README-CN 排版(强迫症一定要对齐) +* `16/10/13` 完善 测试 +* `16/10/12` 新增 LogUtils 建造者模式,新增获取星期,发布版本 1.3.0,cheer +* `16/10/11` 新增 EncryptUtils 的 Hmac 系列加密 +* `16/10/10` 完善 LogUtils +* `16/10/09` 完善 ToastUtils +* `16/10/08` 新增 AppUtils 静默安装和静默卸载 +* `16/10/07` 完善 EmptyUtils,新增很多判空 +* `16/10/05` 完善 Happy Wedding! +* `16/10/04` 完善 Readme +* `16/10/03` 修复 ConvertUtils +* `16/10/02` 完善 CrashUtils 完毕 +* `16/10/01` 完善 Happy National Day! +* `16/09/30` 完善 CrashUtils +* `16/09/29` 完善 CleanUtils 测试完毕 +* `16/09/28` 新增 EmptyUtils,完善 AppUtils 完毕 +* `16/09/27` 新增 CleanUtils,完善 AppUtils +* `16/09/26` 新增 根据域名获取 ip 地址(在此感谢 jp1017),新增 ClipboardUtils 单元测试,对 ImageUtils 进行了 bug 修复 +* `16/09/25` 新增 ClipboardUtils +* `16/09/24` 完善 AppUtils +* `16/09/23` 完善 工具类,新增 ActivityUtils、BarUtils、IntentUtils +* `16/09/22` 完善 LogUtils 中 +* `16/09/21` 新增 LogUtils +* `16/09/20` 完善 昨天的单元测试 +* `16/09/19` 新增 CameraUtils,新增获取中文首字母 +* `16/09/18` 修复 少许代码,发布 1.2.1 +* `16/09/15` 完善 Happy Mid-Autumn Festival! +* `16/09/14` 完善 ImageUtils 完毕,完善了 6.0 及以上版本安装 App 的问题,发布版本 1.2.0 +* `16/09/13` 新增 英文版 README +* `16/09/12` 完善 ZipUtils 及单元测试完美谢幕(支持空文件夹) +* `16/09/11` 完善 不断更 +* `16/09/10` 完善 ZipUtils 和单元测试中 +* `16/09/09` 新增 字符串反转,ImageUtils 单元测试卡住中,暂时换为真机测试 +* `16/09/08` 修复 NetworkUtils 报空,ImageUtils 单元测试卡住中 +* `16/08/31` 完善 ImageUtils 单元测试中,之后 7 天鸡儿岭放假,停更 +* `16/08/30` 完善 ImageUtils 单元测试(获取保存图片有问题,卡卡卡住了) +* `16/08/29` 完善 ImageUtils,新增 stack 模糊算法和快速模糊 +* `16/08/28` 完善 ImageUtils +* `16/08/27` 完善 ConvertUtils,新增 ZipUtils +* `16/08/26` 完善 ThreadPoolUtils 线程池相关工具类 +* `16/08/25` 完善 ConstUtils 时间和存储相关常量新增枚举,传参改为枚举更为友好,新增 ThreadPoolUtils 线程池相关工具类 +* `16/08/24` 新增 ConvertUtils 的 InputStream 与 byte[]和 String 相互转换,应用在 FileUtils 中读文件 +* `16/08/23` 修复 bug,接下来完善 SDCardUtils 和 ImageUtils +* `16/08/22` 完善 SPUtils 将 commit 改为 apply 提高效率,将 SPUtils 改为构造函数法创建,FileUtils 新增查找函数,规范 JavaDoc +* `16/08/21` 完善 FileUtils 单元测试,修复 FileUtils 的 bug,发布版本 1.1.2 +* `16/08/20` 完善 目录、FileUtils 单元测试,发布版本 1.1.1 +* `16/08/19` 完善 FileUtils 及单元测试,及其他小修小补(在此感谢 vpop 的三次 Pr) +* `16/08/18` 完善 FileUtils 及单元测试,完善 ImageUtils +* `16/08/17` 完善 FileUtils +* `16/08/16` 新增 StringUtils 及单元测试,完善正则工具类,版本更新 1.1.0 +* `16/08/15` 新增 3DES 和 AES 加密及单元检测,加密解密工具类基本完善,目录更新 +* `16/08/14` 新增 DES 加密及单元检测 +* `16/08/13` 新增 MD2,SHA224,SHA256,SHA384,SHA512 加密及单元测试,正折腾 DES 加密 +* `16/08/12` 新增 Base64 和 Html 编码解码及他们的单元测试,新增 TimeUtils 单元测试,更新 md +* `16/08/11` 新增 SDCardUtils, UnitUtils,单元测试慢慢完善中 +* `16/08/09` 修复 目录排版,新增 Download, Proguard 和 License +* `16/08/08` 新增 Shell 工具类,已传 jcenter 遇到好多坑,javaDoc 惹的祸,注释一定要规范 +* `16/08/07` 新增 6.0 获取 Mac 地址方法,新增对 HTML 转义,新增编码解码工具类,新增 SP 工具类 +* `16/08/06` 完善 名包名,新增加密相关的单元测试,MD5 加密新增文件加密重载 +* `16/08/05` 新增 MD5 盐加密,完善 NetworkUtils,新增判断状态栏是否存在(在此感谢 tiandawu) +* `16/08/04` 新增 时间工具类(在此感谢 yi520000 给的补充),手机正则分简单和精确(在此感谢 MIkeeJY),新增判断是否锁屏,注释分段落,目录按首字母排序 +* `16/08/03` 修复 onCreate 中获取 view 尺寸的 bug, MD5 和 SHA 的 Bug 修复完成(在此感谢 ssyijiu) +* `16/08/02` 修复 wifi 设置界面 bug,注释排版还在修改,获取 mac 地址增加判空,新增 QQ群:74721490,欢迎加入,新增隐藏状态栏,注释更加全面,工具类已封装,写的时候真的是一个一个测试过去的,宝宝心里苦 +* `16/08/01` 新增 获取 SD 卡路径,手机和设备进行分类,代码 bug 修改部分,小修排版,正在封装类,新增目录中显示方法名,新增获取当前 App 版本 Code +* `16/07/31` 新增 点击屏幕空白区域隐藏软键盘,未能成功增加本页目录跳转功能(不支持) diff --git a/README-CN.md b/README-CN.md index ae90c54453..5c85dca1fe 100644 --- a/README-CN.md +++ b/README-CN.md @@ -1,6 +1,8 @@ -![logo][logo] +[![logo][logo]](https://github.com/Blankj/AndroidUtilCode) -[![auc][aucsvg]][auc] [![api][apisvg]][api] [![build][buildsvg]][build] [![Insight][insightsvg]][insight] [![License][licensesvg]][license] +[![frame][frame]](https://github.com/Blankj/AucFrameTemplate) + +[![auc][aucSvg]][auc] [![result][apiSvg]][result] [![build][buildSvg]][build] [![License][licenseSvg]][license] ## [README of English][readme] @@ -32,54 +34,54 @@ ## Contact -[![Blog][blogsvg]][blog] [![jianshu][jianshusvg]][jianshu] [![weibo][weibosvg]][weibo] [![QQ0Group][qq0groupsvg]][qq0group] [![QQ1Group][qq1groupsvg]][qq1group] +[![Blog][blogSvg]][blog] [![jianshu][jianshuSvg]][jianshu] [![weibo][weiboSvg]][weibo] [![QQGroup][qqgroupSvg]][qqgroup] + + +## [Change Log][changeLog.md] -## [Update Log][update_log.md] +## 打个小广告 +欢迎加入我的小专栏「**[基你太美](https://xiaozhuanlan.com/Blankj)**」一起学习。 [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png -[aucsvg]: https://img.shields.io/badge/AndroidUtilCode-v1.9.12-brightgreen.svg +[frame]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/auc_frame_cn.png + +[aucSvg]: https://github.com/Blankj/AndroidUtilCode/workflows/Android%20CI/badge.svg?branch=master [auc]: https://github.com/Blankj/AndroidUtilCode -[apisvg]: https://img.shields.io/badge/API-14+-brightgreen.svg -[api]: https://android-arsenal.com/api?level=14 +[apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg +[result]: https://android-arsenal.com/result?level=14 -[buildsvg]: https://travis-ci.org/Blankj/AndroidUtilCode.svg?branch=master +[buildSvg]: https://travis-ci.org/Blankj/AndroidUtilCode.svg?branch=master [build]: https://travis-ci.org/Blankj/AndroidUtilCode -[insightsvg]: https://www.insight.io/repoBadge/github.com/Blankj/AndroidUtilCode -[insight]: https://insight.io/github.com/Blankj/AndroidUtilCode - -[licensesvg]: https://img.shields.io/badge/License-Apache--2.0-brightgreen.svg +[licenseSvg]: https://img.shields.io/badge/License-Apache--2.0-brightgreen.svg [license]: https://github.com/Blankj/AndroidUtilCode/blob/master/LICENSE [readme]: https://github.com/Blankj/AndroidUtilCode [readme-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/README-CN.md -[utilcode]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/README.md -[utilcode-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/README-CN.md +[utilcode]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README.md +[utilcode-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md -[subutil]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/README.md -[subutil-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/README-CN.md +[subutil]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/README.md +[subutil-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/README-CN.md -[update_log.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/update_log.md +[changeLog.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/CHANGELOG.md [donate]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/donate.png -[blogsvg]: https://img.shields.io/badge/Blog-@Blankj-34a48e.svg +[blogSvg]: https://img.shields.io/badge/Blog-@Blankj-34a48e.svg [blog]: http://blankj.com -[jianshusvg]: https://img.shields.io/badge/简书-@Blankj-34a48e.svg +[jianshuSvg]: https://img.shields.io/badge/简书-@Blankj-34a48e.svg [jianshu]: http://www.jianshu.com/u/46702d5c6978 -[weibosvg]: https://img.shields.io/badge/weibo-@__Blankj-34a48e.svg +[weiboSvg]: https://img.shields.io/badge/weibo-@__Blankj-34a48e.svg [weibo]: http://weibo.com/3076228982 -[qq0groupsvg]: https://img.shields.io/badge/QQ群0(满)-74721490-ff73a3.svg -[qq0group]: https://shang.qq.com/wpa/qunwpa?idkey=62baf2c3ec6b0863155b0c7a10c71bba2608cb0b6532fc18515835e54c69bdd3 - -[qq1groupsvg]: https://img.shields.io/badge/QQ群1-25206533-ff73a3.svg -[qq1group]: https://shang.qq.com/wpa/qunwpa?idkey=d906789f84484465e2736f7b524366b4c23afeda38733d5c7b10fc3f6e406e9b +[qqgroupSvg]: https://img.shields.io/badge/QQ群-25206533-34a48e.svg +[qqgroup]: https://shang.qq.com/wpa/qunwpa?idkey=d906789f84484465e2736f7b524366b4c23afeda38733d5c7b10fc3f6e406e9b diff --git a/README.md b/README.md index 61445b4847..9ae668e26e 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,14 @@ -![logo][logo] +[![logo][logo]](https://github.com/Blankj/AndroidUtilCode) -[![auc][aucsvg]][auc] [![api][apisvg]][api] [![build][buildsvg]][build] [![Insight][insightsvg]][insight] [![License][licensesvg]][license] +[![frame][frame]](https://github.com/Blankj/AucFrameTemplate) + +[![auc][aucSvg]][auc] [![result][apiSvg]][result] [![build][buildSvg]][build] [![License][licenseSvg]][license] ## [README of Chinese][readme-cn] ## About -**[AndroidUtilCode][readme]** :fire: is a powerful & easy to use library for Android. It encapsulates the functions commonly used in Android development which have complete demo and unit test. Using its encapsulated APIs can greatly improve development efficiency. It mainly consists of two modules. One is the main module, **[utilcode][utilcode-cn]**, which includes the utils commonly used in development. The other is **[subutil][subutil-cn]** which contains the utils is not very common, which is beneficial to simplify the main module. :fire: +**[AndroidUtilCode][readme]** :fire: is a powerful & easy to use library for Android. This library encapsulates the functions that commonly used in Android development which have complete demo and unit test. By using it's encapsulated APIs, you can greatly improve the development efficiency. The program mainly consists of two modules which is **[utilcode][utilcode-cn]**, which is commonly used in development, and **[subutil][subutil-cn]** which is rarely used in development, but the utils can be beneficial to simplify the main module. :fire: ## Documentation @@ -25,61 +27,61 @@ ## Donations -If this ptoject helps you a lot, and you would like to support this ptoject's further development and the continuous maintenance of this project. You can sweep the following QR code free to donate me, which asked me to have a cup of coffee or beer. Your donation is highly appreciated. Thank you! +If this project helps you a lot and you want to support the project's development and maintenance of this project, feel free to scan the following QR code for donation. Your donation is highly appreciated. Thank you! ![donate][donate] ## Contact -[![Blog][blogsvg]][blog] [![jianshu][jianshusvg]][jianshu] [![weibo][weibosvg]][weibo] [![QQ0Group][qq0groupsvg]][qq0group] [![QQ1Group][qq1groupsvg]][qq1group] +[![Blog][blogSvg]][blog] [![jianshu][jianshuSvg]][jianshu] [![weibo][weiboSvg]][weibo] [![QQGroup][qqgroupSvg]][qqgroup] + + +## [Change Log][changeLog.md] -## [Update Log][update_log.md] +## 打个小广告 +欢迎加入我的小专栏「**[基你太美](https://xiaozhuanlan.com/Blankj)**」一起学习。 [logo]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/logo.png -[aucsvg]: https://img.shields.io/badge/AndroidUtilCode-v1.9.12-brightgreen.svg +[frame]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/auc_frame.png + +[aucSvg]: https://github.com/Blankj/AndroidUtilCode/workflows/Android%20CI/badge.svg?branch=master [auc]: https://github.com/Blankj/AndroidUtilCode -[apisvg]: https://img.shields.io/badge/API-14+-brightgreen.svg -[api]: https://android-arsenal.com/api?level=14 +[apiSvg]: https://img.shields.io/badge/API-14+-brightgreen.svg +[result]: https://android-arsenal.com/result?level=14 -[buildsvg]: https://travis-ci.org/Blankj/AndroidUtilCode.svg?branch=master +[buildSvg]: https://travis-ci.org/Blankj/AndroidUtilCode.svg?branch=master [build]: https://travis-ci.org/Blankj/AndroidUtilCode -[insightsvg]: https://www.insight.io/repoBadge/github.com/Blankj/AndroidUtilCode -[insight]: https://insight.io/github.com/Blankj/AndroidUtilCode - -[licensesvg]: https://img.shields.io/badge/License-Apache--2.0-brightgreen.svg +[licenseSvg]: https://img.shields.io/badge/License-Apache--2.0-brightgreen.svg [license]: https://github.com/Blankj/AndroidUtilCode/blob/master/LICENSE [readme]: https://github.com/Blankj/AndroidUtilCode [readme-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/README-CN.md -[utilcode]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/README.md -[utilcode-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/README-CN.md +[utilcode]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README.md +[utilcode-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md -[subutil]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/README.md -[subutil-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/subutil/README-CN.md +[subutil]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/README.md +[subutil-cn]: https://github.com/Blankj/AndroidUtilCode/blob/master/lib/subutil/README-CN.md -[update_log.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/update_log.md +[changeLog.md]: https://github.com/Blankj/AndroidUtilCode/blob/master/CHANGELOG.md [donate]: https://raw.githubusercontent.com/Blankj/AndroidUtilCode/master/art/donate.png -[blogsvg]: https://img.shields.io/badge/Blog-@Blankj-34a48e.svg +[blogSvg]: https://img.shields.io/badge/Blog-@Blankj-34a48e.svg [blog]: http://blankj.com -[jianshusvg]: https://img.shields.io/badge/简书-@Blankj-34a48e.svg +[jianshuSvg]: https://img.shields.io/badge/简书-@Blankj-34a48e.svg [jianshu]: http://www.jianshu.com/u/46702d5c6978 -[weibosvg]: https://img.shields.io/badge/weibo-@__Blankj-34a48e.svg +[weiboSvg]: https://img.shields.io/badge/weibo-@__Blankj-34a48e.svg [weibo]: http://weibo.com/3076228982 -[qq0groupsvg]: https://img.shields.io/badge/QQ0群(满)-74721490-ff73a3.svg -[qq0group]: https://shang.qq.com/wpa/qunwpa?idkey=62baf2c3ec6b0863155b0c7a10c71bba2608cb0b6532fc18515835e54c69bdd3 - -[qq1groupsvg]: https://img.shields.io/badge/QQ1群-25206533-ff73a3.svg -[qq1group]: https://shang.qq.com/wpa/qunwpa?idkey=d906789f84484465e2736f7b524366b4c23afeda38733d5c7b10fc3f6e406e9b +[qqgroupSvg]: https://img.shields.io/badge/QQ群-25206533-34a48e.svg +[qqgroup]: https://shang.qq.com/wpa/qunwpa?idkey=d906789f84484465e2736f7b524366b4c23afeda38733d5c7b10fc3f6e406e9b diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index 48f6c0fa5b..0000000000 --- a/app/build.gradle +++ /dev/null @@ -1,73 +0,0 @@ -plugins { - id "tech.harmonysoft.oss.traute" version '1.0.5' -} -apply plugin: 'com.android.application' - -File signPropertiesFile = rootProject.file('sign/keystore.properties') - -android { - compileSdkVersion compile_sdk_version - defaultConfig { - applicationId "com.blankj.androidutilcode" - minSdkVersion min_sdk_version - targetSdkVersion target_sdk_version - versionCode version_code - versionName version_name - } - - if (signPropertiesFile.exists()) { - Properties properties = new Properties() - properties.load(new FileInputStream(signPropertiesFile)) - signingConfigs { - release { - storeFile rootProject.file(properties['keystore']) - storePassword properties['storePassword'] - keyAlias properties['keyAlias'] - keyPassword properties['keyPassword'] - } - } - } - - buildTypes { - release { - minifyEnabled true - proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - if (signPropertiesFile.exists()) { - signingConfig signingConfigs.release - } - } - } - - sourceSets { - main { - res.srcDirs('src/main/res', 'src/main/res_core', 'src/main/res_sub') - } - } - - lintOptions { - abortOnError false - } -} - -traute { - javacPluginVersion = trauteVersion -} - -dependencies { - implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation project(':utilcode') - implementation project(':subutil') - - implementation "com.android.support:appcompat-v7:$support_version" - implementation "com.android.support:design:$support_version" - - implementation 'com.r0adkll:slidableactivity:2.0.5' - - // LeakCanary - debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakcanary_version" - releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakcanary_version" - -// implementation 'com.blankj:utilcode:1.9.11' -} - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml deleted file mode 100644 index f50ae44804..0000000000 --- a/app/src/main/AndroidManifest.xml +++ /dev/null @@ -1,185 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/java/com/blankj/androidutilcode/Config.java b/app/src/main/java/com/blankj/androidutilcode/Config.java deleted file mode 100644 index f7293d3f61..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/Config.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.blankj.androidutilcode; - -import android.os.Environment; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/10
- *     desc  : 配置常量
- * 
- */ -public class Config { - - public static final String FILE_SEP = System.getProperty("file.separator"); - public static final String LINE_SEP = System.getProperty("line.separator"); - public static final String PKG = "com.blankj.androidutilcode"; - public static final String TEST_PKG = "com.blankj.testinstall"; - public static final String GITHUB = "https://github.com/Blankj/AndroidUtilCode"; - public static final String BLOG = "http://www.jianshu.com/u/46702d5c6978"; - public static final String CACHE_PATH; - public static final String TEST_APK_PATH; - - static { - CACHE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath(); - TEST_APK_PATH = CACHE_PATH + FILE_SEP + "test_install.apk"; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/UtilsApp.java b/app/src/main/java/com/blankj/androidutilcode/UtilsApp.java deleted file mode 100644 index 1cf970a116..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/UtilsApp.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.blankj.androidutilcode; - -import com.blankj.androidutilcode.base.BaseApplication; -import com.blankj.subutil.util.ThreadPoolUtils; -import com.blankj.utilcode.util.CrashUtils; -import com.blankj.utilcode.util.FileIOUtils; -import com.blankj.utilcode.util.FileUtils; -import com.blankj.utilcode.util.LogUtils; -import com.squareup.leakcanary.LeakCanary; - -import java.io.IOException; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/12
- *     desc  : 工具类测试 App
- * 
- */ -public class UtilsApp extends BaseApplication { - - private static UtilsApp sInstance; - - public static UtilsApp getInstance() { - return sInstance; - } - - @Override - public void onCreate() { - super.onCreate(); - sInstance = this; - com.blankj.utilcode.util.Utils.init(this); - com.blankj.subutil.util.Utils.init(this); - initLeakCanary(); - initLog(); - initCrash(); - initAssets(); - } - - private void initLeakCanary() { - // 内存泄露检查工具 - if (LeakCanary.isInAnalyzerProcess(this)) { - // This process is dedicated to LeakCanary for heap analysis. - // You should not init your app in this process. - return; - } - LeakCanary.install(this); - } - - // init it in ur application - public void initLog() { - LogUtils.Config config = LogUtils.getConfig() - .setLogSwitch(BuildConfig.DEBUG)// 设置 log 总开关,包括输出到控制台和文件,默认开 - .setConsoleSwitch(BuildConfig.DEBUG)// 设置是否输出到控制台开关,默认开 - .setGlobalTag(null)// 设置 log 全局标签,默认为空 - // 当全局标签不为空时,我们输出的 log 全部为该 tag, - // 为空时,如果传入的 tag 为空那就显示类名,否则显示 tag - .setLogHeadSwitch(true)// 设置 log 头信息开关,默认为开 - .setLog2FileSwitch(false)// 打印 log 时是否存到文件的开关,默认关 - .setDir("")// 当自定义路径为空时,写入应用的/cache/log/目录中 - .setFilePrefix("")// 当文件前缀为空时,默认为"util",即写入文件为"util-MM-dd.txt" - .setBorderSwitch(true)// 输出日志是否带边框开关,默认开 - .setConsoleFilter(LogUtils.V)// log 的控制台过滤器,和 logcat 过滤器同理,默认 Verbose - .setFileFilter(LogUtils.V)// log 文件过滤器,和 logcat 过滤器同理,默认 Verbose - .setStackDeep(1);// log 栈深度,默认为 1 - LogUtils.d(config.toString()); - } - - private void initCrash() { - CrashUtils.init(); - } - - private void initAssets() { - if (!FileUtils.isFileExists(Config.TEST_APK_PATH)) { - ThreadPoolUtils poolUtils = new ThreadPoolUtils(ThreadPoolUtils.SingleThread, 1); - poolUtils.execute(new Runnable() { - @Override - public void run() { - try { - FileIOUtils.writeFileFromIS(Config.TEST_APK_PATH, getAssets().open("test_install"), false); - } catch (IOException e) { - e.printStackTrace(); - } - } - }); - } else { - LogUtils.d("test apk existed."); - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/BaseActivity.java b/app/src/main/java/com/blankj/androidutilcode/base/BaseActivity.java deleted file mode 100644 index 77f1464fea..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/BaseActivity.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.blankj.androidutilcode.base; - -import android.os.Bundle; -import android.support.annotation.LayoutRes; -import android.support.v7.app.AppCompatActivity; -import android.view.LayoutInflater; -import android.view.View; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/24
- *     desc  : Activity 基类
- * 
- */ -public abstract class BaseActivity extends AppCompatActivity - implements IBaseView { - - /** - * 当前 Activity 渲染的视图 View - */ - protected View contentView; - /** - * 上次点击时间 - */ - private long lastClick = 0; - - protected BaseActivity mActivity; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - mActivity = this; - Bundle bundle = getIntent().getExtras(); - initData(bundle); - setBaseView(bindLayout()); - initView(savedInstanceState, contentView); - doBusiness(); - } - - protected void setBaseView(@LayoutRes int layoutId) { - setContentView(contentView = LayoutInflater.from(this).inflate(layoutId, null)); - } - - /** - * 判断是否快速点击 - * - * @return {@code true}: 是
{@code false}: 否 - */ - private boolean isFastClick() { - long now = System.currentTimeMillis(); - if (now - lastClick >= 200) { - lastClick = now; - return false; - } - return true; - } - - @Override - public void onClick(final View view) { - if (!isFastClick()) onWidgetClick(view); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/BaseApplication.java b/app/src/main/java/com/blankj/androidutilcode/base/BaseApplication.java deleted file mode 100644 index 4037b6a769..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/BaseApplication.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.blankj.androidutilcode.base; - -import android.app.Activity; -import android.app.Application; -import android.os.Bundle; -import android.util.Log; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/03/30
- *     desc  : 基类 App
- * 
- */ -public class BaseApplication extends Application { - - private static final String TAG = "BaseApplication"; - - private static BaseApplication sInstance; - - public static BaseApplication getInstance() { - return sInstance; - } - - @Override - public void onCreate() { - super.onCreate(); - sInstance = this; - registerActivityLifecycleCallbacks(mCallbacks); - } - - private ActivityLifecycleCallbacks mCallbacks = new ActivityLifecycleCallbacks() { - - @Override - public void onActivityCreated(Activity activity, Bundle savedInstanceState) { - Log.d(TAG, "onActivityCreated() called with: activity = [" + activity + "], savedInstanceState = [" + savedInstanceState + "]"); - } - - @Override - public void onActivityStarted(Activity activity) { - Log.d(TAG, "onActivityStarted() called with: activity = [" + activity + "]"); - } - - @Override - public void onActivityResumed(Activity activity) { - Log.d(TAG, "onActivityResumed() called with: activity = [" + activity + "]"); - } - - @Override - public void onActivityPaused(Activity activity) { - Log.d(TAG, "onActivityPaused() called with: activity = [" + activity + "]"); - } - - @Override - public void onActivityStopped(Activity activity) { - Log.d(TAG, "onActivityStopped() called with: activity = [" + activity + "]"); - } - - @Override - public void onActivitySaveInstanceState(Activity activity, Bundle outState) { - Log.d(TAG, "onActivitySaveInstanceState() called with: activity = [" + activity + "], outState = [" + outState + "]"); - } - - @Override - public void onActivityDestroyed(Activity activity) { - Log.d(TAG, "onActivityDestroyed() called with: activity = [" + activity + "]"); - } - }; -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/BaseBackActivity.java b/app/src/main/java/com/blankj/androidutilcode/base/BaseBackActivity.java deleted file mode 100644 index 8e9c13237e..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/BaseBackActivity.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.blankj.androidutilcode.base; - -import android.support.annotation.LayoutRes; -import android.support.design.widget.AppBarLayout; -import android.support.design.widget.CoordinatorLayout; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.widget.Toolbar; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.widget.FrameLayout; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.UtilsApp; -import com.blankj.utilcode.util.BarUtils; -import com.r0adkll.slidr.Slidr; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/06/27
- *     desc  : DrawerActivity 基类
- * 
- */ -public abstract class BaseBackActivity extends BaseActivity { - - protected CoordinatorLayout rootLayout; - protected Toolbar mToolbar; - protected AppBarLayout abl; - protected FrameLayout flActivityContainer; - - @Override - protected void setBaseView(@LayoutRes int layoutId) { - Slidr.attach(this); - contentView = LayoutInflater.from(this).inflate(R.layout.activity_back, null); - setContentView(contentView); - rootLayout = findViewById(R.id.root_layout); - abl = findViewById(R.id.abl); - mToolbar = findViewById(R.id.toolbar); - flActivityContainer = findViewById(R.id.activity_container); - flActivityContainer.addView(LayoutInflater.from(this).inflate(layoutId, flActivityContainer, false)); - setSupportActionBar(mToolbar); - getToolBar().setDisplayHomeAsUpEnabled(true); - - BarUtils.setStatusBarColor(this, ContextCompat.getColor(UtilsApp.getInstance(), R.color.colorPrimary), 0); - BarUtils.addMarginTopEqualStatusBarHeight(rootLayout); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (item.getItemId() == android.R.id.home) { - finish(); - } - return super.onOptionsItemSelected(item); - } - - protected ActionBar getToolBar() { - return getSupportActionBar(); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/BaseDrawerActivity.java b/app/src/main/java/com/blankj/androidutilcode/base/BaseDrawerActivity.java deleted file mode 100644 index 4a41e5ebfb..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/BaseDrawerActivity.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.blankj.androidutilcode.base; - -import android.content.Intent; -import android.net.Uri; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.design.widget.NavigationView; -import android.support.v4.widget.DrawerLayout; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.widget.FrameLayout; - -import com.blankj.androidutilcode.Config; -import com.blankj.androidutilcode.R; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/06/27
- *     desc  : DrawerActivity 基类
- * 
- */ -public abstract class BaseDrawerActivity extends BaseActivity { - - protected DrawerLayout rootLayout; - protected FrameLayout flActivityContainer; - - NavigationView.OnNavigationItemSelectedListener mListener = new NavigationView.OnNavigationItemSelectedListener() { - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.action_git_hub: - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(Config.GITHUB))); - break; - case R.id.action_blog: - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(Config.BLOG))); - break; - } - return false; - } - }; - - @Override - protected void setBaseView(@LayoutRes int layoutId) { - contentView = LayoutInflater.from(this).inflate(R.layout.activity_drawer, null); - setContentView(contentView); - rootLayout = findViewById(R.id.root_layout); - flActivityContainer = findViewById(R.id.activity_container); - flActivityContainer.addView(LayoutInflater.from(this).inflate(layoutId, flActivityContainer, false)); - NavigationView navigationView = findViewById(R.id.nav_view); - navigationView.setNavigationItemSelectedListener(mListener); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/BaseFragment.java b/app/src/main/java/com/blankj/androidutilcode/base/BaseFragment.java deleted file mode 100644 index 1cc03e8973..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/BaseFragment.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.blankj.androidutilcode.base; - -import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentTransaction; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/03/28
- *     desc  : Fragment-v4 基类
- * 
- */ -public abstract class BaseFragment extends Fragment - implements IBaseView { - - private static final String TAG = "BaseFragment"; - - private static final String STATE_SAVE_IS_HIDDEN = "STATE_SAVE_IS_HIDDEN"; - /** - * 当前 Activity 渲染的视图 View - */ - protected View contentView; - /** - * 上次点击时间 - */ - private long lastClick = 0; - - protected BaseActivity mActivity; - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - if (savedInstanceState != null) { - boolean isSupportHidden = savedInstanceState.getBoolean(STATE_SAVE_IS_HIDDEN); - FragmentTransaction ft = getFragmentManager().beginTransaction(); - if (isSupportHidden) { - ft.hide(this); - } else { - ft.show(this); - } - ft.commit(); - } - Log.d(TAG, "onCreate: "); - } - - @Nullable - @Override - public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - setRetainInstance(true); - contentView = inflater.inflate(bindLayout(), null); - Log.d(TAG, "onCreateView: "); - return contentView; - } - - @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - Bundle bundle = getArguments(); - initData(bundle); - Log.d(TAG, "onViewCreated: "); - } - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - mActivity = (BaseActivity) getActivity(); - initView(savedInstanceState, contentView); - doBusiness(); - Log.d(TAG, "onActivityCreated: "); - } - - /** - * 判断是否快速点击 - * - * @return {@code true}: 是
{@code false}: 否 - */ - private boolean isFastClick() { - long now = System.currentTimeMillis(); - if (now - lastClick >= 200) { - lastClick = now; - return false; - } - return true; - } - - @Override - public void onClick(View view) { - if (!isFastClick()) onWidgetClick(view); - } - - @Override - public void onDestroyView() { - if (contentView != null) { - ((ViewGroup) contentView.getParent()).removeView(contentView); - } - super.onDestroyView(); - Log.d(TAG, "onDestroyView: "); - } - - @Override - public void onDestroy() { - super.onDestroy(); - Log.d(TAG, "onDestroy: "); - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - outState.putBoolean(STATE_SAVE_IS_HIDDEN, isHidden()); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/IBaseView.java b/app/src/main/java/com/blankj/androidutilcode/base/IBaseView.java deleted file mode 100644 index a41978d492..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/IBaseView.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.blankj.androidutilcode.base; - -import android.os.Bundle; -import android.view.View; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/06/27
- *     desc  :
- * 
- */ -interface IBaseView extends View.OnClickListener { - - /** - * 初始化数据 - * - * @param bundle 传递过来的 bundle - */ - void initData(final Bundle bundle); - - /** - * 绑定布局 - * - * @return 布局 Id - */ - int bindLayout(); - - /** - * 初始化 view - */ - void initView(final Bundle savedInstanceState, final View view); - - /** - * 业务操作 - */ - void doBusiness(); - - /** - * 视图点击事件 - * - * @param view 视图 - */ - void onWidgetClick(final View view); -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/rv/BaseViewHolder.java b/app/src/main/java/com/blankj/androidutilcode/base/rv/BaseViewHolder.java deleted file mode 100644 index 2da4de8849..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/rv/BaseViewHolder.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.blankj.androidutilcode.base.rv; - -import android.support.annotation.IdRes; -import android.support.v7.widget.RecyclerView; -import android.util.SparseArray; -import android.view.View; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/08/22
- *     desc  :
- * 
- */ -public class BaseViewHolder extends RecyclerView.ViewHolder { - - private SparseArray viewArray = new SparseArray<>(); - - public BaseViewHolder(View itemView) { - super(itemView); - } - - @SuppressWarnings("unchecked") - public T getView(@IdRes final int viewId) { - View view = viewArray.get(viewId); - if (view == null) { - view = itemView.findViewById(viewId); - viewArray.put(viewId, view); - } - return (T) view; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/rv/adapter/BaseAdapter.java b/app/src/main/java/com/blankj/androidutilcode/base/rv/adapter/BaseAdapter.java deleted file mode 100644 index 506ee91f48..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/rv/adapter/BaseAdapter.java +++ /dev/null @@ -1,198 +0,0 @@ -package com.blankj.androidutilcode.base.rv.adapter; - -import android.content.Context; -import android.support.annotation.LayoutRes; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; -import android.util.SparseArray; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.blankj.androidutilcode.base.rv.BaseViewHolder; -import com.blankj.androidutilcode.base.rv.listener.OnItemClickListener; -import com.blankj.androidutilcode.base.rv.listener.OnItemLongClickListener; - -import java.util.List; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/08/22
- *     desc  :
- * 
- */ -public abstract class BaseAdapter extends RecyclerView.Adapter { - - protected static final int VIEW_TYPE_EMPTY = 0xfff0; - protected static final int VIEW_TYPE_HEADER = 0xfff1; - protected static final int VIEW_TYPE_FOOTER = 0xfff2; - protected static final int VIEW_TYPE_DEFAULT = 0xfff3; - - private final SparseArray mViewArray = new SparseArray<>(); - - protected List mData; - protected Context mContext; - protected ViewGroup mParent; - - protected LayoutInflater mInflater; - - private OnItemClickListener mClickListener; - private OnItemLongClickListener mLongClickListener; - - public void setData(@NonNull final List data) { - mData = data; - } - - @Override - public final int getItemViewType(int position) { - if (getDataSize() == 0 && mViewArray.get(VIEW_TYPE_EMPTY) != null) { - return VIEW_TYPE_EMPTY; - } else if (position == 0 && mViewArray.get(VIEW_TYPE_HEADER) != null) { - return VIEW_TYPE_HEADER; - } else if (position == getItemCount() - 1 && mViewArray.get(VIEW_TYPE_FOOTER) != null) { - return VIEW_TYPE_FOOTER; - } else { - return getCustomViewType(position); - } - } - - protected int getCustomViewType(final int position) { - return VIEW_TYPE_DEFAULT; - } - - protected abstract int bindLayout(final int viewType); - - @Override - public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { - if (mParent == null) { - mParent = parent; - mContext = parent.getContext(); - mInflater = LayoutInflater.from(mContext); - } - View itemView = mViewArray.get(viewType); - if (itemView == null) { - itemView = inflateLayout(bindLayout(viewType)); - } - return new BaseViewHolder(itemView); - } - - @Override - public final void onBindViewHolder(BaseViewHolder holder, int position) { - switch (holder.getItemViewType()) { - case VIEW_TYPE_EMPTY: - case VIEW_TYPE_HEADER: - case VIEW_TYPE_FOOTER: - break; - default: - bindCustomViewHolder(holder, position); - break; - } - } - - protected void bindCustomViewHolder(final BaseViewHolder holder, final int position) { - final int dataPos = position - (mViewArray.get(VIEW_TYPE_HEADER) == null ? 0 : 1); - holder.itemView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (mClickListener != null) { - mClickListener.onItemClick(v, dataPos); - } - } - }); - holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - return mLongClickListener != null && mLongClickListener.onItemLongClick(v, dataPos); - } - }); - bind(holder, mData.get(dataPos)); - } - - protected abstract void bind(final BaseViewHolder holder, final M data); - - @Override - public int getItemCount() { - return getDataSize() + getExtraViewCount(); - } - - public void setEmptyView(@NonNull View emptyView) { - setView(VIEW_TYPE_EMPTY, emptyView); - } - - public View getEmptyView() { - return getView(VIEW_TYPE_EMPTY); - } - - public void removeEmptyView() { - removeView(VIEW_TYPE_EMPTY); - } - - public void setHeaderView(@NonNull View headerView) { - setView(VIEW_TYPE_HEADER, headerView); - } - - public View getHeaderView() { - return getView(VIEW_TYPE_HEADER); - } - - public void removeHeaderView() { - removeView(VIEW_TYPE_HEADER); - } - - public void setFooterView(@NonNull View footerView) { - setView(VIEW_TYPE_FOOTER, footerView); - } - - public View getFooterView() { - return getView(VIEW_TYPE_FOOTER); - } - - public void removeFooterView() { - removeView(VIEW_TYPE_FOOTER); - } - - private void setView(final int type, @NonNull final View view) { - mViewArray.put(type, view); - notifyDataSetChanged(); - } - - private View getView(final int type) { - return mViewArray.get(type); - } - - private void removeView(final int type) { - if (mViewArray.get(type) != null) { - mViewArray.delete(type); - notifyDataSetChanged(); - } - } - - private View inflateLayout(@LayoutRes final int layoutId) { - return mInflater.inflate(layoutId, mParent, false); - } - - private int getExtraViewCount() { - int extraViewCount = 0; - if (mViewArray.get(VIEW_TYPE_HEADER) != null) { - extraViewCount++; - } - if (mViewArray.get(VIEW_TYPE_FOOTER) != null) { - extraViewCount++; - } - return extraViewCount; - } - - public void setOnItemClickListener(final OnItemClickListener clickListener) { - mClickListener = clickListener; - } - - public void setOnItemLongClickListener(final OnItemLongClickListener longClickListener) { - mLongClickListener = longClickListener; - } - - private int getDataSize() { - return mData == null ? 0 : mData.size(); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/rv/adapter/SingleAdapter.java b/app/src/main/java/com/blankj/androidutilcode/base/rv/adapter/SingleAdapter.java deleted file mode 100644 index 60e12c6514..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/rv/adapter/SingleAdapter.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.blankj.androidutilcode.base.rv.adapter; - -import android.support.annotation.LayoutRes; - -import java.util.List; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/08/22
- *     desc  :
- * 
- */ -public abstract class SingleAdapter extends BaseAdapter { - - private final int mLayoutId; - - public SingleAdapter(List list, @LayoutRes int layoutId) { - setData(list); - mLayoutId = layoutId; - } - - @Override - protected int bindLayout(final int viewType) { - return mLayoutId; - } - -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/rv/listener/OnItemClickListener.java b/app/src/main/java/com/blankj/androidutilcode/base/rv/listener/OnItemClickListener.java deleted file mode 100644 index f964cd210f..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/rv/listener/OnItemClickListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.blankj.androidutilcode.base.rv.listener; - -import android.view.View; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/08/21
- *     desc  :
- * 
- */ -public interface OnItemClickListener { - void onItemClick(final View view, final int position); -} diff --git a/app/src/main/java/com/blankj/androidutilcode/base/rv/listener/OnItemLongClickListener.java b/app/src/main/java/com/blankj/androidutilcode/base/rv/listener/OnItemLongClickListener.java deleted file mode 100644 index 5f065dc99c..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/base/rv/listener/OnItemLongClickListener.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.blankj.androidutilcode.base.rv.listener; - -import android.view.View; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/08/21
- *     desc  :
- * 
- */ -public interface OnItemLongClickListener { - boolean onItemLongClick(final View view, final int position); -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/activity/ActivityActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/activity/ActivityActivity.java deleted file mode 100644 index 169fa13821..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/activity/ActivityActivity.java +++ /dev/null @@ -1,273 +0,0 @@ -package com.blankj.androidutilcode.core.activity; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; -import android.os.Build; -import android.os.Bundle; -import android.support.v4.app.ActivityOptionsCompat; -import android.view.View; -import android.view.Window; -import android.widget.ImageView; -import android.widget.TextView; - -import com.blankj.androidutilcode.Config; -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.androidutilcode.core.main.CoreUtilActivity; -import com.blankj.androidutilcode.main.MainActivity; -import com.blankj.utilcode.util.ActivityUtils; - -import java.util.Random; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : Activity 工具类 Demo
- * 
- */ -public class ActivityActivity extends BaseBackActivity { - - ImageView viewSharedElement; - Random random = new Random(); - private Bitmap bitmap; - private Intent intent; - private Intent[] intents = new Intent[2]; - - public static void start(Context context) { - Intent starter = new Intent(context, ActivityActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); - } - return R.layout.activity_activity; - } - - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_activity)); - viewSharedElement = findViewById(R.id.view_shared_element); - findViewById(R.id.btn_clz).setOnClickListener(this); - findViewById(R.id.btn_clz_opt).setOnClickListener(this); - findViewById(R.id.btn_clz_anim).setOnClickListener(this); - findViewById(R.id.btn_act_clz).setOnClickListener(this); - findViewById(R.id.btn_act_clz_opt).setOnClickListener(this); - findViewById(R.id.btn_act_clz_shared_element).setOnClickListener(this); - findViewById(R.id.btn_act_clz_anim).setOnClickListener(this); - findViewById(R.id.btn_pkg_cls).setOnClickListener(this); - findViewById(R.id.btn_pkg_cls_opt).setOnClickListener(this); - findViewById(R.id.btn_pkg_cls_anim).setOnClickListener(this); - findViewById(R.id.btn_act_pkg_cls).setOnClickListener(this); - findViewById(R.id.btn_act_pkg_cls_opt).setOnClickListener(this); - findViewById(R.id.btn_act_pkg_cls_shared_element).setOnClickListener(this); - findViewById(R.id.btn_act_pkg_cls_anim).setOnClickListener(this); - findViewById(R.id.btn_intent).setOnClickListener(this); - findViewById(R.id.btn_intent_opt).setOnClickListener(this); - findViewById(R.id.btn_intent_shared_element).setOnClickListener(this); - findViewById(R.id.btn_intent_anim).setOnClickListener(this); - findViewById(R.id.btn_intents).setOnClickListener(this); - findViewById(R.id.btn_intents_opt).setOnClickListener(this); - findViewById(R.id.btn_intents_anim).setOnClickListener(this); - findViewById(R.id.btn_act_intents).setOnClickListener(this); - findViewById(R.id.btn_act_intents_opt).setOnClickListener(this); - findViewById(R.id.btn_act_intents_anim).setOnClickListener(this); - findViewById(R.id.btn_act_clz_shared_element).setOnClickListener(this); - findViewById(R.id.btn_start_home_activity).setOnClickListener(this); - findViewById(R.id.btn_finish_activity).setOnClickListener(this); - findViewById(R.id.btn_finish_to_activity).setOnClickListener(this); - findViewById(R.id.btn_finish_all_activities).setOnClickListener(this); - TextView tvAboutActivity = findViewById(R.id.tv_about_activity); - tvAboutActivity.setText("Is SubActivityActivity Exists: " + ActivityUtils.isActivityExists(Config.PKG, SubActivityActivity.class.getName()) - + "\ngetLauncherActivity: " + ActivityUtils.getLauncherActivity(Config.PKG) - + "\ngetTopActivity: " + ActivityUtils.getTopActivity() - + "\nIs CoreUtilActivity Exists In Stack: " + ActivityUtils.isActivityExistsInStack(CoreUtilActivity.class) - ); - bitmap = ((BitmapDrawable) viewSharedElement.getDrawable()).getBitmap(); - - intent = new Intent(this, SubActivityActivity.class); - intents[0] = intent; - intents[1] = new Intent(this, SubActivityActivity.class); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_clz: - ActivityUtils.startActivity(SubActivityActivity.class); - break; - case R.id.btn_clz_opt: - ActivityUtils.startActivity(SubActivityActivity.class, - getOption(random.nextInt(5))); - break; - case R.id.btn_clz_anim: - ActivityUtils.startActivity(SubActivityActivity.class, - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_act_clz: - ActivityUtils.startActivity(this, - SubActivityActivity.class); - break; - case R.id.btn_act_clz_opt: - ActivityUtils.startActivity(this, - SubActivityActivity.class, - getOption(random.nextInt(5))); - break; - - case R.id.btn_act_clz_shared_element: - ActivityUtils.startActivity(this, - SubActivityActivity.class, - viewSharedElement); - break; - case R.id.btn_act_clz_anim: - ActivityUtils.startActivity(this, - SubActivityActivity.class, - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_pkg_cls: - ActivityUtils.startActivity(this.getPackageName(), - SubActivityActivity.class.getName()); - break; - case R.id.btn_pkg_cls_opt: - ActivityUtils.startActivity(this.getPackageName(), - SubActivityActivity.class.getName(), - getOption(random.nextInt(5))); - break; - case R.id.btn_pkg_cls_anim: - ActivityUtils.startActivity(this.getPackageName(), - SubActivityActivity.class.getName(), - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_act_pkg_cls: - ActivityUtils.startActivity(this, - this.getPackageName(), - SubActivityActivity.class.getName()); - break; - case R.id.btn_act_pkg_cls_opt: - ActivityUtils.startActivity(this, - this.getPackageName(), - SubActivityActivity.class.getName(), - getOption(random.nextInt(5))); - break; - case R.id.btn_act_pkg_cls_shared_element: - ActivityUtils.startActivity(this, - this.getPackageName(), - SubActivityActivity.class.getName(), - viewSharedElement); - break; - case R.id.btn_act_pkg_cls_anim: - ActivityUtils.startActivity(this, - this.getPackageName(), - SubActivityActivity.class.getName(), - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_intent: - ActivityUtils.startActivity(this, - intent); - break; - case R.id.btn_intent_opt: - ActivityUtils.startActivity(this, - intent, - getOption(random.nextInt(5))); - break; - case R.id.btn_intent_shared_element: - ActivityUtils.startActivity(this, - intent, - viewSharedElement); - break; - case R.id.btn_intent_anim: - ActivityUtils.startActivity(this, - intent, - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_intents: - ActivityUtils.startActivities(intents); - break; - case R.id.btn_intents_opt: - ActivityUtils.startActivities(intents, - getOption(random.nextInt(5))); - break; - case R.id.btn_intents_anim: - ActivityUtils.startActivities(intents, - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_act_intents: - ActivityUtils.startActivities(this, - intents, - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_act_intents_opt: - ActivityUtils.startActivities(this, - intents, - getOption(random.nextInt(3))); - break; - case R.id.btn_act_intents_anim: - ActivityUtils.startActivities(this, - intents, - R.anim.fade_in_1000, R.anim.fade_out_1000); - break; - case R.id.btn_start_home_activity: - ActivityUtils.startHomeActivity(); - break; - case R.id.btn_finish_activity: - ActivityUtils.finishActivity(MainActivity.class); - break; - case R.id.btn_finish_to_activity: - ActivityUtils.finishToActivity(MainActivity.class, false, true); - break; - case R.id.btn_finish_all_activities: - ActivityUtils.finishAllActivities(); - break; - } - } - - private Bundle getOption(int type) { - switch (type) { - default: - case 0: - return ActivityOptionsCompat.makeCustomAnimation(this, - R.anim.slide_in_right_1000, - R.anim.slide_out_left_1000) - .toBundle(); - case 1: - return ActivityOptionsCompat.makeScaleUpAnimation(viewSharedElement, - viewSharedElement.getWidth() / 2, - viewSharedElement.getHeight() / 2, - 0, 0) - .toBundle(); - case 2: - return ActivityOptionsCompat.makeThumbnailScaleUpAnimation(viewSharedElement, - bitmap, - 0, 0) - .toBundle(); - case 3: - return ActivityOptionsCompat.makeClipRevealAnimation(viewSharedElement, - viewSharedElement.getWidth() / 2, - viewSharedElement.getHeight() / 2, - 0, 0) - .toBundle(); - case 4: - return ActivityOptionsCompat.makeSceneTransitionAnimation(this, - viewSharedElement, - getString(R.string.activity_shared_element)) - .toBundle(); - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/activity/SubActivityActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/activity/SubActivityActivity.java deleted file mode 100644 index 208153d32a..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/activity/SubActivityActivity.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.blankj.androidutilcode.core.activity; - -import android.graphics.Color; -import android.os.Build; -import android.os.Bundle; -import android.support.v4.app.ActivityCompat; -import android.view.View; -import android.view.Window; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; - -import java.util.Random; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : Activity 工具类 Demo
- * 
- */ -public class SubActivityActivity extends BaseBackActivity { - - Random random = new Random(); - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); - } - return R.layout.activity_activity_sub; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - ((View)flActivityContainer.getParent()).setBackgroundColor(Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256))); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - @Override - protected void onDestroy() { - super.onDestroy(); - } - - @Override - public void onBackPressed() { - super.onBackPressed(); - ActivityCompat.finishAfterTransition(this); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/app/AppActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/app/AppActivity.java deleted file mode 100644 index 069907ea6f..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/app/AppActivity.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.blankj.androidutilcode.core.app; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.Config; -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.AppUtils; -import com.blankj.utilcode.util.SpanUtils; -import com.blankj.utilcode.util.ToastUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : App 工具类 Demo
- * 
- */ - -public class AppActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, AppActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_app; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_app)); - - findViewById(R.id.btn_install_app).setOnClickListener(this); - findViewById(R.id.btn_install_app_silent).setOnClickListener(this); - findViewById(R.id.btn_uninstall_app).setOnClickListener(this); - findViewById(R.id.btn_uninstall_app_silent).setOnClickListener(this); - findViewById(R.id.btn_launch_app).setOnClickListener(this); - findViewById(R.id.btn_exit_app).setOnClickListener(this); - findViewById(R.id.btn_get_app_details_settings).setOnClickListener(this); - TextView tvAboutApp = findViewById(R.id.tv_about_app); - tvAboutApp.setText( - new SpanUtils() - .append("app icon: ").appendImage(AppUtils.getAppIcon(), SpanUtils.ALIGN_CENTER).appendLine() - .appendLine(AppUtils.getAppInfo().toString()) - .appendLine("isAppRoot: " + AppUtils.isAppRoot()) - .appendLine("isAppDebug: " + AppUtils.isAppDebug()) - .appendLine("AppSignatureSHA1: " + AppUtils.getAppSignatureSHA1()) - .append("isAppForeground: " + AppUtils.isAppForeground()) - .create()); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_install_app: - if (AppUtils.isInstallApp(Config.TEST_PKG)) { - ToastUtils.showShort(R.string.app_install_tips); - } else { - AppUtils.installApp(Config.TEST_APK_PATH, "com.blankj.androidutilcode.provider"); - } - break; - case R.id.btn_install_app_silent: - new Thread(new Runnable() { - @Override - public void run() { - if (AppUtils.isInstallApp(Config.TEST_PKG)) { - ToastUtils.showShort(R.string.app_install_tips); - } else { - if (AppUtils.installAppSilent(Config.TEST_APK_PATH)) { - ToastUtils.showShort(R.string.install_successfully); - } else { - ToastUtils.showShort(R.string.install_unsuccessfully); - } - } - } - }).start(); - break; - case R.id.btn_uninstall_app: - if (AppUtils.isInstallApp(Config.TEST_PKG)) { - AppUtils.uninstallApp(Config.TEST_PKG); - } else { - ToastUtils.showShort(R.string.app_uninstall_tips); - } - break; - case R.id.btn_uninstall_app_silent: - if (AppUtils.isInstallApp(Config.TEST_PKG)) { - if (AppUtils.uninstallAppSilent(Config.TEST_PKG, false)) { - ToastUtils.showShort(R.string.uninstall_successfully); - } else { - ToastUtils.showShort(R.string.uninstall_unsuccessfully); - } - } else { - ToastUtils.showShort(R.string.app_uninstall_tips); - } - break; - case R.id.btn_launch_app: - AppUtils.launchApp(this.getPackageName()); - break; - case R.id.btn_exit_app: - AppUtils.exitApp(); - break; - case R.id.btn_get_app_details_settings: - AppUtils.getAppDetailsSettings(); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarActivity.java deleted file mode 100644 index b05b8a16fb..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarActivity.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/27
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, BarActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_bar; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_bar)); - - findViewById(R.id.btn_status_bar_color).setOnClickListener(this); - findViewById(R.id.btn_status_bar_alpha).setOnClickListener(this); - findViewById(R.id.btn_status_bar_image_view).setOnClickListener(this); - findViewById(R.id.btn_status_bar_fragment).setOnClickListener(this); - findViewById(R.id.btn_status_bar_swipe_back).setOnClickListener(this); - findViewById(R.id.btn_status_bar_drawer).setOnClickListener(this); - findViewById(R.id.btn_nav_bar).setOnClickListener(this); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_status_bar_color: - BarStatusColorActivity.start(this); - break; - case R.id.btn_status_bar_alpha: - BarStatusAlphaActivity.start(this); - break; - case R.id.btn_status_bar_image_view: - BarStatusImageViewActivity.start(this); - break; - case R.id.btn_status_bar_fragment: - BarStatusFragmentActivity.start(this); - break; - case R.id.btn_status_bar_swipe_back: - BarStatusSwipeBackActivity.start(this); - break; - case R.id.btn_status_bar_drawer: - BarStatusDrawerActivity.start(this); - break; - case R.id.btn_nav_bar: - BarNavActivity.start(this); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarNavActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarNavActivity.java deleted file mode 100644 index ac6134e3b2..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarNavActivity.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.BarUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : Activity 工具类 Demo
- * 
- */ -public class BarNavActivity extends BaseBackActivity { - - private TextView tvAboutNav; - - public static void start(Context context) { - Intent starter = new Intent(context, BarNavActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_bar_nav; - } - - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_bar)); - - tvAboutNav = findViewById(R.id.tv_about_nav); - tvAboutNav.setText("navHeight: " + BarUtils.getNavBarHeight()); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - @Override - public void onWindowFocusChanged(boolean hasFocus) { - super.onWindowFocusChanged(hasFocus); - BarUtils.hideNavBar(this); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusAlphaActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusAlphaActivity.java deleted file mode 100644 index f9a1ef4a0a..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusAlphaActivity.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseActivity; -import com.blankj.utilcode.util.BarUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/27
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusAlphaActivity extends BaseActivity { - - private int mAlpha; - - private TextView mTvStatusAlpha; - private SeekBar sbChangeAlpha; - - public static void start(Context context) { - Intent starter = new Intent(context, BarStatusAlphaActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.activity_bar_status_alpha; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - findViewById(R.id.btn_set_transparent).setOnClickListener(this); - mTvStatusAlpha = findViewById(R.id.tv_status_alpha); - sbChangeAlpha = findViewById(R.id.sb_change_alpha); - sbChangeAlpha.setOnSeekBarChangeListener(translucentListener); - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateStatusBar(); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener translucentListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - updateStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - private void updateStatusBar() { - BarUtils.setStatusBarAlpha(BarStatusAlphaActivity.this, mAlpha); - BarUtils.addMarginTopEqualStatusBarHeight(mTvStatusAlpha);// 其实这个只需要调用一次即可 - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusAlphaFragment.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusAlphaFragment.java deleted file mode 100644 index ab15f95f8b..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusAlphaFragment.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.os.Bundle; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseFragment; -import com.blankj.utilcode.util.BarUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/07/01
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusAlphaFragment extends BaseFragment { - - private int mAlpha; - - private TextView mTvStatusAlpha; - private SeekBar sbChangeAlpha; - private View fakeStatusBar; - - - public static BarStatusAlphaFragment newInstance() { - return new BarStatusAlphaFragment(); - } - - @Override - public void initData(Bundle bundle) { - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.fragment_bar_status_alpha; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - fakeStatusBar = view.findViewById(R.id.fake_status_bar); - mTvStatusAlpha = (TextView) view.findViewById(R.id.tv_status_alpha); - sbChangeAlpha = (SeekBar) view.findViewById(R.id.sb_change_alpha); - view.findViewById(R.id.btn_set_transparent).setOnClickListener(this); - sbChangeAlpha.setOnSeekBarChangeListener(translucentListener); - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateFakeStatusBar(); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener translucentListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - updateFakeStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - public void updateFakeStatusBar() { - BarUtils.setStatusBarAlpha(fakeStatusBar, mAlpha); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusColorActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusColorActivity.java deleted file mode 100644 index e44b372058..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusColorActivity.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.UtilsApp; -import com.blankj.androidutilcode.base.BaseActivity; -import com.blankj.utilcode.util.BarUtils; - -import java.util.Random; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/27
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusColorActivity extends BaseActivity { - - private Random mRandom; - private int mColor; - private int mAlpha; - - private TextView mTvStatusAlpha; - private SeekBar sbChangeAlpha; - - public static void start(Context context) { - Intent starter = new Intent(context, BarStatusColorActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - mRandom = new Random(); - mColor = ContextCompat.getColor(UtilsApp.getInstance(), R.color.colorPrimary); - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.activity_bar_status_color; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - findViewById(R.id.btn_random_color).setOnClickListener(this); - findViewById(R.id.btn_set_transparent).setOnClickListener(this); - mTvStatusAlpha = findViewById(R.id.tv_status_alpha); - sbChangeAlpha = findViewById(R.id.sb_change_alpha); - sbChangeAlpha.setOnSeekBarChangeListener(colorListener); - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateStatusBar(); - } - - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_random_color: - mColor = 0xff000000 | mRandom.nextInt(0xffffff); - updateStatusBar(); - break; - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener colorListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - updateStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - private void updateStatusBar() { - BarUtils.setStatusBarColor(this, mColor, mAlpha); - BarUtils.addMarginTopEqualStatusBarHeight(mTvStatusAlpha);// 其实这个只需要调用一次即可 - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusColorFragment.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusColorFragment.java deleted file mode 100644 index 3b2e2faa42..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusColorFragment.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.UtilsApp; -import com.blankj.androidutilcode.base.BaseFragment; -import com.blankj.utilcode.util.BarUtils; - -import java.util.Random; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/07/01
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusColorFragment extends BaseFragment { - - private Random mRandom; - private int mColor; - private int mAlpha; - - private TextView mTvStatusAlpha; - private SeekBar sbChangeAlpha; - private View fakeStatusBar; - - public static BarStatusColorFragment newInstance() { - return new BarStatusColorFragment(); - } - - @Override - public void initData(Bundle bundle) { - mRandom = new Random(); - mColor = ContextCompat.getColor(UtilsApp.getInstance(), R.color.colorPrimary); - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.fragment_bar_status_color; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - fakeStatusBar = view.findViewById(R.id.fake_status_bar); - view.findViewById(R.id.btn_random_color).setOnClickListener(this); - view.findViewById(R.id.btn_set_transparent).setOnClickListener(this); - mTvStatusAlpha = (TextView) view.findViewById(R.id.tv_status_alpha); - sbChangeAlpha = (SeekBar) view.findViewById(R.id.sb_change_alpha); - sbChangeAlpha.setOnSeekBarChangeListener(colorListener); - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateFakeStatusBar(); - } - - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_random_color: - mColor = 0xff000000 | mRandom.nextInt(0xffffff); - updateFakeStatusBar(); - break; - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener colorListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - updateFakeStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - public void updateFakeStatusBar() { - BarUtils.setStatusBarColor(fakeStatusBar, mColor, mAlpha); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusDrawerActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusDrawerActivity.java deleted file mode 100644 index 47a0e63e49..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusDrawerActivity.java +++ /dev/null @@ -1,148 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.view.View; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.UtilsApp; -import com.blankj.androidutilcode.base.BaseDrawerActivity; -import com.blankj.utilcode.util.BarUtils; - -import java.util.Random; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/27
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusDrawerActivity extends BaseDrawerActivity { - - private Random mRandom; - private int mColor; - private int mAlpha; - - private View fakeStatusBar; - private CheckBox cbAlpha; - private CheckBox cbFront; - private TextView tvStatusAlpha; - private SeekBar sbChangeAlpha; - private Button btnRandomColor; - - public static void start(Context context) { - Intent starter = new Intent(context, BarStatusDrawerActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - mRandom = new Random(); - mColor = ContextCompat.getColor(UtilsApp.getInstance(), R.color.colorPrimary); - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.activity_bar_status_drawer; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - fakeStatusBar = findViewById(R.id.fake_status_bar); - cbAlpha = findViewById(R.id.cb_alpha); - cbFront = findViewById(R.id.cb_front); - btnRandomColor = findViewById(R.id.btn_random_color); - tvStatusAlpha = findViewById(R.id.tv_status_alpha); - sbChangeAlpha = findViewById(R.id.sb_change_alpha); - - cbAlpha.setOnCheckedChangeListener(mAlphaCheckedChangeListener); - cbFront.setOnCheckedChangeListener(mFrontCheckedChangeListener); - btnRandomColor.setOnClickListener(this); - findViewById(R.id.btn_set_transparent).setOnClickListener(this); - sbChangeAlpha.setOnSeekBarChangeListener(mColorListener); - - tvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateStatusBar(); - } - - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_random_color: - mColor = 0xff000000 | mRandom.nextInt(0xffffff); - updateStatusBar(); - break; - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener mColorListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - tvStatusAlpha.setText(String.valueOf(mAlpha)); - updateStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - CompoundButton.OnCheckedChangeListener mAlphaCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - btnRandomColor.setVisibility(View.GONE); - flActivityContainer.setBackgroundResource(R.drawable.bg_bar); - } else { - btnRandomColor.setVisibility(View.VISIBLE); - flActivityContainer.setBackgroundColor(Color.WHITE); - } - updateStatusBar(); - } - }; - - CompoundButton.OnCheckedChangeListener mFrontCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - updateStatusBar(); - } - }; - - private void updateStatusBar() { - if (cbAlpha.isChecked()) { - BarUtils.setStatusBarAlpha4Drawer(BarStatusDrawerActivity.this, rootLayout, fakeStatusBar, mAlpha, cbFront.isChecked()); - } else { - BarUtils.setStatusBarColor4Drawer(BarStatusDrawerActivity.this, rootLayout, fakeStatusBar, mColor, mAlpha, cbFront.isChecked()); - } - BarUtils.addMarginTopEqualStatusBarHeight(cbAlpha);// 其实这个只需要调用一次即可 - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusFragmentActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusFragmentActivity.java deleted file mode 100644 index a3f96a3be3..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusFragmentActivity.java +++ /dev/null @@ -1,131 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.design.widget.BottomNavigationView; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentPagerAdapter; -import android.support.v4.view.ViewPager; -import android.view.MenuItem; -import android.view.View; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseActivity; - -import java.util.ArrayList; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/27
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusFragmentActivity extends BaseActivity { - - private int[] itemIds = new int[]{ - R.id.navigation_color, - R.id.navigation_alpha, - R.id.navigation_image_view - }; - - private ViewPager mVpStatusBar; - private BottomNavigationView navigation; - private ArrayList mFragmentList = new ArrayList<>(); - - public static void start(Context context) { - Intent starter = new Intent(context, BarStatusFragmentActivity.class); - context.startActivity(starter); - } - - @Override - public Intent getIntent() { - return super.getIntent(); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_bar_status_fragment; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - mVpStatusBar = findViewById(R.id.vp_status_bar); - navigation = findViewById(R.id.navigation_status_bar); - - mFragmentList.add(BarStatusColorFragment.newInstance()); - mFragmentList.add(BarStatusAlphaFragment.newInstance()); - mFragmentList.add(BarStatusImageViewFragment.newInstance()); - - - mVpStatusBar.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) { - @Override - public Fragment getItem(int position) { - return mFragmentList.get(position); - } - - @Override - public int getCount() { - return mFragmentList.size(); - } - }); - - mVpStatusBar.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { - @Override - public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { - - } - - @Override - public void onPageSelected(int position) { - navigation.setSelectedItemId(itemIds[position]); - } - - @Override - public void onPageScrollStateChanged(int state) { - - } - }); - - navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); - - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener - = new BottomNavigationView.OnNavigationItemSelectedListener() { - - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.navigation_color: - mVpStatusBar.setCurrentItem(0); - return true; - case R.id.navigation_alpha: - mVpStatusBar.setCurrentItem(1); - return true; - case R.id.navigation_image_view: - mVpStatusBar.setCurrentItem(2); - return true; - } - return false; - } - }; -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusImageViewActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusImageViewActivity.java deleted file mode 100644 index d75ca858fe..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusImageViewActivity.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseActivity; -import com.blankj.utilcode.util.BarUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/27
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusImageViewActivity extends BaseActivity { - - private int mAlpha; - - private TextView mTvStatusAlpha; - private SeekBar sbChangeAlpha; - - public static void start(Context context) { - Intent starter = new Intent(context, BarStatusImageViewActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.activity_bar_status_image_view; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - findViewById(R.id.btn_set_transparent).setOnClickListener(this); - mTvStatusAlpha = findViewById(R.id.tv_status_alpha); - sbChangeAlpha = findViewById(R.id.sb_change_alpha); - sbChangeAlpha.setOnSeekBarChangeListener(translucentListener); - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateStatusBar(); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener translucentListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - updateStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - private void updateStatusBar() { - BarUtils.setStatusBarAlpha(BarStatusImageViewActivity.this, mAlpha, true); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusImageViewFragment.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusImageViewFragment.java deleted file mode 100644 index 6020b50ac3..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusImageViewFragment.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.os.Bundle; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseFragment; -import com.blankj.utilcode.util.BarUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/07/01
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusImageViewFragment extends BaseFragment { - - private int mAlpha; - - private TextView mTvStatusAlpha; - private SeekBar sbChangeAlpha; - private View fakeStatusBar; - - public static BarStatusImageViewFragment newInstance() { - return new BarStatusImageViewFragment(); - } - - @Override - public void initData(Bundle bundle) { - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.fragment_bar_status_image_view; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - fakeStatusBar = view.findViewById(R.id.fake_status_bar); - mTvStatusAlpha = (TextView) view.findViewById(R.id.tv_status_alpha); - sbChangeAlpha = (SeekBar) view.findViewById(R.id.sb_change_alpha); - view.findViewById(R.id.btn_set_transparent).setOnClickListener(this); - sbChangeAlpha.setOnSeekBarChangeListener(translucentListener); - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateFakeStatusBar(); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener translucentListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - mTvStatusAlpha.setText(String.valueOf(mAlpha)); - updateFakeStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - public void updateFakeStatusBar() { - BarUtils.setStatusBarAlpha(fakeStatusBar, mAlpha); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusSwipeBackActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusSwipeBackActivity.java deleted file mode 100644 index 8268615ef4..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/bar/BarStatusSwipeBackActivity.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.blankj.androidutilcode.core.bar; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.view.View; -import android.widget.Button; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.LinearLayout; -import android.widget.SeekBar; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.UtilsApp; -import com.blankj.androidutilcode.base.BaseActivity; -import com.blankj.utilcode.util.BarUtils; -import com.r0adkll.slidr.Slidr; - -import java.util.Random; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/05/27
- *     desc  : Bar 工具类 Demo
- * 
- */ -public class BarStatusSwipeBackActivity extends BaseActivity { - - private Random mRandom; - private int mColor; - private int mAlpha; - - private LinearLayout llContainer; - private CheckBox cbAlpha; - private TextView tvStatusAlpha; - private SeekBar sbChangeAlpha; - private Button btnRandomColor; - - public static void start(Context context) { - Intent starter = new Intent(context, BarStatusSwipeBackActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - mRandom = new Random(); - mColor = ContextCompat.getColor(UtilsApp.getInstance(), R.color.colorPrimary); - mAlpha = 112; - } - - @Override - public int bindLayout() { - return R.layout.activity_bar_status_swipe_back; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - Slidr.attach(this); - - llContainer = findViewById(R.id.ll_container); - cbAlpha = findViewById(R.id.cb_alpha); - btnRandomColor = findViewById(R.id.btn_random_color); - tvStatusAlpha = findViewById(R.id.tv_status_alpha); - sbChangeAlpha = findViewById(R.id.sb_change_alpha); - - cbAlpha.setOnCheckedChangeListener(mCheckedChangeListener); - btnRandomColor.setOnClickListener(this); - findViewById(R.id.btn_set_transparent).setOnClickListener(this); - sbChangeAlpha.setOnSeekBarChangeListener(mColorListener); - - tvStatusAlpha.setText(String.valueOf(mAlpha)); - - updateStatusBar(); - } - - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_random_color: - mColor = 0xff000000 | mRandom.nextInt(0xffffff); - updateStatusBar(); - break; - case R.id.btn_set_transparent: - sbChangeAlpha.setProgress(0); - break; - } - } - - private SeekBar.OnSeekBarChangeListener mColorListener = new SeekBar.OnSeekBarChangeListener() { - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - mAlpha = progress; - tvStatusAlpha.setText(String.valueOf(mAlpha)); - updateStatusBar(); - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - - } - }; - - CompoundButton.OnCheckedChangeListener mCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - if (isChecked) { - btnRandomColor.setVisibility(View.GONE); - llContainer.setBackgroundResource(R.drawable.bg_bar); - } else { - btnRandomColor.setVisibility(View.VISIBLE); - llContainer.setBackgroundColor(Color.WHITE); - } - updateStatusBar(); - } - }; - - private void updateStatusBar() { - if (cbAlpha.isChecked()) { - BarUtils.setStatusBarAlpha(this, mAlpha); - BarUtils.addMarginTopEqualStatusBarHeight(cbAlpha); - } else { - BarUtils.setStatusBarColor(this, mColor, mAlpha); - BarUtils.addMarginTopEqualStatusBarHeight(cbAlpha); - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/clean/CleanActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/clean/CleanActivity.java deleted file mode 100644 index f3849cc909..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/clean/CleanActivity.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.blankj.androidutilcode.core.clean; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.Button; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.CleanUtils; -import com.blankj.utilcode.util.ToastUtils; - -import java.io.File; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/29
- *     desc  : Clean 工具类 Demo
- * 
- */ -public class CleanActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, CleanActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_clean; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_clean)); - - Button btnCleanInternalCache = findViewById(R.id.btn_clean_internal_cache); - Button btnCleanInternalFiles = findViewById(R.id.btn_clean_internal_files); - Button btnCleanInternalDbs = findViewById(R.id.btn_clean_internal_databases); - Button btnCleanInternalSP = findViewById(R.id.btn_clean_internal_sp); - Button btnCleanExternalCache = findViewById(R.id.btn_clean_external_cache); - btnCleanInternalCache.setOnClickListener(this); - btnCleanInternalFiles.setOnClickListener(this); - btnCleanInternalDbs.setOnClickListener(this); - btnCleanInternalSP.setOnClickListener(this); - btnCleanExternalCache.setOnClickListener(this); - - btnCleanInternalCache.setText(getCacheDir().getPath()); - btnCleanInternalFiles.setText(getFilesDir().getPath()); - btnCleanInternalDbs.setText(getFilesDir().getParent() + File.separator + "databases"); - btnCleanInternalSP.setText(getFilesDir().getParent() + File.separator + "shared_prefs"); - - if (getExternalCacheDir() != null) { - btnCleanExternalCache.setText(getExternalCacheDir().getAbsolutePath()); - } - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_clean_internal_cache: - ToastUtils.showShort("cleanInternalCache" + CleanUtils.cleanInternalCache()); - break; - case R.id.btn_clean_internal_files: - ToastUtils.showShort("cleanInternalFiles" + CleanUtils.cleanInternalFiles()); - break; - case R.id.btn_clean_internal_databases: - ToastUtils.showShort("cleanInternalDbs" + CleanUtils.cleanInternalDbs()); - break; - case R.id.btn_clean_internal_sp: - ToastUtils.showShort("cleanInternalSP" + CleanUtils.cleanInternalSP()); - break; - case R.id.btn_clean_external_cache: - ToastUtils.showShort("cleanExternalCache" + CleanUtils.cleanExternalCache()); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/device/DeviceActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/device/DeviceActivity.java deleted file mode 100644 index 2c45009334..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/device/DeviceActivity.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.blankj.androidutilcode.core.device; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.DeviceUtils; - -/** - *
- *     author: Blankj
- *     blog : http://blankj.com
- *     time : 2016/09/27
- *     desc : Device 工具类 Demo
- * 
- */ -public class DeviceActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, DeviceActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_device; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_device)); - - findViewById(R.id.btn_shutdown).setOnClickListener(this); - findViewById(R.id.btn_reboot).setOnClickListener(this); - findViewById(R.id.btn_reboot_to_recovery).setOnClickListener(this); - findViewById(R.id.btn_reboot_to_bootloader).setOnClickListener(this); - TextView tvAboutDevice = findViewById(R.id.tv_about_device); - tvAboutDevice.setText("isRoot: " + DeviceUtils.isDeviceRooted() - + "\ngetSDKVersion: " + DeviceUtils.getSDKVersion() - + "\ngetAndroidID: " + DeviceUtils.getAndroidID() - + "\ngetMacAddress: " + DeviceUtils.getMacAddress() - + "\ngetManufacturer: " + DeviceUtils.getManufacturer() - + "\ngetModel: " + DeviceUtils.getModel() - ); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_shutdown: - DeviceUtils.shutdown(); - break; - case R.id.btn_reboot: - DeviceUtils.reboot(); - break; - case R.id.btn_reboot_to_recovery: - DeviceUtils.reboot2Recovery(); - break; - case R.id.btn_reboot_to_bootloader: - DeviceUtils.reboot2Bootloader(); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/fragment/ChildFragment.java b/app/src/main/java/com/blankj/androidutilcode/core/fragment/ChildFragment.java deleted file mode 100644 index e7df737635..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/fragment/ChildFragment.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.blankj.androidutilcode.core.fragment; - -import android.graphics.Color; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseFragment; -import com.blankj.utilcode.util.FragmentUtils; -import com.blankj.utilcode.util.LogUtils; - -import java.util.Random; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 17/02/02
- *     desc  :
- * 
- */ -public class ChildFragment extends BaseFragment - implements FragmentUtils.OnBackClickListener { - - private TextView tvAboutFragment; - - public static ChildFragment newInstance() { - Bundle args = new Bundle(); - ChildFragment fragment = new ChildFragment(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.fragment_child; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - Random random = new Random(); - FragmentUtils.setBackgroundColor(this, Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256))); - view.findViewById(R.id.btn_show_about_fragment).setOnClickListener(this); - view.findViewById(R.id.btn_pop).setOnClickListener(this); - tvAboutFragment = (TextView) view.findViewById(R.id.tv_about_fragment); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - tvAboutFragment.setText(""); - switch (view.getId()) { - case R.id.btn_show_about_fragment: - tvAboutFragment.setText("top: " + FragmentUtils.getSimpleName(FragmentUtils.getTop(getFragmentManager())) - + "\ntopInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopInStack(getFragmentManager())) - + "\ntopShow: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShow(getFragmentManager())) - + "\ntopShowInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShowInStack(getFragmentManager())) - + "\n---all of fragments---\n" - + FragmentUtils.getAllFragments(getFragmentManager()).toString() - + "\n----------------------\n\n" - + "---stack top---\n" - + FragmentUtils.getAllFragmentsInStack(getFragmentManager()).toString() - + "\n---stack bottom---\n\n" - ); - break; -// case R.id.btn_pop: -// FragmentUtils.popFragment(getFragmentManager()); -// break; - } - } - - @Override - public boolean onBackClick() { - LogUtils.d("demo2 onBackClick"); - return false; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/fragment/DetailTransition.java b/app/src/main/java/com/blankj/androidutilcode/core/fragment/DetailTransition.java deleted file mode 100644 index fe488def0e..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/fragment/DetailTransition.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.blankj.androidutilcode.core.fragment; - -import android.annotation.TargetApi; -import android.content.Context; -import android.os.Build; -import android.transition.ChangeBounds; -import android.transition.ChangeImageTransform; -import android.transition.ChangeTransform; -import android.transition.TransitionSet; -import android.util.AttributeSet; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 17/02/21
- *     desc  :
- * 
- */ -@TargetApi(Build.VERSION_CODES.LOLLIPOP) -public class DetailTransition extends TransitionSet { - public DetailTransition() { - init(); - } - - // 允许资源文件使用 - public DetailTransition(Context context, AttributeSet attrs) { - super(context, attrs); - init(); - } - - private void init() { - setOrdering(ORDERING_TOGETHER); - addTransition(new ChangeBounds()). - addTransition(new ChangeTransform()). - addTransition(new ChangeImageTransform()); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/fragment/FragmentActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/fragment/FragmentActivity.java deleted file mode 100644 index 75d1d56ae8..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/fragment/FragmentActivity.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.blankj.androidutilcode.core.fragment; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.PersistableBundle; -import android.support.annotation.NonNull; -import android.support.design.widget.BottomNavigationView; -import android.support.v4.app.Fragment; -import android.view.MenuItem; -import android.view.View; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseActivity; -import com.blankj.utilcode.util.FragmentUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 17/02/01
- *     desc  : Fragment 工具类 Demo
- * 
- */ -public class FragmentActivity extends BaseActivity { - - private int[] itemIds = new int[]{ - R.id.navigation_fragment_zero, - R.id.navigation_fragment_one, - R.id.navigation_fragment_two - }; - - private BottomNavigationView navigation; - private Fragment[] mFragments = new Fragment[3]; - private int curIndex; - - public static void start(Context context) { - Intent starter = new Intent(context, FragmentActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_fragment; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - if (savedInstanceState != null) { - curIndex = savedInstanceState.getInt("curIndex"); - } - - navigation = findViewById(R.id.navigation_fragment); - navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); - - mFragments[0] = Root0Fragment.newInstance(); - mFragments[1] = Root1Fragment.newInstance(); - mFragments[2] = Root2Fragment.newInstance(); - FragmentUtils.add(getSupportFragmentManager(), mFragments, R.id.fragment_container, curIndex); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - -// @Override -// public void onBackPressed() { -//// if (!FragmentUtils.dispatchBackPress(getSupportFragmentManager())) { -//// super.onBackPressed(); -//// } -// } - - private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener - = new BottomNavigationView.OnNavigationItemSelectedListener() { - - @Override - public boolean onNavigationItemSelected(@NonNull MenuItem item) { - switch (item.getItemId()) { - case R.id.navigation_fragment_zero: - showCurrentFragment(0); - return true; - case R.id.navigation_fragment_one: - showCurrentFragment(1); - return true; - case R.id.navigation_fragment_two: - showCurrentFragment(2); - return true; - } - return false; - } - }; - - private void showCurrentFragment(int index) { - FragmentUtils.showHide(curIndex = index, mFragments); - } - - @Override - public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { - super.onSaveInstanceState(outState, outPersistentState); - outState.putInt("curIndex", curIndex); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root0Fragment.java b/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root0Fragment.java deleted file mode 100644 index 6ce8276d3d..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root0Fragment.java +++ /dev/null @@ -1,165 +0,0 @@ -package com.blankj.androidutilcode.core.fragment; - -import android.graphics.Color; -import android.os.Build; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.transition.Fade; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseFragment; -import com.blankj.utilcode.util.FragmentUtils; - -import java.util.Random; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 17/02/02
- *     desc  :
- * 
- */ -public class Root0Fragment extends BaseFragment - implements FragmentUtils.OnBackClickListener { - - ImageView ivSharedElement; - TextView tvAboutFragment; - - public static Root0Fragment newInstance() { - Bundle args = new Bundle(); - Root0Fragment fragment = new Root0Fragment(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.fragment_root; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - Random random = new Random(); - FragmentUtils.setBackgroundColor(this, Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256))); - view.findViewById(R.id.btn_show_about_fragment).setOnClickListener(this); - view.findViewById(R.id.btn_add).setOnClickListener(this); - view.findViewById(R.id.btn_add_hide).setOnClickListener(this); - view.findViewById(R.id.btn_add_hide_stack).setOnClickListener(this); - view.findViewById(R.id.btn_add).setOnClickListener(this); - view.findViewById(R.id.btn_add_show).setOnClickListener(this); - view.findViewById(R.id.btn_add_child).setOnClickListener(this); - view.findViewById(R.id.btn_pop_to_root).setOnClickListener(this); - view.findViewById(R.id.btn_pop_add).setOnClickListener(this); - view.findViewById(R.id.btn_hide_show).setOnClickListener(this); - view.findViewById(R.id.btn_replace).setOnClickListener(this); - ivSharedElement = (ImageView) view.findViewById(R.id.iv_shared_element); - tvAboutFragment = (TextView) view.findViewById(R.id.tv_about_fragment); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - tvAboutFragment.setText(""); - switch (view.getId()) { - case R.id.btn_show_about_fragment: - tvAboutFragment.setText("top: " + FragmentUtils.getSimpleName(FragmentUtils.getTop(getFragmentManager())) - + "\ntopInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopInStack(getFragmentManager())) - + "\ntopShow: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShow(getFragmentManager())) - + "\ntopShowInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShowInStack(getFragmentManager())) - + "\n---all of fragments---\n" - + FragmentUtils.getAllFragments(getFragmentManager()).toString() - + "\n----------------------\n\n" - + "---stack top---\n" - + FragmentUtils.getAllFragmentsInStack(getFragmentManager()).toString() - + "\n---stack bottom---\n\n" - ); - break; - case R.id.btn_add: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.child_fragment_container, - false, - true); - break; - case R.id.btn_add_hide: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container, - true); - break; - case R.id.btn_add_hide_stack: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container, - true, - true); - break; -// case R.id.btn_add_show: -// FragmentUtils.add(getFragmentManager(), -// addSharedElement(Demo1Fragment.newInstance()), -// R.id.fragment_container, -// false, -// false, -// sharedElement); -// break; -// case R.id.btn_add_child: -// FragmentUtils.add(getChildFragmentManager(), -// ChildFragment.newInstance(), -// R.id.child_fragment_container, -// false, -// true); -// break; -// case R.id.btn_pop_to_root: -// FragmentUtils.popToFragment(getFragmentManager(), -// Demo1Fragment.class, -// true); -// break; -// case R.id.btn_pop_add: -// FragmentUtils.popAddFragment(getFragmentManager(), -// addSharedElement(ChildFragment.newInstance()), -// R.id.fragment_container, -// true, -// sharedElement); -// break; -// case R.id.btn_hide_show: -// Fragment fragment1 = FragmentUtils.findFragment(getFragmentManager(), Demo1Fragment.class); -// if (fragment1 != null) { -// FragmentUtils.showHideFragment(this, fragment1); -// } else { -// ToastUtils.showLong("please add demo1 first!"); -// } -// break; -// case R.id.btn_replace: -// ((FragmentActivity) getActivity()).rootFragment = FragmentUtils.replaceFragment(this, addSharedElement(Demo3Fragment.newInstance()), false, sharedElement); -// break; - } - } - - private Fragment addSharedElement(Fragment fragment) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - fragment.setSharedElementEnterTransition(new DetailTransition()); - fragment.setEnterTransition(new Fade()); - fragment.setSharedElementReturnTransition(new DetailTransition()); - } - return fragment; - } - - @Override - public boolean onBackClick() { -// FragmentUtils.popToFragment(getFragmentManager(), Demo1Fragment.class, true); - return false; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root1Fragment.java b/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root1Fragment.java deleted file mode 100644 index af1b742e7c..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root1Fragment.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.blankj.androidutilcode.core.fragment; - -import android.graphics.Color; -import android.os.Build; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.transition.Fade; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseFragment; -import com.blankj.utilcode.util.FragmentUtils; - -import java.util.Random; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 17/02/02
- *     desc  :
- * 
- */ -public class Root1Fragment extends BaseFragment - implements FragmentUtils.OnBackClickListener { - - ImageView ivSharedElement; - TextView tvAboutFragment; - - public static Root1Fragment newInstance() { - Bundle args = new Bundle(); - Root1Fragment fragment = new Root1Fragment(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.fragment_root; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - Random random = new Random(); - FragmentUtils.setBackgroundColor(this, Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256))); - view.findViewById(R.id.btn_show_about_fragment).setOnClickListener(this); - view.findViewById(R.id.btn_add).setOnClickListener(this); - view.findViewById(R.id.btn_add_hide).setOnClickListener(this); - view.findViewById(R.id.btn_add_hide_stack).setOnClickListener(this); - view.findViewById(R.id.btn_add).setOnClickListener(this); - view.findViewById(R.id.btn_add_show).setOnClickListener(this); - view.findViewById(R.id.btn_add_child).setOnClickListener(this); - view.findViewById(R.id.btn_pop_to_root).setOnClickListener(this); - view.findViewById(R.id.btn_pop_add).setOnClickListener(this); - view.findViewById(R.id.btn_hide_show).setOnClickListener(this); - view.findViewById(R.id.btn_replace).setOnClickListener(this); - ivSharedElement = (ImageView) view.findViewById(R.id.iv_shared_element); - tvAboutFragment = (TextView) view.findViewById(R.id.tv_about_fragment); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - tvAboutFragment.setText(""); - switch (view.getId()) { - case R.id.btn_show_about_fragment: - tvAboutFragment.setText("top: " + FragmentUtils.getSimpleName(FragmentUtils.getTop(getFragmentManager())) - + "\ntopInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopInStack(getFragmentManager())) - + "\ntopShow: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShow(getFragmentManager())) - + "\ntopShowInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShowInStack(getFragmentManager())) - + "\n---all of fragments---\n" - + FragmentUtils.getAllFragments(getFragmentManager()).toString() - + "\n----------------------\n\n" - + "---stack top---\n" - + FragmentUtils.getAllFragmentsInStack(getFragmentManager()).toString() - + "\n---stack bottom---\n\n" - ); - break; - case R.id.btn_add: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container); - break; - case R.id.btn_add_hide: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container, - true); - break; - case R.id.btn_add_hide_stack: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container, - true, - true); - break; -// case R.id.btn_add_show: -// FragmentUtils.add(getFragmentManager(), -// addSharedElement(Demo1Fragment.newInstance()), -// R.id.fragment_container, -// false, -// false, -// sharedElement); -// break; -// case R.id.btn_add_child: -// FragmentUtils.add(getChildFragmentManager(), -// ChildFragment.newInstance(), -// R.id.child_fragment_container, -// false, -// true); -// break; -// case R.id.btn_pop_to_root: -// FragmentUtils.popToFragment(getFragmentManager(), -// Demo1Fragment.class, -// true); -// break; -// case R.id.btn_pop_add: -// FragmentUtils.popAddFragment(getFragmentManager(), -// addSharedElement(ChildFragment.newInstance()), -// R.id.fragment_container, -// true, -// sharedElement); -// break; -// case R.id.btn_hide_show: -// Fragment fragment1 = FragmentUtils.findFragment(getFragmentManager(), Demo1Fragment.class); -// if (fragment1 != null) { -// FragmentUtils.showHideFragment(this, fragment1); -// } else { -// ToastUtils.showLong("please add demo1 first!"); -// } -// break; -// case R.id.btn_replace: -// ((FragmentActivity) getActivity()).rootFragment = FragmentUtils.replaceFragment(this, addSharedElement(Demo3Fragment.newInstance()), false, sharedElement); -// break; - } - } - - private Fragment addSharedElement(Fragment fragment) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - fragment.setSharedElementEnterTransition(new DetailTransition()); - fragment.setEnterTransition(new Fade()); - fragment.setSharedElementReturnTransition(new DetailTransition()); - } - return fragment; - } - - @Override - public boolean onBackClick() { -// FragmentUtils.popToFragment(getFragmentManager(), Demo1Fragment.class, true); - return false; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root2Fragment.java b/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root2Fragment.java deleted file mode 100644 index c3f0231d31..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/fragment/Root2Fragment.java +++ /dev/null @@ -1,163 +0,0 @@ -package com.blankj.androidutilcode.core.fragment; - -import android.graphics.Color; -import android.os.Build; -import android.os.Bundle; -import android.support.v4.app.Fragment; -import android.transition.Fade; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseFragment; -import com.blankj.utilcode.util.FragmentUtils; - -import java.util.Random; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 17/02/02
- *     desc  :
- * 
- */ -public class Root2Fragment extends BaseFragment - implements FragmentUtils.OnBackClickListener { - - ImageView ivSharedElement; - TextView tvAboutFragment; - - public static Root2Fragment newInstance() { - Bundle args = new Bundle(); - Root2Fragment fragment = new Root2Fragment(); - fragment.setArguments(args); - return fragment; - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.fragment_root; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - Random random = new Random(); - FragmentUtils.setBackgroundColor(this, Color.rgb(random.nextInt(256), random.nextInt(256), random.nextInt(256))); - view.findViewById(R.id.btn_show_about_fragment).setOnClickListener(this); - view.findViewById(R.id.btn_add).setOnClickListener(this); - view.findViewById(R.id.btn_add_hide).setOnClickListener(this); - view.findViewById(R.id.btn_add_hide_stack).setOnClickListener(this); - view.findViewById(R.id.btn_add).setOnClickListener(this); - view.findViewById(R.id.btn_add_show).setOnClickListener(this); - view.findViewById(R.id.btn_add_child).setOnClickListener(this); - view.findViewById(R.id.btn_pop_to_root).setOnClickListener(this); - view.findViewById(R.id.btn_pop_add).setOnClickListener(this); - view.findViewById(R.id.btn_hide_show).setOnClickListener(this); - view.findViewById(R.id.btn_replace).setOnClickListener(this); - ivSharedElement = (ImageView) view.findViewById(R.id.iv_shared_element); - tvAboutFragment = (TextView) view.findViewById(R.id.tv_about_fragment); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - tvAboutFragment.setText(""); - switch (view.getId()) { - case R.id.btn_show_about_fragment: - tvAboutFragment.setText("top: " + FragmentUtils.getSimpleName(FragmentUtils.getTop(getFragmentManager())) - + "\ntopInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopInStack(getFragmentManager())) - + "\ntopShow: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShow(getFragmentManager())) - + "\ntopShowInStack: " + FragmentUtils.getSimpleName(FragmentUtils.getTopShowInStack(getFragmentManager())) - + "\n---all of fragments---\n" - + FragmentUtils.getAllFragments(getFragmentManager()).toString() - + "\n----------------------\n\n" - + "---stack top---\n" - + FragmentUtils.getAllFragmentsInStack(getFragmentManager()).toString() - + "\n---stack bottom---\n\n" - ); - break; - case R.id.btn_add: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container); - break; - case R.id.btn_add_hide: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container, - true); - break; - case R.id.btn_add_hide_stack: - FragmentUtils.add(getFragmentManager(), - ChildFragment.newInstance(), - R.id.fragment_container, - true, - true); - break; -// case R.id.btn_add_show: -// FragmentUtils.add(getFragmentManager(), -// addSharedElement(Demo1Fragment.newInstance()), -// R.id.fragment_container, -// false, -// false, -// sharedElement); -// break; -// case R.id.btn_add_child: -// FragmentUtils.add(getChildFragmentManager(), -// ChildFragment.newInstance(), -// R.id.child_fragment_container, -// false, -// true); -// break; -// case R.id.btn_pop_to_root: -// FragmentUtils.popToFragment(getFragmentManager(), -// Demo1Fragment.class, -// true); -// break; -// case R.id.btn_pop_add: -// FragmentUtils.popAddFragment(getFragmentManager(), -// addSharedElement(ChildFragment.newInstance()), -// R.id.fragment_container, -// true, -// sharedElement); -// break; -// case R.id.btn_hide_show: -// Fragment fragment1 = FragmentUtils.findFragment(getFragmentManager(), Demo1Fragment.class); -// if (fragment1 != null) { -// FragmentUtils.showHideFragment(this, fragment1); -// } else { -// ToastUtils.showLong("please add demo1 first!"); -// } -// break; -// case R.id.btn_replace: -// ((FragmentActivity) getActivity()).rootFragment = FragmentUtils.replaceFragment(this, addSharedElement(Demo3Fragment.newInstance()), false, sharedElement); -// break; - } - } - - private Fragment addSharedElement(Fragment fragment) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - fragment.setSharedElementEnterTransition(new DetailTransition()); - fragment.setEnterTransition(new Fade()); - fragment.setSharedElementReturnTransition(new DetailTransition()); - } - return fragment; - } - - @Override - public boolean onBackClick() { -// FragmentUtils.popToFragment(getFragmentManager(), Demo1Fragment.class, true); - return false; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/image/ImageActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/image/ImageActivity.java deleted file mode 100644 index d9091ad3b9..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/image/ImageActivity.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.blankj.androidutilcode.core.image; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Bitmap; -import android.graphics.Color; -import android.os.Bundle; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; -import android.view.View; - -import com.blankj.androidutilcode.Config; -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.ImageUtils; -import com.blankj.utilcode.util.ToastUtils; - -import java.util.ArrayList; -import java.util.List; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/26
- *     desc  : Image 工具类 Demo
- * 
- */ -public class ImageActivity extends BaseBackActivity { - - Bitmap src; - List mList = new ArrayList<>(); - - public static void start(Context context) { - Intent starter = new Intent(context, ImageActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_image; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_image)); - - RecyclerView rvImages = findViewById(R.id.rv_images); - findViewById(R.id.btn_save).setOnClickListener(this); - - src = ImageUtils.getBitmap(R.drawable.img_lena); - Bitmap round = ImageUtils.getBitmap(R.drawable.avatar_round); - Bitmap watermark = ImageUtils.getBitmap(R.mipmap.ic_launcher); - - int width = src.getWidth(); - int height = src.getHeight(); - - mList.add(new ImageBean(R.string.image_src, src)); - mList.add(new ImageBean(R.string.image_scale, ImageUtils.scale(src, width / 2, height / 2))); - mList.add(new ImageBean(R.string.image_clip, ImageUtils.clip(src, 0, 0, width / 2, height / 2))); - mList.add(new ImageBean(R.string.image_skew, ImageUtils.skew(src, 0.2f, 0.1f))); - mList.add(new ImageBean(R.string.image_rotate, ImageUtils.rotate(src, 90, width / 2, height / 2))); - mList.add(new ImageBean(R.string.image_to_round, ImageUtils.toRound(src))); - mList.add(new ImageBean(R.string.image_to_round_border, ImageUtils.toRound(src, 16, Color.GREEN))); - mList.add(new ImageBean(R.string.image_to_round_corner, ImageUtils.toRoundCorner(src, 80))); - mList.add(new ImageBean(R.string.image_to_round_corner_border, ImageUtils.toRoundCorner(src, 80, 16, Color.GREEN))); - mList.add(new ImageBean(R.string.image_add_corner_border, ImageUtils.addCornerBorder(src, 16, Color.GREEN, 0))); - mList.add(new ImageBean(R.string.image_add_circle_border, ImageUtils.addCircleBorder(round, 16, Color.GREEN))); - mList.add(new ImageBean(R.string.image_add_reflection, ImageUtils.addReflection(src, 80))); - mList.add(new ImageBean(R.string.image_add_text_watermark, ImageUtils.addTextWatermark(src, "blankj", 40, Color.GREEN, 0, 0))); - mList.add(new ImageBean(R.string.image_add_image_watermark, ImageUtils.addImageWatermark(src, watermark, 0, 0, 0x88))); - mList.add(new ImageBean(R.string.image_to_gray, ImageUtils.toGray(src))); - mList.add(new ImageBean(R.string.image_fast_blur, ImageUtils.fastBlur(src, 0.1f, 5))); - mList.add(new ImageBean(R.string.image_render_script_blur, ImageUtils.renderScriptBlur(src, 10))); - mList.add(new ImageBean(R.string.image_stack_blur, ImageUtils.stackBlur(src, 10))); - mList.add(new ImageBean(R.string.image_compress_by_scale, ImageUtils.compressByScale(src, 0.5f, 0.5f))); - mList.add(new ImageBean(R.string.image_compress_by_quality_half, ImageUtils.compressByQuality(src, 50))); - mList.add(new ImageBean(R.string.image_compress_by_quality_max_size, ImageUtils.compressByQuality(src, 10L * 1024)));// 10Kb - mList.add(new ImageBean(R.string.image_compress_by_sample_size, ImageUtils.compressBySampleSize(src, 2))); - - rvImages.setAdapter(new ImageAdapter(mList, R.layout.item_image)); - rvImages.setLayoutManager(new LinearLayoutManager(this)); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_save: - boolean save = ImageUtils.save(src, Config.CACHE_PATH + "lena.jpg", Bitmap.CompressFormat.JPEG); - ToastUtils.showLong(save ? "successful" : "failed"); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/image/ImageAdapter.java b/app/src/main/java/com/blankj/androidutilcode/core/image/ImageAdapter.java deleted file mode 100644 index e00308ba78..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/image/ImageAdapter.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.blankj.androidutilcode.core.image; - -import android.support.annotation.LayoutRes; -import android.widget.ImageView; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.rv.BaseViewHolder; -import com.blankj.androidutilcode.base.rv.adapter.SingleAdapter; - -import java.util.List; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/09/18
- *     desc  :
- * 
- */ -public class ImageAdapter extends SingleAdapter { - - public ImageAdapter(List list, @LayoutRes int layoutId) { - super(list, layoutId); - } - - @Override - protected void bind(BaseViewHolder holder, ImageBean data) { - TextView textView = holder.getView(R.id.tv_image_name); - textView.setText(data.getName()); - ImageView image = holder.getView(R.id.iv_image); - image.setImageBitmap(data.getImage()); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/image/ImageBean.java b/app/src/main/java/com/blankj/androidutilcode/core/image/ImageBean.java deleted file mode 100644 index 9070d28cb8..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/image/ImageBean.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.blankj.androidutilcode.core.image; - -import android.graphics.Bitmap; -import android.support.annotation.StringRes; - -import com.blankj.utilcode.util.Utils; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/09/18
- *     desc  :
- * 
- */ -public class ImageBean { - - int resId; - String name; - Bitmap image; - - public ImageBean(@StringRes int resId, Bitmap image) { - name = Utils.getApp().getString(resId); - this.image = image; - } - - public ImageBean(String name, Bitmap image) { - this.name = name; - this.image = image; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public Bitmap getImage() { - return image; - } - - public void setImage(Bitmap image) { - this.image = image; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/keyboard/KeyboardActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/keyboard/KeyboardActivity.java deleted file mode 100644 index 2b6ce0b9df..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/keyboard/KeyboardActivity.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.blankj.androidutilcode.core.keyboard; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Rect; -import android.os.Bundle; -import android.support.v7.app.AlertDialog; -import android.util.DisplayMetrics; -import android.view.MotionEvent; -import android.view.View; -import android.view.inputmethod.InputMethodManager; -import android.widget.EditText; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.KeyboardUtils; -import com.blankj.utilcode.util.LogUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/27
- *     desc  : Keyboard 工具类 Demo
- * 
- */ -public class KeyboardActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, KeyboardActivity.class); - context.startActivity(starter); - } - - TextView tvAboutKeyboard; - EditText etInput; - private AlertDialog dialog; - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_keyboard; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_keyboard)); - - etInput = findViewById(R.id.et_input); - findViewById(R.id.btn_hide_soft_input).setOnClickListener(this); - findViewById(R.id.btn_show_soft_input).setOnClickListener(this); - findViewById(R.id.btn_toggle_soft_input).setOnClickListener(this); - findViewById(R.id.btn_keyboard_in_fragment).setOnClickListener(this); - tvAboutKeyboard = findViewById(R.id.tv_about_keyboard); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_hide_soft_input: - KeyboardUtils.hideSoftInput(this); - break; - case R.id.btn_show_soft_input: - KeyboardUtils.showSoftInput(this); - break; - case R.id.btn_toggle_soft_input: - KeyboardUtils.toggleSoftInput(); - break; - case R.id.btn_keyboard_in_fragment: - KeyboardUtils.hideSoftInput(this); - new KeyboardDialog(this).show(); - break; - } - } - - @Override - public boolean dispatchTouchEvent(MotionEvent ev) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - View v = getCurrentFocus(); - if (isShouldHideKeyboard(v, ev)) { - InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(v.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); - } - } - return super.dispatchTouchEvent(ev); - } - - // 根据 EditText 所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘 - private boolean isShouldHideKeyboard(View v, MotionEvent event) { - if (v != null && (v instanceof EditText)) { - int[] l = {0, 0}; - v.getLocationInWindow(l); - int left = l[0], - top = l[1], - bottom = top + v.getHeight(), - right = left + v.getWidth(); - return !(event.getX() > left && event.getX() < right - && event.getY() > top && event.getY() < bottom); - } - return false; - } - - private boolean isKeyboardShown(View rootView) { - final int softKeyboardHeight = 100; - Rect frame = new Rect(); - rootView.getWindowVisibleDisplayFrame(frame); - DisplayMetrics dm = rootView.getResources().getDisplayMetrics(); - int heightDiff = rootView.getBottom() - frame.bottom; - LogUtils.d("" + rootView.getBottom() + ", " + frame.bottom + ", " + heightDiff); - return heightDiff > softKeyboardHeight * dm.density; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/keyboard/KeyboardDialog.java b/app/src/main/java/com/blankj/androidutilcode/core/keyboard/KeyboardDialog.java deleted file mode 100644 index 4244a0a8d2..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/keyboard/KeyboardDialog.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.blankj.androidutilcode.core.keyboard; - -import android.app.Activity; -import android.support.v7.app.AlertDialog; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.EditText; - -import com.blankj.androidutilcode.R; -import com.blankj.utilcode.util.KeyboardUtils; - -import java.lang.ref.WeakReference; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/06/01
- *     desc  :
- * 
- */ -public class KeyboardDialog implements View.OnClickListener { - - private WeakReference mActivityWeakReference; - - public KeyboardDialog(Activity activity) { - mActivityWeakReference = new WeakReference<>(activity); - } - - private AlertDialog dialog; - private EditText etInput; - - public void show(){ - final Activity activity = mActivityWeakReference.get(); - if (activity != null) { - final View dialogView = LayoutInflater.from(activity).inflate(R.layout.dialog_keyboard, null); - AlertDialog.Builder builder = new AlertDialog.Builder(activity); - etInput = (EditText) dialogView.findViewById(R.id.et_input); - dialog = builder.setView(dialogView).create(); - dialog.setCanceledOnTouchOutside(false); - dialogView.findViewById(R.id.btn_hide_soft_input).setOnClickListener(this); - dialogView.findViewById(R.id.btn_show_soft_input).setOnClickListener(this); - dialogView.findViewById(R.id.btn_toggle_soft_input).setOnClickListener(this); - dialogView.findViewById(R.id.btn_close_dialog).setOnClickListener(this); - dialog.show(); - KeyboardUtils.showSoftInput(activity); - } - } - - @Override - public void onClick(View v) { - switch (v.getId()) { - case R.id.btn_hide_soft_input: - KeyboardUtils.hideSoftInput(etInput); - break; - case R.id.btn_show_soft_input: - KeyboardUtils.showSoftInput(etInput); - break; - case R.id.btn_toggle_soft_input: - KeyboardUtils.toggleSoftInput(); - break; - case R.id.btn_close_dialog: - KeyboardUtils.hideSoftInput(etInput); - dialog.dismiss(); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/log/LogActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/log/LogActivity.java deleted file mode 100644 index 5ea5ab34cc..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/log/LogActivity.java +++ /dev/null @@ -1,273 +0,0 @@ -package com.blankj.androidutilcode.core.log; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.os.Environment; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.UtilsApp; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.LogUtils; - - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/03/22
- *     desc  : Log 工具类 Demo
- * 
- */ -public class LogActivity extends BaseBackActivity { - - private static final String TAG = "CMJ"; - - private TextView tvAboutLog; - - private LogUtils.Config mConfig = LogUtils.getConfig(); - - private String dir = ""; - private String globalTag = ""; - private boolean log = true; - private boolean console = true; - private boolean head = true; - private boolean file = false; - private boolean border = true; - private int consoleFilter = LogUtils.V; - private int fileFilter = LogUtils.V; - - private static final int UPDATE_LOG = 0x01; - private static final int UPDATE_CONSOLE = 0x01 << 1; - private static final int UPDATE_TAG = 0x01 << 2; - private static final int UPDATE_HEAD = 0x01 << 3; - private static final int UPDATE_FILE = 0x01 << 4; - private static final int UPDATE_DIR = 0x01 << 5; - private static final int UPDATE_BORDER = 0x01 << 6; - private static final int UPDATE_CONSOLE_FILTER = 0x01 << 7; - private static final int UPDATE_FILE_FILTER = 0x01 << 8; - - private Runnable mRunnable = new Runnable() { - @Override - public void run() { - LogUtils.v("verbose"); - LogUtils.d("debug"); - LogUtils.i("info"); - LogUtils.w("warn"); - LogUtils.e("error"); - LogUtils.a("assert"); - } - }; - - private static final String longStr; - - static { - StringBuilder sb = new StringBuilder(); - sb.append("len = 10400\ncontent = \""); - for (int i = 0; i < 800; ++i) { - sb.append("Hello world. "); - } - sb.append("\""); - longStr = sb.toString(); - } - - public static void start(Context context) { - Intent starter = new Intent(context, LogActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_log; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_log)); - - tvAboutLog = findViewById(R.id.tv_about_log); - findViewById(R.id.btn_toggle_log).setOnClickListener(this); - findViewById(R.id.btn_toggle_console).setOnClickListener(this); - findViewById(R.id.btn_toggle_tag).setOnClickListener(this); - findViewById(R.id.btn_toggle_head).setOnClickListener(this); - findViewById(R.id.btn_toggle_border).setOnClickListener(this); - findViewById(R.id.btn_toggle_file).setOnClickListener(this); - findViewById(R.id.btn_toggle_dir).setOnClickListener(this); - findViewById(R.id.btn_toggle_conole_filter).setOnClickListener(this); - findViewById(R.id.btn_toggle_file_filter).setOnClickListener(this); - findViewById(R.id.btn_log_no_tag).setOnClickListener(this); - findViewById(R.id.btn_log_with_tag).setOnClickListener(this); - findViewById(R.id.btn_log_in_new_thread).setOnClickListener(this); - findViewById(R.id.btn_log_null).setOnClickListener(this); - findViewById(R.id.btn_log_many_params).setOnClickListener(this); - findViewById(R.id.btn_log_long).setOnClickListener(this); - findViewById(R.id.btn_log_file).setOnClickListener(this); - findViewById(R.id.btn_log_json).setOnClickListener(this); - findViewById(R.id.btn_log_xml).setOnClickListener(this); - updateAbout(0); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_toggle_log: - updateAbout(UPDATE_LOG); - break; - case R.id.btn_toggle_console: - updateAbout(UPDATE_CONSOLE); - break; - case R.id.btn_toggle_tag: - updateAbout(UPDATE_TAG); - break; - case R.id.btn_toggle_head: - updateAbout(UPDATE_HEAD); - break; - case R.id.btn_toggle_file: - updateAbout(UPDATE_FILE); - break; - case R.id.btn_toggle_dir: - updateAbout(UPDATE_DIR); - break; - case R.id.btn_toggle_border: - updateAbout(UPDATE_BORDER); - break; - case R.id.btn_toggle_conole_filter: - updateAbout(UPDATE_CONSOLE_FILTER); - break; - case R.id.btn_toggle_file_filter: - updateAbout(UPDATE_FILE_FILTER); - break; - case R.id.btn_log_no_tag: - LogUtils.v("verbose"); - LogUtils.d("debug"); - LogUtils.i("info"); - LogUtils.w("warn"); - LogUtils.e("error"); - LogUtils.a("assert"); - break; - case R.id.btn_log_with_tag: - LogUtils.vTag("customTag", "verbose"); - LogUtils.dTag("customTag", "debug"); - LogUtils.iTag("customTag", "info"); - LogUtils.wTag("customTag", "warn"); - LogUtils.eTag("customTag", "error"); - LogUtils.aTag("customTag", "assert"); - break; - case R.id.btn_log_in_new_thread: - Thread thread = new Thread(mRunnable); - thread.start(); - break; - case R.id.btn_log_null: - LogUtils.v((Object) null); - LogUtils.d((Object) null); - LogUtils.i((Object) null); - LogUtils.w((Object) null); - LogUtils.e((Object) null); - LogUtils.a((Object) null); - break; - case R.id.btn_log_many_params: - LogUtils.v("verbose0", "verbose1"); - LogUtils.vTag("customTag", "verbose0", "verbose1"); - LogUtils.d("debug0", "debug1"); - LogUtils.dTag("customTag", "debug0", "debug1"); - LogUtils.i("info0", "info1"); - LogUtils.iTag("customTag", "info0", "info1"); - LogUtils.w("warn0", "warn1"); - LogUtils.wTag("customTag", "warn0", "warn1"); - LogUtils.e("error0", "error1"); - LogUtils.eTag("customTag", "error0", "error1"); - LogUtils.a("assert0", "assert1"); - LogUtils.aTag("customTag", "assert0", "assert1"); - break; - case R.id.btn_log_long: - LogUtils.d(longStr); - break; - case R.id.btn_log_file: - for (int i = 0; i < 100; i++) { - LogUtils.file("test0 log to file"); - LogUtils.file(LogUtils.I, "test0 log to file"); - } - break; - case R.id.btn_log_json: - String json = "{\"tools\": [{ \"name\":\"css format\" , \"site\":\"http://tools.w3cschool.cn/code/css/" },{ \"name\":\"json format\" , \"site\":\"http://tools.w3cschool.cn/code/json/" },{ \"name\":\"pwd check\" , \"site\":\"http://tools.w3cschool.cn/password/my_password_safe/" }]}"; - LogUtils.json(json); - LogUtils.json(LogUtils.I, json); - break; - case R.id.btn_log_xml: - String xml = "Jack HerringtonPHP HacksO'ReillyJack HerringtonPodcasting HacksO'Reilly"; - LogUtils.xml(xml); - LogUtils.xml(LogUtils.I, xml); - break; - } - } - - private void updateAbout(int args) { - switch (args) { - case UPDATE_LOG: - log = !log; - break; - case UPDATE_CONSOLE: - console = !console; - break; - case UPDATE_TAG: - globalTag = globalTag.equals(TAG) ? "" : TAG; - break; - case UPDATE_HEAD: - head = !head; - break; - case UPDATE_FILE: - file = !file; - break; - case UPDATE_DIR: - if (getDir().contains("test")) { - dir = null; - } else { - if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { - dir = Environment.getExternalStorageDirectory().getPath() + System.getProperty("file.separator") + "test"; - } - } - break; - case UPDATE_BORDER: - border = !border; - break; - case UPDATE_CONSOLE_FILTER: - consoleFilter = consoleFilter == LogUtils.V ? LogUtils.W : LogUtils.V; - break; - case UPDATE_FILE_FILTER: - fileFilter = fileFilter == LogUtils.V ? LogUtils.I : LogUtils.V; - break; - } - mConfig.setLogSwitch(log) - .setConsoleSwitch(console) - .setGlobalTag(globalTag) - .setLogHeadSwitch(head) - .setLog2FileSwitch(file) - .setDir(dir) - .setBorderSwitch(border) - .setConsoleFilter(consoleFilter) - .setFileFilter(fileFilter); - tvAboutLog.setText(mConfig.toString()); - } - - private String getDir() { - return mConfig.toString().split(System.getProperty("line.separator"))[5].substring(5); - } - - @Override - protected void onDestroy() { - UtilsApp.getInstance().initLog(); - super.onDestroy(); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/main/CoreUtilActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/main/CoreUtilActivity.java deleted file mode 100644 index 329277b4c1..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/main/CoreUtilActivity.java +++ /dev/null @@ -1,147 +0,0 @@ -package com.blankj.androidutilcode.core.main; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.androidutilcode.core.activity.ActivityActivity; -import com.blankj.androidutilcode.core.app.AppActivity; -import com.blankj.androidutilcode.core.bar.BarActivity; -import com.blankj.androidutilcode.core.clean.CleanActivity; -import com.blankj.androidutilcode.core.device.DeviceActivity; -import com.blankj.androidutilcode.core.fragment.FragmentActivity; -import com.blankj.androidutilcode.core.image.ImageActivity; -import com.blankj.androidutilcode.core.keyboard.KeyboardActivity; -import com.blankj.androidutilcode.core.log.LogActivity; -import com.blankj.androidutilcode.core.network.NetworkActivity; -import com.blankj.androidutilcode.core.phone.PhoneActivity; -import com.blankj.androidutilcode.core.process.ProcessActivity; -import com.blankj.androidutilcode.core.screen.ScreenActivity; -import com.blankj.androidutilcode.core.sdcard.SDCardActivity; -import com.blankj.androidutilcode.core.snackbar.SnackbarActivity; -import com.blankj.androidutilcode.core.span.SpanActivity; -import com.blankj.androidutilcode.core.toast.ToastActivity; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/29
- *     desc  : MainActivity
- * 
- */ -public class CoreUtilActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, CoreUtilActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_util_core; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.core_util)); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - public void coreUtilClick(View view) { - - } - - public void activityClick(View view) { - ActivityActivity.start(this); - } - - public void appClick(View view) { - AppActivity.start(this); - } - - public void barClick(View view) { - BarActivity.start(this); - } - - public void cleanClick(View view) { - CleanActivity.start(this); - } - - public void crashClick(View view) { - throw new NullPointerException("crash test"); - } - - public void deviceClick(View view) { - DeviceActivity.start(this); - } - - public void fragmentClick(View view) { - FragmentActivity.start(this); - } - - public void imageClick(View view) { - ImageActivity.start(this); - } - - public void keyboardClick(View view) { - KeyboardActivity.start(this); - } - - public void logClick(View view) { - LogActivity.start(this); - } - - public void networkClick(View view) { - NetworkActivity.start(this); - } - -// public void permissionClick(View view) { -// startActivity(new Intent(this, PermissionActivity.class)); -// } - - public void phoneClick(View view) { - PhoneActivity.start(this); - } - - public void processClick(View view) { - ProcessActivity.start(this); - } - - public void screenClick(View view) { - ScreenActivity.start(this); - } - - public void sdcardClick(View view) { - SDCardActivity.start(this); - } - - public void snackbarClick(View view) { - SnackbarActivity.start(this); - } - - public void spannableClick(View view) { - SpanActivity.start(this); - } - - public void toastClick(View view) { - ToastActivity.start(this); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/network/NetworkActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/network/NetworkActivity.java deleted file mode 100644 index 49623efa24..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/network/NetworkActivity.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.blankj.androidutilcode.core.network; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.NetworkUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : Network 工具类 Demo
- * 
- */ -public class NetworkActivity extends BaseBackActivity { - - TextView tvAboutNetwork; - - public static void start(Context context) { - Intent starter = new Intent(context, NetworkActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_network; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_network)); - - tvAboutNetwork = findViewById(R.id.tv_about_network); - findViewById(R.id.btn_open_wireless_settings).setOnClickListener(this); - findViewById(R.id.btn_set_wifi_enabled).setOnClickListener(this); - setAboutNetwork(); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_open_wireless_settings: - NetworkUtils.openWirelessSettings(); - break; - case R.id.btn_set_data_enabled: - NetworkUtils.setDataEnabled(!NetworkUtils.getDataEnabled()); - break; - case R.id.btn_set_wifi_enabled: - NetworkUtils.setWifiEnabled(!NetworkUtils.getWifiEnabled()); - break; - } - setAboutNetwork(); - } - - private void setAboutNetwork() { - tvAboutNetwork.setText("isConnected: " + NetworkUtils.isConnected() - + "\ngetDataEnabled: " + NetworkUtils.getDataEnabled() - + "\nis4G: " + NetworkUtils.is4G() - + "\ngetWifiEnabled: " + NetworkUtils.getWifiEnabled() - + "\nisWifiConnected: " + NetworkUtils.isWifiConnected() - + "\nisWifiAvailable: " + NetworkUtils.isWifiAvailable() - + "\nisAvailableByPing: " + NetworkUtils.isAvailableByPing() - + "\ngetNetworkOperatorName: " + NetworkUtils.getNetworkOperatorName() - + "\ngetNetworkTypeName: " + NetworkUtils.getNetworkType() - + "\ngetIPAddress: " + NetworkUtils.getIPAddress(true) -// + "\ngetDomainAddress: " + NetworkUtils.getDomainAddress("baidu.com") - ); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/phone/PhoneActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/phone/PhoneActivity.java deleted file mode 100644 index 310eab13f3..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/phone/PhoneActivity.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.blankj.androidutilcode.core.phone; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.PhoneUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : Phone 工具类 Demo
- * 
- */ -public class PhoneActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, PhoneActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_phone; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_phone)); - - findViewById(R.id.btn_dial).setOnClickListener(this); - findViewById(R.id.btn_call).setOnClickListener(this); - findViewById(R.id.btn_send_sms).setOnClickListener(this); - findViewById(R.id.btn_send_sms_silent).setOnClickListener(this); - TextView tvAboutPhone = findViewById(R.id.tv_about_phone); - tvAboutPhone.setText("isPhone: " + PhoneUtils.isPhone() - + "\ngetIMEI: " + PhoneUtils.getIMEI() - + "\ngetIMSI: " + PhoneUtils.getIMSI() - + "\ngetPhoneType: " + PhoneUtils.getPhoneType() - + "\nisSimCardReady: " + PhoneUtils.isSimCardReady() - + "\ngetSimOperatorName: " + PhoneUtils.getSimOperatorName() - + "\ngetSimOperatorByMnc: " + PhoneUtils.getSimOperatorByMnc() - + "\n 获取手机状态信息: " + PhoneUtils.getPhoneStatus() - ); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_dial: - PhoneUtils.dial("10000"); - break; - case R.id.btn_call: - PhoneUtils.call("10000"); - break; - case R.id.btn_send_sms: - PhoneUtils.sendSms("10000", "test"); - break; - case R.id.btn_send_sms_silent: - PhoneUtils.sendSmsSilent("10000", "test"); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/process/ProcessActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/process/ProcessActivity.java deleted file mode 100644 index 021ddbf425..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/process/ProcessActivity.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.blankj.androidutilcode.core.process; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.ProcessUtils; - -import java.util.Iterator; -import java.util.Set; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : Process 工具类 Demo
- * 
- */ -public class ProcessActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, ProcessActivity.class); - context.startActivity(starter); - } - - private TextView tvAboutProcess; - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_process; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_process)); - - findViewById(R.id.btn_kill_all_background_processes).setOnClickListener(this); - tvAboutProcess = findViewById(R.id.tv_about_process); - Set set = ProcessUtils.getAllBackgroundProcesses(); - tvAboutProcess.setText("getForegroundProcessName: " + ProcessUtils.getForegroundProcessName() - + "\n\ngetAllBackgroundProcesses: " + getSetItems(set) - + "\nsize: " + set.size()); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_kill_all_background_processes: - Set set = ProcessUtils.getAllBackgroundProcesses(); - Set set1 = ProcessUtils.killAllBackgroundProcesses(); - tvAboutProcess.setText("getForegroundProcessName: " + ProcessUtils.getForegroundProcessName() - + "\n\ngetAllBackgroundProcesses: " + getSetItems(set) - + "\nsize: " + set.size() - + "\n\nkillAllBackgroundProcesses: " + getSetItems(set1) - + "\nsize: " + set1.size()); - break; - } - } - - private String getSetItems(Set set) { - Iterator iterator = set.iterator(); - StringBuilder sb = new StringBuilder(); - while (iterator.hasNext()) { - sb.append(iterator.next()).append("\n"); - } - return sb.toString(); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/screen/ScreenActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/screen/ScreenActivity.java deleted file mode 100644 index bf5d9eee83..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/screen/ScreenActivity.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.blankj.androidutilcode.core.screen; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.ScreenUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/27
- *     desc  : Screen 工具类 Demo
- * 
- */ -public class ScreenActivity extends BaseBackActivity { - - ImageView ivScreenshot; - - public static void start(Context context) { - Intent starter = new Intent(context, ScreenActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_screen; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_sdcard)); - - findViewById(R.id.btn_set_landscape).setOnClickListener(this); - findViewById(R.id.btn_set_portrait).setOnClickListener(this); - findViewById(R.id.btn_screenshot).setOnClickListener(this); - findViewById(R.id.btn_set_sleep_duration).setOnClickListener(this); - ivScreenshot = findViewById(R.id.iv_screenshot); - TextView tvAboutSdcard = findViewById(R.id.tv_about_screen); - tvAboutSdcard.setText("getScreenWidth: " + ScreenUtils.getScreenWidth() - + "\ngetScreenHeight: " + ScreenUtils.getScreenHeight() - + "\nisLandscape: " + ScreenUtils.isLandscape() - + "\nisPortrait: " + ScreenUtils.isPortrait() - + "\ngetScreenRotation: " + ScreenUtils.getScreenRotation(this) - + "\nisScreenLock: " + ScreenUtils.isScreenLock() - + "\ngetSleepDuration: " + ScreenUtils.getSleepDuration() - + "\nisTablet: " + ScreenUtils.isTablet() - ); - - - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_set_landscape: - ScreenUtils.setLandscape(this); - break; - case R.id.btn_set_portrait: - ScreenUtils.setPortrait(this); - break; - case R.id.btn_screenshot: - ivScreenshot.setImageBitmap(ScreenUtils.screenShot(this)); - break; - case R.id.btn_set_sleep_duration: - ScreenUtils.setSleepDuration(100000); - break; - } - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/sdcard/SDCardActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/sdcard/SDCardActivity.java deleted file mode 100644 index ce04f1702f..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/sdcard/SDCardActivity.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.blankj.androidutilcode.core.sdcard; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.SDCardUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/27
- *     desc  : SDCard 工具类 Demo
- * 
- */ -public class SDCardActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, SDCardActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_sdcard; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_sdcard)); - - TextView tvAboutSdcard = findViewById(R.id.tv_about_sdcard); - tvAboutSdcard.setText("isSDCardEnable: " + SDCardUtils.isSDCardEnable() - + "\ngetSDCardPaths: " + SDCardUtils.getSDCardPaths() - + "\ngetInnerSDCardPaths: " + SDCardUtils.getSDCardPaths(true) - + "\ngetOuterSDCardPaths: " + SDCardUtils.getSDCardPaths(false) - ); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/snackbar/SnackbarActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/snackbar/SnackbarActivity.java deleted file mode 100644 index 3f189951f7..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/snackbar/SnackbarActivity.java +++ /dev/null @@ -1,204 +0,0 @@ -package com.blankj.androidutilcode.core.snackbar; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.os.Bundle; -import android.support.annotation.StringRes; -import android.text.SpannableStringBuilder; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.SnackbarUtils; -import com.blankj.utilcode.util.SpanUtils; -import com.blankj.utilcode.util.ToastUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/17
- *     desc  : Snackbar 工具类 Demo
- * 
- */ -public class SnackbarActivity extends BaseBackActivity { - - View snackBarRootView; - - public static void start(Context context) { - Intent starter = new Intent(context, SnackbarActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_snackbar; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_snackbar)); - - snackBarRootView = findViewById(android.R.id.content); - findViewById(R.id.btn_short_snackbar).setOnClickListener(this); - findViewById(R.id.btn_short_snackbar_with_action).setOnClickListener(this); - findViewById(R.id.btn_long_snackbar).setOnClickListener(this); - findViewById(R.id.btn_long_snackbar_with_action).setOnClickListener(this); - findViewById(R.id.btn_indefinite_snackbar).setOnClickListener(this); - findViewById(R.id.btn_indefinite_snackbar_with_action).setOnClickListener(this); - findViewById(R.id.btn_add_view).setOnClickListener(this); - findViewById(R.id.btn_add_view_with_action).setOnClickListener(this); - findViewById(R.id.btn_show_success).setOnClickListener(this); - findViewById(R.id.btn_show_warning).setOnClickListener(this); - findViewById(R.id.btn_show_error).setOnClickListener(this); - findViewById(R.id.btn_dismiss_snackbar).setOnClickListener(this); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - switch (view.getId()) { - case R.id.btn_short_snackbar: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_short)) - .setMessageColor(Color.WHITE) - .setBgResource(R.drawable.shape_top_round_rect) - .show(); - break; - - case R.id.btn_short_snackbar_with_action: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_short)) - .setMessageColor(Color.WHITE) - .setBgResource(R.drawable.shape_top_round_rect) - .setAction(getString(R.string.snackbar_click), Color.YELLOW, new View.OnClickListener() { - @Override - public void onClick(View v) { - ToastUtils.showShort(getString(R.string.snackbar_click)); - } - }) - .show(); - break; - - case R.id.btn_long_snackbar: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_long)) - .setMessageColor(Color.WHITE) - .setDuration(SnackbarUtils.LENGTH_LONG) - .setBgResource(R.drawable.shape_top_round_rect) - .show(); - break; - - case R.id.btn_long_snackbar_with_action: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_long)) - .setMessageColor(Color.WHITE) - .setBgResource(R.drawable.shape_top_round_rect) - .setDuration(SnackbarUtils.LENGTH_LONG) - .setAction(getString(R.string.snackbar_click), Color.YELLOW, new View.OnClickListener() { - @Override - public void onClick(View v) { - ToastUtils.showShort(getString(R.string.snackbar_click)); - } - }) - .show(); - break; - - case R.id.btn_indefinite_snackbar: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_indefinite)) - .setMessageColor(Color.WHITE) - .setDuration(SnackbarUtils.LENGTH_INDEFINITE) - .setBgResource(R.drawable.shape_top_round_rect) - .show(); - break; - - case R.id.btn_indefinite_snackbar_with_action: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_indefinite)) - .setMessageColor(Color.WHITE) - .setDuration(SnackbarUtils.LENGTH_INDEFINITE) - .setBgResource(R.drawable.shape_top_round_rect) - .setAction(getString(R.string.snackbar_click), Color.YELLOW, new View.OnClickListener() { - @Override - public void onClick(View v) { - ToastUtils.showShort(getString(R.string.snackbar_click)); - } - }) - .show(); - break; - - case R.id.btn_add_view: - ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); - SnackbarUtils.with(snackBarRootView) - .setBgColor(Color.TRANSPARENT) - .setDuration(SnackbarUtils.LENGTH_INDEFINITE) - .show(); - SnackbarUtils.addView(R.layout.snackbar_custom, params); - break; - - case R.id.btn_add_view_with_action: - SnackbarUtils.with(snackBarRootView) - .setBgColor(Color.TRANSPARENT) - .setDuration(SnackbarUtils.LENGTH_INDEFINITE) - .show(); - params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); - SnackbarUtils.addView(R.layout.snackbar_custom, params); - View snackbarView = SnackbarUtils.getView(); - if (snackbarView != null) { - TextView tvSnackbarCustom = (TextView) snackbarView.findViewById(R.id.tv_snackbar_custom); - tvSnackbarCustom.setText("点我可消失"); - snackbarView.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - SnackbarUtils.dismiss(); - } - }); - } - break; - - case R.id.btn_show_success: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_success)) - .showSuccess(); - break; - - case R.id.btn_show_warning: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_warning)) - .showWarning(); - break; - - case R.id.btn_show_error: - SnackbarUtils.with(snackBarRootView) - .setMessage(getMsg(R.string.snackbar_error)) - .showError(); - break; - - case R.id.btn_dismiss_snackbar: - SnackbarUtils.dismiss(); - break; - } - } - - private SpannableStringBuilder getMsg(@StringRes int resId) { - return new SpanUtils() - .appendLine(getString(resId)) - .setFontSize(24, true) - .setIconMargin(R.mipmap.ic_launcher, 32, SpanUtils.ALIGN_CENTER) - .append(" ").setFontSize(0) - .create(); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/span/BlurMaskFilterSpan.java b/app/src/main/java/com/blankj/androidutilcode/core/span/BlurMaskFilterSpan.java deleted file mode 100644 index 18a17e9730..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/span/BlurMaskFilterSpan.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.blankj.androidutilcode.core.span; - -import android.graphics.BlurMaskFilter; -import android.graphics.MaskFilter; -import android.text.TextPaint; -import android.text.style.CharacterStyle; -import android.text.style.UpdateAppearance; - -public class BlurMaskFilterSpan extends CharacterStyle implements UpdateAppearance { - - private static final String TAG = "MutableBlurMaskFilterSpan"; - private float mRadius; - private MaskFilter mFilter; - - public BlurMaskFilterSpan(float radius) { - mRadius = radius; - } - - public void setRadius(float radius) { - mRadius = radius; - mFilter = new BlurMaskFilter(mRadius, BlurMaskFilter.Blur.NORMAL); - } - - public float getRadius() { - return mRadius; - } - - @Override - public void updateDrawState(TextPaint ds) { - ds.setMaskFilter(mFilter); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/span/ForegroundAlphaColorSpan.java b/app/src/main/java/com/blankj/androidutilcode/core/span/ForegroundAlphaColorSpan.java deleted file mode 100644 index 1485f657d1..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/span/ForegroundAlphaColorSpan.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.blankj.androidutilcode.core.span; - -import android.graphics.Color; -import android.support.annotation.ColorInt; -import android.text.TextPaint; -import android.text.style.CharacterStyle; -import android.text.style.UpdateAppearance; - -public class ForegroundAlphaColorSpan extends CharacterStyle - implements UpdateAppearance { - - private int mColor; - - public ForegroundAlphaColorSpan(@ColorInt int color) { - mColor = color; - } - - public void setAlpha(int alpha) { - mColor = Color.argb(alpha, Color.red(mColor), Color.green(mColor), Color.blue(mColor)); - } - - @Override - public void updateDrawState(TextPaint ds) { - ds.setColor(mColor); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/span/ForegroundAlphaColorSpanGroup.java b/app/src/main/java/com/blankj/androidutilcode/core/span/ForegroundAlphaColorSpanGroup.java deleted file mode 100644 index 9a48a75583..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/span/ForegroundAlphaColorSpanGroup.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.blankj.androidutilcode.core.span; - -import java.util.ArrayList; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/06/11
- *     desc  :
- * 
- */ -public class ForegroundAlphaColorSpanGroup { - - private final float mAlpha; - - private final ArrayList mSpans; - - public ForegroundAlphaColorSpanGroup(float alpha) { - mAlpha = alpha; - mSpans = new ArrayList<>(); - } - - public void addSpan(ForegroundAlphaColorSpan span) { - span.setAlpha((int) (mAlpha * 255)); - mSpans.add(span); - } - - public void setAlpha(float alpha) { - int size = mSpans.size(); - float total = 1.0f * size * alpha; - for (int index = 0; index < size; index++) { - ForegroundAlphaColorSpan span = mSpans.get(index); - if (total >= 1.0f) { - span.setAlpha(255); - total -= 1.0f; - } else { - span.setAlpha((int) (total * 255)); - total = 0.0f; - } - } - } - - public float getAlpha() { - return mAlpha; - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/span/ShadowSpan.java b/app/src/main/java/com/blankj/androidutilcode/core/span/ShadowSpan.java deleted file mode 100644 index e4943edd57..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/span/ShadowSpan.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.blankj.androidutilcode.core.span; - -import android.text.TextPaint; -import android.text.style.CharacterStyle; -import android.text.style.UpdateAppearance; - -public class ShadowSpan extends CharacterStyle implements UpdateAppearance { - private float radius; - private float dx; - private float dy; - private int shadowColor; - - public ShadowSpan(float radius, float dx, float dy, int shadowColor) { - this.radius = radius; - this.dx = dx; - this.dy = dy; - this.shadowColor = shadowColor; - } - - public float getDx() { - return dx; - } - - public void setDx(float dx) { - this.dx = dx; - } - - public float getDy() { - return dy; - } - - public void setDy(float dy) { - this.dy = dy; - } - - @Override - public void updateDrawState(TextPaint tp) { - tp.setShadowLayer(radius, dx, dy, shadowColor); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/span/SpanActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/span/SpanActivity.java deleted file mode 100644 index aae117e8d8..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/span/SpanActivity.java +++ /dev/null @@ -1,275 +0,0 @@ -package com.blankj.androidutilcode.core.span; - -import android.animation.ValueAnimator; -import android.content.Context; -import android.content.Intent; -import android.graphics.BitmapFactory; -import android.graphics.BitmapShader; -import android.graphics.BlurMaskFilter; -import android.graphics.Color; -import android.graphics.LinearGradient; -import android.graphics.Matrix; -import android.graphics.Shader; -import android.graphics.Typeface; -import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.text.Layout; -import android.text.SpannableStringBuilder; -import android.text.TextPaint; -import android.text.method.LinkMovementMethod; -import android.text.style.ClickableSpan; -import android.view.View; -import android.view.animation.LinearInterpolator; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.SpanUtils; -import com.blankj.utilcode.util.ToastUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/27
- *     desc  : Span 工具类 Demo
- * 
- */ -public class SpanActivity extends BaseBackActivity { - - SpanUtils mSpanUtils; - SpannableStringBuilder animSsb; - - int lineHeight; - float textSize; - ValueAnimator valueAnimator; - Shader mShader; - float mShaderWidth; - Matrix matrix; - - BlurMaskFilterSpan mBlurMaskFilterSpan; - - ShadowSpan mShadowSpan; - - ForegroundAlphaColorSpan mForegroundAlphaColorSpan; - - ForegroundAlphaColorSpanGroup mForegroundAlphaColorSpanGroup; - - String mPrinterString; - - - float density; - TextView tvAboutSpan; - TextView tvAboutAnimRainbow; - TextView tvAboutAnimBlur; - - public static void start(Context context) { - Intent starter = new Intent(context, SpanActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_span; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_span)); - - ClickableSpan clickableSpan = new ClickableSpan() { - @Override - public void onClick(View widget) { - ToastUtils.showShort("事件触发了"); - } - - @Override - public void updateDrawState(TextPaint ds) { - ds.setColor(Color.BLUE); - ds.setUnderlineText(false); - } - }; - - tvAboutSpan = findViewById(R.id.tv_about_span); - tvAboutAnimRainbow = findViewById(R.id.tv_about_anim_span); - - // 响应点击事件的话必须设置以下属性 - tvAboutSpan.setMovementMethod(LinkMovementMethod.getInstance()); - // 去掉点击事件后的高亮 - tvAboutSpan.setHighlightColor(ContextCompat.getColor(this, android.R.color.transparent)); - lineHeight = tvAboutSpan.getLineHeight(); - textSize = tvAboutSpan.getTextSize(); - density = getResources().getDisplayMetrics().density; - -// tvAboutSpan.setText(new SpanUtils() -// .appendLine("测试图标文字顶部对齐测试图标文字顶部对齐测试图标文字顶部对齐测试图标文字顶部对齐").setIconMargin(R.drawable.shape_spannable_block_high, 20, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.LTGRAY) -// .appendLine("测试图标文字居中对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_high, 20, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.GREEN) -// .appendLine("测试图标文字底部对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_high, 20, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.LTGRAY) -// .appendLine("测试图标顶部对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_low, 20, SpanUtils.ALIGN_TOP).setBackgroundColor(Color.GREEN) -// .appendLine("测试图标居中对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_low, 20, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.LTGRAY) -// .appendLine("测试图标底部对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_low, 20, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.GREEN) -// .append("测试大图字体顶部对齐").setBackgroundColor(Color.GREEN) -// .appendImage(R.drawable.shape_spannable_block_high, SpanUtils.ALIGN_TOP) -// .appendLine() -// .create()); - - initAnimSpan(); - startAnim(); - - tvAboutSpan.setText(new SpanUtils() - .appendLine("SpanUtils").setBackgroundColor(Color.LTGRAY).setBold().setForegroundColor(Color.YELLOW).setAlign(Layout.Alignment.ALIGN_CENTER) - .appendLine("前景色").setForegroundColor(Color.GREEN) - .appendLine("背景色").setBackgroundColor(Color.LTGRAY) - .appendLine("行高顶部对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_TOP).setBackgroundColor(Color.GREEN) - .appendLine("行高居中对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.LTGRAY) - .appendLine("行高底部对齐").setLineHeight(2 * lineHeight, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.GREEN) - .appendLine("测试段落缩,首行缩进两字,其他行不缩进").setLeadingMargin((int) textSize * 2, 10).setBackgroundColor(Color.GREEN) - .appendLine("测试引用,后面的字是为了凑到两行的效果").setQuoteColor(Color.GREEN, 10, 10).setBackgroundColor(Color.LTGRAY) - .appendLine("测试列表项,后面的字是为了凑到两行的效果").setBullet(Color.GREEN, 20, 10).setBackgroundColor(Color.LTGRAY).setBackgroundColor(Color.GREEN) - .appendLine("测试图标文字顶部对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_high, 20, SpanUtils.ALIGN_TOP).setBackgroundColor(Color.LTGRAY) - .appendLine("测试图标文字居中对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_high, 20, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.GREEN) - .appendLine("测试图标文字底部对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_high, 20, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.LTGRAY) - .appendLine("测试图标顶部对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_low, 20, SpanUtils.ALIGN_TOP).setBackgroundColor(Color.GREEN) - .appendLine("测试图标居中对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_low, 20, SpanUtils.ALIGN_CENTER).setBackgroundColor(Color.LTGRAY) - .appendLine("测试图标底部对齐,后面的字是为了凑到两行的效果").setIconMargin(R.drawable.shape_spannable_block_low, 20, SpanUtils.ALIGN_BOTTOM).setBackgroundColor(Color.GREEN) - .appendLine("32dp 字体").setFontSize(32, true) - .appendLine("2 倍字体").setFontProportion(2) - .appendLine("横向 2 倍字体").setFontXProportion(1.5f) - .appendLine("删除线").setStrikethrough() - .appendLine("下划线").setUnderline() - .append("测试").appendLine("上标").setSuperscript() - .append("测试").appendLine("下标").setSubscript() - .appendLine("粗体").setBold() - .appendLine("斜体").setItalic() - .appendLine("粗斜体").setBoldItalic() - .appendLine("monospace 字体").setFontFamily("monospace") - .appendLine("自定义字体").setTypeface(Typeface.createFromAsset(getAssets(), "fonts/dnmbhs.ttf")) - .appendLine("相反对齐").setAlign(Layout.Alignment.ALIGN_OPPOSITE) - .appendLine("居中对齐").setAlign(Layout.Alignment.ALIGN_CENTER) - .appendLine("正常对齐").setAlign(Layout.Alignment.ALIGN_NORMAL) - .append("测试").appendLine("点击事件").setClickSpan(clickableSpan) - .append("测试").appendLine("Url").setUrl("https://github.com/Blankj/AndroidUtilCode") - .append("测试").appendLine("模糊").setBlur(3, BlurMaskFilter.Blur.NORMAL) - .appendLine("颜色渐变").setShader(new LinearGradient(0, 0, - 64 * density * 4, 0, - getResources().getIntArray(R.array.rainbow), - null, - Shader.TileMode.REPEAT)).setFontSize(64, true) - .appendLine("图片着色").setFontSize(64, true).setShader(new BitmapShader(BitmapFactory.decodeResource(getResources(), R.drawable.cheetah), - Shader.TileMode.REPEAT, - Shader.TileMode.REPEAT)) - .appendLine("阴影效果").setFontSize(64, true).setBackgroundColor(Color.BLACK).setShadow(24, 8, 8, Color.WHITE) - - .append("测试小图对齐").setBackgroundColor(Color.LTGRAY) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_TOP) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_CENTER) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_BASELINE) - .appendImage(R.drawable.shape_spannable_block_low, SpanUtils.ALIGN_BOTTOM) - .appendLine("end").setBackgroundColor(Color.LTGRAY) - - .append("测试大图字体顶部对齐").setBackgroundColor(Color.GREEN) - .appendImage(R.drawable.shape_spannable_block_high, SpanUtils.ALIGN_TOP) - .append("测试大图字体顶部对齐").setBackgroundColor(Color.GREEN) - .appendLine() - - .append("测试大图字体居中对齐").setBackgroundColor(Color.LTGRAY) - .appendImage(R.drawable.shape_spannable_block_high, SpanUtils.ALIGN_CENTER) - .append("测试大图字体居中对齐").setBackgroundColor(Color.LTGRAY) - .appendLine() - - .append("测试大图字体底部对齐").setBackgroundColor(Color.GREEN) - .appendImage(R.drawable.shape_spannable_block_high, SpanUtils.ALIGN_BOTTOM) - .append("测试大图字体底部对齐").setBackgroundColor(Color.GREEN) - .appendLine() - - .append("测试空格").appendSpace(30, Color.LTGRAY).appendSpace(50, Color.GREEN).appendSpace(100).appendSpace(30, Color.LTGRAY).appendSpace(50, Color.GREEN) - .create()); - } - - private void initAnimSpan() { - mShaderWidth = 64 * density * 4; - mShader = new LinearGradient(0, 0, - mShaderWidth, 0, - getResources().getIntArray(R.array.rainbow), - null, - Shader.TileMode.REPEAT); - matrix = new Matrix(); - - mBlurMaskFilterSpan = new BlurMaskFilterSpan(25); - - mShadowSpan = new ShadowSpan(8, 8, 8, Color.WHITE); - - mForegroundAlphaColorSpan = new ForegroundAlphaColorSpan(Color.TRANSPARENT); - - mForegroundAlphaColorSpanGroup = new ForegroundAlphaColorSpanGroup(0); - - mPrinterString = "打印动画,后面的文字是为了测试打印效果..."; - - mSpanUtils = new SpanUtils() - .appendLine("彩虹动画").setFontSize(64, true).setShader(mShader) - .appendLine("模糊动画").setFontSize(64, true).setSpans(mBlurMaskFilterSpan) - .appendLine("阴影动画").setFontSize(64, true).setBackgroundColor(Color.BLACK).setSpans(mShadowSpan) - .appendLine("透明动画").setFontSize(64, true).setSpans(mForegroundAlphaColorSpan); - for (int i = 0, len = mPrinterString.length(); i < len; ++i) { - ForegroundAlphaColorSpan span = new ForegroundAlphaColorSpan(Color.TRANSPARENT); - mSpanUtils.append(mPrinterString.substring(i, i + 1)).setSpans(span); - mForegroundAlphaColorSpanGroup.addSpan(span); - } - animSsb = mSpanUtils.create(); - } - - private void startAnim() { - valueAnimator = ValueAnimator.ofFloat(0, 1); - valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - // shader - matrix.reset(); - matrix.setTranslate((Float) animation.getAnimatedValue() * mShaderWidth, 0); - mShader.setLocalMatrix(matrix); - - // blur - mBlurMaskFilterSpan.setRadius(25 * (1.00001f - (Float) animation.getAnimatedValue())); - - // shadow - mShadowSpan.setDx(16 * (0.5f - (Float) animation.getAnimatedValue())); - mShadowSpan.setDy(16 * (0.5f - (Float) animation.getAnimatedValue())); - - // alpha - mForegroundAlphaColorSpan.setAlpha((int) (255 * (Float) animation.getAnimatedValue())); - - // printer - mForegroundAlphaColorSpanGroup.setAlpha((Float) animation.getAnimatedValue()); - - // update - tvAboutAnimRainbow.setText(animSsb); - } - }); - - valueAnimator.setInterpolator(new LinearInterpolator()); - valueAnimator.setDuration(600 * 3); - valueAnimator.setRepeatCount(ValueAnimator.INFINITE); - valueAnimator.start(); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - @Override - protected void onDestroy() { - valueAnimator.cancel(); - super.onDestroy(); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/toast/CustomToast.java b/app/src/main/java/com/blankj/androidutilcode/core/toast/CustomToast.java deleted file mode 100644 index 61e223019b..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/toast/CustomToast.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.blankj.androidutilcode.core.toast; - -import android.os.Handler; -import android.os.Looper; -import android.support.annotation.NonNull; -import android.support.annotation.StringRes; -import android.widget.TextView; -import android.widget.Toast; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.UtilsApp; -import com.blankj.utilcode.util.ToastUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2017/08/31
- *     desc  : 自定义 Toast
- * 
- */ -public class CustomToast { - - private static final Handler HANDLER = new Handler(Looper.getMainLooper()); - - public static void showShort(@NonNull final CharSequence text) { - show(text, Toast.LENGTH_SHORT); - } - - public static void showShort(@StringRes final int resId) { - show(resId, Toast.LENGTH_SHORT); - } - - public static void showShort(@StringRes final int resId, final Object... args) { - show(resId, Toast.LENGTH_SHORT, args); - } - - public static void showShort(final String format, final Object... args) { - show(format, Toast.LENGTH_SHORT, args); - } - - public static void showLong(@NonNull final CharSequence text) { - show(text, Toast.LENGTH_LONG); - } - - public static void showLong(@StringRes final int resId) { - show(resId, Toast.LENGTH_LONG); - } - - public static void showLong(@StringRes final int resId, final Object... args) { - show(resId, Toast.LENGTH_LONG, args); - } - - public static void showLong(final String format, final Object... args) { - show(format, Toast.LENGTH_LONG, args); - } - - private static void show(@StringRes final int resId, final int duration) { - show(UtilsApp.getInstance().getResources().getString(resId), duration); - } - - private static void show(@StringRes final int resId, final int duration, final Object... args) { - show(String.format(UtilsApp.getInstance().getResources().getString(resId), args), duration); - } - - private static void show(final String format, final int duration, final Object... args) { - show(String.format(format, args), duration); - } - - private static void show(final CharSequence text, final int duration) { - HANDLER.post(new Runnable() { - @Override - public void run() { - TextView toastView; - if (duration == Toast.LENGTH_SHORT) { - toastView = (TextView) ToastUtils.showCustomShort(R.layout.toast_custom); - } else { - toastView = (TextView) ToastUtils.showCustomLong(R.layout.toast_custom); - } - toastView.setText(text); - } - }); - } - - public static void cancel() { - ToastUtils.cancel(); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/core/toast/ToastActivity.java b/app/src/main/java/com/blankj/androidutilcode/core/toast/ToastActivity.java deleted file mode 100644 index 6220078112..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/core/toast/ToastActivity.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.blankj.androidutilcode.core.toast; - -import android.content.Context; -import android.content.Intent; -import android.graphics.Color; -import android.os.Bundle; -import android.support.v4.content.ContextCompat; -import android.view.Gravity; -import android.view.View; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.utilcode.util.ActivityUtils; -import com.blankj.utilcode.util.SpanUtils; -import com.blankj.utilcode.util.ToastUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/29
- *     desc  : Toast 工具类 Demo
- * 
- */ -public class ToastActivity extends BaseBackActivity { - - View toastView; - - public static void start(Context context) { - Intent starter = new Intent(context, ToastActivity.class); - context.startActivity(starter); - ActivityUtils.startActivity(ToastActivity.class); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_toast; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_toast)); - - findViewById(R.id.btn_show_short_toast).setOnClickListener(this); - findViewById(R.id.btn_show_long_toast).setOnClickListener(this); - findViewById(R.id.btn_show_green_font).setOnClickListener(this); - findViewById(R.id.btn_show_bg_color).setOnClickListener(this); - findViewById(R.id.btn_show_bg_resource).setOnClickListener(this); - findViewById(R.id.btn_show_span).setOnClickListener(this); - findViewById(R.id.btn_show_custom_view).setOnClickListener(this); - findViewById(R.id.btn_show_middle).setOnClickListener(this); - findViewById(R.id.btn_cancel_toast).setOnClickListener(this); - toastView = findViewById(R.id.btn_cancel_toast); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - resetToast(); - switch (view.getId()) { - case R.id.btn_show_short_toast: - new Thread(new Runnable() { - @Override - public void run() { - ToastUtils.showShort(R.string.toast_short); - } - }).start(); - break; - case R.id.btn_show_long_toast: - new Thread(new Runnable() { - @Override - public void run() { - ToastUtils.showLong(R.string.toast_long); - } - }).start(); - break; - case R.id.btn_show_green_font: - ToastUtils.setMsgColor(Color.GREEN); - ToastUtils.showLong(R.string.toast_green_font); - break; - case R.id.btn_show_bg_color: - ToastUtils.setBgColor(ContextCompat.getColor(this, R.color.colorAccent)); - ToastUtils.showLong(R.string.toast_bg_color); - break; - case R.id.btn_show_bg_resource: - ToastUtils.setBgResource(R.drawable.shape_round_rect); - ToastUtils.showLong(R.string.toast_custom_bg); - break; - case R.id.btn_show_span: - ToastUtils.showLong(new SpanUtils() - .appendLine(getString(R.string.toast_span)) - .setFontSize(24, true) - .setIconMargin(R.mipmap.ic_launcher, 32, SpanUtils.ALIGN_CENTER) - .append(" ").setFontSize(0) - .create() - ); - break; - case R.id.btn_show_custom_view: - new Thread(new Runnable() { - @Override - public void run() { - CustomToast.showLong(R.string.toast_custom_view); - } - }).start(); - break; - case R.id.btn_show_middle: - ToastUtils.setGravity(Gravity.CENTER, 0, 0); - ToastUtils.showLong(R.string.toast_middle); - break; - case R.id.btn_cancel_toast: - ToastUtils.cancel(); - break; - } - } - - @Override - protected void onDestroy() { - resetToast(); - super.onDestroy(); - } - - private void resetToast() { - ToastUtils.setMsgColor(0xFEFFFFFF); - ToastUtils.setBgColor(0xFEFFFFFF); - ToastUtils.setBgResource(-1); - ToastUtils.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, getResources().getDimensionPixelSize(R.dimen.offset_64)); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/main/MainActivity.java b/app/src/main/java/com/blankj/androidutilcode/main/MainActivity.java deleted file mode 100644 index ebaadd85ea..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/main/MainActivity.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.blankj.androidutilcode.main; - -import android.graphics.Color; -import android.os.Bundle; -import android.support.design.widget.CollapsingToolbarLayout; -import android.support.v7.app.ActionBarDrawerToggle; -import android.support.v7.widget.Toolbar; -import android.view.View; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseDrawerActivity; -import com.blankj.androidutilcode.core.main.CoreUtilActivity; -import com.blankj.androidutilcode.sub.main.SubUtilActivity; -import com.blankj.utilcode.util.BarUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/29
- *     desc  : MainActivity
- * 
- */ -public class MainActivity extends BaseDrawerActivity { - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_main; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - Toolbar toolbar = findViewById(R.id.toolbar); - View fakeStatusBar = findViewById(R.id.fake_status_bar); - CollapsingToolbarLayout ctl = findViewById(R.id.ctl); - ctl.setExpandedTitleColor(Color.parseColor("#00FFFFFF")); - setSupportActionBar(toolbar); - ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, - rootLayout, - toolbar, - R.string.navigation_drawer_open, - R.string.navigation_drawer_close); - rootLayout.addDrawerListener(toggle); - toggle.syncState(); - - BarUtils.setStatusBarAlpha4Drawer(this, rootLayout, fakeStatusBar, 0, false); - BarUtils.addMarginTopEqualStatusBarHeight(toolbar); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - public void coreUtilClick(View view) { - CoreUtilActivity.start(this); - } - - public void subUtilClick(View view) { - SubUtilActivity.start(this); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/sub/location/LocationActivity.java b/app/src/main/java/com/blankj/androidutilcode/sub/location/LocationActivity.java deleted file mode 100755 index cc7ef9ccc5..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/sub/location/LocationActivity.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.blankj.androidutilcode.sub.location; - -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.ServiceConnection; -import android.os.Bundle; -import android.os.IBinder; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/10/13
- *     desc  : Location 工具类 Demo
- * 
- */ -public class LocationActivity extends BaseBackActivity { - - TextView tvAboutLocation; - LocationService mLocationService; - - public static void start(Context context) { - Intent starter = new Intent(context, LocationActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_location; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_location)); - - tvAboutLocation = findViewById(R.id.tv_about_location); - tvAboutLocation.setText("lastLatitude: unknown" - + "\nlastLongitude: unknown" - + "\nlatitude: unknown" - + "\nlongitude: unknown" - + "\ngetCountryName: unknown" - + "\ngetLocality: unknown" - + "\ngetStreet: unknown" - ); - } - - @Override - public void doBusiness() { - bindService(new Intent(this, LocationService.class), conn, Context.BIND_AUTO_CREATE); - } - - @Override - public void onWidgetClick(View view) { - - } - - @Override - protected void onDestroy() { - unbindService(conn); - super.onDestroy(); - } - - ServiceConnection conn = new ServiceConnection() { - @Override - public void onServiceDisconnected(ComponentName name) { - - } - - @Override - public void onServiceConnected(ComponentName name, IBinder service) { - mLocationService = ((LocationService.LocationBinder) service).getService(); - mLocationService.setOnGetLocationListener(new LocationService.OnGetLocationListener() { - @Override - public void getLocation(final String lastLatitude, final String lastLongitude, final String latitude, final String longitude, final String country, final String locality, final String street) { - runOnUiThread(new Runnable() { - @Override - public void run() { - tvAboutLocation.setText("lastLatitude: " + lastLatitude + - "\nlastLongitude: " + lastLongitude + - "\nlatitude: " + latitude + - "\nlongitude: " + longitude + - "\ngetCountryName: " + country + - "\ngetLocality: " + locality + - "\ngetStreet: " + street - ); - } - }); - } - }); - } - }; -} diff --git a/app/src/main/java/com/blankj/androidutilcode/sub/location/LocationService.java b/app/src/main/java/com/blankj/androidutilcode/sub/location/LocationService.java deleted file mode 100755 index 07c799f58d..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/sub/location/LocationService.java +++ /dev/null @@ -1,114 +0,0 @@ -package com.blankj.androidutilcode.sub.location; - -import android.app.Service; -import android.content.Intent; -import android.location.Location; -import android.os.Binder; -import android.os.Bundle; -import android.os.IBinder; -import android.os.Looper; -import android.support.annotation.Nullable; - -import com.blankj.subutil.util.LocationUtils; -import com.blankj.utilcode.util.ToastUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/11/21
- *     desc  : Location 服务
- * 
- */ -public class LocationService extends Service { - - private boolean isSuccess; - private String lastLatitude = "loading..."; - private String lastLongitude = "loading..."; - private String latitude = "loading..."; - private String longitude = "loading..."; - private String country = "loading..."; - private String locality = "loading..."; - private String street = "loading..."; - private OnGetLocationListener mOnGetLocationListener; - - public void setOnGetLocationListener(OnGetLocationListener onGetLocationListener) { - mOnGetLocationListener = onGetLocationListener; - } - - private LocationUtils.OnLocationChangeListener mOnLocationChangeListener = new LocationUtils.OnLocationChangeListener() { - @Override - public void getLastKnownLocation(Location location) { - lastLatitude = String.valueOf(location.getLatitude()); - lastLongitude = String.valueOf(location.getLongitude()); - if (mOnGetLocationListener != null) { - mOnGetLocationListener.getLocation(lastLatitude, lastLongitude, latitude, longitude, country, locality, street); - } - } - - @Override - public void onLocationChanged(final Location location) { - latitude = String.valueOf(location.getLatitude()); - longitude = String.valueOf(location.getLongitude()); - if (mOnGetLocationListener != null) { - mOnGetLocationListener.getLocation(lastLatitude, lastLongitude, latitude, longitude, country, locality, street); - } - country = LocationUtils.getCountryName(Double.parseDouble(latitude), Double.parseDouble(longitude)); - locality = LocationUtils.getLocality(Double.parseDouble(latitude), Double.parseDouble(longitude)); - street = LocationUtils.getStreet(Double.parseDouble(latitude), Double.parseDouble(longitude)); - if (mOnGetLocationListener != null) { - mOnGetLocationListener.getLocation(lastLatitude, lastLongitude, latitude, longitude, country, locality, street); - } - } - - @Override - public void onStatusChanged(String provider, int status, Bundle extras) { - - } - }; - - @Override - public void onCreate() { - super.onCreate(); - new Thread(new Runnable() { - @Override - public void run() { - Looper.prepare(); - isSuccess = LocationUtils.register(0, 0, mOnLocationChangeListener); - if (isSuccess) ToastUtils.showShort("init success"); - Looper.loop(); - } - }).start(); - } - - @Nullable - @Override - public IBinder onBind(Intent intent) { - return new LocationBinder(); - } - - public class LocationBinder extends Binder { - public LocationService getService() { - return LocationService.this; - } - } - - @Override - public void onDestroy() { - LocationUtils.unregister(); - // 一定要制空,否则内存泄漏 - mOnGetLocationListener = null; - super.onDestroy(); - } - - /** - * 获取位置监听器 - */ - public interface OnGetLocationListener { - void getLocation( - String lastLatitude, String lastLongitude, - String latitude, String longitude, - String country, String locality, String street - ); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/sub/main/SubUtilActivity.java b/app/src/main/java/com/blankj/androidutilcode/sub/main/SubUtilActivity.java deleted file mode 100644 index 04879e2a31..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/sub/main/SubUtilActivity.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.blankj.androidutilcode.sub.main; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.androidutilcode.sub.location.LocationActivity; -import com.blankj.androidutilcode.sub.pinyin.PinyinActivity; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 2016/09/29
- *     desc  : MainActivity
- * 
- */ -public class SubUtilActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, SubUtilActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_util_sub; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.sub_util)); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } - - public void locationClick(View view) { - LocationActivity.start(this); - } - - public void pinyinClick(View view) { - PinyinActivity.start(this); - } -} diff --git a/app/src/main/java/com/blankj/androidutilcode/sub/pinyin/PinyinActivity.java b/app/src/main/java/com/blankj/androidutilcode/sub/pinyin/PinyinActivity.java deleted file mode 100644 index 4d9468f878..0000000000 --- a/app/src/main/java/com/blankj/androidutilcode/sub/pinyin/PinyinActivity.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.blankj.androidutilcode.sub.pinyin; - -import android.content.Context; -import android.content.Intent; -import android.os.Bundle; -import android.view.View; -import android.widget.TextView; - -import com.blankj.androidutilcode.R; -import com.blankj.androidutilcode.base.BaseBackActivity; -import com.blankj.subutil.util.PinyinUtils; - -/** - *
- *     author: Blankj
- *     blog  : http://blankj.com
- *     time  : 17/02/01
- *     desc  : Pinyin 工具类 Demo
- * 
- */ -public class PinyinActivity extends BaseBackActivity { - - public static void start(Context context) { - Intent starter = new Intent(context, PinyinActivity.class); - context.startActivity(starter); - } - - @Override - public void initData(Bundle bundle) { - - } - - @Override - public int bindLayout() { - return R.layout.activity_pinyin; - } - - @Override - public void initView(Bundle savedInstanceState, View view) { - getToolBar().setTitle(getString(R.string.demo_pinyin)); - - TextView tvAboutPinyin = findViewById(R.id.tv_about_pinyin); - - String surnames = "乐乘乜仇会便区单参句召员宓弗折曾朴查洗盖祭种秘繁缪能蕃覃解谌适都阿难黑"; - int size = surnames.length(); - String testString = "汉字转拼音: " + PinyinUtils.ccs2Pinyin("汉字转拼音", " ") - + "\n获取首字母: " + PinyinUtils.getPinyinFirstLetters("获取首字母", " ") - + "\n\n测试姓氏" - + "\n澹台: " + PinyinUtils.getSurnamePinyin("澹台") - + "\n尉迟: " + PinyinUtils.getSurnamePinyin("尉迟") - + "\n万俟: " + PinyinUtils.getSurnamePinyin("万俟") - + "\n单于: " + PinyinUtils.getSurnamePinyin("单于"); - for (int i = 0; i < size; ++i) { - String surname = String.valueOf(surnames.charAt(i)); - testString += String.format("\n%s 正确: %-6s 错误: %-6s", - surname, - PinyinUtils.getSurnamePinyin(surname), - PinyinUtils.ccs2Pinyin(surname)); - } - tvAboutPinyin.setText(testString); - } - - @Override - public void doBusiness() { - - } - - @Override - public void onWidgetClick(View view) { - - } -} diff --git a/app/src/main/res/drawable/bg_header.jpeg b/app/src/main/res/drawable/bg_header.jpeg deleted file mode 100644 index 875fc58c21..0000000000 Binary files a/app/src/main/res/drawable/bg_header.jpeg and /dev/null differ diff --git a/app/src/main/res/drawable/blue.png b/app/src/main/res/drawable/blue.png deleted file mode 100644 index 64b89fb1e2..0000000000 Binary files a/app/src/main/res/drawable/blue.png and /dev/null differ diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml deleted file mode 100644 index 4ef15e0747..0000000000 --- a/app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -