A month ago Francesco asked how to implement the common image cropping UI we see in many applications where the user can pan and zoom to decide the cropping area. We implemented that feature by effectively enhancing the ImageViewer class with two new methods: public Image getCroppedImage(int backgroundColor); public Image getCroppedImage(int width, int height, int … Photo Cropping Wizard
There are a lot of fixes and new features that I don’t get to cover enough as I’ve been busy on several fronts. One of the new features is support for asynchronous media API’s. These let us create a media object without waiting for it to complete. This is very useful if you have a … Asynchronous Media
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
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
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
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
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
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
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
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
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
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 LTD © 2022. All Rights Reserved.
The Java® logo and name are trademarks of Oracle corp. Facebook and the Facebook logo are trademarks of Facebook. Uber and the Uber logo are trademarks of Uber Corp.
Terms of Use