I'm building an app to run on ios and android, and using phonegap as the framework. Handling the technical issues is no problem.
But each platform has some UX differences on sizes, where things go, etc. I haven't been able to find any tips, cheatsheets, etc for laying things out on the two platforms. An easy example (it's right at the top) is left justifying versus centering the title, another is supporting a back button from a detail view.
With so much work being done on cross platform development, it seems like someone has to have compiled tips, cheatsheets and other patterns.
The best tip I can give you is this:
Buy an Android and iPhone and use the same apps on both of them on and off. Instagram, Snapchat, etc. and see how those companies handled the issue of having consistent UIs and functionality.
Sometimes things are similar but other times Android/iPhone users will expect different functionality. The only way you will be able to really know what that is is by using both platforms yourself.
Then you can decide accordingly.
I am not aware of any hybrid cross-platform "cheatsheet" because each platform has their own design guidelines.
Related
Before we start: Yes, this question has been asked and answered for similar backgrounds a couple of times, but all extensive answers to this questions I could find are at least 2 years old and game engines come and go.
On top of that I have some specific requirements that I could not find being discussed in any of the posts.
What I want to accomplish is to create a 2D game. I have a background in Java programming and programmedd some simple Android apps (a messenger and stuff like that). I also have very basic C++, C# and JavaScript knowledge as well as OpenGL and building an own 3D engine (university project):
Should run on Android (version 5 or higher) and probably iOS (I haven't done anything with iOS yet so this will be my first project).
Needs some very basic physics for bullets/hit-tests (I can also code this if it's necessary so this more like a soft constraint but I'd prefer the engine or some simple library to do the work for me)
UI-components. Yes, I will need them and many will be text-oriented. Also scrollable components. I have seen many engines lacking these and coding it from scratch can be tedious. Also many engines make it hard to create more complex UIs which I would probably need.
In-App purchases. It would be really nice if wouldn't have to mess around with this too much.
Some nice graphic effects.. Parallax effects, particles (for magic spells, etc)
Communication with a centralized game server.
Notifications in the notification bar (with custom images and texts
Should be able to handle basica animations, play music and videos.
Should be able to integrate with Social media (Facebook and/or Twitter as a minimum). Would be nice to have something like "Like our page on Facebook to receive X coins).
Performance is probably NOT critical - I assume that any game engine fullfilling the other requirements is programmed sanely enough to be fast enough on a modern device.
Should be battle tested, not being abandoned, have a reasonable documentation and community
Rapid development should be possible. This is very important to me as I plan to change the style and other things quite often and let people test and comment the changes.
What I found are basically some different types of engines:
- Engines where one builds a game in a framework and manually adds native code for things the engine does not support, like LibGdx.
- HTML5-only engines that need some 3rd party app-wrappers like phaser + CocoonJS. Some other also provide this, like Kiwi.js.
- Monolithic engines that provide everything (okay only one: Unity).
From all of the engines I have seen I think Unity would fit my needs best, but then again I have no experience whatsoever with it.
What would you suggest?
I suggest you to look at GameMaker: Studio
Here is course on Lynda Learning GameMaker: Studio and GML
A newbie question.
I am a newcomer to Java/Android (even UI development) .
My test apps look a little drab even though they do what the intend to do (with respect to app functionality).
Apart from Java, what are other technology needed for graphic rich app (oval 3d buttons etc).
PS: I did a lil research on this before coming here and found most of the questions were asked with respect to game development.But I am not interested in game development though.
In my history of making nice looking apps it usually all comes down to positioning the buttons and other things nicely and making custom images for buttons. If you want to simplify some things try using LIBGDX's UI tools. They allow a somewhat simplified way to load in custom images and scale/position them according to screen size.
is there any way to create ios like more button in android ?
here is some examples in ios.
http://docs.xamarin.com/static/recipes/ios/content_controls/tab_bar/specify_customizable_tab_bar_buttons/Images/Picture_1.png
http://i.stack.imgur.com/iNpMh.png
Thanks
You should stick to the user interface guidelines of android and not try to copy functionality of iOS. Android users expect their apps to work in certain ways, which often differ from the way iOS apps may work.
So stick to the Android ways -- it makes coding a lot easier and your users happy.
We have an upcoming [big] project, involving a series of mobile apps. Unfortunately we're still new to this market. Our biggest problem is not learning something new, but rather having to develop the same app twice which means approx ~ twice the cost and Hence we're trying to find a cross platform solution.
Since our expertise is in C# and .NET we are very interested in MonoDroid/Touch, and from what I've read that it is a mature framework.
However it is not exactly cross-platform (or am I wrong ?) and so we turned to Phonegap, which lets you build mobile apps with js, css and html which are technologies which we feel comfortable using.
Our apps are going to be very data intensive and might also require to be "invoked" by the server, i.e. there might be 2-way communication between the server and the app.
and so my question, given these kind of apps would you suggest phonegap or monoTouch/Droid?
Thanks in advance.
Monotouch is NOT cross platform. It allows you to create reusable elements, but you can't build once and deploy to all platforms, especially if your project is really as complex as you are making it sound.
I don't know much about phonegap. I've always steered clear of it. It might have changed since I looked at it last, but as I gather its not very robust and doesn't create very good apps, especially (again) for a complex app.
There is another cross platform framework called Titanium, but similarly to the both above its not great. There is more support for it every day, but it is missing some key components and you tend to get so far into a project and realise that you're not able to get any further.
My answer, which you're not going to want to hear, is that you should do it for each platform separately, and charge your client as such.
Creating a mobile app cross platform is like creating a t-shirt that will fit everyone. Ok, so you can make it stretchy, and you can design it in a way that will "suit" everyone, but what you'll end up with is something that is going to be too big or too small, and no-one will enjoy.
iPhone, android, iPad, blackberry, windows phone 7, bada etc etc they're all VERY different platforms. Just because they're both mobile phones doesn't make them similar at all. The way that the UI is designed and displayed is varyingly different, and the way you interact with the hardware (and ultimately the user) is also different. Case and point - iPhone as you go down views you create a navigation stack which you navigate using a back button in the title bar (which has the title of the current view in it). Android you navigate with the back button on the device and the action bar is used for the app title and other "action buttons".
To this end I would suggest, if you REALLY don't want to do everything natively (which is definitely the best option) then I would suggest looking at Monotouch and creating two apps with reusable components.
With PhoneGap you will create a web application. It can look like a native app, but it's really a web app running inside a browser object.
You'll be programming the client HTML and javascript, just like any other client side web app. You can create ajax calls to the server to get your data and do all your usual C#/.Net stuff there.
With Mono, you will create a clients side application, and you can program that client in C#/.Net.
PhoneGap will be more or less free and can be used for other platforms than Windows, iOS and Android as well, though you'll have to setup environments for each version. You can compile for all platforms in the cloud, but that'll cost you money.
MonoTouch/Droid will set you back a few hundred dollars.
For each platform, you will have to do some extra tweaking. Probably giving it a native look and feel, call different API's, etc.
I would personally advise the Mono route, since you know C#/.Net already. It'll give you results faster. Make use of the free trial for MonoTouch and see if it's something for you and if it's worth buying ($698 for both 'touch and 'droid).
It depends.
I agree that going native gives you the best possible performance and user experience. It's certainly the only feasible option if the app has a demanding UI. But if the app is more informational (perhaps displays news feeds for example) then a hybrid HTML5 app could be the go. The support of HTML5 within a UIWebView on iOS has some quirks in the older iOS versions so tread with caution. And on Android and other platforms, HTML5 isn't quite there yet. Certainly not on older hardware that doesn't have the grunt or browsers with suboptimal javascript engines.
With your .NET background, I suggest you have a look at http://www.vsnomad.com and evaluate it for yourself. Throw a quick demo together and see how it holds up. Otherwise, yeah, go the native route.
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.