Layout and Containers

Size: px
Start display at page:

Download "Layout and Containers"

Transcription

1 Geez, that title is freakin' huge. Layout and Containers This week, we'll mostly just be looking at how to better-arrange elements. That will include our first introduction into managed resources (even though that's the primary topic for next week). We'll also take our first look into making use of multiple Activities. Preparation First, let's get some basic stuff set up, before we add the 'fun' to it! Project I think we should make a new project. You're welcome to add onto last week's if you prefer, but I'll be starting fresh. Since I'm not likely to return to last week's any time soon, I'll probably delete the build and.gradle (note: not gradle!) folders from last week's project. Initial layout I'm going to start just like last week: make a project with a provided empty activity. Though it doesn't really matter what we call that initial Activity, I'll call mine Splash. I honestly don't care what the initial splashscreen looks like (feel free to put a picture or something). For mine, I'll change the default text to something else (e.g. Brock University, or Dealies. Probably the latter). However, we're not adding any functionality yet. First, we want another layout. That means another Activity... Let's create a new Activity. I'll call mine Relative. How do we do this? There are several ways, including directly creating the files you need, and adding the entry to the manifest yourself. But that's work. I'll go with: File New Activity Empty Activity Note that this will not be a Launcher Activity! There's one minor thing to watch out for: sometimes Android Studio is a bit odd for picking up the correct 'package name'. Make sure it hasn't changed it for you in this dialog. Ideally, it's now created the files we need, and also added an entry to the manifest. All done? Great! We now have two (trivial) activities! We'll decorate the new Activity in a moment; for now, just make sure it looks somehow different from your initial one (e.g. if you changed the text in the first, you're fine).

2 Starting new activities There'll be several ways to start new Activities. We'll be looking at the simplest for now. There's just one catch: we don't want our pseudo-splashscreen to load the next screen immediately. What's the alternative then? A Thread.sleep()? Some things to remember: An Activity is a view corresponding to the current mode or behaviour But it's also, basically, a UI UI's need to be responsive That means they can't just go to sleep for a while Even though we don't want our splash screen to response to anything, the Android system is designed such that an unresponsive system is treated akin to a crash Later on, when we have heavy lifting to do, we'll look into proper multiprocessing For now, we'll just be using a simple Handler to load the next Activity up The Handler will operate outside of the Activity's normal execution, so it doesn't hinder it Note that this is technically how you make a bad splash screen Checking we're all on the same page... We should all have the same setup at this point: An activity that acts as a main/launcher Another activity that currently has no way to starting Layouts for each (the contents don't matter, so long as they're different) Start the project as-is, and you should see your 'splash screen'. Making the splash screen splash We're not really talking about themes yet, so we won't worry about making the splash screen look like one. However, if you like, you can add the code: getsupportactionbar().hide(); to the end of Splash's oncreate() method. That should at least hide the title from the top. What matters most is launching the next Activity.

3 There are numerous ways to do this, but they'll generally involve a new Intent, and some variation of startactivity. What won't work We can't just create a new instance of our Relative Activity, and expect that to somehow display. What will work, but not usefully startactivity(new Intent(Splash.this,Relative.class)); This will definitely start the new Activity. However, there are two problems: You won't even get to see the splash screen at all If you press back on the new Activity, it will return to the splash screen (which is odd) The latter is easy to fix: Almost there startactivity(new Intent(Splash.this,Relative.class)); finish(); This tells it to dispose of the current Activity (because we're done with it). That means it won't be left on the Activity stack, and thus you can't return to it. If you're interested, there are actually some interesting things you can do, specifying parent Activities, and such, but that isn't necessary for this level. All that's left is the delay. We simply need to offload that delay into a separate Runnable. One (though not the only) solution new Handler().postDelayed(new Runnable() { public void run() { } }, 3 * 1000); startactivity(new Intent(Splash.this, Relative.class)); finish(); I'm sure we'll want to discuss the individual components of this. Remember: this isn't technically the best way to do a splash screen (or even necessarily good ). It's chosen because it's good for illustrative purposes. If you're interested in the topic from an actual development perspective, there's a nice (and quick) read here:

4 What we have now Humour me, and let's go through the checklist again: We have an Activity that acts as a splash screen, and automatically starts the program proper We have an Activity, called Relative (or whatever), that's currently empty That Relative Activity is effectively the starting point, as backing out will close the program Before we continue We're probably going to be re-executing our project frequently. If you don't feel like sitting through that long splash screen delay, feel free to either shorten it; remove it; or add an intent filter to the Relative Activity, and edit the project's run configuration to jump directly to Relative. Different layouts The current default layout for Android Studio is the ConstraintLayout. We've already looked at it a little, but didn't really get into its more powerful features. Constraint-solving is actually very important, and in fact is a major tool for effective development and UIs. However, this is an introductory course, and it's left to you to decide if you want to go into UI/UX. In other words: it's neat; it's powerful; if you're interested, Google is your friend. RelativeLayout This layout used to be the default, before ConstraintLayout, and the similarities will be quickly apparent. Let's start our first example by replacing the provided layout for our Relative Activity: <?xml version="1.0" encoding="utf 8"?> <RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="10dip" android:paddingright="10dip" android:paddingtop="10dip" android:paddingbottom="10dip" tools:context=".relative" android:background="#a0a0ff" > </RelativeLayout> Note that much of this is highly inappropriate, design-wise. We haven't covered resources and themes yet.

5 Let's add a few Views: android:layout_width="200dip" android:layout_height="140dip" android:text="it's all Relative... Layout" <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="next" android:id="@+id/relativenext" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="click for Next" Naturally, if we try viewing it, as-is, everything will overlap. What can we do about that? Let's focus on the first TextView for now: android:layout_width="200dip" android:layout_height="140dip" android:text="it's all Relative... Layout" android:layout_centerinparent="true" Okay, that's a start. Note that, because the View itself it centred, but the text isn't centred within the View, the text isn't centred within the display area. What if we wanted control over that? android:gravity="center" will centre it just fine. What if we wanted the text in the bottom right? android:gravity="right" android:gravity="bottom" is less friendly. And we can see why pretty easily: we have two, conflicting, definitions. Easy solution, though: android:gravity="right bottom" gives us what we need. Okay then, howsabout we fix that Button? Personally, I'd like it right in the bottom-centre. How can we do that? Pretty easily, actually: <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignparentbottom="true" android:layout_centerhorizontal="true" android:text="next" android:id="@+id/relativenext" So that's no big deal. The catch will be aligning the text label for the button. I want that one to be to the right of the Button. How do we do that? Huh... the Button has an id. Wonder if we can use that...

6 android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="click for Next" And now we finally see why it's called a Relative Layout. All positioning is done relative to some other existing element; whether that be the enclosing parent container, or another explicitly-identified View. Thanks to the wonders of code-completion, you can actually just browse the options pretty easily. Assuming we all understand up to this point, let's continue on to the next one, but first... Starting the next Activity While although we don't have the next Activity to start yet, we should still set up the Button to invoke it, just so we can complete this exercise before starting the next. You can set up whatever click-handling mechanism you like. Since we know we'll only have one Button behaviour, I'll just use the onclick property. The code is simple enough: public void linearnext(view button) { startactivity(new Intent(Relative.this,Linearity.class)); } Note that I didn't bother adding finish(), since I could, hypothetically, wish to return to this Activity. Interjection Neither here nor there, but try adding this to the new Linearity Activity listing within the manifest: android:parentactivityname=".relative" See if you can spot what it does. LinearLayout Ostensibly, LinearLayout is one of the less-powerful layout containers. It certainly doesn't have many features. It's designed with the assumption that you simply want to dump in multiple Views, which will all flow in the same direction. If you want to have many items, flowing in different directions, simply have LinearLayouts within LinearLayouts (or, of course, you can mix'n'match different Layouts within each other). Let's start simple:

7 <?xml version="1.0" encoding="utf 8"?> <LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="10dip" android:paddingright="10dip" android:paddingtop="10dip" android:paddingbottom="10dip" tools:context=".linearity" android:background="#a0a0ff" android:orientation="vertical" > android:layout_width="120dip" android:layout_height="80dip" android:text="first!" android:layout_width="120dip" android:layout_height="80dip" android:text="second!" android:layout_width="120dip" android:layout_height="80dip" android:text="third!" android:layout_width="120dip" android:layout_height="80dip" android:text="fourth!" <EditText android:layout_width="120dip" android:layout_height="80dip" android:layout_width="120dip" android:layout_height="80dip" android:text="next!" android:onclick="donelinear" </LinearLayout> I realize that's a lot, but note the opportunities for copy&paste.

8 Okay, so what's new? Most notably, we include a 'hint' that it should arrange them not only linearly, but vertically Before we continue... Let's do a bit of prep for when we'll be going to the next Activity. All we need to do is to add a donelinear method. I know I'm going to want to pass along the data from the EditText to the next Activity, so I'll just add a Toast as a placeholder for now: public void donelinear(view b) { EditText textfield=(edittext)findviewbyid(r.id.textdata); Toast.makeText(this,"Received: "+textfield.gettext(),toast.length_short).show(); } By the way, if you didn't notice, I didn't actually use a Button there. You can set onclick events for other Views as well. And now we resume... What happens if we rotate the screen?... oh no... ohhh no... We have to fix that! The problem here is that we have a portrait-friendly landscape, but nothing to guarantee that it's only displayed in portrait! There are two basic solutions for this: Only allow portrait mode, if that makes sense for the task Provide an alternate layout for when displaying in landscape We'll be going with the latter. If you switch to the Design view, one of the buttons has a Create Landscape Variation button (as well as a couple other variations). Try using it, and then let's briefly leave Android Studio to inspect the folder structure of the project. Ain't that neat?!? Anyhoo, let's redesign the layout for being landscape-friendly. While we're at it, there's also another problem to address: manually stating the sizes of Views is a terrible way to make them 'fill up the screen' better. So we'll address both issues. (Sorry for the blank space, but I want to start this on another page)

9 Our landscape version <?xml version="1.0" encoding="utf 8"?> <LinearLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingleft="10dip" android:paddingright="10dip" android:paddingtop="10dip" android:paddingbottom="10dip" tools:context=".linearity" android:background="#a0a0ff" android:orientation="vertical" > <LinearLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="2" android:orientation="horizontal" android:padding="10dip"> android:layout_width="0dip" android:layout_height="match_parent" android:background="#00ff00" android:layout_weight="1" android:text="first!" android:layout_width="0dip" android:layout_height="match_parent" android:background="#00ff00" android:layout_weight="1" android:text="second!" android:layout_width="0dip" android:layout_height="match_parent" android:background="#00ff00" android:layout_weight="1" android:text="third!" </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dip" android:layout_weight="1" android:orientation="horizontal" android:padding="10dip"> android:layout_width="0dip" android:layout_height="match_parent"

10 android:layout_weight="1" android:text="fourth!" <EditText android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" android:layout_margin="20dip" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" android:text="next!" android:onclick="donelinear" </LinearLayout> </LinearLayout> Uh, wow. That's a lot, eh? Let's see what's new: First, we can easily have a Layout within a Layout, which is how we'll be handling pretty much any layout of reasonable complexity Some Linear Layouts are vertical; others horizontal The layout_weight is how it performs relative spacing between different elements within the same LinearLayout. If they're all the same number, they all get equal portions; otherwise, it's done according to the stated ratios (however, the actual values themselves don't really matter; just the relative ratios) A layout weight only works in a single dimension:e.g. if it's a horizontal linear layout, then the weights indicate width (conversely, for vertical, they determine per-element height) When you're using a weight, you should set the corresponding layout_width/layout_height to 0dip, since it would be overridden anyway We also used a bit of margins and padding, even though doing it this way is poor form Well, that was certainly interesting! Next, let's just go ahead and click that button again to... oh consarnit... What went wrong? Anybody care to venture a guess?

11 What went wrong Hopefully you gave it some thought, rather than jumping to the answer. The problem is that the EditText in the landscape version is missing its id. Of course, if you made all of the changes manually, rather than copying&pasting the example from above, you might not have had the problem arise anyway. This is something to watch for: when we specify more than one file, we run the risk of them not matching each other. In any event, just add to the EditText (to match the portrait version), and we're good to go on the next part. Sending information from one Activity to the next That Toast was just a placeholder, so now let's replace it with code to start the next Activity. The new Activity will be called Griddle in my version. Beyond simply starting it, we want to add some additional data. Thankfully, this is mostly just a combination of what we've learned this week, and last. My new version of the onclick code was: public void donelinear(view b) { String textdata=((edittext)findviewbyid(r.id.textdata)).gettext().tostring(); Intent gridintent=new Intent(this,Griddle.class); gridintent.putextra("textdata",textdata); startactivity(gridintent); } In our Griddle Activity, we'll have something like: String received=getintent().getstringextra("textdata"); Toast.makeText(this,received.equals("")? "Nothing there":received,toast.length_short).show(); GridLayout The GridLayout layout is an interesting one. Up to, and including, API 20, it was of limited use. The idea is to arrange elements in (huge surprise) a grid. Basically, each position is now indexable. Lollipop introduced a useful feature for it: the weights from the LinearLayout. However, if you're going to support API versions before Android 5.0, realize that it may render entirely differently from how it does on your screen. In any event, as mentioned above, we'll be making our new Activity: Griddle.

12 Naïve version In theory, we could just go with this: <?xml version="1.0" encoding="utf 8"?> <GridLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".griddle" android:rowcount="6" android:columncount="3" > android:text="first" android:text="second" android:text="third" android:text="fourth" android:text="fifth" android:text="sixth" android:text="seventh" </GridLayout> However, that looks terrible, and relatively pointless. Let's see what we can do with it! <?xml version="1.0" encoding="utf 8"?> <GridLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".griddle" android:rowcount="6" android:columncount="3" > android:text="first" android:layout_row="0" android:layout_column="0" android:layout_columnweight="1" android:background="#4040ff" android:layout_rowspan="2" android:layout_gravity="fill_vertical"

13 android:text="second" android:layout_row="5" android:layout_column="2" android:layout_columnweight="3" android:background="#4040ff" android:text="third" android:layout_row="0" android:layout_column="1" android:layout_columnweight="2" android:text="fourth" android:layout_row="1" android:layout_column="2" android:layout_columnweight="3" android:text="fifth" android:layout_columnweight="1" android:text="sixth" android:layout_row="4" android:layout_columnweight="2" android:text="seventh" android:layout_column="2" android:layout_columnweight="3" android:text="eighth" android:layout_columnweight="1" </GridLayout> A few things worth noting: If you don't specify the coordinates of a cell, it assumes it's just assigning them in sequence If you start setting row/column weights in a direction for one element, you'd best set them all Trying to set weights as well as layout_gravity (disposition relative to parent) fills tends to yield confusing results Final thought on orientation What if we don't want it to be able to rotate? One solution is to add android:screenorientation="portrait" in the manifest. We could also take direct control over the geometry-related callbacks, but... let's not.

14 Additional Layouts Of course, there are many more layouts. However, there's really only so many we can go through at once before it all starts becoming a blur. A few noteworthy ones: AbsoluteLayout this one is deprecated, and for good reason. Please don't use it TableLayout a tabular layout, we may come back to this later for forms FrameLayout a simple container, for when you just want to display one thing (though that single thing can change) This is all in addition to 'views' (not to be confused with Views. sigh).

Eventually, you'll be returned to the AVD Manager. From there, you'll see your new device.

Eventually, you'll be returned to the AVD Manager. From there, you'll see your new device. Let's get started! Start Studio We might have a bit of work to do here Create new project Let's give it a useful name Note the traditional convention for company/package names We don't need C++ support

More information

More Effective Layouts

More Effective Layouts More Effective Layouts In past weeks, we've looked at ways to make more effective use of the presented display (e.g. elastic layouts, and separate layouts for portrait and landscape), as well as autogenerating

More information

Android UI: Overview

Android UI: Overview 1 Android UI: Overview An Activity is the front end component and it can contain screens. Android screens are composed of components or screen containers and components within the containers Screen containers

More information

Adapting to Data. Before we get to the fun stuff... Initial setup

Adapting to Data. Before we get to the fun stuff... Initial setup Adapting to Data So far, we've mostly been sticking with a recurring theme: visual elements are tied to XML-defined resources, not programmatic creation or management. But that won't always be the case.

More information

Sizing and Positioning

Sizing and Positioning CS 193A Layout This document is copyright (C) Marty Stepp and Stanford Computer Science. Licensed under Creative Commons Attribution 2.5 License. All rights reserved. Sizing and Positioning How does the

More information

Mobile Software Development for Android - I397

Mobile Software Development for Android - I397 1 Mobile Software Development for Android - I397 IT COLLEGE, ANDRES KÄVER, 2015-2016 EMAIL: AKAVER@ITCOLLEGE.EE WEB: HTTP://ENOS.ITCOLLEGE.EE/~AKAVER/2015-2016/DISTANCE/ANDROID SKYPE: AKAVER Layout fundamentals

More information

ANDROID USER INTERFACE

ANDROID USER INTERFACE 1 ANDROID USER INTERFACE Views FUNDAMENTAL UI DESIGN Visual interface element (controls or widgets) ViewGroup Contains multiple widgets. Layouts inherit the ViewGroup class Activities Screen being displayed

More information

Resources and Media and Dealies

Resources and Media and Dealies Resources and Media and Dealies In the second week, we created a new project that came with several files. The layout was kept in a res/layout folder. last week, we looked at a landscape layout, in the

More information

In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology.

In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology. Guide to and Hi everybody! In our first lecture on sets and set theory, we introduced a bunch of new symbols and terminology. This guide focuses on two of those symbols: and. These symbols represent concepts

More information

CS 4330/5390: Mobile Application Development Exam 1

CS 4330/5390: Mobile Application Development Exam 1 1 Spring 2017 (Thursday, March 9) Name: CS 4330/5390: Mobile Application Development Exam 1 This test has 8 questions and pages numbered 1 through 7. Reminders This test is closed-notes and closed-book.

More information

Let s take a display of HTC Desire smartphone as an example. Screen size = 3.7 inches, resolution = 800x480 pixels.

Let s take a display of HTC Desire smartphone as an example. Screen size = 3.7 inches, resolution = 800x480 pixels. Screens To begin with, here is some theory about screens. A screen has such physical properties as size and resolution. Screen size - a distance between two opposite corners of the screens, usually measured

More information

Azon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage

Azon Master Class. By Ryan Stevenson   Guidebook #5 WordPress Usage Azon Master Class By Ryan Stevenson https://ryanstevensonplugins.com/ Guidebook #5 WordPress Usage Table of Contents 1. Widget Setup & Usage 2. WordPress Menu System 3. Categories, Posts & Tags 4. WordPress

More information

The Stack, Free Store, and Global Namespace

The Stack, Free Store, and Global Namespace Pointers This tutorial is my attempt at clarifying pointers for anyone still confused about them. Pointers are notoriously hard to grasp, so I thought I'd take a shot at explaining them. The more information

More information

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 1 page 1 out of 5 [talking head] Formal Methods of Software Engineering means the use of mathematics as an aid to writing programs. Before we can

More information

Hello World. Lesson 1. Android Developer Fundamentals. Android Developer Fundamentals. Layouts, and. NonCommercial

Hello World. Lesson 1. Android Developer Fundamentals. Android Developer Fundamentals. Layouts, and. NonCommercial Hello World Lesson 1 This work is licensed This under work a Creative is is licensed Commons under a a Attribution-NonCommercial Creative 4.0 Commons International Attribution- License 1 NonCommercial

More information

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5

Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 Formal Methods of Software Design, Eric Hehner, segment 24 page 1 out of 5 [talking head] This lecture we study theory design and implementation. Programmers have two roles to play here. In one role, they

More information

Instructor: Craig Duckett. Lecture 03: Tuesday, April 3, 2018 SQL Sorting, Aggregates and Joining Tables

Instructor: Craig Duckett. Lecture 03: Tuesday, April 3, 2018 SQL Sorting, Aggregates and Joining Tables Instructor: Craig Duckett Lecture 03: Tuesday, April 3, 2018 SQL Sorting, Aggregates and Joining Tables 1 Assignment 1 is due LECTURE 5, Tuesday, April 10 th, 2018 in StudentTracker by MIDNIGHT MID-TERM

More information

Our First Android Application

Our First Android Application Mobile Application Development Lecture 04 Imran Ihsan Our First Android Application Even though the HelloWorld program is trivial in introduces a wealth of new ideas the framework, activities, manifest,

More information

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Managing Screen Orientation

EMBEDDED SYSTEMS PROGRAMMING Application Tip: Managing Screen Orientation EMBEDDED SYSTEMS PROGRAMMING 2016-17 Application Tip: Managing Screen Orientation ORIENTATIONS Portrait Landscape Reverse portrait Reverse landscape ON REVERSE PORTRAIT Android: all four orientations are

More information

It Might Be Valid, But It's Still Wrong Paul Maskens and Andy Kramek

It Might Be Valid, But It's Still Wrong Paul Maskens and Andy Kramek Seite 1 von 5 Issue Date: FoxTalk July 2000 It Might Be Valid, But It's Still Wrong Paul Maskens and Andy Kramek This month, Paul Maskens and Andy Kramek discuss the problems of validating data entry.

More information

User Interface Development. CSE 5236: Mobile Application Development Instructor: Adam C. Champion Course Coordinator: Dr.

User Interface Development. CSE 5236: Mobile Application Development Instructor: Adam C. Champion Course Coordinator: Dr. User Interface Development CSE 5236: Mobile Application Development Instructor: Adam C. Champion Course Coordinator: Dr. Rajiv Ramnath 1 Outline UI Support in Android Fragments 2 UI Support in the Android

More information

Android Basics. Android UI Architecture. Android UI 1

Android Basics. Android UI Architecture. Android UI 1 Android Basics Android UI Architecture Android UI 1 Android Design Constraints Limited resources like memory, processing, battery à Android stops your app when not in use Primarily touch interaction à

More information

Managing Data. However, we'll be looking at two other forms of persistence today: (shared) preferences, and databases.

Managing Data. However, we'll be looking at two other forms of persistence today: (shared) preferences, and databases. Managing Data This week, we'll be looking at managing information. There are actually many ways to store information for later retrieval. In fact, feel free to take a look at the Android Developer pages:

More information

Praktikum Entwicklung Mediensysteme. Implementing a User Interface

Praktikum Entwicklung Mediensysteme. Implementing a User Interface Praktikum Entwicklung Mediensysteme Implementing a User Interface Outline Introduction Programmatic vs. XML Layout Common Layout Objects Hooking into a Screen Element Listening for UI Notifications Applying

More information

Android Application Development

Android Application Development Android Application Development Octav Chipara What is Android A free, open source mobile platform A Linux-based, multiprocess, multithreaded OS Android is not a device or a product It s not even limited

More information

Slide 1 CS 170 Java Programming 1 Testing Karel

Slide 1 CS 170 Java Programming 1 Testing Karel CS 170 Java Programming 1 Testing Karel Introducing Unit Tests to Karel's World Slide 1 CS 170 Java Programming 1 Testing Karel Hi Everybody. This is the CS 170, Java Programming 1 lecture, Testing Karel.

More information

Linked Lists. What is a Linked List?

Linked Lists. What is a Linked List? Linked Lists Along with arrays, linked lists form the basis for pretty much every other data stucture out there. This makes learning and understand linked lists very important. They are also usually the

More information

MITOCW watch?v=9h6muyzjms0

MITOCW watch?v=9h6muyzjms0 MITOCW watch?v=9h6muyzjms0 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Version Copyright Feel free to distribute this guide at no charge...

Version Copyright Feel free to distribute this guide at no charge... Version 2.0 Feel free to distribute this guide at no charge... You cannot edit or modify this guide in anyway. It must be left exactly the way it is. This guide is only accurate from the last time it was

More information

COSC 3P97 Assignment 1

COSC 3P97 Assignment 1 Due: Oct. 12 @ 5:00 pm. COSC 3P97 Assignment 1 Fall 2018/19 Create a new Android Studio project or Eclipse workspace for the assignment. The app should run on API 23 (Marshmallow). Calculator Write an

More information

Comparative Study on Layout and Drawable Resource Behavior in Android for Supporting Multi Screen

Comparative Study on Layout and Drawable Resource Behavior in Android for Supporting Multi Screen International Journal of Innovative Research in Computer Science & Technology (IJIRCST) ISSN: 2347-5552, Volume 2, Issue 3, May - 2014 Comparative Study on Layout and Drawable Resource Behavior in Android

More information

Chapter 8 Positioning with Layouts

Chapter 8 Positioning with Layouts Introduction to Android Application Development, Android Essentials, Fifth Edition Chapter 8 Positioning with Layouts Chapter 8 Overview Create user interfaces in Android by defining resource files or

More information

Programming with Android: Introduction. Layouts. Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna

Programming with Android: Introduction. Layouts. Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna Programming with Android: Introduction Layouts Luca Bedogni Marco Di Felice Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna Views: outline Main difference between a Drawable and

More information

MITOCW watch?v=flgjisf3l78

MITOCW watch?v=flgjisf3l78 MITOCW watch?v=flgjisf3l78 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To

More information

South Africa

South Africa South Africa 2013 Lecture 6: Layouts, Menus, Views http://aiti.mit.edu Create an Android Virtual Device Click the AVD Icon: Window -> AVD Manager -> New Name & start the virtual device (this may take a

More information

Overview. What are layouts Creating and using layouts Common layouts and examples Layout parameters Types of views Event listeners

Overview. What are layouts Creating and using layouts Common layouts and examples Layout parameters Types of views Event listeners Layouts and Views http://developer.android.com/guide/topics/ui/declaring-layout.html http://developer.android.com/reference/android/view/view.html Repo: https://github.com/karlmorris/viewsandlayouts Overview

More information

Chapter 2 Welcome App

Chapter 2 Welcome App 2.8 Internationalizing Your App 1 Chapter 2 Welcome App 2.1 Introduction a. Android Studio s layout editor enables you to build GUIs using drag-and-drop techniques. b. You can edit the GUI s XML directly.

More information

Agenda. Overview of Xamarin and Xamarin.Android Xamarin.Android fundamentals Creating a detail screen

Agenda. Overview of Xamarin and Xamarin.Android Xamarin.Android fundamentals Creating a detail screen Gill Cleeren Agenda Overview of Xamarin and Xamarin.Android Xamarin.Android fundamentals Creating a detail screen Lists and navigation Navigating from master to detail Optimizing the application Preparing

More information

Topics of Discussion

Topics of Discussion Reference CPET 565 Mobile Computing Systems CPET/ITC 499 Mobile Computing Fragments, ActionBar and Menus Part 3 of 5 Android Programming Concepts, by Trish Cornez and Richard Cornez, pubslihed by Jones

More information

mismatch between what is maybe possible today and what is going on in many of today's IDEs.

mismatch between what is maybe possible today and what is going on in many of today's IDEs. What will happen if we do very, very small and lightweight tools instead of heavyweight, integrated big IDEs? Lecturer: Martin Lippert, VMware and Eclispe tooling expert LIPPERT: Welcome, everybody, to

More information

How To Make 3-50 Times The Profits From Your Traffic

How To Make 3-50 Times The Profits From Your Traffic 1 How To Make 3-50 Times The Profits From Your Traffic by Chris Munch of Munchweb.com Copyright Munchweb.com. All Right Reserved. This work cannot be copied, re-published, or re-distributed. No re-sell

More information

PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between

PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between MITOCW Lecture 10A [MUSIC PLAYING] PROFESSOR: Last time, we took a look at an explicit control evaluator for Lisp, and that bridged the gap between all these high-level languages like Lisp and the query

More information

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09

Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Mobile Computing Professor Pushpedra Singh Indraprasth Institute of Information Technology Delhi Andriod Development Lecture 09 Hello, today we will create another application called a math quiz. This

More information

Laying Out Controls in Containers

Laying Out Controls in Containers CHAPTER 3 Laying Out Controls in Containers A container is a view used to contain other views. Android offers a collection of view classes that act as containers for views. These container classes are

More information

Vienos veiklos būsena. Theory

Vienos veiklos būsena. Theory Vienos veiklos būsena Theory While application is running, we create new Activities and close old ones, hide the application and open it again and so on, and Activity can process all these events. It is

More information

MITOCW watch?v=kz7jjltq9r4

MITOCW watch?v=kz7jjltq9r4 MITOCW watch?v=kz7jjltq9r4 PROFESSOR: We're going to look at the most fundamental of all mathematical data types, namely sets, and let's begin with the definitions. So informally, a set is a collection

More information

MITOCW watch?v=0jljzrnhwoi

MITOCW watch?v=0jljzrnhwoi MITOCW watch?v=0jljzrnhwoi The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Automatic newsgroup TV show downloading By RootyB

Automatic newsgroup TV show downloading By RootyB Downloaded from: justpaste.it/1mx Automatic newsgroup TV show downloading By RootyB I'm doing this in between my actual responsibilities, so it's going to be fairly quick and dirty. It should address just

More information

In today s video I'm going show you how you can set up your own online business using marketing and affiliate marketing.

In today s video I'm going show you how you can set up your own online business using  marketing and affiliate marketing. Hey guys, Diggy here with a summary of part two of the four part free video series. If you haven't watched the first video yet, please do so (https://sixfigureinc.com/intro), before continuing with this

More information

Introduction to Game Programming Lesson 4 Lecture Notes

Introduction to Game Programming Lesson 4 Lecture Notes Introduction to Game Programming Lesson 4 Lecture Notes Learning Objectives: Following this lecture, the student should be able to: Define frame rate List the factors that affect the amount of time a game

More information

Post Experiment Interview Questions

Post Experiment Interview Questions Post Experiment Interview Questions Questions about the Maximum Problem 1. What is this problem statement asking? 2. What is meant by positive integers? 3. What does it mean by the user entering valid

More information

mk-convert Contents 1 Converting to minikanren, quasimatically. 08 July 2014

mk-convert Contents 1 Converting to minikanren, quasimatically. 08 July 2014 mk-convert 08 July 2014 Contents 1 Converting to minikanren, quasimatically. 1 1.1 Variations on a Scheme..................... 2 1.2 Racket to minikanren, nally.................. 8 1.3 Back to the beginning......................

More information

The following content is provided under a Creative Commons license. Your support

The following content is provided under a Creative Commons license. Your support MITOCW Lecture 10 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To make a

More information

Android Programming Family Fun Day using AppInventor

Android Programming Family Fun Day using AppInventor Android Programming Family Fun Day using AppInventor Table of Contents A step-by-step guide to making a simple app...2 Getting your app running on the emulator...9 Getting your app onto your phone or tablet...10

More information

Android App Development. Mr. Michaud ICE Programs Georgia Institute of Technology

Android App Development. Mr. Michaud ICE Programs Georgia Institute of Technology Android App Development Mr. Michaud ICE Programs Georgia Institute of Technology Android Operating System Created by Android, Inc. Bought by Google in 2005. First Android Device released in 2008 Based

More information

Microsoft Access 2016 Intro to Forms and Reports

Microsoft Access 2016 Intro to Forms and Reports Microsoft Access 2016 Intro to Forms and Reports training@health.ufl.edu Access 2016: Intro to Forms and Reports 2.0 hours Topics include using the AutoForm/AutoReport tool, and the Form and Report Wizards.

More information

MITOCW watch?v=zm5mw5nkzjg

MITOCW watch?v=zm5mw5nkzjg MITOCW watch?v=zm5mw5nkzjg The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Programming with Android: Introduction. Layouts. Luca Bedogni. Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna

Programming with Android: Introduction. Layouts. Luca Bedogni. Dipartimento di Informatica: Scienza e Ingegneria Università di Bologna Programming with Android: Introduction Layouts Luca Bedogni Dipartimento di Informatica: Scienza e Ingegneria Uniersità di Bologna Views: outline Main difference between a Drawable and a View is reaction

More information

MITOCW watch?v=yarwp7tntl4

MITOCW watch?v=yarwp7tntl4 MITOCW watch?v=yarwp7tntl4 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality, educational resources for free.

More information

GUI Design for Android Applications

GUI Design for Android Applications GUI Design for Android Applications SE3A04 Tutorial Jason Jaskolka Department of Computing and Software Faculty of Engineering McMaster University Hamilton, Ontario, Canada jaskolj@mcmaster.ca November

More information

What's the Slope of a Line?

What's the Slope of a Line? What's the Slope of a Line? These lines look pretty different, don't they? Lines are used to keep track of lots of info -- like how much money a company makes. Just off the top of your head, which of the

More information

PROFESSOR: Well, yesterday we learned a bit about symbolic manipulation, and we wrote a rather stylized

PROFESSOR: Well, yesterday we learned a bit about symbolic manipulation, and we wrote a rather stylized MITOCW Lecture 4A PROFESSOR: Well, yesterday we learned a bit about symbolic manipulation, and we wrote a rather stylized program to implement a pile of calculus rule from the calculus book. Here on the

More information

Programming in Android. Nick Bopp

Programming in Android. Nick Bopp Programming in Android Nick Bopp nbopp@usc.edu Types of Classes Activity This is the main Android class that you will be using. These are actively displayed on the screen and allow for user interaction.

More information

MITOCW watch?v=w_-sx4vr53m

MITOCW watch?v=w_-sx4vr53m MITOCW watch?v=w_-sx4vr53m The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To

More information

User Interface Development in Android Applications

User Interface Development in Android Applications ITU- FAO- DOA- TRCSL Training on Innovation & Application Development for E- Agriculture User Interface Development in Android Applications 11 th - 15 th December 2017 Peradeniya, Sri Lanka Shahryar Khan

More information

MITOCW MIT6_172_F10_lec18_300k-mp4

MITOCW MIT6_172_F10_lec18_300k-mp4 MITOCW MIT6_172_F10_lec18_300k-mp4 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for

More information

Mobile Programming Lecture 2. Layouts, Widgets, Toasts, and Event Handling

Mobile Programming Lecture 2. Layouts, Widgets, Toasts, and Event Handling Mobile Programming Lecture 2 Layouts, Widgets, Toasts, and Event Handling Lecture 1 Review How to edit XML files in Android Studio? What holds all elements (Views) that appear to the user in an Activity?

More information

MITOCW ocw f99-lec07_300k

MITOCW ocw f99-lec07_300k MITOCW ocw-18.06-f99-lec07_300k OK, here's linear algebra lecture seven. I've been talking about vector spaces and specially the null space of a matrix and the column space of a matrix. What's in those

More information

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting Slide 1: Cover Welcome to lesson 3 of the db2 on Campus lecture series. Today we're going to talk about tools and scripting, and this is part 1 of 2

More information

The following content is provided under a Creative Commons license. Your support

The following content is provided under a Creative Commons license. Your support MITOCW Recitation 4 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To make

More information

mid=81#15143

mid=81#15143 Posted by joehillen - 06 Aug 2012 22:10 I'm having a terrible time trying to find the Lightworks source code. I was under the impression that Lightworks was open source. Usually that means that it's possible

More information

Blog post on updates yesterday and today:

Blog post on updates yesterday and today: Beta Bug Prioritization meeting IRC Transcript 12 November 2013 Meeting was held in IRC, on the #devmo channel. Meetings are weekly, every Tuesday at 17:00 UTC (10am PST) ok, everyone, we're ready to start

More information

Grocery List: An Android Application

Grocery List: An Android Application The University of Akron IdeaExchange@UAkron Honors Research Projects The Dr. Gary B. and Pamela S. Williams Honors College Spring 2018 Grocery List: An Android Application Daniel McFadden djm188@zips.uakron.edu

More information

Smart formatting for better compatibility between OpenOffice.org and Microsoft Office

Smart formatting for better compatibility between OpenOffice.org and Microsoft Office Smart formatting for better compatibility between OpenOffice.org and Microsoft Office I'm going to talk about the backbreaking labor of helping someone move and a seemingly unrelated topic, OpenOffice.org

More information

Instructor: Craig Duckett. Lecture 04: Thursday, April 5, Relationships

Instructor: Craig Duckett. Lecture 04: Thursday, April 5, Relationships Instructor: Craig Duckett Lecture 04: Thursday, April 5, 2018 Relationships 1 Assignment 1 is due NEXT LECTURE 5, Tuesday, April 10 th in StudentTracker by MIDNIGHT MID-TERM EXAM is LECTURE 10, Tuesday,

More information

Arrays of Buttons. Inside Android

Arrays of Buttons. Inside Android Arrays of Buttons Inside Android The Complete Code Listing. Be careful about cutting and pasting.

More information

The following content is provided under a Creative Commons license. Your support

The following content is provided under a Creative Commons license. Your support MITOCW Lecture 8 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To make a donation

More information

Customizing Access Parameter Queries

Customizing Access Parameter Queries [Revised and Updated 15 August 2018] Everyone likes parameter queries! The database developer doesn't have to anticipate the user's every requirement, and the user can vary their enquiries without having

More information

MITOCW ocw f99-lec12_300k

MITOCW ocw f99-lec12_300k MITOCW ocw-18.06-f99-lec12_300k This is lecture twelve. OK. We've reached twelve lectures. And this one is more than the others about applications of linear algebra. And I'll confess. When I'm giving you

More information

Java Programming Constructs Java Programming 2 Lesson 1

Java Programming Constructs Java Programming 2 Lesson 1 Java Programming Constructs Java Programming 2 Lesson 1 Course Objectives Welcome to OST's Java 2 course! In this course, you'll learn more in-depth concepts and syntax of the Java Programming language.

More information

MITOCW watch?v=r6-lqbquci0

MITOCW watch?v=r6-lqbquci0 MITOCW watch?v=r6-lqbquci0 The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Upon completion of the second part of the lab the students will have:

Upon completion of the second part of the lab the students will have: ETSN05, Fall 2017, Version 2.0 Software Development of Large Systems Lab 2 1. INTRODUCTION The goal of lab 2 is to introduce students to the basics of Android development and help them to create a starting

More information

MITOCW watch?v=zlohv4xq_ti

MITOCW watch?v=zlohv4xq_ti MITOCW watch?v=zlohv4xq_ti The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high-quality educational resources for free. To

More information

XP: Backup Your Important Files for Safety

XP: Backup Your Important Files for Safety XP: Backup Your Important Files for Safety X 380 / 1 Protect Your Personal Files Against Accidental Loss with XP s Backup Wizard Your computer contains a great many important files, but when it comes to

More information

Skill 1: Multiplying Polynomials

Skill 1: Multiplying Polynomials CS103 Spring 2018 Mathematical Prerequisites Although CS103 is primarily a math class, this course does not require any higher math as a prerequisite. The most advanced level of mathematics you'll need

More information

PROFESSOR: So far in this course we've been talking a lot about data abstraction. And remember the idea is that

PROFESSOR: So far in this course we've been talking a lot about data abstraction. And remember the idea is that MITOCW Lecture 4B [MUSIC-- "JESU, JOY OF MAN'S DESIRING" BY JOHANN SEBASTIAN BACH] PROFESSOR: So far in this course we've been talking a lot about data abstraction. And remember the idea is that we build

More information

Lab 1 - Setting up the User s Profile UI

Lab 1 - Setting up the User s Profile UI Lab 1 - Setting up the User s Profile UI Getting started This is the first in a series of labs that allow you to develop the MyRuns App. The goal of the app is to capture and display (using maps) walks

More information

Autodesk University Step Up Your Game AutoCAD P&ID and SQL: Making Data Work for You Skill Level: All Levels

Autodesk University Step Up Your Game AutoCAD P&ID and SQL: Making Data Work for You Skill Level: All Levels Autodesk University Step Up Your Game AutoCAD P&ID and SQL: Making Data Work for You Skill Level: All Levels JULIAN CHAVEZ: Good afternoon, ladies and gentlemen. Last class of the last day and everybody's

More information

I'm Andy Glover and this is the Java Technical Series of. the developerworks podcasts. My guest is Brian Jakovich. He is the

I'm Andy Glover and this is the Java Technical Series of. the developerworks podcasts. My guest is Brian Jakovich. He is the I'm Andy Glover and this is the Java Technical Series of the developerworks podcasts. My guest is Brian Jakovich. He is the director of Elastic Operations for Stelligent. He and I are going to talk about

More information

TourMaker Reference Manual. Intro

TourMaker Reference Manual. Intro TourMaker Reference Manual Intro Getting Started Tutorial: Edit An Existing Tour Key Features & Tips Tutorial: Create A New Tour Posting A Tour Run Tours From Your Hard Drive Intro The World Wide Web is

More information

Using X-Particles with Team Render

Using X-Particles with Team Render Using X-Particles with Team Render Some users have experienced difficulty in using X-Particles with Team Render, so we have prepared this guide to using them together. Caching Using Team Render to Picture

More information

============================================================================

============================================================================ Linux, Cinnamon: cannot create panel icon Posted by JN_Mint - 2019/01/05 21:28 In Cinnamon (on Mint 19.3), with 'show tray icon' enabled in Rainlendar, there is no icon in any panel on my system and Cinnamon

More information

MITOCW watch?v=4dj1oguwtem

MITOCW watch?v=4dj1oguwtem MITOCW watch?v=4dj1oguwtem PROFESSOR: So it's time to examine uncountable sets. And that's what we're going to do in this segment. So Cantor's question was, are all sets the same size? And he gives a definitive

More information

Instructor (Mehran Sahami):

Instructor (Mehran Sahami): Programming Methodology-Lecture26 Instructor (Mehran Sahami): All right. Welcome back to what kind of day is it going to be in 106a? Anyone want to fun-filled and exciting. It always is. Thanks for playing

More information

MITOCW watch?v=se4p7ivcune

MITOCW watch?v=se4p7ivcune MITOCW watch?v=se4p7ivcune The following content is provided under a Creative Commons license. Your support will help MIT OpenCourseWare continue to offer high quality educational resources for free. To

More information

Android UI Development

Android UI Development Android UI Development Android UI Studio Widget Layout Android UI 1 Building Applications A typical application will include: Activities - MainActivity as your entry point - Possibly other activities (corresponding

More information

How to Improve Your Campaign Conversion Rates

How to Improve Your  Campaign Conversion Rates How to Improve Your Email Campaign Conversion Rates Chris Williams Author of 7 Figure Business Models How to Exponentially Increase Conversion Rates I'm going to teach you my system for optimizing an email

More information

CS144 Final Review. Dec 4th, 2009 Tom Wiltzius

CS144 Final Review. Dec 4th, 2009 Tom Wiltzius CS144 Final Review Dec 4th, 2009 Tom Wiltzius Topics Topics In narrative format! Let's follow Packy as he traverses the Internet! Packy comes into being to help Compy the Computer load a web page Compy

More information

Dreamweaver Website 1: Managing a Website with Dreamweaver

Dreamweaver Website 1: Managing a Website with Dreamweaver Page 1 of 20 Web Design: Dreamweaver Websites Managing Websites with Dreamweaver Course Description: In this course, you will learn how to create and manage a website using Dreamweaver Templates and Library

More information

Naming Things in Adafruit IO

Naming Things in Adafruit IO Naming Things in Adafruit IO Created by Adam Bachman Last updated on 2016-07-27 09:29:53 PM UTC Guide Contents Guide Contents Introduction The Two Feed Identifiers Name Key Aside: Naming things in MQTT

More information