Open Source & Free  

TIP: Reordering Tabs

The Tabs class is pretty powerful and flexible as I mentioned before. One thing it doesn’t support is drag and drop to re-order the tabs. Here the flexibility of Codename One takes over and allows us to accomplish it. We can use the builtin drag and drop support for components within the tabs container. This TIP: Reordering Tabs

Lightweight Text Selection

Text editing is implemented natively in Codename One. This provides a huge benefit as it allows us to ignore a lot of complex topics such as virtual keyboard localization etc. If we had to implement all that logic the overhead of Codename One would have been huge…​ One free benefit is seamless support for copy Lightweight Text Selection

Camera Kit Rewrite

The native low level camera API on Android is a disaster. It’s often cited as one of the worst API’s on Android. To make matters worse there are two separate API’s Camera and Camera2 (yes really). You need to use Camera2 where it’s available but that means no support for older devices. To solve this Camera Kit Rewrite

TIP: Rich View Revisited

A couple of years ago I posted a tip about rich text view which worked out reasonably well. But it’s a bit outdated by now and it’s worth revisiting. During these two years we published the Facebook Clone which used this component. In the facebook clone I did a lot of work for the rich TIP: Rich View Revisited

Better Error Logging

A common pain point in most GUI frameworks is the hidden stack traces. When we have an app in production we get occasional emails from crash protection which are cryptic and hard to figure out. They usually start with the EDT loop and make no sense. The reason for that is callSerially(). When we have Better Error Logging

Zulu Desktop Builds

Sometimes you pick up a task and know in advance it’s going to be hell to implement it. Sometimes, the hell you were expecting turns out to be WAY worse than you anticipated. This is the case for modern Java desktop deployment. Amazingly, Java was able to take one of the worse deployment processes possible Zulu Desktop Builds

The Native Version of Build isn't Coming to iOS

When we released Codename One 6.0 we mentioned that Codename One build is going through the approval process on iOS. We didn’t mention that this was a process where Apple repeatedly rejected us and we had to appeal over and over again.  We wanted to have a native app because they look/feel slightly better. We The Native Version of Build isn't Coming to iOS

Introduction to UIFragment

I recently became frustrated by the amount of work I had to put into recreating a Component hierarchy programmatically. For a test case, I needed to create a Form with a text field in the bottom, and a button just above it on the right. I ended up with code that looked like: Form f Introduction to UIFragment

Video Capture Constraints

The new video capture constraints API allows you to specify “constraints” when capturing videos. Constraints include: Video Quality (High or Low) Maximum duration Maximum file size Video Resolution (i.e. width and height). Support for these constraints vary by platform and device, but the API allows you to check if your constraints are supported at runtime. Video Capture Constraints

TIP: Adapting to Tablets

A while back someone asked on stackoverflow how to adapt a Codename One app to tablets. I provided quite a few references in the answer and following discussion but I think a better approach is to explain what we did with the recent Codename One Build app because that’s what I’ve been doing in all TIP: Adapting to Tablets

Codename One 6.0 "Chat" is now Live

We are thrilled to announce the release of Codename One 6.0 – Chat. Codename One is an open source “Write Once Run Anywhere” mobile platform for Java and Kotlin developers! With this release we introduced Codename One Build which is one of the biggest overhauls to the Codename One workflow since its inception. We also Codename One 6.0 "Chat" is now Live

VM Enhancements, Full Screen and XML

We are in code freeze…​ As part of the release process I’m gathering the changes we implemented over the past few months. Quite a few didn’t get a blog post during this time. So here is a list of the important things we didn’t document. VM Changes We did two big things for ParparVM (our VM Enhancements, Full Screen and XML