A4: Mobile Applications

PDF Reader

You will design and implement a PDF reader that allows a user to read and annotate a document on an Android tablet. The screen should look something like this. Note that you have the freedom to change the layout and appearance, as long as you support all of the features and functionality described below.


Functional Requirements

When first launched, the application will load a sample PDF that you have included in your project. The titlebar should show the name of the PDF. The statusbar should show the current page number and the total number of pages (e.g. "page 2/5").

You need to support the following functionality. Unless a feature specifically states how you should activate it, you can choose how to present these to the user. e.g. buttons on toolbar, floating buttons for page up/down, or 'two-finger swipe left' to undo.

You should support multi-page PDFs, and your sample document needs to have at least 3 pages. The user should be able to move between pages - you need to decide how to add functionality to support this (up/down buttons, or perhaps a custom gesture).

Any gestures that you implement (e.g. zoom, pan, possible moving between pages) should respect direct manipulation principles. For instance, content should remain under your finger as you zoom or pan. Gestures should also follow principles discussed in class (e.g. given design principles, swipe-back would be a good choice for navigating to the previous page, but a poor choice for the erase tool).

You should optimize for a tablet in portrait mode (see below for device/AVD details). You should disable orientation changes in your application so that the layout remains in portrait mode as the device is rotated.

You should save changes when the user changes pages, or exits. A user should be able to make changes, exit your applicaton, and then reload it and see their changes intact. Drawing and highlighting should be saved on each page i.e. it should not be lost when the user navigates between pages.

Technical Requirements


Your directory structure for your assignment submission should be in subdirectories under your a4/ directory in your Git repository. It should use a standard file layout for an Android IntelliJ project.

Your submission needs to include:

Your `readme.md' file needs to include, at a minimum:


Late assignments will not be accepted. Markers will test your application by running your APK file against the appropriate AVD. Your submission will be assessed roughly as follows:

Code compiles and runs, readme, working project.
PDF is displayed. User can scroll between pages.
User can annotate the PDF using either the pen or highlighter.
User can erase an annotation using the erase tool.
User can undo/redo up to 5 levels of actions that they perform.
User can zoom and pan using standing gestures. Annotations scale with the canvas.
Data persists when application is restarted, or when the user nagivates between pages.
User controls are obvious/clear and intuitive, and support the features required.


1.0. Aug 26, 2020. Initial draft.

1.0. Nov 14, 2020. Minor grammar and formatting changes. Removed draft label.