| 18 | Tips: |
| 19 | * Use Android Studio! It is by far the easiest way to create Android Apps! |
| 20 | * Do not use Android Studio's drag and drop widget feature to create a GUI because it hardcodes values instead of using ratios |
| 21 | which is bad practice! (this would make the app appear differently on different devices based on the screen size). |
| 22 | * Go through the android developer tutorial! It goes over everything you need from creating a GUI to saving data. |
| 23 | * Save to the external storage and not internal (Android names part of internal storage as external storage so that a device without |
| 24 | physical external storage will always be able to store data in "external storage". Beware of this!) |
| 25 | * When you create a new file, you have to tell the Android operating system that there is a new file. If you do not do this, it will |
| 26 | appear as if the program is running smoothly until you try to access the files on a computer; the files do not show up on device viewer! |
| 27 | I was able to tell Android that there was a new file created using this code: |
| 28 | ApplicationContextProvider.getContext().sendBroadcast(new Intent( |
| 29 | Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(writeFile))); |
| 30 | where writeFile was the file I just saved. (The full code can be seen in through this Wiki here: http://wiki.raidtech.net/browser/ |
| 31 | * Use a library like GSON which makes serialization and deserialization a breeze! |
| 32 | * Although GSON will make a JSON file, you still need to represent the code in a human readable format! For this, I use CSV which I create |
| 33 | without the help of a library. I saved individual matches in CSV files and I created a file called SUPER_FILE which combines the CSV files |
| 34 | into one large spreadsheet. This spreadsheet shows every team and all the teams' statistics so someone can quickly retrieve general information. |
| 35 | * Use XML to create static layouts (layouts that will stay the same) and Java to create dynamic layouts (layouts that will or may change). |