title
Android Development Tutorial 3

description
Get the Code: http://goo.gl/NJDWv Best Android Book : http://goo.gl/uPhXFI In this part of my Android Development Tutorial, I will build an Android user interface. I cover how to do numerous things: 1. How to use the Android Visual Layout Editor 2. How to edit the GUI layout by editing the XML 3. How to use TextView, EditText and the SeekBar 4. How to catch events 5. How to save the apps state with onSaveInstanceState() 6. How to get values from components and how to change the values The video and code will teach you all you need to start making apps.

detail
{'title': 'Android Development Tutorial 3', 'heatmap': [{'end': 316.964, 'start': 264.084, 'weight': 0.814}, {'end': 1037.73, 'start': 980.311, 'weight': 0.704}], 'summary': 'Learn android app development, ui design, initialization, state management, and seek bar implementation through creating a tip calculator app with user interfaces and customizations, initializing variables, setting up change listeners, and enhancing user experience.', 'chapters': [{'end': 181.551, 'segs': [{'end': 34.991, 'src': 'embed', 'start': 0.129, 'weight': 0, 'content': [{'end': 4.532, 'text': 'Well hello internet and welcome to part three of my Android development tutorial.', 'start': 0.129, 'duration': 4.403}, {'end': 9.636, 'text': "Today we're going to talk about Android user interfaces and we're actually going to make a usable app.", 'start': 4.572, 'duration': 5.064}, {'end': 16.461, 'text': "I'm going to show you how to use a couple different components being the text view, the edit text box, and the seek bar.", 'start': 9.856, 'duration': 6.605}, {'end': 20.544, 'text': "And I'm also going to talk a lot about change listeners so all these guys can interact.", 'start': 16.721, 'duration': 3.823}, {'end': 23.606, 'text': "And I'm going to bring them together to make a tip calculator.", 'start': 20.664, 'duration': 2.942}, {'end': 28.368, 'text': "And I'm going to cover all those things in this tutorial and then in the next part, I'm going to add all kinds of other features,", 'start': 23.746, 'duration': 4.622}, {'end': 30.149, 'text': 'using radio buttons and check boxes.', 'start': 28.368, 'duration': 1.781}, {'end': 33.17, 'text': 'Then you will be able to make yourself some apps on your own.', 'start': 30.449, 'duration': 2.721}, {'end': 34.991, 'text': "So I have a lot to do, so let's get into it.", 'start': 33.37, 'duration': 1.621}], 'summary': 'Android tutorial on building user interfaces with components like text view, edit text box, and seek bar to create a tip calculator and add features like radio buttons and check boxes.', 'duration': 34.862, 'max_score': 0.129, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ129.jpg'}, {'end': 118.99, 'src': 'embed', 'start': 93.393, 'weight': 5, 'content': [{'end': 98.777, 'text': "because that's what i named it and i'm going to come down here to this guy right here because i want to actually edit this.", 'start': 93.393, 'duration': 5.384}, {'end': 105, 'text': "i'm going to show you both how to edit the raw xml as well as using the gui tool, which is Pretty cool.", 'start': 98.777, 'duration': 6.223}, {'end': 109.123, 'text': "Okay, so the first thing I'm going to do is I don't want Hello World to show up on there, so I'm just going to get rid of that.", 'start': 105.02, 'duration': 4.103}, {'end': 114.147, 'text': "Then I'm going to go back into Graphical Layout, and this isn't going to be the prettiest app ever designed.", 'start': 109.303, 'duration': 4.844}, {'end': 118.99, 'text': "but, like I said, what I'm trying to do here is really teach you a lot of things, and I think I can do that.", 'start': 114.147, 'duration': 4.843}], 'summary': 'Demonstrating editing raw xml and using gui tool for app design.', 'duration': 25.597, 'max_score': 93.393, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ93393.jpg'}, {'end': 190.453, 'src': 'embed', 'start': 162.562, 'weight': 1, 'content': [{'end': 165.363, 'text': 'So, if I want to put in some custom strings,', 'start': 162.562, 'duration': 2.801}, {'end': 170.847, 'text': "I'm going to go into strings.xml and I'm going to come down here and click on strings.xml down here at the bottom,", 'start': 165.363, 'duration': 5.484}, {'end': 174.63, 'text': 'because I want to play around with this raw data and I want to get rid of that altogether.', 'start': 170.847, 'duration': 3.783}, {'end': 181.551, 'text': "Now I'm going to go in here and actually just start throwing in all the strings that I'm going to use for this whole entire app right now.", 'start': 174.87, 'duration': 6.681}, {'end': 182.992, 'text': "So let's just come in here.", 'start': 181.811, 'duration': 1.181}, {'end': 188.273, 'text': "And the very first thing I'm going to do is I know I want to have a little text view.", 'start': 183.412, 'duration': 4.861}, {'end': 190.453, 'text': "And it's just going to simply say Bill.", 'start': 188.813, 'duration': 1.64}], 'summary': "Custom strings are added to strings.xml for the app, starting with a text view that says 'bill.'", 'duration': 27.891, 'max_score': 162.562, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ162562.jpg'}], 'start': 0.129, 'title': 'Android app development', 'summary': 'Covers creating an android app with user interfaces like text view, edit text box, and seek bar to make a tip calculator. it also involves modifying the activity xml file, adjusting the graphical layout, and customizing strings.xml to enhance the app design and functionality.', 'chapters': [{'end': 71.096, 'start': 0.129, 'title': 'Android user interface tutorial', 'summary': 'Covers creating an android app with user interfaces, such as text view, edit text box, and seek bar, to make a tip calculator, with plans to add radio buttons and check boxes in the next part.', 'duration': 70.967, 'highlights': ['The tutorial demonstrates the use of components like text view, edit text box, and seek bar in creating a tip calculator app.', 'It also emphasizes the use of change listeners for interactive functionality.', 'The next part of the tutorial will cover additional features like radio buttons and check boxes to enable the audience to develop their own apps.']}, {'end': 181.551, 'start': 71.376, 'title': 'Creating crazy tip calc app', 'summary': 'Describes the process of creating the crazy tip calc app, including modifying the activity xml file, adjusting the graphical layout, and customizing strings.xml to enhance the app design and functionality.', 'duration': 110.175, 'highlights': ['The chapter covers modifying the activity XML file, adjusting the graphical layout, and customizing strings.xml to enhance app design and functionality.', 'The tutorial demonstrates editing the raw XML and using the GUI tool to modify the app interface, providing practical guidance for app development.', 'The instructor explains adjusting margins in the dimensions file and customizing strings in strings.xml for better app layout and user interface experience.', "The process involves adding a text view, adjusting margins, and customizing string resources to improve the app's visual presentation and user interaction."]}], 'duration': 181.422, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ129.jpg', 'highlights': ['The tutorial demonstrates the use of components like text view, edit text box, and seek bar in creating a tip calculator app.', 'The chapter covers modifying the activity XML file, adjusting the graphical layout, and customizing strings.xml to enhance app design and functionality.', 'It also emphasizes the use of change listeners for interactive functionality.', "The process involves adding a text view, adjusting margins, and customizing string resources to improve the app's visual presentation and user interaction.", 'The next part of the tutorial will cover additional features like radio buttons and check boxes to enable the audience to develop their own apps.', 'The tutorial demonstrates editing the raw XML and using the GUI tool to modify the app interface, providing practical guidance for app development.', 'The instructor explains adjusting margins in the dimensions file and customizing strings in strings.xml for better app layout and user interface experience.']}, {'end': 640.619, 'segs': [{'end': 210.763, 'src': 'embed', 'start': 181.811, 'weight': 0, 'content': [{'end': 182.992, 'text': "So let's just come in here.", 'start': 181.811, 'duration': 1.181}, {'end': 188.273, 'text': "And the very first thing I'm going to do is I know I want to have a little text view.", 'start': 183.412, 'duration': 4.861}, {'end': 190.453, 'text': "And it's just going to simply say Bill.", 'start': 188.813, 'duration': 1.64}, {'end': 193.834, 'text': "And it's going to be the bill before the tip has been added to it.", 'start': 190.513, 'duration': 3.321}, {'end': 195.134, 'text': "That's what that's going to stand for.", 'start': 193.914, 'duration': 1.22}, {'end': 197.695, 'text': "So I'm going to call this Bill Text View.", 'start': 195.154, 'duration': 2.541}, {'end': 200.255, 'text': "And let's just say I want to have Bill show up.", 'start': 198.095, 'duration': 2.16}, {'end': 203.776, 'text': "You're going to see in a second what that does if you don't remember from the past parts of the tutorial.", 'start': 200.295, 'duration': 3.481}, {'end': 210.763, 'text': "and then next to it i'm going to have an edit text box and i'm going to give that a default value of 0.0.", 'start': 204.076, 'duration': 6.687}], 'summary': "Creating a text view for 'bill' and an edit text box with default value 0.0", 'duration': 28.952, 'max_score': 181.811, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ181811.jpg'}, {'end': 244.267, 'src': 'embed', 'start': 216.749, 'weight': 2, 'content': [{'end': 220.413, 'text': "and then, next to that guy, i'm going to have an area to put the tip in.", 'start': 216.749, 'duration': 3.664}, {'end': 224.436, 'text': "so i'm just going to name this tip TextView and I'm just going to give it tip,", 'start': 220.413, 'duration': 4.023}, {'end': 229.278, 'text': "and this is just the name that's going to lie next to the box that's going to allow you to edit the text.", 'start': 224.436, 'duration': 4.842}, {'end': 233.161, 'text': "And then inside of tip, I'm going to put .", 'start': 229.599, 'duration': 3.562}, {'end': 236.463, 'text': '15, which is a default sort of tip that is often used.', 'start': 233.161, 'duration': 3.302}, {'end': 244.267, 'text': "Okay, and then underneath of that, I'm going to have my final bill, so it's going to be final bill Text view.", 'start': 236.723, 'duration': 7.544}], 'summary': 'Creating a tip calculator with default tip of 15%.', 'duration': 27.518, 'max_score': 216.749, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ216749.jpg'}, {'end': 320.666, 'src': 'heatmap', 'start': 258.016, 'weight': 5, 'content': [{'end': 260.036, 'text': "I'll leave that for a later point in time.", 'start': 258.016, 'duration': 2.02}, {'end': 260.958, 'text': 'Eh, what the heck.', 'start': 260.458, 'duration': 0.5}, {'end': 262.623, 'text': "I'm going to use this eventually.", 'start': 261.462, 'duration': 1.161}, {'end': 263.804, 'text': "I'm not going to use it right now though.", 'start': 262.663, 'duration': 1.141}, {'end': 270.168, 'text': "So I'm also going to have a little thing here that is going to allow you to change the tip using a seek bar,", 'start': 264.084, 'duration': 6.084}, {'end': 271.789, 'text': "which you're going to see what that is in a second.", 'start': 270.168, 'duration': 1.621}, {'end': 276.752, 'text': "And I'm just going to call that change tip text view, but I'm not going to create it quite yet.", 'start': 271.949, 'duration': 4.803}, {'end': 283.174, 'text': "alright. so now I'm back over here inside of the activity XML file, and I have this guy selected.", 'start': 276.932, 'duration': 6.242}, {'end': 288.495, 'text': "so I'm gonna come over here and I'd like to give this a name that has a little bit of meaning to it.", 'start': 283.174, 'duration': 5.321}, {'end': 290.476, 'text': 'so not too much meaning.', 'start': 288.495, 'duration': 1.981}, {'end': 294.317, 'text': "let's just call it bill text view and get rid of this one on there,", 'start': 290.476, 'duration': 3.841}, {'end': 298.418, 'text': "and then just click like this and it's gonna say do you want to update all my references?", 'start': 294.317, 'duration': 4.101}, {'end': 302.699, 'text': "and I'm gonna say yes, and then it's gonna say okay, alright, so I clicked on that.", 'start': 298.418, 'duration': 4.281}, {'end': 305.94, 'text': 'well, now, over here in the text view area, next to text,', 'start': 302.699, 'duration': 3.241}, {'end': 311.602, 'text': "I'm going to want to pull a string out of my strings.xml file and it's automatically going to pop up inside of here.", 'start': 306.3, 'duration': 5.302}, {'end': 315.744, 'text': "And what I want to put inside of there is the string that's attached to Bill text view.", 'start': 311.842, 'duration': 3.902}, {'end': 316.964, 'text': 'So just double-click on it.', 'start': 315.964, 'duration': 1}, {'end': 320.666, 'text': "All right, and you're now going to see there is our app, and it now says Bill.", 'start': 317.184, 'duration': 3.482}], 'summary': 'Developing an app with seek bar functionality and xml file modifications.', 'duration': 62.65, 'max_score': 258.016, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ258016.jpg'}, {'end': 324.807, 'src': 'embed', 'start': 298.418, 'weight': 4, 'content': [{'end': 302.699, 'text': "and I'm gonna say yes, and then it's gonna say okay, alright, so I clicked on that.", 'start': 298.418, 'duration': 4.281}, {'end': 305.94, 'text': 'well, now, over here in the text view area, next to text,', 'start': 302.699, 'duration': 3.241}, {'end': 311.602, 'text': "I'm going to want to pull a string out of my strings.xml file and it's automatically going to pop up inside of here.", 'start': 306.3, 'duration': 5.302}, {'end': 315.744, 'text': "And what I want to put inside of there is the string that's attached to Bill text view.", 'start': 311.842, 'duration': 3.902}, {'end': 316.964, 'text': 'So just double-click on it.', 'start': 315.964, 'duration': 1}, {'end': 320.666, 'text': "All right, and you're now going to see there is our app, and it now says Bill.", 'start': 317.184, 'duration': 3.482}, {'end': 321.446, 'text': "So that's good.", 'start': 320.686, 'duration': 0.76}, {'end': 324.047, 'text': 'Well, now I want to put in my little edit text field.', 'start': 321.626, 'duration': 2.421}, {'end': 324.807, 'text': 'So to do that,', 'start': 324.127, 'duration': 0.68}], 'summary': 'Instructions for adding strings to an app interface.', 'duration': 26.389, 'max_score': 298.418, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ298418.jpg'}, {'end': 377.18, 'src': 'embed', 'start': 348.695, 'weight': 1, 'content': [{'end': 352.756, 'text': "So if I want to change the size of this, I'm going to come down here where it says EMS.", 'start': 348.695, 'duration': 4.061}, {'end': 355.356, 'text': "And in this situation, I'm just going to put 5.", 'start': 353.036, 'duration': 2.32}, {'end': 356.156, 'text': 'See how that works.', 'start': 355.356, 'duration': 0.8}, {'end': 360.057, 'text': 'Bounce back over here, and you can see that it is indeed smaller.', 'start': 356.396, 'duration': 3.661}, {'end': 363.157, 'text': "And let's see if I can move this bill around a little bit more.", 'start': 360.557, 'duration': 2.6}, {'end': 364.278, 'text': 'Eh, not really.', 'start': 363.658, 'duration': 0.62}, {'end': 365.338, 'text': "That's not bad.", 'start': 364.798, 'duration': 0.54}, {'end': 369.078, 'text': 'Okay, so now that I have that selected this Edit Text field,', 'start': 365.578, 'duration': 3.5}, {'end': 373.299, 'text': "I'm going to bounce over here again and I'm going to give this a name that has a little bit more meaning to it.", 'start': 369.078, 'duration': 4.221}, {'end': 377.18, 'text': "So I'm going to call it Bill Edit Text, and then get rid of the 1 again.", 'start': 373.319, 'duration': 3.861}], 'summary': "Changing the size to 5 made the text smaller and renaming it to 'bill edit text'.", 'duration': 28.485, 'max_score': 348.695, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ348695.jpg'}, {'end': 455.478, 'src': 'embed', 'start': 425.138, 'weight': 3, 'content': [{'end': 428.339, 'text': 'i kind of glossed over this little editable text area.', 'start': 425.138, 'duration': 3.201}, {'end': 430.139, 'text': "there's a couple things i want to do with that.", 'start': 428.339, 'duration': 1.8}, {'end': 436.682, 'text': "okay, well, i wanted to find input type for one thing, so let's click on that And all these different input types show up.", 'start': 430.139, 'duration': 6.543}, {'end': 438.804, 'text': "Hopefully I'm not making you seasick with all this zooming.", 'start': 436.822, 'duration': 1.982}, {'end': 444.049, 'text': "And I'm going to come down to number decimal because it's going to represent money and that's number decimal.", 'start': 439.025, 'duration': 5.024}, {'end': 445.351, 'text': 'Okay, so I have that set.', 'start': 444.23, 'duration': 1.121}, {'end': 448.374, 'text': 'And you can see that error also went away that was on there previously.', 'start': 445.531, 'duration': 2.843}, {'end': 451.697, 'text': "And at this point in time, I'm not really going to mess around with anything else.", 'start': 448.674, 'duration': 3.023}, {'end': 455.478, 'text': "I'm going to, however, put a little edit text area for my tip.", 'start': 452.037, 'duration': 3.441}], 'summary': 'Demonstrated setting input type to number decimal for money representation.', 'duration': 30.34, 'max_score': 425.138, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ425138.jpg'}, {'end': 650.286, 'src': 'embed', 'start': 622.721, 'weight': 6, 'content': [{'end': 625.207, 'text': "And guess what it's going to be? It's going to be number decimal again.", 'start': 622.721, 'duration': 2.486}, {'end': 626.691, 'text': 'So click on that and hit OK.', 'start': 625.227, 'duration': 1.464}, {'end': 630.541, 'text': "Well, now that we have all that set up, let's go in and start writing ourselves some code.", 'start': 626.832, 'duration': 3.709}, {'end': 636.536, 'text': "And to do that, we're going to go into our source folder, which is up here.", 'start': 631.892, 'duration': 4.644}, {'end': 637.496, 'text': 'Click on Source.', 'start': 636.776, 'duration': 0.72}, {'end': 640.619, 'text': "This is going to open, and there's crazytipcalc.java.", 'start': 637.657, 'duration': 2.962}, {'end': 644.002, 'text': "And then I'm just going to go through here, line through line, and just create everything.", 'start': 640.819, 'duration': 3.183}, {'end': 650.286, 'text': 'So what do I need to do? And just so you know, what I have actually sitting in front of me is all of this stuff.', 'start': 644.322, 'duration': 5.964}], 'summary': 'Setting up source folder to write code for crazytipcalc.java.', 'duration': 27.565, 'max_score': 622.721, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ622721.jpg'}], 'start': 181.811, 'title': 'Android app ui design and setup', 'summary': 'Details the process of designing an android app ui, including adding text views, edit text boxes, default values, and planning for seek bar implementation. it also covers naming, sizing elements, setting input types, and linking elements to strings and values.', 'chapters': [{'end': 276.752, 'start': 181.811, 'title': 'Android app ui design', 'summary': 'Illustrates the process of designing an android app ui, including adding text views, edit text boxes, and default values, as well as planning for future implementation of a seek bar for changing the tip.', 'duration': 94.941, 'highlights': ['The process involves adding text views for the bill, tip, and final bill, as well as an edit text box for the bill and a default value of 0.0, with further plans to incorporate a seek bar for changing the tip.', 'The default tip of .15 is set for the tip text view, providing a starting point for users to modify the tip percentage.', "The chapter also hints at the future inclusion of a seek bar for changing the tip, showcasing the author's anticipation of further development in the tutorial."]}, {'end': 640.619, 'start': 276.932, 'title': 'Android ui design and setup', 'summary': 'Covers the process of designing and setting up an android user interface, including naming and sizing elements, setting input types, and linking elements to strings and values.', 'duration': 363.687, 'highlights': ["By renaming and resizing elements, such as the 'bill text view' and 'edit text field', the user demonstrates the process of giving meaningful names and adjusting sizes, exemplified by setting the 'EMS' to 5, resulting in a smaller size.", "The user sets the input type of the 'tip edit text area' to 'number decimal' to represent money, effectively addressing the functionality requirement of the field.", "The process of linking elements to specific strings, such as attaching the string 'Bill text view' to the text view, is demonstrated, showcasing the practical application of linking UI elements to relevant content.", "The user demonstrates the task of writing code by accessing the 'source folder' and navigating to 'crazytipcalc.java' to proceed with the coding aspect of the Android application development."]}], 'duration': 458.808, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ181811.jpg', 'highlights': ['The process involves adding text views for the bill, tip, and final bill, as well as an edit text box for the bill and a default value of 0.0, with further plans to incorporate a seek bar for changing the tip.', "By renaming and resizing elements, such as the 'bill text view' and 'edit text field', the user demonstrates the process of giving meaningful names and adjusting sizes, exemplified by setting the 'EMS' to 5, resulting in a smaller size.", 'The default tip of .15 is set for the tip text view, providing a starting point for users to modify the tip percentage.', "The user sets the input type of the 'tip edit text area' to 'number decimal' to represent money, effectively addressing the functionality requirement of the field.", "The process of linking elements to specific strings, such as attaching the string 'Bill text view' to the text view, is demonstrated, showcasing the practical application of linking UI elements to relevant content.", "The chapter also hints at the future inclusion of a seek bar for changing the tip, showcasing the author's anticipation of further development in the tutorial.", "The user demonstrates the task of writing code by accessing the 'source folder' and navigating to 'crazytipcalc.java' to proceed with the coding aspect of the Android application development."]}, {'end': 883.464, 'segs': [{'end': 704.463, 'src': 'embed', 'start': 677.578, 'weight': 0, 'content': [{'end': 682.279, 'text': "So to do that, I'm just going to go private static final string.", 'start': 677.578, 'duration': 4.701}, {'end': 685.56, 'text': "And one thing that I'm going to want is the final bill.", 'start': 682.739, 'duration': 2.821}, {'end': 687.32, 'text': "That's one of the things on that screen.", 'start': 685.76, 'duration': 1.56}, {'end': 689.641, 'text': "And what I'm going to set it for is total bill.", 'start': 687.52, 'duration': 2.121}, {'end': 690.654, 'text': 'like that.', 'start': 690.154, 'duration': 0.5}, {'end': 697.018, 'text': "So this is going to be saved if they jump out of my app and then jump back into it or change or whatever they're going to do.", 'start': 690.894, 'duration': 6.124}, {'end': 701.781, 'text': 'I would also like to be able to save whatever the current tip is.', 'start': 697.198, 'duration': 4.583}, {'end': 704.463, 'text': "So current tip and there that's saved.", 'start': 701.801, 'duration': 2.662}], 'summary': 'Creating a method to save total bill and current tip for app usability.', 'duration': 26.885, 'max_score': 677.578, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ677578.jpg'}, {'end': 755.297, 'src': 'embed', 'start': 718.87, 'weight': 3, 'content': [{'end': 721.451, 'text': "I'm just going to call this private double.", 'start': 718.87, 'duration': 2.581}, {'end': 725.272, 'text': "And I'm just going to give it a different name, bill before tip.", 'start': 721.851, 'duration': 3.421}, {'end': 729.434, 'text': "And that, of course, is going to hold the user's bill before a tip is added to it.", 'start': 725.592, 'duration': 3.842}, {'end': 737.244, 'text': "and I'm also going to store the tip amount and I'm also going to store my final bill.", 'start': 729.858, 'duration': 7.386}, {'end': 738.405, 'text': 'so those are all set up.', 'start': 737.244, 'duration': 1.161}, {'end': 741.087, 'text': "so it's just the same three things that you see over here.", 'start': 738.405, 'duration': 2.682}, {'end': 742.268, 'text': "that's what I'm saving.", 'start': 741.087, 'duration': 1.181}, {'end': 744.389, 'text': "what's in these three boxes right there?", 'start': 742.268, 'duration': 2.121}, {'end': 745.95, 'text': "so let's just jump back here.", 'start': 744.389, 'duration': 1.561}, {'end': 755.297, 'text': "another thing I'm gonna need access to are the little editable text boxes, which are these guys right here and right here and right here.", 'start': 745.95, 'duration': 9.347}], 'summary': 'Creating variables for bill before tip, tip amount, and final bill.', 'duration': 36.427, 'max_score': 718.87, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ718870.jpg'}, {'end': 820.27, 'src': 'embed', 'start': 778.025, 'weight': 1, 'content': [{'end': 781.99, 'text': "There are situations where you'll want the TextViews, but in this situation, I do not.", 'start': 778.025, 'duration': 3.965}, {'end': 787.577, 'text': "And I'm just going to call this TipAmount, and get rid of this guy, and call this FinalBill.", 'start': 782.29, 'duration': 5.287}, {'end': 788.318, 'text': 'So there we go.', 'start': 787.597, 'duration': 0.721}, {'end': 789.399, 'text': 'I have all those defined.', 'start': 788.338, 'duration': 1.061}, {'end': 795.466, 'text': "Now, when do I actually initialize those inside of my code? In onCreate, whenever this thing's set up.", 'start': 789.659, 'duration': 5.807}, {'end': 797.869, 'text': 'So Just going to skip into this guy.', 'start': 795.646, 'duration': 2.223}, {'end': 807.638, 'text': 'Now, the very first thing I want to do here is to check if the app has just started or if it has been restored from another state.', 'start': 798.149, 'duration': 9.489}, {'end': 812.963, 'text': 'To do that, we go if saved, instance, state is equal to null.', 'start': 807.939, 'duration': 5.024}, {'end': 817.948, 'text': "If it's equal to null, well, that means we are actually just starting with this guy.", 'start': 813.344, 'duration': 4.604}, {'end': 820.27, 'text': "In that situation, I'm going to go build before tip.", 'start': 818.188, 'duration': 2.082}], 'summary': 'Textviews renamed, initialized in oncreate, checking app state for restoration.', 'duration': 42.245, 'max_score': 778.025, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ778025.jpg'}, {'end': 872.019, 'src': 'embed', 'start': 846.01, 'weight': 4, 'content': [{'end': 851.052, 'text': "except I'm going to be getting them from these values that I have saved up here, these guys.", 'start': 846.01, 'duration': 5.042}, {'end': 852.632, 'text': "So they're going to hold that.", 'start': 851.472, 'duration': 1.16}, {'end': 862.095, 'text': 'And if I come back from another state or another app or whatever, I can go saved, instance, state, get the double.', 'start': 852.892, 'duration': 9.203}, {'end': 865.517, 'text': "And then it's going to be bill without tip.", 'start': 862.496, 'duration': 3.021}, {'end': 866.337, 'text': 'Pretty useful.', 'start': 865.717, 'duration': 0.62}, {'end': 869.418, 'text': "And then I'm going to do the same thing pretty much for everything else.", 'start': 866.657, 'duration': 2.761}, {'end': 872.019, 'text': "So instead of that, I'm going to throw that in there.", 'start': 869.878, 'duration': 2.141}], 'summary': 'Using saved values to calculate bill price and make the process more efficient.', 'duration': 26.009, 'max_score': 846.01, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ846010.jpg'}], 'start': 640.819, 'title': 'Android app initialization and state management', 'summary': 'Delves into initializing variables for a tip calculator app, handling app states through saved instance state, and discussing the creation of constants for saving data in an android app, including specific data items such as total bill, current tip, bill without tip, bill before tip, tip amount, and final bill.', 'chapters': [{'end': 761.023, 'start': 640.819, 'title': 'Creating constants and saving data', 'summary': 'Discusses the process of creating constants for saving data such as total bill, current tip, bill without tip, bill before tip, tip amount, and final bill in an android app, while also addressing the need to access and manipulate editable text boxes.', 'duration': 120.204, 'highlights': ['The chapter covers the creation of constants for saving data such as total bill, current tip, bill without tip, bill before tip, tip amount, and final bill in an Android app.', 'It addresses the need to access and manipulate editable text boxes to retrieve and save values in them.', 'The process involves setting up private static final strings for constants like total bill and current tip, as well as private doubles for bill before tip, tip amount, and final bill.', 'The content emphasizes the importance of saving data to ensure it is retained even if the app is shut down and reopened or if changes are made.']}, {'end': 883.464, 'start': 761.263, 'title': 'Android app initialization and state management', 'summary': 'Discusses the initialization of variables for a tip calculator app in the oncreate method and the handling of app states through saved instance state, including setting default values and retrieving saved values.', 'duration': 122.201, 'highlights': ['Initialization of variables for a tip calculator app in the onCreate method.', 'Handling of app states through saved instance state, including setting default values and retrieving saved values.', 'Setting default values for bill, tip amount, and final bill when the app has just started.', 'Retrieving saved values for bill, tip amount, and final bill when the app has been restored from another state.']}], 'duration': 242.645, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ640819.jpg', 'highlights': ['The chapter covers the creation of constants for saving data such as total bill, current tip, bill without tip, bill before tip, tip amount, and final bill in an Android app.', 'Initialization of variables for a tip calculator app in the onCreate method.', 'Handling of app states through saved instance state, including setting default values and retrieving saved values.', 'The process involves setting up private static final strings for constants like total bill and current tip, as well as private doubles for bill before tip, tip amount, and final bill.', 'Retrieving saved values for bill, tip amount, and final bill when the app has been restored from another state.']}, {'end': 1339.107, 'segs': [{'end': 927.965, 'src': 'embed', 'start': 883.764, 'weight': 0, 'content': [{'end': 890.447, 'text': "Now what I want to do after I'm done with this and I have those values set is initialize all my little edit text boxes.", 'start': 883.764, 'duration': 6.683}, {'end': 892.968, 'text': "Well, let's not think too much about this.", 'start': 890.827, 'duration': 2.141}, {'end': 894.189, 'text': 'Here they are by name.', 'start': 893.028, 'duration': 1.161}, {'end': 897.429, 'text': "So let's just copy them, throw them down here, right like that.", 'start': 894.628, 'duration': 2.801}, {'end': 899.17, 'text': 'And now I want to initialize them.', 'start': 897.79, 'duration': 1.38}, {'end': 900.671, 'text': "To do so, I'm going to go equals.", 'start': 899.23, 'duration': 1.441}, {'end': 904.693, 'text': 'They need to be cast into an edit text object.', 'start': 901.071, 'duration': 3.622}, {'end': 909.635, 'text': 'And then if I want to find them, I go find view by ID.', 'start': 905.033, 'duration': 4.602}, {'end': 917.519, 'text': 'Remember I said before that the r.java file actually has all the IDs for every single component you ever make.', 'start': 909.796, 'duration': 7.723}, {'end': 919.861, 'text': 'Well, I need to get them from that.', 'start': 917.599, 'duration': 2.262}, {'end': 922.542, 'text': 'And how you do that is just go r.java.', 'start': 920.241, 'duration': 2.301}, {'end': 927.965, 'text': 'ID, and then follow it with whatever the ID was that you set for this.', 'start': 923.002, 'duration': 4.963}], 'summary': 'Initializing edit text boxes by finding and setting values from r.java file', 'duration': 44.201, 'max_score': 883.764, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ883764.jpg'}, {'end': 1037.73, 'src': 'heatmap', 'start': 948.479, 'weight': 3, 'content': [{'end': 951.56, 'text': "Let's get rid of this because we don't want to have that on there.", 'start': 948.479, 'duration': 3.081}, {'end': 954.602, 'text': "And then I'm going to do the same for the other edit text boxes.", 'start': 951.78, 'duration': 2.822}, {'end': 955.562, 'text': 'Right like that.', 'start': 954.962, 'duration': 0.6}, {'end': 958.623, 'text': 'Except this is going to be tip edit text.', 'start': 955.822, 'duration': 2.801}, {'end': 962.925, 'text': 'And this one is going to be final bill edit text.', 'start': 959.164, 'duration': 3.761}, {'end': 963.585, 'text': 'There we go.', 'start': 963.145, 'duration': 0.44}, {'end': 964.586, 'text': 'Got those initialized.', 'start': 963.645, 'duration': 0.941}, {'end': 969.448, 'text': 'Well now what I want to do here is actually set up what is called a change listener.', 'start': 964.946, 'duration': 4.502}, {'end': 973.468, 'text': "So whenever bill before tip is going to be changed, I'm going to do it like this.", 'start': 969.867, 'duration': 3.601}, {'end': 979.951, 'text': "And to add a text listener, I'm going to go add text changed listener.", 'start': 973.908, 'duration': 6.043}, {'end': 983.912, 'text': "If you're getting lost at all, just get the code in the description.", 'start': 980.311, 'duration': 3.601}, {'end': 985.633, 'text': 'Everything is heavily commented.', 'start': 984.412, 'duration': 1.221}, {'end': 989.254, 'text': "I'm going to go bill before tip listener, right like that.", 'start': 985.833, 'duration': 3.421}, {'end': 992.475, 'text': 'Well, that means I need to create this method right here.', 'start': 989.274, 'duration': 3.201}, {'end': 995.036, 'text': "I'm going to show you how to do this inline in the next tutorial.", 'start': 992.495, 'duration': 2.541}, {'end': 1001.398, 'text': "but for right now just gonna come here and I'm gonna go private text watcher, paste bill before tip.", 'start': 995.436, 'duration': 5.962}, {'end': 1007.059, 'text': "listener is equal to new text watcher and it's saying we need some libraries.", 'start': 1001.398, 'duration': 5.661}, {'end': 1014.741, 'text': "so go, get them and then at the end here want to put a semicolon file save and then it's gonna say add unimplemented methods.", 'start': 1007.059, 'duration': 7.682}, {'end': 1016.162, 'text': 'yes, do that for me.', 'start': 1014.741, 'duration': 1.421}, {'end': 1017.362, 'text': 'and there they are now.', 'start': 1016.162, 'duration': 1.2}, {'end': 1022.064, 'text': "the first two I don't care about, after text changed And before text changed.", 'start': 1017.362, 'duration': 4.702}, {'end': 1025.805, 'text': "so I'm just going to ignore them and I'm going to focus on on text changed.", 'start': 1022.064, 'duration': 3.741}, {'end': 1031.948, 'text': 'So whenever the text is changed in the bill area before tip, I want to do a couple things.', 'start': 1026.204, 'duration': 5.744}, {'end': 1037.73, 'text': "Well, one thing that I need to do here is surround this with a try block, because there's an exception I need to check.", 'start': 1032.288, 'duration': 5.442}], 'summary': 'Setting up change listener for bill before tip to handle text changes.', 'duration': 43.996, 'max_score': 948.479, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ948479.jpg'}, {'end': 1196.234, 'src': 'embed', 'start': 1167.682, 'weight': 5, 'content': [{'end': 1172.284, 'text': 'so that means all i have to do is calculate the final bill with the tip.', 'start': 1167.682, 'duration': 4.602}, {'end': 1179.788, 'text': "and to get that i'm just going to go bill before tip and add to it bill before tip, times the tip amount.", 'start': 1172.284, 'duration': 7.504}, {'end': 1183.549, 'text': 'copy that, paste that in there, put this here and there, we are pretty cool.', 'start': 1179.788, 'duration': 3.761}, {'end': 1191.012, 'text': "and then what I want to do is, now that I have that set, well, I'd like to come in here to the final bill editable text area and change that.", 'start': 1183.549, 'duration': 7.463}, {'end': 1192.113, 'text': 'so how do I do that?', 'start': 1191.012, 'duration': 1.101}, {'end': 1196.234, 'text': 'well, I just go final bill et, which is the name of it.', 'start': 1192.113, 'duration': 4.121}], 'summary': 'Calculate final bill by adding bill before tip and tip amount.', 'duration': 28.552, 'max_score': 1167.682, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1167682.jpg'}, {'end': 1291.242, 'src': 'embed', 'start': 1259.482, 'weight': 4, 'content': [{'end': 1260.482, 'text': "Make sure I didn't create it already.", 'start': 1259.482, 'duration': 1}, {'end': 1261.003, 'text': "No, I didn't.", 'start': 1260.603, 'duration': 0.4}, {'end': 1264.206, 'text': "And it's going to have protected status.", 'start': 1261.764, 'duration': 2.442}, {'end': 1268.709, 'text': "And it's going to be called on save instance state.", 'start': 1264.686, 'duration': 4.023}, {'end': 1271.532, 'text': "And it's going to be bundle out state.", 'start': 1269.35, 'duration': 2.182}, {'end': 1273.113, 'text': "You don't need to memorize all this stuff.", 'start': 1271.772, 'duration': 1.341}, {'end': 1274.194, 'text': 'Just copy and paste the code.', 'start': 1273.133, 'duration': 1.061}, {'end': 1279.476, 'text': 'Now this is going to be called, this method is going to be called anytime the device changes in some way.', 'start': 1274.554, 'duration': 4.922}, {'end': 1285.779, 'text': "For example, if it's one of those old style phones where the keyboard pops out, it's going to be grabbed and updated.", 'start': 1279.696, 'duration': 6.083}, {'end': 1291.242, 'text': 'Or if the device is rotated, or if we switch from another app to back to this one.', 'start': 1286.1, 'duration': 5.142}], 'summary': "Creating a method 'onsaveinstancestate' with protected status, to handle device changes and update accordingly.", 'duration': 31.76, 'max_score': 1259.482, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1259482.jpg'}], 'start': 883.764, 'title': 'Initializing edittext boxes and setting up change listeners', 'summary': 'Discusses initializing edittext boxes from r.java file and setting up change listeners for text fields, demonstrating the use of text watchers and bundle to save and retrieve data, with a focus on updating the tip amount and final bill.', 'chapters': [{'end': 927.965, 'start': 883.764, 'title': 'Initializing edittext boxes from r.java file', 'summary': 'Discusses the process of initializing multiple edit text boxes in an android application by utilizing r.java file to retrieve their ids and casting them into edit text objects.', 'duration': 44.201, 'highlights': ['The r.java file contains all the IDs for every single component in the Android application.', 'The process involves initializing multiple edit text boxes by retrieving their IDs from the r.java file and casting them into edit text objects.', 'The initialization of edit text boxes is achieved by finding the view by ID and setting the appropriate IDs that were previously defined.']}, {'end': 1339.107, 'start': 928.286, 'title': 'Setting up change listeners and saving state', 'summary': 'Covers setting up change listeners for text fields, initializing values, and saving state for the app, also demonstrating the use of text watchers and bundle to save and retrieve data, with a focus on updating the tip amount and final bill.', 'duration': 410.821, 'highlights': ['The chapter covers setting up change listeners for text fields, which include bill before tip, tip amount, and final bill, and demonstrates the use of text watchers to monitor text changes.', 'The transcript details the process of initializing values for different edit text boxes and setting up a change listener to monitor the bill before tip, showcasing the use of text watchers and exception handling.', 'The speaker explains the process of updating the tip amount and final bill by retrieving and converting text input from the user, performing calculations, and displaying the result with two decimal places in the final bill editable text area.', "The chapter also focuses on saving the app's state by creating a method called on save instance state, which uses a bundle to store the values of total bill, current tip, and bill before tip, demonstrating the use of bundle to save and retrieve data."]}], 'duration': 455.343, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ883764.jpg', 'highlights': ['The r.java file contains all the IDs for every single component in the Android application.', 'The process involves initializing multiple edit text boxes by retrieving their IDs from the r.java file and casting them into edit text objects.', 'The initialization of edit text boxes is achieved by finding the view by ID and setting the appropriate IDs that were previously defined.', 'The chapter covers setting up change listeners for text fields, which include bill before tip, tip amount, and final bill, and demonstrates the use of text watchers to monitor text changes.', "The chapter also focuses on saving the app's state by creating a method called on save instance state, which uses a bundle to store the values of total bill, current tip, and bill before tip, demonstrating the use of bundle to save and retrieve data.", 'The speaker explains the process of updating the tip amount and final bill by retrieving and converting text input from the user, performing calculations, and displaying the result with two decimal places in the final bill editable text area.', 'The transcript details the process of initializing values for different edit text boxes and setting up a change listener to monitor the bill before tip, showcasing the use of text watchers and exception handling.']}, {'end': 1664.974, 'segs': [{'end': 1389.319, 'src': 'embed', 'start': 1351.817, 'weight': 0, 'content': [{'end': 1357.36, 'text': "Make sure inside your emulator, if you're planning on trying to use a keyboard, click on this guy right here.", 'start': 1351.817, 'duration': 5.543}, {'end': 1358.52, 'text': "I'm going to go edit.", 'start': 1357.38, 'duration': 1.14}, {'end': 1362.943, 'text': 'Make sure that hardware keyboard present is not checked.', 'start': 1358.781, 'duration': 4.162}, {'end': 1366.425, 'text': "Otherwise, you're going to get an error if you try to open up the keyboard.", 'start': 1363.403, 'duration': 3.022}, {'end': 1367.805, 'text': "So make sure that it's set that way.", 'start': 1366.445, 'duration': 1.36}, {'end': 1370.967, 'text': "If you've watched the other parts of my tutorial, you understand what's going on there.", 'start': 1368.105, 'duration': 2.862}, {'end': 1376.03, 'text': "And I was actually going to skip over, just end this tutorial, but you know what I'm going to do?", 'start': 1371.167, 'duration': 4.863}, {'end': 1380.233, 'text': "I'm going to go in here for you hardcore guys that really like long tutorials.", 'start': 1376.31, 'duration': 3.923}, {'end': 1383.895, 'text': "I'm actually going to go in here and create the seek bar just for the heck of it.", 'start': 1380.273, 'duration': 3.622}, {'end': 1385.576, 'text': "So let's just try to do this quickly.", 'start': 1384.035, 'duration': 1.541}, {'end': 1387.698, 'text': "I'm going to click on form widgets.", 'start': 1385.596, 'duration': 2.102}, {'end': 1389.319, 'text': "I'm going to come into text view.", 'start': 1387.838, 'duration': 1.481}], 'summary': 'In the emulator, ensure hardware keyboard is unchecked to avoid errors when opening it. seek bar creation also demonstrated.', 'duration': 37.502, 'max_score': 1351.817, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1351817.jpg'}, {'end': 1451.527, 'src': 'embed', 'start': 1424.376, 'weight': 3, 'content': [{'end': 1429.118, 'text': 'And then for this guy, I want to set its progress to 15.', 'start': 1424.376, 'duration': 4.742}, {'end': 1430.238, 'text': "So that's what this is.", 'start': 1429.118, 'duration': 1.12}, {'end': 1434.46, 'text': "So I'm going to just click on progress over here and click on this.", 'start': 1430.838, 'duration': 3.622}, {'end': 1436.52, 'text': "And I'm going to set this to 15.", 'start': 1434.64, 'duration': 1.88}, {'end': 1438.641, 'text': "Actually, it's rather than defining that 15.", 'start': 1436.52, 'duration': 2.121}, {'end': 1445.144, 'text': "I'm going to click on this, scroll away to the bottom and go Android progress is equal to 15.", 'start': 1438.641, 'duration': 6.503}, {'end': 1449.065, 'text': "And that's just going to move it over based off of my 15%.", 'start': 1445.144, 'duration': 3.921}, {'end': 1451.527, 'text': 'back over there and you might notice that it moved a little bit.', 'start': 1449.065, 'duration': 2.462}], 'summary': 'Setting progress to 15% moves the android interface accordingly.', 'duration': 27.151, 'max_score': 1424.376, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1424376.jpg'}, {'end': 1535.719, 'src': 'embed', 'start': 1513.837, 'weight': 4, 'content': [{'end': 1522.256, 'text': 'And inside of it, tip, seek bar listener right like that, and of course i need to make this just scroll way down to the bottom, right here,', 'start': 1513.837, 'duration': 8.419}, {'end': 1529.597, 'text': "and then inside of this, i'm going to call this private and then we're going to go on seek bar change listener.", 'start': 1522.256, 'duration': 7.341}, {'end': 1535.719, 'text': "give it the name that we defined above is equal to new, and then we're going to go on seek bar change listener again.", 'start': 1529.597, 'duration': 6.122}], 'summary': 'Setting up a seek bar listener for scroll functionality.', 'duration': 21.882, 'max_score': 1513.837, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1513837.jpg'}, {'end': 1579.809, 'src': 'embed', 'start': 1555.888, 'weight': 2, 'content': [{'end': 1564.814, 'text': 'So under on progress changed, which is a fancy word for you just change the seek bar, I need to get the value that is set for my seek bar.', 'start': 1555.888, 'duration': 8.926}, {'end': 1568.296, 'text': "And I'm going to save that in tip amount, because that's what it is.", 'start': 1565.354, 'duration': 2.942}, {'end': 1569.757, 'text': 'And to get it, I go tip.', 'start': 1568.776, 'duration': 0.981}, {'end': 1571.606, 'text': 'seek bar.', 'start': 1570.586, 'duration': 1.02}, {'end': 1572.787, 'text': 'get progress.', 'start': 1571.606, 'duration': 1.181}, {'end': 1579.809, 'text': "see, remember, good progress is a way of grabbing information from a seek bar and i'll multiply it times 0.01.", 'start': 1572.787, 'duration': 7.022}], 'summary': 'Retrieve the seek bar value and save it as the tip amount for further calculation.', 'duration': 23.921, 'max_score': 1555.888, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1555888.jpg'}, {'end': 1664.233, 'src': 'embed', 'start': 1639.403, 'weight': 1, 'content': [{'end': 1645.828, 'text': "and let's try typing in 12, and you can see the tip automatically is set for 15, and it automatically calculates that.", 'start': 1639.403, 'duration': 6.425}, {'end': 1650.892, 'text': "and then, if I want to use the seek bar, I can change that and it'll automatically change the tip as well.", 'start': 1645.828, 'duration': 5.064}, {'end': 1653.356, 'text': 'So that was one heck of a crazy tutorial.', 'start': 1651.112, 'duration': 2.244}, {'end': 1657.182, 'text': 'If you want to see all the code, if you want to download the app, if you want to do whatever you want,', 'start': 1653.376, 'duration': 3.806}, {'end': 1659.225, 'text': "all of it's available in a link underneath the description.", 'start': 1657.182, 'duration': 2.043}, {'end': 1661.709, 'text': 'Please leave your questions or comments below.', 'start': 1659.385, 'duration': 2.324}, {'end': 1664.233, 'text': "In the next part of the tutorial, I'm going to add some extra features to this.", 'start': 1661.749, 'duration': 2.484}], 'summary': 'The tutorial demonstrates automatic tip calculation and seeks bar functionality, with code and app available for download.', 'duration': 24.83, 'max_score': 1639.403, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1639403.jpg'}], 'start': 1339.448, 'title': 'Seek bar in android', 'summary': 'Covers creating and updating a seek bar in android app, including handling app updates, setting listeners for seek bar change, and using seek bar in a tip calculator app to enhance user experience.', 'chapters': [{'end': 1424.076, 'start': 1339.448, 'title': 'Creating seek bar in android app', 'summary': 'Covers the process of creating a seek bar in an android app, including handling app updates, emulator settings, and form widget implementation.', 'duration': 84.628, 'highlights': ['The chapter covers the process of creating a seek bar in an Android app, including handling app updates, emulator settings, and form widget implementation.', "Ensure that 'hardware keyboard present' is not checked in the emulator settings to avoid errors when opening the keyboard.", 'The tutorial includes creating a seek bar and implementing form widgets in the Android app.']}, {'end': 1555.388, 'start': 1424.376, 'title': 'Updating progress and initializing seek bar', 'summary': 'Involves updating the progress of a task to 15% and initializing a seek bar for a tutorial, including setting listeners for seek bar change. the progress of the task is set to 15%, and the seek bar is initialized with listeners for change events.', 'duration': 131.012, 'highlights': ['The progress of the task is set to 15%.', 'The seek bar is initialized with listeners for change events.']}, {'end': 1664.974, 'start': 1555.888, 'title': 'Seek bar tip calculator', 'summary': 'Demonstrates the process of updating the tip amount and calculating the final bill in a tip calculator app using a seek bar in android, automatically adjusting the tip percentage and recalculating the tip amount as the seek bar value changes, ultimately enhancing the user experience.', 'duration': 109.086, 'highlights': ['The seek bar functionality in the tip calculator app dynamically updates the tip amount and recalculates the final bill, enhancing user interactivity and experience.', "The seek bar's value is used to calculate the tip amount by multiplying it by 0.01, effectively converting it into a percentage, improving accuracy and precision.", "The tutorial showcases real-time demonstration of the seek bar's impact on the tip amount, emphasizing the seamless integration and functionality of the app for enhanced user experience."]}], 'duration': 325.526, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kkYIMZw9gzQ/pics/kkYIMZw9gzQ1339448.jpg', 'highlights': ['The tutorial includes creating a seek bar and implementing form widgets in the Android app.', 'The seek bar functionality in the tip calculator app dynamically updates the tip amount and recalculates the final bill, enhancing user interactivity and experience.', "The seek bar's value is used to calculate the tip amount by multiplying it by 0.01, effectively converting it into a percentage, improving accuracy and precision.", 'The progress of the task is set to 15%.', 'The seek bar is initialized with listeners for change events.', "Ensure that 'hardware keyboard present' is not checked in the emulator settings to avoid errors when opening the keyboard."]}], 'highlights': ['The tutorial demonstrates the use of components like text view, edit text box, and seek bar in creating a tip calculator app.', 'The chapter covers the creation of constants for saving data such as total bill, current tip, bill without tip, bill before tip, tip amount, and final bill in an Android app.', 'The process involves adding text views for the bill, tip, and final bill, as well as an edit text box for the bill and a default value of 0.0, with further plans to incorporate a seek bar for changing the tip.', 'The process involves setting up private static final strings for constants like total bill and current tip, as well as private doubles for bill before tip, tip amount, and final bill.', 'The tutorial includes creating a seek bar and implementing form widgets in the Android app.', "The process involves adding a text view, adjusting margins, and customizing string resources to improve the app's visual presentation and user interaction.", 'The process involves setting up change listeners for text fields, which include bill before tip, tip amount, and final bill, and demonstrates the use of text watchers to monitor text changes.', 'The seek bar functionality in the tip calculator app dynamically updates the tip amount and recalculates the final bill, enhancing user interactivity and experience.', "The chapter also focuses on saving the app's state by creating a method called on save instance state, which uses a bundle to store the values of total bill, current tip, and bill before tip, demonstrating the use of bundle to save and retrieve data.", "The process involves adding a text view, adjusting margins, and customizing string resources to improve the app's visual presentation and user interaction."]}