A capable — pixel art editor for Android.

Last update: May 16, 2022

About

A capable pixel art editor for Android.

Join the official Matrix server: https://matrix.to/#/#pixapencil:matrix.org

... or the official Discord server: https://discord.gg/Ytm7WBMNz9

📱 Android market

PixaPencil will be available soon on the Google Play Store and F-Droid, as well as a .apk file.

▶️ Video

https://www.youtube.com/watch?v=Y77EkLLC8Lo&ab_channel=thebluepandabear

👨‍💻 Open issues

Anyone can contribute to this app by opening a pull request, but I prefer if it is only to address any sort of bug or the two issues I will state below.

Here are two important issues that I have not been able to fix on my own:

  • Translation: the app is only available in English. If you can translate the app into other languages please send me an email at [email protected].

  • Large canvas grid problem: the grid tool works OK for smaller canvas sizes but struggles when the canvas size gets large as the lines become too thick. If anyone has any ideas how to fix this feel free to open a pull request or send me an email at [email protected]. Note that this is a minor issue, as most people aren't going to be using the app for large canvas sizes, but it would be nice to fix.

🖼️ Showcase

Symmetrical art (PixaPencil has powerful symmetry capabilities that haven't been seen in other mobile pixel art editors):

image image

image image

image image

Minecraft diamond sword:

image image

If you want to showcase an image of your own please send me an email at [email protected].

📜 License

To disclaim, this repository is licensed under the MIT license.

For more info go to: https://choosealicense.com/licenses/mit/.

Do not use the name 'PixaPencil' in your app/other product.

📝 Features (as of March 29, 2022)

Go to https://github.com/therealbluepandabear/PixaPencil/projects to have a look at features we want to add to PixaPencil.

📓 Translations

If you spot issues with the translation send me an email at [email protected] or open an issue request.

This app has been translated to:

  • 🇮🇱 Hebrew (by myself), the translation quality is OK.

📣 Shoutout

Thank you to:

  • JohnWick_007#8119 on Discord for providing me some icons to use in my app. (This user's contribution is no longer in the app.)
  • PapaBread#3820 on Discord for helping me out with the mathematics required to add a mirror tool into the app. (This user's contribution is no longer in the app.)
  • And, most importantly - those on StackOverflow who have assisted me with the many bugs I have encountered in my app.

📚 Other libraries used

Without these libraries, this app would not have been possible, so please check them out:

GitHub

https://github.com/therealbluepandabear/PixaPencil
Comments
  • 1. [Bug] Blur canvas on Android Oreo or API 27

    Describe the bug When run on android 8 (oreo sdk 27) canvas showing blurry, and when draw color to canvas its also blurred

    To Reproduce Steps to reproduce the behavior:

    1. Open PyxlMoose.
    2. Create new project or Edit Existing Project
    3. Canvas showing blur, draw color also blur

    Expected behavior Canvas not blur, but show sharp pixel

    Screenshots image

    Smartphone (please complete the following information):

    • Emulator Android Studio
    • Android version 8, oreo SDK 27
    Reviewed by muslimsidiq at 2022-03-30 02:00
  • 2. won't run

    Describe the bug the log is down below.

    To Reproduce Steps to reproduce the behavior:

    1. Go to '...'
    2. Click on '....'
    3. Scroll down to '....'
    4. See error

    Expected behavior A clear and concise description of what you expected to happen.

    Screenshots If applicable, add screenshots to help explain your problem.

    Desktop (please complete the following information):

    • OS: [e.g. iOS]
    • Browser [e.g. chrome, safari]
    • Version [e.g. 22]

    Smartphone (please complete the following information):

    • Device: [e.g. iPhone6]
    • OS: [e.g. iOS8.1]
    • Browser [e.g. stock browser, safari]
    • Version [e.g. 22]

    Additional context 2022-02-11 09:37:18.733 12671-12671/com.realtomjoney.pyxlmoose E/AndroidRuntime: FATAL EXCEPTION: main Process: com.realtomjoney.pyxlmoose, PID: 12671 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.realtomjoney.pyxlmoose/com.realtomjoney.pyxlmoose.activities.main.MainActivity}: android.view.InflateException: Binary XML file line #36 in com.realtomjoney.pyxlmoose:layout/activity_main: Binary XML file line #36 in com.realtomjoney.pyxlmoose:layout/activity_main: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3340) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3489) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2073) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:225) at android.app.ActivityThread.main(ActivityThread.java:7563) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:994) Caused by: android.view.InflateException: Binary XML file line #36 in com.realtomjoney.pyxlmoose:layout/activity_main: Binary XML file line #36 in com.realtomjoney.pyxlmoose:layout/activity_main: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView Caused by: android.view.InflateException: Binary XML file line #36 in com.realtomjoney.pyxlmoose:layout/activity_main: Error inflating class com.google.android.material.bottomnavigation.BottomNavigationView Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at android.view.LayoutInflater.createView(LayoutInflater.java:858) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:1014) at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:965) at android.view.LayoutInflater.rInflate(LayoutInflater.java:1144) at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:1105) at android.view.LayoutInflater.inflate(LayoutInflater.java:686) at android.view.LayoutInflater.inflate(LayoutInflater.java:538) at com.realtomjoney.pyxlmoose.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:68) at com.realtomjoney.pyxlmoose.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:62) at com.realtomjoney.pyxlmoose.activities.main.MainActivity_setBindingsKt.setBindings(MainActivity+setBindings.kt:6) at com.realtomjoney.pyxlmoose.activities.main.MainActivity.onCreate(MainActivity.kt:23) at android.app.Activity.performCreate(Activity.java:7893) at android.app.Activity.performCreate(Activity.java:7880) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1306) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3315) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3489) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2073) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:225) at android.app.ActivityThread.main(ActivityThread.java:7563) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:994) 2022-02-11 09:37:18.733 12671-12671/com.realtomjoney.pyxlmoose E/AndroidRuntime: Caused by: java.lang.IllegalArgumentException: This component requires that you specify a valid TextAppearance attribute. Update your app theme to inherit from Theme.MaterialComponents (or a descendant). at com.google.android.material.internal.ThemeEnforcement.checkTextAppearance(ThemeEnforcement.java:185) at com.google.android.material.internal.ThemeEnforcement.obtainTintedStyledAttributes(ThemeEnforcement.java:116) at com.google.android.material.navigation.NavigationBarView.<init>(NavigationBarView.java:149) at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:108) at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:103) at com.google.android.material.bottomnavigation.BottomNavigationView.<init>(BottomNavigationView.java:98) ... 28 more 2022-02-11 09:37:18.770 12671-12671/com.realtomjoney.pyxlmoose I/Process: Sending signal. PID: 12671 SIG: 9

    Reviewed by lilcheti at 2022-02-11 05:40
  • 3. [Improvement] Change icons for darken/lighten tool

    Improvement description

    Change the current icon of the darken/lighten tool to something more clear.

    Why is this improvement important to add?

    Because some users are getting confused by the icons as to what the tools do.

    Reviewed by therealbluepandabear at 2022-02-11 12:17
  • 4. [Bug] Fix all 'undo' bugs

    Describe the bug The undo tool can be buggy at times. It may behave weirdly in certain scenarios.

    To Reproduce N/A

    Expected behavior The undo tool should behave smoothly at all times without any bugs.

    Reviewed by therealbluepandabear at 2022-02-28 08:18
  • 5. [Improvement] Fix smelly fragment code

    The current code for managing fragment transactions throughout the app is of poor quality and needs a revamp. Study through Google's documentation on Fragments and improve the code.

    Reviewed by therealbluepandabear at 2022-05-01 09:55
  • 6. Final bugs to fix before release 🥳

    Final bugs to fix before PixaPencil gets released...

    Fix the states not being saved when the user rotates the device, such as:

    • [x] The primary/secondary color, and color which the user is selecting (primary/secondary)
    • [x] The currently selected tool
    • [x] The currently selected tab
    • [x] Undo/redo state? For some reason undo/redo isn't working when the user rotates the device.
    • [x] Fix not being able to convert the art to a .png or .jpg on newer Android versions.
    Reviewed by therealbluepandabear at 2022-04-12 15:01
  • 7. [Bug] Fix canvas dimension/size bug on Samsung devices

    Describe the bug The size of the canvas/custom-view does not scale to that of the Bitmap, I experienced this bug on a Samsung Galaxy A10 (not on the emulator). For some strange reason, it only scales to the size of the Bitmap when you open up an already-saved project. The bug is only observable if you create a completely new project.

    If you're reading this, here's some good advice:

    DO NOT RELY ON THE EMULATOR ITSELF TO RELEASE AN APP!

    To Reproduce

    1. Open PyxlMoose on a Samsung device (the bug might also occur on other device types, though I haven't tested this out).
    2. Create a new project of any arbitrary width and height.
    3. Observe the incorrect custom-view scaling.

    Expected behavior The custom view should scale to the Bitmap dimensions correctly without any blank space.

    Reviewed by therealbluepandabear at 2022-03-09 07:21
  • 8. [Bug] Fix all landscape configuration change bugs

    Describe the bug The undo tool can be buggy at times. It may behave weirdly in certain scenarios.

    To Reproduce

    1. Open PyxlMoose.
    2. Create a new project of any arbitrary width and height.
    3. Rotate your screen to landscape mode.
    4. Observe the result.

    Expected behavior The app should be able to handle configuration changes smoothy without exceptions.

    Reviewed by therealbluepandabear at 2022-03-09 02:30
  • 9. [Feature Request] Dither tool

    Feature description

    This feature will allow the user to 'dither'/color their art in a checkerboard pattern.

    Why is this feature important to add?

    This feature is important to add because most other pixel art editors already have this feature, and it can be useful when shading.

    Reviewed by therealbluepandabear at 2022-02-20 02:31
  • 10. [Improvement] Make it so when the user is previewing the rectangle, it only shows a border of it

    Improvement description

    Make it so when the user is moving their fingers to create/preview the rectangle, only show a border of it (just four lines), and fill in the rectangle only when the user lets go of their finger.

    Why is this improvement important to add?

    Because this will make the app quicker, efficient, and faster.

    Reviewed by therealbluepandabear at 2022-02-18 06:02
  • 11. [Feature Request] Square tool

    Feature description

    This feature will allow the user to create squares using the square tool.

    Why is this feature important to add?

    This feature is important to add because it makes it much easier to create rectangles with the same width and height, and will save the user time and hassle when compared to using the rectangle tool.

    Reviewed by therealbluepandabear at 2022-02-18 05:58
  • 12. [Feature Request] Add support for viewing the details of your project and renaming it

    Currently the user can't view details about their project such as the date created, number of unique colours, also add the ability to rename your project.

    Reviewed by therealbluepandabear at 2022-05-15 22:08
  • 13. [Bug] Image is smaller when user saves their art in landscape mode

    When the user saves their art in landscape mode, the cover image is smaller and thus the RecyclerView item is smaller when compared to the ones saved in portrait mode.

    Reviewed by therealbluepandabear at 2022-05-15 22:05
  • 14. APK availability

    Is your feature request related to a problem? Please describe. Looking where the app can be found so users can install it :smiley:

    Describe the solution you'd like git tag releases so they show up here, then have the release *.apk attached to the release.

    Describe alternatives you've considered Directly bringing it to F-Droid – would require tags as well but not necessarily APK files attached to them.

    Additional context A nice FOSS app like this would be nice to find where Android FOSS apps are at home (F-Droid), but should at least be available outside walled gardens (haven't checked whether your app is listed in any of the latter, though). So looking forward to have it available. Thanks in advance!

    Reviewed by IzzySoft at 2022-03-20 17:13
  • 15. [Feature request] Change app logo

    Feature description

    Currently, the app logo is just the default 'Android' icon. This should be changed to a custom app logo.

    The current app logo on GitHub also needs to be changed to something more professional and eye-catching.  

    Why is this feature important to add?

    Because it gives the app a unique flair, and differentiates it from other apps.

    The GitHub current logo is also a bit bland.

    Reviewed by therealbluepandabear at 2021-12-28 04:52
Pixel Launcher for everyone!
Pixel Launcher for everyone!

Flick Launcher Flick Launcher is a project started by Michele Lacorte. I want to create a launcher for google pixels style stock, with a few tweaks. O

May 7, 2022
🌄 Photo editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)
🌄 Photo editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and PhotoEditor (Android)

React Native Photo Editor (RNPE) ?? Image editor using native modules for iOS and Android. Inherit from 2 available libraries, Brightroom (iOS) and Ph

May 15, 2022
An advanced DEX editor for Android.

An advanced DEX editor for Android.

May 16, 2022
Android Kotlin Fundamentals: 02.3 ConstraintLayout using the Layout Editor

ColorMyViews Android Kotlin Bootcamp from Google Developer website Android Kotli

Feb 13, 2022
APK Explorer & Editor, an open-source tool to explore the contents of an installed APK
 APK Explorer & Editor, an open-source tool to explore the contents of an installed APK

APK Explorer & Editor, an open-source tool to explore the contents of an installed APK, is strictly made with an aim to inspect an installed APK file.

May 13, 2022
A file manager,apk editor....
A file manager,apk editor....

A file manager,apk editor....

Apr 3, 2022
A truly hackable editor: simple, lightweight, understandable
A truly hackable editor: simple, lightweight, understandable

kanvas A very simple editor built in Kotlin and intended to be extended and hacked. It is very simple to customize it to handle a language defined usi

Mar 6, 2022
JBytedit - Java bytecode editor
JBytedit - Java bytecode editor

JBytedit - Java bytecode editor JBytedit was a free, fully featured graphical Java Bytecode editor made by (Matthew Dupraz). This is an archival copy

Jan 22, 2022
android-delicious Delicious Android is an Android app which helps you access and save bookmarks via Delicious. It's available over at Google Play.
android-delicious Delicious Android is an Android app which helps you access and save bookmarks via Delicious. It's available over at Google Play.

Delicious Android Delicious Android is an Android app which helps you access and save bookmarks via Delicious. It's available over at Google Play. Fea

May 2, 2022
FoldingNavigationDrawer-Android This is a sample project present how to use Folding-Android to add Folding Efect to Navigation Drawer.

FoldingNavigationDrawer-Android Sample (Play Store Demo) This is a sample project present how to use Folding-Android to add Folding Efect to Navigatio

Feb 17, 2021
Twidere-Android Twidere is a powerful twitter client for Android 1.6+ 1 , which gives you a full Holo experience and nearly full Twitter's feature.
Twidere-Android Twidere is a powerful twitter client for Android 1.6+ 1 , which gives you a full Holo experience and nearly full Twitter's feature.

Twidere for Android Material Design ready and feature rich Twitter/Mastodon/Fanfou app for Android 4.1+. Enjoy Fediverse now! Twidere-Android is maint

May 18, 2022
:movie_camera: Movie discovery app showcasing Android best practices with Google's recommended architecture: MVVM + Repository + Offline support + Android Architecture Components + Paging library & Retrofit2.
:movie_camera: Movie discovery app showcasing Android best practices with Google's recommended architecture: MVVM + Repository + Offline support + Android Architecture Components + Paging library & Retrofit2.

Popular Movies Stage 1 + Stage 2 Discover the most popular and top rated movies playing. Movies data fetched using themoviedb.org API. ✨ Screenshots M

May 14, 2022
Extensible Android mobile voice framework: wakeword, ASR, NLU, and TTS. Easily add voice to any Android app!
Extensible Android mobile voice framework: wakeword, ASR, NLU, and TTS. Easily add voice to any Android app!

Spokestack is an all-in-one solution for mobile voice interfaces on Android. It provides every piece of the speech processing puzzle, including voice

May 6, 2022
Aggregated Android news, articles, podcasts and conferences about Android Development
Aggregated Android news, articles, podcasts and conferences about Android Development

DroidFeed Curated news feed for Android Developers! Stay up to date with the latest Android Development news. Built for the Android developer communit

Apr 19, 2022
May 20, 2022
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar

#Android-LollipopShowcase This is a simple showcase to show off Android's all new Material Design and some other cool new stuff which is (new) in Andr

Apr 17, 2022
The Android startup used to schedule tasks, jobs while launching Android App.

Android Startup, schedule your startup jobs Introduction AndroidStartup is an open source project used to refine your Andriod App startup. Compared wi

Mar 25, 2022
Android playground project with modularization by feature (android libraries), unit tests, MVVM & MVI.
Android playground project with modularization by feature (android libraries), unit tests, MVVM & MVI.

Movies Movies is a simple project to study and play with some android components, architecture and tools for Android development. Tech Stack This proj

May 16, 2022
Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks
Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

Ride-Sharing Uber Lyft Android App - Learn to build a ride-sharing Android Taxi Clone App like Uber, Lyft - Open-Source Project By MindOrks

May 21, 2022