CSE 489 Assigment L1 v2 7
CSE 489 Assigment L1 v2 7
Objective:
The assignment focuses on layouts, especially the ConstraintLayout, general Android
programming concepts, such as the activity lifecycle and designing for different screen sizes and
orientations.
Instructions:
Your task is to create an Android app (VangtiChai) that lets you enter a money amount via a
numeric keypad implemented from scratch (to practice layouts!), and calculates change for that
amount in terms of Taka Notes (500,100,50,20,10,5,2,1).
You can make your own choice between Kotlin, Java and Flutter, but you are welcome to try
Kotlin on your own initiative), and for minimum API level, you can set "API 21: Android 5.0
(Lollipop)" (or lower if need be).
1. In portrait mode, your app's main view shows a numeric keyboard consisting of buttons
for the 10 digits and a clear button in the configuration shown below. To the left of it,
there should be a table listing for the notes that make up the change for any entered
amount. In the top part of the screen, the entered amount is shown, next to a "Taka:"
label.
2. When you tap any button, the corresponding digit is added to your current amount from
the right (this is to make entry as easy as possible for you to program). I.e. if you type the
digits '2', '3', and '4' in this order, you first will see an amount of 2, then 23, and then 234.
3. When turning your device to landscape mode, the current interface should save state
(keep the currently entered amount and change list), and present a slightly altered layout:
4. The layouts on your app should work gracefully on phones and tablets. Test with the
emulator on at least a Pixel XL phone (see screenshots above), and a Nexus 10 tablet (see
screenshots below).
Hints & Pointers:
This assignment can be solved by using alternative layouts. Read the following sections of the
Android Developer guidelines:
• https://developer.android.com/guide/practices/compatibility
• https://developer.android.com/training/multiscreen/screensizes
While you are allowed to use any layout type you wish to use, you should really familiarize
yourselves with the ConstraintLayout.
• https://developer.android.com/training/constraint-layout
• https://developer.android.com/reference/android/support/constraint/ConstraintLayout#de
veloper-guide
It is sufficient for full credit to create layouts that work well on a Pixel XL phone (a 411x731dp
screen) and a Nexus 10 tablet(800x1280dp) in both portrait mode and orientation mode (i.e. 4
different layouts).
Even though we will only test your app on these four screen sizes/orientations, you should check
that you get reasonable results on other devices as well. List in your README.txt file what other
device/screen types you have tested.
Do not hardcode any values in the layout xml files. When using specific text sizes, padding, and
margin values for any of your layout alternatives, create them in sizes.xml in the values folder
and refer to those.