[Free / Open Source] - Dynamic Components Extension (for all AI components)

Hi, I want to introduce my new extension which allows to create components dynamically! BUT;

You may ask;

There is an already bunch of different Dynamic Components extension, why did you created another one?

Because this one is different!

Everything starts from here:

It uses Java’s Reflection feature, so this allows you to create ANY component you want dynamically which added to App Inventor. Not only a Button, you can even create a DatePicker dynamically. Just type the component’s name which you want to create, that’s it! :star_struck:

What is reflection and how does it work?

Reflection (in programming) allows you to modify the program during runtime, for example you can create a new Class, Method etc. and search them by its names!

Basically, it appends componentName parameter to the com.google.appinventor.components.runtime. text and creates an instance of it. When you type “Button”, it searches for Button class and creates an instance of it.

So with this method it is now a fully implemented dynamic component extension.

I must say Java is a powerful language :grin:


I actually thought about a full method to create all dynamic components without creating different blocks for every component, but it would be useless. So I was trying to find a proper solution for a long time. And here it is!

Creating a dynamic component

See how it is easy to create any dynamic component. Just type the name of component which you want to create, give an ID for later use, specify a container which component will be placed in and done!

How about properties?

I knew that every component has different properties, so instead of creating methods for setting properties, I gave this job to “Any Component” blocks. :stuck_out_tongue_closed_eyes: This is much simplier to use. And it has events like “when any Button is clicked”.

This extension requires adding a static component to the Screen, otherwise you won’t able to access the Any Component blocks.

For example; when you want to use Any Button blocks, just add a Button to designer and make it invisible.

All Blocks

Notes

  • Currently, SetProperty block has a issue with different variable types. I’m aware of it and I recommend using Any Component blocks until it fixed.

Download

Download from here!
com.yusufcihan.DynamicComponents.aix (12.7 KB)

Source code

You can post in topic for help, question about this extension or PM me anything about you want to talk!

- Yusuf Cihan

54 Likes

Now That’s a Real Dynamic Component Extension :+1:

7 Likes

Absolutely right @Abhijith_Dominic,
For me it is the best Extension :ok_hand: :ok_hand:

4 Likes

Nice extension. Keep up the good work.

3 Likes

thanks for making this extensions :sweat_smile:

2 Likes

The components in MiTApp inventor do not have many features like you cannot change the font of button or lable, so what can we do with the help of this extension ?

Good Job! Way to go!

1 Like

Good joob, and thanks!

2 Likes

helal olsun (özellikle Türkçe yazmak istedim)

1 Like

it’s really amazing :heart_eyes: :heart_eyes:

1 Like

I don’t like Discourse anymore… Because it doesn’t let me give 100 likes to a post!!! :star_struck:
Excellent job @yusufcihan!!!
I’ll check it with the update to my brick breaker game and see how it handles creating 238 sprites for the bricks (The current version has 70 bricks total).
I know is a lot, but since they are all static, I think it will not be a problem.

11 Likes

You can’t in App Inventor (not Inverter) but you can in Kodular. With this extension you can create components at runtime instead of creating them in the designer. And you can change the properties of those dinamically generated components by using the Any component blocks.

5 Likes

Can we create dynamic banner ads with the help of this extension?

1 Like

Does the Remove block, actually removes the component completely from memory?

1 Like

How can i edit component
can i edit it with “Any Component” feature in blocks

Kodular is now 60% of Android Studio
10% for more features
20% for background working
10% bugs

1 Like

Yep, it removes from layout (not hide) and removes its ID from created component list. So you can create a new component with same ID.

5 Likes

Yes. You need to use Any Component blocks for editing the components.

I love this reaction :rofl: Thank you! :smile:


By the way, thanks for your interest about this extension, you all made me happy! :blush: Let me know if you need another thing which is not implemented in App Inventor yet. I’d love to create new possibilities for everyone. :grin:

8 Likes

Can we make an cardview with that

1 Like

Edited: Yes, just use MakeroidCardView name.

6 Likes