Victor Silva

Relative Layouts

My next task on AppInventor is to make it easier to build decent-looking apps! Right now, users are forced to nest Linear Layouts (called vertical and horizontal panels on the designer) if they want something a little more elaborate, which can be a pain.

Instead, we want to enable users to use Relative Layouts, where they will be able to keep their layout hierarchy flat (improving performance), simply setting positions relative to sibling elements or the parent layout area.

I am working alongside with @matgray. He is responsible for the GWT/designer part, where I will make sure AppInventor manages to tell Android how things should look like.

It took me a while to understand how things worked, and he went ahead and already got a lot done. To those interested in seeing how it looks like, here is an instance of AppInventor with the designer side implemented!

The skeleton of it seems to be ready on my side, but we still need to add some nice logic to transform the coordinates from the designer into relative positions. Should be fun!

Update: These changes turned out to be much deeper than originally thought. We were told to wait for someone else's guidance and have been stuck ever since. This might never make it into master :(

Sharing Component and the PR process

Quite a while ago, on my second step into AppInventor, I picked up on some forgotten work by @cfromknecht and finished up a Sharing component. Here's a snippet of my proposal:

Problem: Sharing text or files is a big part of what mobile apps are about, but enabling this in AppInventor currently requires users to use the ActivityStarter along with a bunch of low level parameters that are not exactly easy to be found.

Proposal: A Sharing component under the Social category. It can be used to share either text or files with no need for any parameter other than the text or the path to the file. It does not have any properties.


AppInventor has a bunch of documentation on how to build a component, and some of my prior experience with sharing on android helped me get through the code quickly. The process of getting the patch to them, however, is not that simple: Before submitting the actual pull request on GitHub, I had to make a proposal and share it on the Mail List for reviews and discussion, spin up an instance on Google App Engine with my patched up version of AppInventor and also create a companion to be used with this version.

The feedback was incredibly helpful and inspiring, from all kinds of different people with one common goal: Improve this Open Source project. After a couple of quick fixes and changes, it was brought to internal review and should hopefully be incorporated some time soon!

AppInventor First App

It took me a while, but AppInventor PostFile does work and I was able to get pictures sent from within my app to my tornado webserver without much trouble. As always, it took me a while to figure out how to access the picture - It could not be found as an attached file but rather within the body of the PostFile request. That should probably have been the first place to look!

My app is just a slightly better version of what I came up with during GSoC12, and I was definitely impressed by how quick and easy it is to make an app with AI. I highly recommend trying it out, you can get your ideas up on your Android Device in no time.

As it didn't take me too long to finish it up, I decided to try to add sharing to the app as well. Since it is extremely easy on Android, I figured I was just a couple of blocks away, but couldn't be more wrong.

This then became the subject of my first pull request: Enabling users to share without having to know low-level android stuff to pass to SEND intents. I am excited to see how the feedback process will go.