Android: Rendering views (text and image) in a rich banner creating app? - android

I am working on a banner creating app where the user can create custom banners for any purpose. The banner will have text, icons, background, etc. The app needs to provide features such as
Text Editing which includes simple effects like bold, italics, underline, font changes etc. But also more advanced effects
such as envelope distortion, curving, outline etc. Moreover in the
future, there may be more such effects that may need to be added.
Background editing by adding an existing image or creating a background with available options in the app
Think of it as slides in power point where user can add their own text and format it plus have backgrounds. There need to be a lot of customization
I need to decide what tools to use to develop this. The main issue is how to render texts dynamically. The options I have been thinking of are
Using TextViews/EditTexts and other top-level view classes
Using CustomViews i.e Canvas
Using a more advanced and lower-level approach such as an
ImageProcessing library to render text or even something along the
lines of 3D graphic rendering.
I need to make a choice that isn't incompatible to support future effects that may be needed. I am pretty sure TextViews/EditTexts etc won't be the solution here. I am not sure how powerful the Canvas class is and whether it is possible to create such an app by just using CustomViews.
Coming to ImageProcessing or 3D graphics, it may be used to have much more control over the effects by using PixelShading/Transformations etc but it comes with its drawbacks. i.e low level of abstraction and higher development time possibly.
Can some more experienced folks give some insights? Thanks!

Use Image Processing and for different themes use lotte-Animations.

Related

Which Framework can be used to draw a complex, interactive UI hierarchy on Android? (Like CoreAnimation on iOS)

I'm porting a vector graphics editor from iOS to Android. The app must draw a complex hierarchy of graphical objects in an efficient manner, so that the graphics can be edited with gestures in real time. The edited work commonly consists of images, text and graphical primitives (lines, circles etc.). UI elements like selection highlights are rendered on a separate layer on the top.
On the iOS app, if one component of the graphic changes (for example a small text element changes its content), only that text element is re-rendered.
On iOS, we use CALayer objects from the CoreAnimation framework. This works very well. What framework can be used on Android for this use case? Is there an established "native" way to do that, or are usually third party frameworks used?
Android does not have similar thing out of the box. We do have core.animation but it is limited to simple behavioral animations. To create what you want you need to use SurfaceView or GLSurfaceView and help of clean OpenGL. You may also try to use ordinary Canvas of View - you will have limited possibilities though.
Also there are wrapper around OpenGl and SurfaceView like libgdx it is used mostly for games though - so it has much wider possibilities than you need, but it is less complicated than OpenGl.
Hope it helps.

How to handoff animation for Android developers?

I'm a designer and interested in different ways I can handoff animation to Android developers and the best ways to do that depending on a particular case.
1. JSON
I know Lottie works best for animating micro interactions and creating animated illustration, like those on onboarding pages. For a designer it's easy to provide JSON file since it can be generated with Bodymovin plugin in AfterEffects. Developer just gets the file and uses it as is, no more additional efforts for him.
2. Java or Kotlin
UI elements that require complex interaction are usually build with code, like BubblePicker since it has changeable content in those bubbles and different conditions how it can be interacted with. Since design tools don't generate production-ready code designers export video recording from tools like Principle, generate clickable prototypes in ProtoPie or other tools. Designers try different ways to show the idea of animation but in this case all the work is left for a developer.
3. XML
Don't know when developers use this type and if designers can provide it using export from some design tools.
What are other technologies developers use to create animations?
What type of files, prototypes designers should provide for the developer considering different cases?
Android animation API is really diverse, meaning there are lots of ways a developer may choose to deliver an animation. I dare to say this should never be conditioned by the nature or limitations of the provided resources. Let's understand by resources anything that's not actual code: bitmap images, audio files, and even text. Knowing the file types or formats the developer can or wants to use involves communication and you can expect them not to be always the same.
Always provide a video of the animation, unless it can be described with a single word.
The most common animations in android are:
Drawable animations. This type of animation usually happens inside a pre-defined area on the screen and is achieved by loading a series of images, one after the other. Here a common filetype would be PNG images, one for each step of the animation. Probably the same amount of different sprites you used for the video, never as many as 24/s! Keep in mind that to support different screen sizes and densities, different size/densities will have to be provided for each series. If the image is simple Vector Graphics would simplify the job for both the coder and the designer, regular SVGs are supported.
One can also animate on the paths of the vector images, even morph between several of these, as long as the paths are compatible for morphing, which according to the documentation they must have the same number of commands and the same number of parameters for each command....this takes more understanding of the intrinsics of the vector file definitions, if you can see the image by reading the SVG code, go for it!
Another major group comprises the animation (by acting on properties like color, position, size, etx) of the application UI elements. This type may or may not involve image resources, and are usually applied to components of pre-defined types. E.g.: all buttons should have a ripple effect starting where the pointer clicks. Android has pre-defined effects with particular names (flip, zoom), it could be useful to know this vocabulary.
Finally, layout changes are animations that happen when you reorder things around to better convey information or hint the user towards actions. Similar to these are the Transitions, which happen when switching screens but can also be used to create animations that move images around, altering their positions and properties. They are really simple to implement and may require resource files of the same type as mentioned in 1
For reference, check the following which has some code but also illustrative examples:
https://developer.android.com/training/animation/overview
To know how to support different screen sizes, check:
https://developer.android.com/training/multiscreen/screensizes
To know more regarding SVG support in the Android platform: https://developer.android.com/studio/write/vector-asset-studio

Android app with libgdx component

I am looking for the best way to develop an Android app that has one component that allows the user to draw shapes, rotate them, scale them, slice them etc. (I am calling this component ActivityArea). In addition to this ActivityArea there need to be regular buttons, textViews, editViews etc. on the app.
I have explored 2 options - using libgdx and building a custom view. Both approaches appear doable. However, with libgdx, as far as I understand, all the buttons, textViews etc will also have to be created using the libgdx libraries. With this regard I have the following questions:
Is my understanding that libgdx will necessarily have to be used to render buttons and other regular android views?
Is there any way of including a libgdx powered view within an android layout?
Are there other libraries/options available that can be used to get geometric functions within an Android app?
Any help is greatly appreciated.
You can use Android UI atop LibGDX if you like. Typically for this you'd use the AndroidApplication.initializeForView(...) method to create the libgdx view and inject it into your layout.
As far as other libraries, if you doing 2d shapes and don't have to have a consistent 60fps, I'd probably just use Android's Canvas.

Fake iOS UI Tools

I am trying to put together a fake UI for an iOS and Android device without actually creating all that tedious UI work. Is there a way to mockup the UI from the images somehow? We have the Photoshop designs and mockups so far.
Are there any tools? I've checked Titanium and ForgedUI. While its a fairly simple concept I still think its an overkill to create all that. for instance I have to slice my PSD for the buttons. Plus the data feed has to come from a URL etc.
I just want something similar to Balsamiq Mockups linked screens one to another for an actual demo of a bunch of screens. We want to test the navigation, the fonts and the product concept while development is getting the product ready.
Thanks in advance!
The easiest way would be to use HTML. If you already have Photoshop mockups, you can simply export those to (retina quality) PNG images and add some image maps for navigation. If you add this site to your homescreen, you will have a pixel-perfect preview without Safari's navigation bar.
However, iOS apps depend heavily on animations. If you're going for a native UI anyway, you should consider creating a "real" UI prototype, using actual UIControl elements. While this is more work, it allows for much better UI evaluation.
For wireframing, a couple of options:
For high-fidelity mockups, I would do it in Interface Builder and storyboard, like JustSid recommended. Just don't do the tedious work of hooking up the UI elements.
You could look at tools like Adobe Proto. I've never tried it, but it seems like it might be an option.
For my super-quick, low-fidelity mockups (e.g. digital equivalent of the "back of the envelope" mockups), I personally use my iPad, a stylus, and a drawing package like Sketchbook Pro (use whatever drawing package you want, but I like one with layers). I also put blank device images on my iPad, too.
So, I open up my drawing package on my iPad, start a new drawing using a picture of an iPhone device as the starting point, drop on a new layer (so I can draw on a layer and either hide or discard that layer to instantly get back to the image of the blank device image), and just draw what I want my UI to look like on this new layer. This works great for brainstorming sessions. There's no automatic bridge from this conceptual, low-fidelity mockup to an actual Xcode storyboard, but I can draw a user interface mockup in seconds. I do this not only for brainstorming with designers, but also for fleshing out my own conceptual ideas, myself, too.

Creating professional GUI for Android application

I want to create professional looking GUI for Android application. Something more than just raw widgets which I'm taught to use in countless tutorials in the web.
Unfortunately, I couldn't find any source of information how to customize those widgets and create better looking GUI.
Examples could be: http://android.appstorm.net/wp-content/uploads/2011/03/calorific-sc.jpg
or http://android.appstorm.net/wp-content/uploads/2011/03/chomp-sc.jpg
How are such GUIs created? If you could point me out to some tutorials on it, I would be really thankful!
Greetings,
Bart
There's nothing in those examples that looks like it couldn't be made from standard components. For instance the second screen of that calorific application is just a background image for the window with a list and a button with a background image as well. The first image could easily be done with just buttons and background images for views as well.
TLDR: Split the view into rectangles, assume that these are all standard components with images as backgrounds unless they seem to have nonstandard interactions.
Those are called custom components.
You will need to do a fair amount of work to get the look you want. (compared to using system components).
http://developer.android.com/guide/topics/ui/custom-components.html
Edit
Bone up on your Google-fu Bart!
http://www.google.com/search?q=custom+components+android+tutorial

Categories

Resources