Reference no: EM132643187
Aim and Context
This app is a two-activity app that requires the use of intents.
On completion of this task, you will demonstrate that you are able to create a multi-activity app, share data between activities using intents, use images and resources, and work with more complicated UI widgets. In particular, this task requires some attention to code decomposition and will allow you to show a level of competence with Kotlin-specific features such as scope functions -- sloppy or lazy coding will not be tolerated in this task and you will be expected to have refactored your code prior to submission.
Note this app contains an extension task that credit and above students must complete. This demonstrates the ability to work with sharing data between activities in an advanced manner and take input from the user.
Outputs
• Items to be submitted:
o PDF: A completed spike report for this task (template for this task is supplied on Canvas)
o The report must contain a link to code in a repository visible to teaching staff.
o The report must clearly contain in the title whether you have completed Core Only or Core/Extension tasks.
o Following submission of core tasks, a further asynchronous quiz or demo may be required, in particular for those submitting substandard work or late.
o Following submission of extension tasks, an asynchronous demo may be required.
Tasks
1. Start with planning and researching. This will include working through the tutorial exercises and quizzes. Outline and describe the major things you will need to do to create your app.
2. Develop an app that meets criteria as shown below.
3. The report needs to cover key knowledge gaps that are covered in this task, along with answers to requested questions. You are also welcomed to include other gaps you learned that are not explicitly focused on this task.
• Split different knowledge gaps into different sections with snippets of code (and written descriptions/captions) presenting both the knowledge gap and the solution that addresses it.
• Include references/links to sources that can assist with the knowledge gaps as well.
• Have a recommendations section for any other related knowledge gaps, outlining about what you might try to address it in the future.
The app
1. The app needs to show four images as shown below, describing your favourite foods. You are very welcome to customise what your app shows (in the past we've had favourite paintings, for example), as long as your report clearly states this,and the images are not objectionable. Stick with food if you are not sure.
2. The data kept for each image should include the name of the food, the date the photo was taken, the type of cuisine, and a rating from 0-5 (you can alter these for other domains, e.g., name of painting instead of food name, artistic period for type of cuisine, but the data types must remain the same). You will need to create a model for this -- note data should not be stored to disk, rather kept in memory. The title and rating should be shown under each image in the first activity. For the extension, at least one of your attributes should use a non-Text View widget, such as a Rating Bar, a Switch, or a Radio Group.
3. When an image is clicked, a new screen with further details needs to be shown along with the image. The data needs to be passed as a Parcel able object. The non-Text View widget needs to show the correct value on activity creation. Explain the components of your Intent and the advantages of using Parcel able objects on Android.
4. Your layout can be a grid as shown, in which case Table Layout might be useful. Otherwise Constraint or Linear layouts can be used, and images can be presented four in a row. My example is rather tricky and uses compound views -- this is only recommended for those with low frustration levels or the need to simplify their views, and you are welcome to use single views.
5. Additional requirements for this task are to demonstrate good use of Kotlin features in your code (such as scope functions) and to provide some simple sketches of the two screens in your app. The latter could be made using XD or Figma or could be freehand sketches. Please note that this does not mean "pretty" designs should be made -- it is simply testing whether you can use sketching tools to think about and communicate your app's UI.
Extension
1. Turn the second activity into a form and update the details for the images. In order to make life easy for your user, you should enter the existing text/values into the form for editing, rather than presenting empty inputs. The new details should be saved on pressing back (there should not be an explicit save button) and should be shown to the user in the first activity. Do not use persistent data for this task.
2. Keyboards should only show useful inputs for particular fields, such as dates for date strings.
3. Error checking should be included for required fields -- this could be length of string, valid dates, etc.
4. This is a good app for UI testing. Note that Rating Bars are not easy to test with Espresso so you should focus on text and other widgets.
Attachment:- Core.rar