├── app ├── .gitignore ├── src │ ├── main │ │ ├── assets │ │ │ ├── readme.css │ │ │ ├── wrmndfzzy.css │ │ │ ├── wrmndfzzy.md │ │ │ ├── readme.md │ │ │ ├── atomizeLicense.html │ │ │ └── licenses.html │ │ ├── res │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_atom.png │ │ │ ├── drawable-xxxhdpi │ │ │ │ ├── wrmndfzzy.png │ │ │ │ ├── atom_watermark.png │ │ │ │ ├── intro_slide_1_icon.png │ │ │ │ ├── intro_slide_2_icon.png │ │ │ │ ├── intro_slide_3_icon.png │ │ │ │ ├── intro_slide_4_icon.png │ │ │ │ └── intro_slide_5_icon.png │ │ │ ├── values │ │ │ │ ├── dimens.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── styles.xml │ │ │ │ └── strings.xml │ │ │ ├── layout │ │ │ │ ├── about_list_item.xml │ │ │ │ ├── activity_license.xml │ │ │ │ ├── activity_about.xml │ │ │ │ ├── intro_permissions_dialog.xml │ │ │ │ ├── aboutwrmndfzzy_dialog.xml │ │ │ │ ├── app_license_dialog.xml │ │ │ │ ├── aboutapp_dialog.xml │ │ │ │ ├── filename_dialog.xml │ │ │ │ ├── intro_slide1.xml │ │ │ │ ├── intro_slide2.xml │ │ │ │ ├── intro_slide3.xml │ │ │ │ ├── intro_slide5.xml │ │ │ │ ├── intro_slide4.xml │ │ │ │ └── activity_main.xml │ │ │ ├── values-w820dp │ │ │ │ └── dimens.xml │ │ │ └── menu │ │ │ │ └── menu_main.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── wrmndfzzy │ │ │ │ └── atomize │ │ │ │ ├── LicenseActivity.java │ │ │ │ ├── intro │ │ │ │ ├── IntroSlideFragment.java │ │ │ │ └── IntroActivity.java │ │ │ │ ├── AboutActivity.java │ │ │ │ └── MainActivity.java │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── wrmndfzzy │ │ │ └── atomize │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── wrmndfzzy │ │ └── atomize │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── pngquant-android ├── build.gradle └── pngquant-android-release.aar ├── .gitignore ├── .gitmodules ├── TODO.md ├── README.md ├── gradle.properties ├── gradlew.bat ├── gradlew └── LICENSE /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':pngquant-android' 2 | -------------------------------------------------------------------------------- /app/src/main/assets/readme.css: -------------------------------------------------------------------------------- 1 | html{ 2 | padding:10px; 3 | background:#212121; 4 | color:#FFFFFF; 5 | } -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /pngquant-android/build.gradle: -------------------------------------------------------------------------------- 1 | configurations.maybeCreate("default") 2 | artifacts.add("default", file('pngquant-android-release.aar')) -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_atom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_atom.png -------------------------------------------------------------------------------- /pngquant-android/pngquant-android-release.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/pngquant-android/pngquant-android-release.aar -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/wrmndfzzy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/drawable-xxxhdpi/wrmndfzzy.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/atom_watermark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/drawable-xxxhdpi/atom_watermark.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro_slide_1_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/drawable-xxxhdpi/intro_slide_1_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro_slide_2_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/drawable-xxxhdpi/intro_slide_2_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro_slide_3_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/drawable-xxxhdpi/intro_slide_3_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro_slide_4_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/drawable-xxxhdpi/intro_slide_4_icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro_slide_5_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wrmndfzzy/Atomize/HEAD/app/src/main/res/drawable-xxxhdpi/intro_slide_5_icon.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # IntelliJ IDEA 2 | .idea 3 | *.iml 4 | classes 5 | 6 | # Gradle 7 | .gradle 8 | build 9 | local.properties 10 | 11 | *~ 12 | ndk.bin 13 | android-ndk-r10e/ 14 | -------------------------------------------------------------------------------- /app/src/main/assets/wrmndfzzy.css: -------------------------------------------------------------------------------- 1 | html{ 2 | padding:10px; 3 | background:#212121; 4 | color:#FFFFFF; 5 | text-align:center; 6 | word-wrap: break-word; 7 | } 8 | 9 | a{ 10 | color: #ff6a00; 11 | } -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sat Apr 20 19:28:46 EDT 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "pngquant-android/src/main/jni/pngquant"] 2 | path = pngquant-android/src/main/jni/pngquant 3 | url = https://github.com/pornel/pngquant.git 4 | [submodule "pngquant-android/src/main/jni/libpng-android"] 5 | path = pngquant-android/src/main/jni/libpng-android 6 | url = https://github.com/julienr/libpng-android.git 7 | -------------------------------------------------------------------------------- /app/src/main/assets/wrmndfzzy.md: -------------------------------------------------------------------------------- 1 | We are team Wrmndfzzy, two students from Michigan who develop apps for fun. We started up in 2016 with our first app, Atomize, and hope to keep learning more and developing cool apps for everyone. 2 | 3 | 4 | Feel free to visit our GitHub page or shoot us an email at wrmndfzzy@gmail.com! -------------------------------------------------------------------------------- /app/src/main/res/layout/about_list_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_license.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /TODO.md: -------------------------------------------------------------------------------- 1 | TODO List 2 | ========= 3 | - [X] Re-design UI with FAB 4 | - [ ] Warning dialouge for overwriting output (show dialouge to allow for secondary name change) 5 | - [ ] Tri-state for converter (off/warning/on) 6 | - [ ] File Converter - This is a maybe, must be tested 7 | - [ ] Make sure path/file information is private or protected where possible (to prevent security issues) 8 | - [ ] Toggle to show file name chooser every time or not 9 | -------------------------------------------------------------------------------- /app/src/test/java/com/wrmndfzzy/atomize/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.wrmndfzy.atomize; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_about.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 9 | 10 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #616161 4 | #424242 5 | #fb8c00 6 | #ffab40 7 | #212121 8 | #ff6a00 9 | 10 | #B71C1C 11 | #0D47A1 12 | #1B5E20 13 | #7B1FA2 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/wrmndfzzy/atomize/LicenseActivity.java: -------------------------------------------------------------------------------- 1 | package com.wrmndfzzy.atomize; 2 | 3 | import android.support.v7.app.AppCompatActivity; 4 | import android.os.Bundle; 5 | import android.webkit.WebView; 6 | 7 | public class LicenseActivity extends AppCompatActivity { 8 | 9 | private WebView licView; 10 | 11 | @Override 12 | protected void onCreate(Bundle savedInstanceState) { 13 | super.onCreate(savedInstanceState); 14 | setContentView(R.layout.activity_license); 15 | licView = (WebView) findViewById(R.id.licViews); 16 | licView.getSettings().setUseWideViewPort(true); 17 | licView.loadUrl("file:///android_asset/licenses.html"); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Atomize 2 | ======= 3 | Summary 4 | ------- 5 | Atomize is the simplest PNG image compression app available for Android 5.0 and up. Developed by Team Wrmndfzzy, Atomize can shrink the file size of an image significantly, often by as much as 70%, and maintains an image's transparency with little to no loss in quality. 6 | 7 | Instructions 8 | ------------ 9 | Simply select a PNG image, check the preview to confirm you selected the correct image, and press Atomize! The compression process can take up to a few minutes on low end devices, but should complete within seconds on relatively modern spec devices. 10 | 11 | Theory 12 | ------ 13 | Similar to desktop compression programs such as Pngyu, PNGoo, and ImageAlpha, Atomize is simply a front-end for the pngquant lossy compression binary. 14 | -------------------------------------------------------------------------------- /app/src/main/assets/readme.md: -------------------------------------------------------------------------------- 1 | Atomize 2 | ======= 3 | Summary 4 | ------- 5 | Atomize is the simplest PNG image compression app available for Android 5.0 and up. Developed by Team Wrmndfzzy, Atomize can shrink the file size of an image significantly, often by as much as 70%, and maintains an image's transparency with little to no loss in quality. 6 | 7 | Instructions 8 | ------------ 9 | Simply select a PNG image, check the preview to confirm you selected the correct image, and press Atomize! The compression process can take up to a few minutes on low end devices, but should complete within seconds on relatively modern spec devices. 10 | 11 | Theory 12 | ------ 13 | Similar to desktop compression programs such as Pngyu, PNGoo, and ImageAlpha, Atomize is simply a front-end for the pngquant lossy compression binary. 14 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in C:\Users\Achintya\AppData\Local\Android\sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | -dontwarn sun.misc.Unsafe 20 | -dontwarn com.google.common.** -------------------------------------------------------------------------------- /app/src/androidTest/java/com/wrmndfzzy/atomize/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.wrmndfzy.atomize; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumentation test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() throws Exception { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.wrmndfzy.atomize", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/res/layout/intro_permissions_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 15 | 16 |