Recently I was asked if I could help someone to get quick-started to android programming.
What would you suggest to tell this person?
Would you explain everything by hand or just refer to external links?
Which ressources would you recommend?
This whole issue should not take too much time...assuming 2-3 hours
Once my access to this issue was "Professional android application development".
Java basics are already preconditioned, so there's no need to explain ANYTHING.
For avoiding any misconceptions: This shall be just a quick start, no reference or something like this, so I just need some keywords and a hint how deeply go through it.
In my opinion, everything you really need is here: http://developer.android.com/index.html
All the downloads are easily accessible, the API reference is there, and the Dev guide is pretty well done.
This page has a getting started "Hello World" type tutorial that should work for your quick start: http://developer.android.com/guide/tutorials/hello-world.html
As far as your 2-3 hours goes. I would walk them through the hello world tutorial first as it gives a quick and dirty overview of the most important basics such as getting a project created and a virtual device up and running to test with. It will also start getting into installing and debugging.
That shouldn't take up all of your time so you may want to go into some basics of building a UI and concepts like Activities and Intents. Pointing out the API reference would be great at this point as well. I suspect that most of that 2-3 hours would be up if you get into any sort of detail on these.
Well you already mentioned a book in your question, so I would like to throw out http://commonsware.com/Android/ .
I've been working on an Android project for school, and I still have A LOT to learn, I dont think you can cover much in 2-3 hours. But anyway, with the above book, you can find an example that is similar to what your trying to accomplish(or go over), then look through the source code and what-not.
Aside from the Android Dev. website, the $40 collection of ebooks is the single best resource I have found to date other than Google searched or examples specific to my project.
Sorry if this doesnt really help your cause, but I figured it was worth pointing out.
Related
I am a student working on a senior project. It will be a very simple android app to organize karaoke. We are using Flutter for the front-end work.
My education has been in Java, but this is my first time working with Dart/Flutter, let alone on a smartphone app. I have gone through Get Started (https://flutter.io/get-started/), as well as 2-3 step-by-step youtube tutorials that help you build very simple apps from scratch. These have been helpful, but I'm still having trouble wrapping my head around the organization of a Flutter app. All tutorials say "everything is a widget", as if that should make things simple. And maybe it does in the end. But I end up with so many widgets, and I am getting confused about what widget should be inside what other widget and why.
Take a look at this picture (in the middle of the picture I have the widget-tree on display). I have a stack, two columns, scaffold, container, etc. Do I really need all of those? Is this normal for a simple login page?
What helped you get a grip on Flutter? Or maybe it is app development, rather, that I am having trouble understanding. Regardless, I am getting a bit discouraged. Any advice? Maybe there is a particular tutorial that helped you a lot?
Thank you for any help.
I like to learn by downloading and running examples from the developers (like these ones in their GitHub repo).
One thing I struggled with at first too from the whole "everything is a widget" idea was figuring out how to handle state / data changes appropriately. If you're struggling with that, this Google I/O video does a great job showing how you can better architect an app in regard to handling state in a reactive way. A bit more advanced, but from beginning to end they go from their opinion on the worst way to handle state changes to their recommended way(s).
I just decided today that I wanted to make a gallery app for my phone, pretty much just combine several features I like from different apps I've tried into one, perfect app, for me. The problem however is that although I know some java, took Programming 1 & 2 and currently taking AP Computer Science in high school, I have no idea where to begin. I roughly know and even less so understand the layout of Android Studio, but I can get by. I need help finding useful resources online to help me learn or even someone who is able to answer the probably many questions I have. I've watched some youtube videos and tried reading some tutorials but I haven't found anything that clears things up for me. I will ask a few questions now:
1.) I have no idea where to start or what to use to get the app to show images from device storage and micro sd card in a grid view. I have read things about using the RecyclerView to not use as much resources, and also something about Glide for better performance(I think thats what both those do, if I understand correctly) but I have no idea what to do with either or even how to use either.
2.) In the xml design portion I'm not good at navigating everything and understanding what I should use for what. I can make a good design in photoshop or other programs but I'm not sure how to actually take that vision and translate it into working pieces.
3.) Pretty much I just need help and will probably think of more questions as someone tries to answer those.
Thanks!
There are lots of good, free tutorials on the net. For example on the official Android Developer site: https://developer.android.com/training/index.html
- where you can find a lot of useful example code snippets, but there are other sites also - https://www.tutorialspoint.com/android/index.htm . It starts with the very basics and has lots of examples too.
Other non-free tutorials can be found at
udacity.com - Android Developer Nanodegree by Google
udemy.com
To reach data from your device storage or from your micro SD card you have to understand the principle working of content providers.
I do not recommend Recycle View, when you are a beginner, because it is a more complex thing than a List View (or Grid View). Start with these and then upgrade.
Glide is cool thing, because it saves you from a lot of useless coding and easy to use. On their GitHub page you find detailed instructions how to import it to your project - I recommend Gradle - and how to use it.
In my point of view, start reading one of the free sites patiently and than you are going to get answer for your questions, but it is very important to understand the basics.
I hope I helped! Sorry for my bad English, I used it a long time ago.
I am looking to start writing apps for mobile devices. I know a little about this subjec, and I am proficient in both java and python. However, before jumping into creating apps I wanted to get the community's input on a question I have not yet found the answer to:
How/Where should I begin?
I understand this question is fairly general/basic for a community that focuses on solving/debugging complex programs, but if there is a recommended tutorial (or specific platform) that will help a beginner(such as myself), it would greatly reduce the frustration and amount of monotonous questions asked on this forum and others.
Regards
Coursera is offering 3 courses all using android development which started last week. That would be an excellent starting point for anyone:
https://www.coursera.org/specialization/mobilecloudcomputing/2
How/Where should I begin?
I don't know about you, but I often learn by example more than reading. You mentioned that you're proficient in java so thats a great start. After you understand the Android SDK it's really only the UI good practices you need to learn. So here's my suggestion.
Start off with something super simple. Let's say, create your own version of a calculator. Something that can add, subtract, multiply, and divide. This should be dirty, ugly, but works correctly.
After doing this, take a look at some other android calculators on the play store. Check out Simple Loan Calculator. I use this example because it offers a lot of android UI components. ViewPager, ActionBar, etc. Download this app, take a look at it, and try to mimic it. This should provide an idea on how to work with the android UI components.
What's next? After you have done these two apps you should be relatively ready to tackle your own project.
HTML apps are easy to port across multiple mobile platforms. I have set up an Android HTML template as a starting point. You can just import this project into Eclipse and take a look at that.
https://github.com/jakewp11/HTML5_Android_Template
Here is my experience for ios,
There are three things that I consider as pillars
Objective C
Memory managment
Design patterns
The first one looks obvious but I'd stress on learning concepts like protocols, categories, extensions. As a beginner I thought that learning the syntax was enough, but time and again I had to jump back to the language concepts to understand what's going.
The memory managment , the most talked and confusing subject and now since we have automatic referenc counting to make things simpler and often new Dev skips learning memory concepts (I did it). So I suggest you to have an idea what actually happens under the hood of arc " the manual memory managment"
The design patters,
When I started off , to pass data and control , what I used to do was achieve every thing through the only design patten I knew (target action) . I lack the knowledge of design patters didn't how easily I could achive better results with less code.
Some resources:
Dev.apple.com
http://www.raywenderlich.com (one of my best tutorials are here, you can find one on design patterns)
http://rypress.com/tutorials/objective-c/
And yes , the sample projects at Dev.apple are the best tutors.
Ok so I am starting off with android development and I have found a bunch of useful tutorials so I am set there. What I am looking for is a resource that provides homework style problems to do and has the answers downloadable so I can check my solution against the "official" solution.
So for example instead of the notepad tutorial it would be: "Build an application that you can create, edit, delete notes, ...etc.". Ideally the "official" solution would have some explanation as to why they built it the way they did. (so a tutorial at the tail end)
Anyone know of any resources that provide their tutorials in this format?
Thanks.
Okay, here's one: build me an app that allows the user to make, modify, and store notes. The 'official' answer is the Notepad app in the 9th level of the api. (Note that this is different from the notepad tutorial).
The point is that asking questions is easy, the harder part is actually making a program that does the job. And #Roflecoptr is right, at this level it can be implemented very differently. But if you want that mindset, you can write your own 'homework' easily. Just think up a few things you want that are simple, build it, does it do what you want well? Then you pass.
Despite for very trivial problems I dont think this is possible, because there are way to much possible implementation possibilites so that you can't compare your solution to the "official" solution.
But why do you need something like that? If you want to learn to program on Android, you can just follow some tutorials you've already found and then modify them, adapt them to your needs. When you get more used to the development of Android apps you can just get some ideas on tutorials/android development sites and then implement your own solution. There is plenty of help available here on SO and on other development sites, which will help you if you really get stuck.
You could always go to the Android Samples page, and without looking at their implementations, do your own and compare. The samples page is here:
http://developer.android.com/resources/samples/index.html
Just curious. I am already a Java android guy but am interested in the new app inventor beta for android.
I was wondering what "real" developers are thinking. A lot of people want to develop an android app but don't really have programming skills. Seems like a lot of apps could be written with app inventor - not sure since I haven't tried it yet.
Hopefully this clears up some things for people that are still just hearing about App Inventor. (Keep in mind App Inventor is extremely beta right now, so all of this is subject to change.)
If you're interested in playing around with some of the features it offers and haven't had the time or interest to get involved with the full Android SDK, then App Inventor is probably a good fit for you.
The interface of App inventor offers some unique features you won't find in the Android SDK and is pretty easy to get the hang of (make sure to look at the shortcuts for the Blocks editor, or it might start to feel tedious real fast). It has live debugging and live edits to both the interface and the supporting logic. That alone cuts down on time and frustration if you aren't quite sure about the proper way to do something yet and is probably my favorite feature of the whole system. New developers will especially find it rewarding to actually see their changes implemented on their phone without waiting for things to compile and run. It is a huge time saver and much easier to get used to than the traditional compile and wait process you face if you are trying to learn things through the SDK.
It is also quite handy if you have been playing around with the Android SDK and simply want to try something new out that App Inventor supports that you haven't had the time or aren't quite sure how to approach yet. So long as you keep things focused on features that App Inventor supports, this can provide valuable insight into understanding a problem by getting your phone doing something you can see and use in a matter of minutes. That's something even seasoned developers are likely to appreciate.
The real problem is more when you start hitting walls. Walls that you simply can't climb. And you quickly realize that the limits of this tool must be understood or you will probably spend a lot of time trying to do something that just isn't currently possible. Sooner or later your going find yourself in this position if you use App Inventor very much.
All coding is graphical.
Look at some of the demos or screen shots of what's available through the Blocks editor if you don't understand what that means. Setting values in those big colorful blocks is as close to code as you will get with App Inventor, for better or worse.
If you have any previous development experience, you are going to find yourself longing for the ability to do some simple coding to supplement what you are doing. Or at least the ability to export your project and pick up where you left off in Java. Sorry, this isn't that kind of tool.
Your only options when you get to this point are to pick up and start all over in code or forget about it, at least until the desired feature gets added to App Inventor (which may be never). That right there likely to irk a good number of people and turn them off to it.
If you are looking at getting into Android development, I see no problem with starting out with App Inventor. It might even save you hours of effort that might otherwise be spent trying to wrap your head around some concepts that are simple to understand when you do them, but a bit confusing if you are building them for the first time.
If you are a seasoned developer, or looking to make money or gain Android experience beyond just the concepts, this isn't your end destination by a long shot. If you are a student that is new to programming, this is probably a good environment with sufficient challenges and room to play around in to keep your interest for a decent amount of projects.
Despite it's current limits, I still see App Inventor as valuable resource to learning new concepts and as a playground for trying out new ideas. It is proving to be an awesome tool for introducing someone to Android development, and would probably do as good a job as you could ask for when introducing someone to programming in general.
I have been playing with it for a bit and my thoughts are that is is great for:
An introduction to programming. It is not something people can pick up and develop great programs with straight away, it does still require a lot of thought and logical thinking, but it doesn't require people to learn the correct code syntax
Prototyping. As it is relatively quick and easy to develop with (and has live debugging on the Android device), it allows you to prototype and see/interact with it in real time
Quick coding. If you want to develop a program quickly, this might be the simplest tool
As the tool develops, it will allow more feature-rich applications (it already allows integration with other back-end programs, etc.). The screen design right now is very basic, but will be improved soon.
Overall, I think that if you know Java for Android, then you will be able to pick up Google App Inventor within an hour and start making some functional apps. You might find it more suitable for building some apps, or you might prefer to stick with your current tools.
For people looking to start programming, I think it is an excellent introduction. They can concentrate on logic and program design, instead of setting up their IDE, code structure and syntax. Plus they will see results as they code.
To answer your question 'Should I learn it'. I would suggest that you play with it for an evening - that is all it will take you to get a good feel of it.
It probably won't make you a better developer, but all knowledge is good, so it can't hurt :)
I plan to play around with it anyway.
The generic answer to any "Should I learn ..." question is usually "Yes, it can't hurt to know things." From a practical standpoint, I would skip it. These sorts of things are usually nice ideas that never catch on. Sure this might be a neat way for non-programmers to build very simple applications and perhaps a real programmer could build a compelling application with it but it looks like if you are a programmer the benefits to using App Inventor don't seem that compelling.
I haven't checked it out, but I think it might be worth a look to help in UI development. Most software engineers are good at really solving problems with software or coming up with cool ideas for apps, but when it comes to UI design we find a lot of obstacles. At least myself, I've always been used to working with UI Designers.
I honestly don't like tools that generate code, (except WSDL to java or java to WSDL) but pretty much anything else I find myself spending more time trying to trouble shoot an issue when it comes up than the time I would've spent writing the app from scratch...
Appinventor is so easy to learn, I would suggest go for both options.
Concentrate most of your time on your main Dev environment and learn AppInventor, in the background, to give yourself a break.
The advantage of Appinventor is you can put together reasonably complex apps
in a relatively short period of time.
It's also pretty forgiving, for example, if you have a numeric variable, you can treat it either as a string, or a numeric value, meaning you can put together
prototypes pretty easily and quickly.
If you want an app putting together, quickly, Appinventor might be the better
option, if you need something more powerful, more control over you UI etc, then
a more sophisticated Dev environment might be called for.
With Appinventor being so easy to use and learn, you're giving yourself more options.
Considering Eclipse seems to introduce errors I can't find and can't remove--even after using Project-Clean, I'm looking forward to any alternative.