From 6c4ea139659f09a39879d670d8e3bf2debacdf0a Mon Sep 17 00:00:00 2001 From: "Vimal K. Vishwakarma" Date: Sat, 18 Jul 2020 07:03:02 +0530 Subject: [PATCH] java --- .gitignore | 41 ++ LICENSE | 366 ++++++++-------- README.md | 181 +++++++- app/.gitignore | 1 + app/build.gradle | 30 ++ app/proguard-rules.pro | 17 + .../toastysample/ExampleInstrumentedTest.java | 26 ++ app/src/main/AndroidManifest.xml | 20 + app/src/main/assets/PCap Terminal.otf | Bin 0 -> 25816 bytes .../es/dmoral/toastysample/MainActivity.java | 89 ++++ .../res/drawable-hdpi/ic_pets_white_48dp.png | Bin 0 -> 753 bytes .../res/drawable-mdpi/ic_pets_white_48dp.png | Bin 0 -> 426 bytes .../res/drawable-xhdpi/ic_pets_white_48dp.png | Bin 0 -> 927 bytes .../drawable-xxhdpi/ic_pets_white_48dp.png | Bin 0 -> 1296 bytes .../drawable-xxxhdpi/ic_pets_white_48dp.png | Bin 0 -> 1900 bytes .../drawable/ic_baseline_delete_outline.xml | 5 + app/src/main/res/drawable/laptop512.png | Bin 0 -> 14521 bytes app/src/main/res/layout/activity_main.xml | 107 +++++ app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 6893 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3722 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 9472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 17736 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 25729 bytes app/src/main/res/values-w820dp/dimens.xml | 6 + app/src/main/res/values/colors.xml | 7 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 20 + app/src/main/res/values/styles.xml | 11 + .../dmoral/toastysample/ExampleUnitTest.java | 17 + art/collage.png | Bin 0 -> 103252 bytes art/scr_1.png | Bin 0 -> 17089 bytes art/scr_2.png | Bin 0 -> 14827 bytes art/scr_3.png | Bin 0 -> 17657 bytes art/scr_4.png | Bin 0 -> 16558 bytes art/scr_5.png | Bin 0 -> 15802 bytes art/scr_6.png | Bin 0 -> 16744 bytes art/scr_7.png | Bin 0 -> 19600 bytes art/scr_8.png | Bin 0 -> 16942 bytes art/web_hi_res_512.png | Bin 0 -> 89233 bytes build.gradle | 37 ++ gradle.properties | 36 ++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 160 +++++++ gradlew.bat | 90 ++++ settings.gradle | 1 + toasty/.gitignore | 1 + toasty/build.gradle | 29 ++ toasty/proguard-rules.pro | 17 + .../toasty/ExampleInstrumentedTest.java | 26 ++ toasty/src/main/AndroidManifest.xml | 3 + .../main/java/es/dmoral/toasty/Toasty.java | 391 ++++++++++++++++++ .../java/es/dmoral/toasty/ToastyUtils.java | 61 +++ .../main/res/drawable-hdpi/toast_frame.9.png | Bin 0 -> 1573 bytes .../main/res/drawable-ldpi/toast_frame.9.png | Bin 0 -> 3268 bytes .../main/res/drawable-mdpi/toast_frame.9.png | Bin 0 -> 965 bytes .../main/res/drawable-xhdpi/toast_frame.9.png | Bin 0 -> 2090 bytes .../res/drawable-xxhdpi/toast_frame.9.png | Bin 0 -> 2323 bytes .../main/res/drawable/ic_check_white_24dp.xml | 10 + .../main/res/drawable/ic_clear_white_24dp.xml | 10 + .../drawable/ic_error_outline_white_24dp.xml | 10 + .../drawable/ic_info_outline_white_24dp.xml | 10 + toasty/src/main/res/layout/toast_layout.xml | 25 ++ toasty/src/main/res/values/colors.xml | 9 + toasty/src/main/res/values/strings.xml | 4 + .../es/dmoral/toasty/ExampleUnitTest.java | 17 + 66 files changed, 1700 insertions(+), 202 deletions(-) create mode 100644 .gitignore create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/es/dmoral/toastysample/ExampleInstrumentedTest.java create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/assets/PCap Terminal.otf create mode 100644 app/src/main/java/es/dmoral/toastysample/MainActivity.java create mode 100644 app/src/main/res/drawable-hdpi/ic_pets_white_48dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_pets_white_48dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_pets_white_48dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_pets_white_48dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_pets_white_48dp.png create mode 100644 app/src/main/res/drawable/ic_baseline_delete_outline.xml create mode 100644 app/src/main/res/drawable/laptop512.png create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-w820dp/dimens.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/test/java/es/dmoral/toastysample/ExampleUnitTest.java create mode 100644 art/collage.png create mode 100644 art/scr_1.png create mode 100644 art/scr_2.png create mode 100644 art/scr_3.png create mode 100644 art/scr_4.png create mode 100644 art/scr_5.png create mode 100644 art/scr_6.png create mode 100644 art/scr_7.png create mode 100644 art/scr_8.png create mode 100644 art/web_hi_res_512.png create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle create mode 100644 toasty/.gitignore create mode 100644 toasty/build.gradle create mode 100644 toasty/proguard-rules.pro create mode 100644 toasty/src/androidTest/java/es/dmoral/toasty/ExampleInstrumentedTest.java create mode 100644 toasty/src/main/AndroidManifest.xml create mode 100644 toasty/src/main/java/es/dmoral/toasty/Toasty.java create mode 100644 toasty/src/main/java/es/dmoral/toasty/ToastyUtils.java create mode 100644 toasty/src/main/res/drawable-hdpi/toast_frame.9.png create mode 100644 toasty/src/main/res/drawable-ldpi/toast_frame.9.png create mode 100644 toasty/src/main/res/drawable-mdpi/toast_frame.9.png create mode 100644 toasty/src/main/res/drawable-xhdpi/toast_frame.9.png create mode 100644 toasty/src/main/res/drawable-xxhdpi/toast_frame.9.png create mode 100644 toasty/src/main/res/drawable/ic_check_white_24dp.xml create mode 100644 toasty/src/main/res/drawable/ic_clear_white_24dp.xml create mode 100644 toasty/src/main/res/drawable/ic_error_outline_white_24dp.xml create mode 100644 toasty/src/main/res/drawable/ic_info_outline_white_24dp.xml create mode 100644 toasty/src/main/res/layout/toast_layout.xml create mode 100644 toasty/src/main/res/values/colors.xml create mode 100644 toasty/src/main/res/values/strings.xml create mode 100644 toasty/src/test/java/es/dmoral/toasty/ExampleUnitTest.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3a73ed7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,41 @@ +# Built application files +*.apk +*.ap_ + +# Files for the ART/Dalvik VM +*.dex + +# Java class files +*.class + +# Generated files +bin/ +gen/ +out/ + +# Gradle files +.gradle/ +build/ + +# Local configuration file (sdk path, etc) +local.properties + +# Proguard folder generated by Eclipse +proguard/ + +# Log Files +*.log + +# Android Studio Navigation editor temp files +.navigation/ + +# Android Studio captures folder +captures/ + +# Intellij +*.iml +.idea/workspace.xml + +# Keystore files +*.jks +.idea diff --git a/LICENSE b/LICENSE index b09cd78..65c5ca8 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,165 @@ -Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/README.md b/README.md index 46faf2c..2542df8 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,181 @@ +[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/R6R21LO82) + # Toasty - Toasty +[![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=14) [![](https://jitpack.io/v/GrenderG/Toasty.svg)](https://jitpack.io/#GrenderG/Toasty) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Toasty-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/5102) + +
+ +
+ +The usual Toast, but with steroids. + +## Prerequisites + +Add this in your root `build.gradle` file (**not** your module `build.gradle` file): + +```gradle +allprojects { + repositories { + ... + maven { url "https://jitpack.io" } + } +} +``` + +## Dependency + +Add this to your module's `build.gradle` file (make sure the version matches the JitPack badge above): + +```gradle +dependencies { + ... + implementation 'com.github.GrenderG:Toasty:1.4.2' +} +``` + +## Configuration + +This step is optional, but if you want you can configure some Toasty parameters. Place this anywhere in your app: + +```java +Toasty.Config.getInstance() + .tintIcon(boolean tintIcon) // optional (apply textColor also to the icon) + .setToastTypeface(@NonNull Typeface typeface) // optional + .setTextSize(int sizeInSp) // optional + .allowQueue(boolean allowQueue) // optional (prevents several Toastys from queuing) + .apply(); // required +``` + +You can reset the configuration by using `reset()` method: + +```java +Toasty.Config.reset(); +``` + +## Usage + +Each method always returns a `Toast` object, so you can customize the Toast much more. **DON'T FORGET THE `show()` METHOD!** + +To display an error Toast: + +``` java +Toasty.error(yourContext, "This is an error toast.", Toast.LENGTH_SHORT, true).show(); +``` +To display a success Toast: + +``` java +Toasty.success(yourContext, "Success!", Toast.LENGTH_SHORT, true).show(); +``` +To display an info Toast: + +``` java +Toasty.info(yourContext, "Here is some info for you.", Toast.LENGTH_SHORT, true).show(); +``` +To display a warning Toast: + +``` java +Toasty.warning(yourContext, "Beware of the dog.", Toast.LENGTH_SHORT, true).show(); +``` +To display the usual Toast: + +``` java +Toasty.normal(yourContext, "Normal toast w/o icon").show(); +``` +To display the usual Toast with icon: + +``` java +Toasty.normal(yourContext, "Normal toast w/ icon", yourIconDrawable).show(); +``` + +You can also create your custom Toasts with the `custom()` method: +``` java +Toasty.custom(yourContext, "I'm a custom Toast", yourIconDrawable, tintColor, duration, withIcon, +shouldTint).show(); +``` +### Extra +[You can pass formatted text to Toasty!](https://github.com/GrenderG/Toasty/blob/master/app/src/main/java/es/dmoral/toastysample/MainActivity.java#L98-L107) + +**There are variants of each method, feel free to explore this library.** + +## Screenshots + +**Please click the image below to enlarge.** + + + +## Third Party Bindings + +### React Native +You may now use this library with [React Native](https://github.com/facebook/react-native) via this [module](https://github.com/prscX/react-native-toasty). + +Apps using Toasty +-- + +Want to be here? Open an `issue` or make a `pull request`. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ColorHub - Color Palette
Daily – News flipped around
Oz! Comic Reader
Impactor Unroot
Fusemounter
BlueWords
Photo Map - Photo and Video Gallery
Maki for Facebook & Twitter
ModPE IDE
Rocket Notes
OpenHub for GitHub
openHAB
Saarang
Kad ce mi bus - red voznje
Hide Files
LogViewer for openHAB
diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..58b8780 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,30 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion rootProject.ext.compileSdkVersion + + defaultConfig { + applicationId "es.dmoral.toastysample" + minSdkVersion rootProject.ext.minSdkVersion + targetSdkVersion rootProject.ext.targetSdkVersion + versionCode 1 + versionName "1.0" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { + exclude group: 'com.android.support', module: 'support-annotations' + }) + implementation "androidx.appcompat:appcompat:$supportLibVersion" + testImplementation 'junit:junit:4.12' + implementation project(':toasty') +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..4f88a35 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,17 @@ +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in /home/grender/Android/Sdk/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the proguardFiles +# directive in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/app/src/androidTest/java/es/dmoral/toastysample/ExampleInstrumentedTest.java b/app/src/androidTest/java/es/dmoral/toastysample/ExampleInstrumentedTest.java new file mode 100644 index 0000000..2b2ccd1 --- /dev/null +++ b/app/src/androidTest/java/es/dmoral/toastysample/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package es.dmoral.toastysample; + +import android.content.Context; +import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.assertEquals; + +/** + * Instrumentation test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("es.dmoral.toastysample", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5bb84de --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/assets/PCap Terminal.otf b/app/src/main/assets/PCap Terminal.otf new file mode 100644 index 0000000000000000000000000000000000000000..daf065232c8f5a313ba2ba2588c546720cf46dc9 GIT binary patch literal 25816 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_pets_white_48dp.png b/app/src/main/res/drawable-mdpi/ic_pets_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f28287f35935dcd8c7ab1ae2b1c58ddcd5e9d53b GIT binary patch literal 426 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 mQ4~c{6h%=KMNt$*srWN6Fk+0biksp90000 + + diff --git a/app/src/main/res/drawable/laptop512.png b/app/src/main/res/drawable/laptop512.png new file mode 100644 index 0000000000000000000000000000000000000000..943eddf1844bf6157f9c4bb2ad73ad75f76c0e05 GIT binary patch literal 14521 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..3bbd964 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,107 @@ + + + + + +