In the old days of com.nokia.meego or even now with the Sailfish.Silica module you are using the "Pages" for navigation inside the app.
What should be used instead when developing a mobile app for Android with the Qt Quick Controls?
It really depends on your needs, I'd say for basic apps a simple TabView will suffice, for more complex dialog design you will probably need a StackView.
Naturally, you can also nest one into the other.
Lastly, with QML it is easy enough to implement your custom app navigation system using dynamic object instantiation, animations and effects.
Your question can be split into two: a design question and an implementation question.
The former can be rephrased as "what structure should my mobile app targeted to Android have?" whereas the latter can be rephrased as "what does QtQuick give me to implement that structure?"
As for the first question, there is a very rich section in the "Material Design" specs which deals with app and navigation structure. You should consider those recommendations in the light of your specific use case and similar examples that you can find. Also, take a good look at QML Material, as that gives you an almost direct mapping to implement your Android-targeted (or even cross-platform) design with a set of ready-made Material components.
Once you have defined the design question, the choice of QtQuick components for implementation falls more or less naturally, and you have the options that #ddriver mentioned above, and even more.
Related
I designed the graphic interface of an app and now I want to bring it to live on Android. I have never programmed an app based on my design, just learnt de basics following material design styles.
Will it be possible for me to make it look 100% like my design that I created from scratch disregarding material design, or will it have to be a Frankenstein between my design and Android's material design? Also, can I achieve my goal by using Android Studio or should I try React Native or others?
Thanks in advance!
It can look however you want it to look.
If you are struggling to get it to look how you want with Android Studio, but have knowledge of html+css, then giving React Native a go might be easier for you to fully customize it.
Just be aware that it is recommended to follow the guidelines at least a bit, especially in regards to locations of common buttons etc as users can get used to how apps 'work', and going against the flow with a completely new user-flow can sometimes make it harder to use, as it doesn't follow their expectations.
I have many applications which has great GUI like Any.do, alarm clock from doubletwist etc. I was wondering are ll these applications developed using standard eclipse way using java and xml. I was not able to figure out how can i develop such type of GUI using eclipse xml?
All Android apps with a good UI use java & xml.
The only difference is that good apps need a LOT of work and sometimes a custom implementation of some Android Elements.
xml files catering to the different formfactors is the best way to implement a rich app (in fact I don't think there is any other valid way) :
-They allow you to separate the layouts from the code as much as possible.
-They allow you to treat specific form factors independently.
Additionally, Great apps often re-implements some of the basic UI elements. For exemple the implementation of the actionbar in Flipboard allow them to apply their flipping effect to it, something that you cannot do with the basic ActionBar.
Any.do has just been updated and I have not checked this last version yet, but the last time I tried the app, their implementation was not really good. Buttons were far too cramped in the ActionBar and their custom ActionBar was very slow (more than 1 second to acknowledge a tap).
Additional thoughts : sometimes these beautifully designed apps tend to ignore at least some of the Android conventions. It is a really bad idea : you can create a very beautiful app but if its UI elements are totally different from what users encounters in other Android apps it will just make the overall use of the app confusing. imho the best way to create a great app (both visually & functionally) is to use Holo as a design base that needs to be enriched and do not :
-make something totally opposite to the design conventions of the platform just because you think it is good.
-Use a basic android design block in a totally different way that what it is intended for, it will utterly confuse your users.
-Apply another platform conventions.
-Invent your own rules because "you are strenghtening your brand by having the same design on ios, android and your website". You are just being lazy.
a good starting point is obviously the official design site. android niceties is a good source of inspiration. Holo Everywhere & Android UI UX are very interesting sites in order to get more thoughts on how to improve existing apps.
I like to start developing android app in Eclipse, but feeling it's not much friendly to design UI. Is there any other editor that is more efficient than Eclipse?
Eclipse - Android layout editor is the best as per my experience. If you learn the different types of layouts and their attributes perfectly then you are able to design any flexible layout (flexible in the sense it can be view from any screen resolution).
Yes, DroidDraw is useful for the beginner, but let me be frank i have started layout with this design tool but later on i just had started with the native android layout editor and now i am having enough practice, so i suggest you to learn android layouts and their attributes. First concentrate on RelativeLayout because it is mostly used layout in most of the apps.
And yes, i would also like to tell you that there are mainly 2 design patterns we follow:
TabBar design pattern (As per my experience, don't do this any how, because there may be a requirement that you have to convert any iOS app to android app, so you have to have tabbar design pattern in your android app and you will have to manage activities through ActivityGroup and its not that much easy task as DashBoard design pattern.
DashBoard Design pattern (As per my experience, you should go with this design pattern, because most of the successful android apps have been implemented this design pattern, for example, evernote, facebook, stackanywhere, google docs and many more).
=> For detailed information about DashBoard Design pattern, go through this article: Implementing Dashboard and Action Bar
=> To Learn about the types of different android layouts with output snaps, here is the best article as far as i know: Android Layouts tutorial
=> To make android app with more stylish, go through articles on this site: Styling Android
DroidDraw seems to be very useful. It has a clean and easy interface and it is a freeware. Available for Windows, Linux and Mac OS X
Also you have check - Android GUI Tools
You can try droid draw tool to make your UI. It would be difficult to make complex UI from using this tool. You can use it for simple UI.
here is the link for tool
ladies and gentlemen!
Very often on my job I meet the following requirement from the client, when developing android applications: "make it look like and iPhone app".
Yes, I know, that the best way is to offer him canonical Android design with all these patterns like dashboard, using menu button etc... But sometimes this is not the case, as instead, I have to make it look and animate just the same. It's frustrating.
Can you guys, please advice me an android library (if there is one) with iOS-like UI elements? Many thanks in advance, I'm looking forward to hearing from you!
To expand on Martyn's comment, which I agree with.
Perhaps there is a great reason why a client would ask for this, but in many cases I bet they might benefit from being challenged on this requirement. If I was presented with this request, I would first ask "Why?". Perhaps they'd answer as follows:
we need a consistent experience across platforms, or
it will be more cost effective to design once and apply to each platform, or
it doesn't matter why, just do it!
Here are some responses for each:
each user will generally have one phone, and won't require the experience on Android to be identical to iPhone - they only care that it works and looks great on their phone. In fact, an Android user would prefer if you used the UI patterns that are more common to the platform, as opposed designing to match iOS. Likewise for an iPhone user.
we have found that having a designer create a set of creative for iOS allows us to pretty much use the creative as-is for Android. Even though Android might have Tabs on top, versus bottom, we are still able to take the backgrounds, button styles, fonts and color schemes from one platform to the next. There will be slight differences, but overall the brand and look should translate well. Here is an example of porting a single creative design across platforms: http://daleburgosdesign.com/
if they answer in this manner, you might want to consider passing on the job. Pixel perfect matching across platforms is tricky aside from the ideas offered in previous answers (OpenGL and the use of a WebView - via Macarse). If the client can't provide good reasoning for this tricky requirement, then it might be best to search for your next client.
Not a straight forward answer to your question, but I hope you find it helpful!
There is no iphone UI library for android that I know of. What you can do is, get the iphone GUI psd and redo it for 3 sizes of android (for the 3 size ranges) and use the elements of these psd's to theme your application.
I get these kind of similar requirements. Sometimes it wont be much about the looks but about the navigation flow of the application and how new views or activities are animated. From my experience, there is no easy way to do it. So I end up making a lot of adjustments and hacks to get the job done. And I over bill the client. :)
Btw you could also consider libraries such as Sencha Touch, it will look the same in all phones that use a webkit browser.
AFAIK there are no 'iOS-alike' widget libraries for Android.
Because of this, you could reasonably charge the client more for both development and support, thereby providing an incentive to stick with the standard Android UI design and principles.
There is no library to port iphone views to Android but if you are starting both applications from the scratch you have two possible approach to share views between both platforms.
First one is using WebViews and coding HTML, JS and CSS. This kind of app is called hybrid.
Second one is using openGL. You can do it directly or using a framework like cocos2d-x.
Depending on what you are willing to you should choose what to use.
I will try to keep this short, but I need some advice.
I work on a team that is developing applications for android, iphone, and wp7 in parallel.
We have a design team that comes up with a single design for all three platforms.
The latest application’s design is more marketing than productivity. The original POC for this app was done on the iphone. The design is very animation centric and most state changes are seamless (things will animate on and off the screen during state transitions).
If I keep developing against this design it means I will have to have everything in a single activity. So far, this has been a major headache. To my knowledge, dividing your application into activities is almost required. I could try to dynamically load and unload views as I change states but this doesn’t seem right.
I see where the design team is coming from where they want all these state changes to be seamless, but I don’t think this is right for android.
I would like to know what makes most sense. Should the design change to incorporate multiple activities or would it be worth trying to make this work.
We have a design team that comes up with a single design for all three platforms.
That's akin to coming up with a single floor plan to be applied to apartments, single family homes, and warehouses. The designers, or management, need to have their heads examined.
The latest application’s design is more marketing than productivity.
Did I mention that the designers, or management, need to have their heads examined?
If I keep developing against this design it means I will have to have everything in a single activity.
If I am interpreting your requirements correctly, that is probably accurate. While you can arrange for animations between activities, it is more of a "slide the old off, slide the new on", and I suspect that your requirements exceed that.
To my knowledge, dividing your application into activities is almost required.
It is certainly Android's intended development model for ordinary apps. However, games and the like may not follow this pattern, and you don't have to either.
I could try to dynamically load and unload views as I change states but this doesn’t seem right.
Depending on how many states there are, you might just hang onto all of them, recycling as you go.
I am surprised no one mentioned fragments which can be used instead of activities at many places.
Fragments can be seamlessly animated in and out or an activity.
You might want to take a look at subclassing ActivityGroup for your top-level activity. That can host multiple sub-activities. TabActivity, the only stock subclass of ActivityGroup, is perhaps not what you need because it includes a tab widget, but you can use it as inspiration for what you do need.
What specific headaches are you having with a single-activity architecture? Perhaps there are ways to make that less painful.
In general, if you are aiming to have native apps with a native look and feel, it is not reasonable to have a single UI design for all three platforms. The UI guidelines and user expectations for the systems are different, and those differences should be reflected in the UI designs.
If you really want to have a single UI for all platforms, just create a web app instead.
I'm not sure exactly what you mean by an "animation centric" design with seamless state changes. If you use multiple Activities, Android will animate between them in a way that Android users will expect. If you explain what exactly you are trying to accomplish, we can help you figure out if it makes sense in Android, and if so how to accomplish it.