title
How to Make Android Apps 2

description
Get the Code Here : http://goo.gl/QC2LPd https://www.youtube.com/watch?v=ef-6NZjBtW0 Part 1 In this part of my how to make Android apps tutorial I will cover the following topics : strings.xml, Linear Layouts, Toasts, Event Handling, Excepting User Input, Translation, EditText, Button and a whole bunch of other topics. Android Development for Beginners : http://goo.gl/a9iLcj Install Android Studio : http://goo.gl/vBKCHU Best Android Book : http://goo.gl/uPhXFI

detail
{'title': 'How to Make Android Apps 2', 'heatmap': [{'end': 1165.64, 'start': 1125.513, 'weight': 0.874}], 'summary': "Tutorial 'how to make android apps 2' covers android app development, including linear layouts, user input, toast creation, ui design basics, layout flexibility, event handling, localization, and translation, with practical demonstrations in android studio.", 'chapters': [{'end': 35.366, 'segs': [{'end': 35.366, 'src': 'embed', 'start': 0.137, 'weight': 0, 'content': [{'end': 4.926, 'text': 'well, hello internet and welcome to part two of my tutorial series on how to make android apps.', 'start': 0.137, 'duration': 4.789}, {'end': 13.441, 'text': "today we're going to focus in on linear layouts, responding to user input and creating toast, so i have a lot to do, so let's get into it Alright.", 'start': 4.926, 'duration': 8.515}, {'end': 20.283, 'text': "so here is Android Studio and I'm going to go New Project, and this is going to be a really fun tutorial for me to make.", 'start': 13.441, 'duration': 6.842}, {'end': 28.524, 'text': "So I'm going to call this Messing Around, and everything else is going to stay exactly the same as in the last tutorial, which, if you didn't see it,", 'start': 20.503, 'duration': 8.021}, {'end': 29.925, 'text': 'you probably should watch that.', 'start': 28.524, 'duration': 1.401}, {'end': 35.366, 'text': "And we're going to click on Next and I'm going to have this be a blank activity and I'm going to click on Next.", 'start': 30.185, 'duration': 5.181}], 'summary': 'Tutorial on android app development focusing on linear layouts, user input, and toast creation.', 'duration': 35.229, 'max_score': 0.137, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus137.jpg'}], 'start': 0.137, 'title': 'Android app tutorial part 2', 'summary': 'Focuses on linear layouts, user input, and creating toast in android app development, and demonstrates creating a new project in android studio with a blank activity.', 'chapters': [{'end': 35.366, 'start': 0.137, 'title': 'Android app tutorial part 2', 'summary': 'Focuses on linear layouts, user input, and creating toast in android app development. the tutorial demonstrates creating a new project in android studio and setting up a blank activity.', 'duration': 35.229, 'highlights': ['The tutorial covers linear layouts, user input, and creating toast in Android app development.', 'The chapter demonstrates creating a new project in Android Studio.', 'The tutorial emphasizes using a blank activity in the project setup.']}], 'duration': 35.229, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus137.jpg', 'highlights': ['The tutorial covers linear layouts, user input, and creating toast in Android app development.', 'The chapter demonstrates creating a new project in Android Studio.', 'The tutorial emphasizes using a blank activity in the project setup.']}, {'end': 311.918, 'segs': [{'end': 60.69, 'src': 'embed', 'start': 36.167, 'weight': 3, 'content': [{'end': 43.173, 'text': "And then I'm going to come up here and I'm going to leave the main Java class named MainActivity and the layout to be ActivityMain.", 'start': 36.167, 'duration': 7.006}, {'end': 47.277, 'text': "Oh, and we're also going to cover translation and things like that,", 'start': 43.393, 'duration': 3.884}, {'end': 53.843, 'text': "so that we'll be able to also handle or our app will automatically adjust and be able to work with different languages.", 'start': 47.277, 'duration': 6.566}, {'end': 55.185, 'text': 'Forgot to say I was going to cover that.', 'start': 53.903, 'duration': 1.282}, {'end': 57.527, 'text': "And I'm going to cover a whole bunch of other different things I didn't mention.", 'start': 55.205, 'duration': 2.322}, {'end': 60.69, 'text': "So let's just wait for Gradle to build and then we'll be able to get into it.", 'start': 57.707, 'duration': 2.983}], 'summary': 'Covering java class, layout, translation, and app adjustments for different languages.', 'duration': 24.523, 'max_score': 36.167, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus36167.jpg'}, {'end': 130.154, 'src': 'embed', 'start': 93.949, 'weight': 0, 'content': [{'end': 96.87, 'text': "And we're going to be playing around with horizontal and vertical and everything else.", 'start': 93.949, 'duration': 2.921}, {'end': 99.111, 'text': 'And you can see everything is all set up there.', 'start': 97.25, 'duration': 1.861}, {'end': 102.872, 'text': "Now I'm also going to want to add another text view inside of here.", 'start': 99.251, 'duration': 3.621}, {'end': 104.533, 'text': "And I'm going to zoom in.", 'start': 103.352, 'duration': 1.181}, {'end': 106.734, 'text': "And it's pretty much going to do everything for you.", 'start': 104.833, 'duration': 1.901}, {'end': 108.995, 'text': "Just type in T and it's going to come up here.", 'start': 106.774, 'duration': 2.221}, {'end': 110.995, 'text': 'You can see text view is already highlighted.', 'start': 109.035, 'duration': 1.96}, {'end': 113.516, 'text': 'You just hit enter and it creates the text view for you.', 'start': 111.015, 'duration': 2.501}, {'end': 116.638, 'text': "And you can come over here and we're going to say wrap content.", 'start': 113.736, 'duration': 2.902}, {'end': 119.138, 'text': 'And you can see wrap content is right there.', 'start': 116.938, 'duration': 2.2}, {'end': 123, 'text': 'So I can just type in a W, hit that, type in another W, hit that.', 'start': 119.419, 'duration': 3.581}, {'end': 130.154, 'text': "Now, basically, what wrap content means is it's going to cause the widgets on the screen to become either shorter or longer,", 'start': 123.24, 'duration': 6.914}], 'summary': 'Demonstration of setting up text view with wrap content for screen widgets.', 'duration': 36.205, 'max_score': 93.949, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus93949.jpg'}, {'end': 257.805, 'src': 'embed', 'start': 233.843, 'weight': 2, 'content': [{'end': 241.873, 'text': "Now, layout weight is going to consider the amount of space that's needed for each element and then divide up the space on our screen.", 'start': 233.843, 'duration': 8.03}, {'end': 246.699, 'text': 'Now, since the second widget is so much bigger than the other two.', 'start': 242.073, 'duration': 4.626}, {'end': 250.984, 'text': "this is going to cause some different problems for us, and we're just going to come in here and we'll explore that.", 'start': 246.699, 'duration': 4.285}, {'end': 255.345, 'text': "So I'm going to go into the very first Hello World text view that we have here.", 'start': 251.144, 'duration': 4.201}, {'end': 257.805, 'text': "And I'm going to type out layout weight.", 'start': 255.365, 'duration': 2.44}], 'summary': 'Layout weight distributes space among elements, causing problems with size discrepancies.', 'duration': 23.962, 'max_score': 233.843, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus233843.jpg'}], 'start': 36.167, 'title': 'Android app development', 'summary': "Covers changing layout from relative to linear, setting orientation to horizontal, adding a text view with 'wrap content' functionality, and explaining the use of layout weight to divide space on the screen, showing its effect on text view alignment.", 'chapters': [{'end': 150.526, 'start': 36.167, 'title': 'Android app development: layout and translation', 'summary': "Covers changing layout from relative to linear, setting orientation to horizontal, and adding a text view with 'wrap content' functionality for dynamic adjustment of widgets based on content length.", 'duration': 114.359, 'highlights': ["The chapter covers changing layout from relative to linear, setting orientation to horizontal, and adding a text view with 'wrap content' functionality. The tutorial demonstrates changing the layout from relative to linear, setting orientation to horizontal, and adding a text view with 'wrap content' functionality to dynamically adjust widgets based on content length.", "The tutorial emphasizes the functionality of 'wrap content' for dynamic adjustment of widgets based on content length. The tutorial explains that 'wrap content' causes the widgets on the screen to become either shorter or longer based on content length, and it may add a new line or a new widget, dynamically adjusting the layout.", 'The tutorial briefly mentions handling translation for app adaptation to different languages. The tutorial briefly mentions covering translation for app adaptation to different languages, indicating a comprehensive coverage of various aspects of Android app development.']}, {'end': 311.918, 'start': 150.526, 'title': 'Android app layout explained', 'summary': 'Explains the layout of an android app, demonstrating the behavior of text views with wrap content, the impact of switching to vertical layout, and the use of layout weight to divide space on the screen, showing how it affects text view alignment and space distribution.', 'duration': 161.392, 'highlights': ['Demonstrates the behavior of text views with wrap content and how it affects the display on the screen. The chapter shows how the wrap content attribute affects the display of text views on the screen, illustrating its impact on the layout.', 'Explains the impact of switching to vertical layout and the resulting display of text views. The chapter demonstrates the change in the display of text views when switching from horizontal to vertical layout, showing how the text content is affected.', 'Shows the use of layout weight to divide space on the screen and its impact on text view alignment and space distribution. The chapter explains the concept of layout weight and its effect on dividing space on the screen, demonstrating its impact on text view alignment and space distribution.']}], 'duration': 275.751, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus36167.jpg', 'highlights': ["The chapter covers changing layout from relative to linear, setting orientation to horizontal, and adding a text view with 'wrap content' functionality.", "The tutorial emphasizes the functionality of 'wrap content' for dynamic adjustment of widgets based on content length.", 'Shows the use of layout weight to divide space on the screen and its impact on text view alignment and space distribution.', 'The tutorial briefly mentions handling translation for app adaptation to different languages.']}, {'end': 676.991, 'segs': [{'end': 350.71, 'src': 'embed', 'start': 328.889, 'weight': 1, 'content': [{'end': 337.519, 'text': 'another thing we can do here is we can set what is called gravity for our linear layout, the whole entire layout and all the components inside of it.', 'start': 328.889, 'duration': 8.63}, {'end': 344.186, 'text': "and how we do that is, we just come in here and we type in gravity like that, and it's the second one like this,", 'start': 337.519, 'duration': 6.667}, {'end': 350.71, 'text': 'and you can see here we can either align to the bottom, center, center, horizontal, center, vertical, clip, horizontal, da da da da da.', 'start': 344.186, 'duration': 6.524}], 'summary': 'Setting gravity for linear layout to align components, options include bottom, center, horizontal, and vertical.', 'duration': 21.821, 'max_score': 328.889, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus328889.jpg'}, {'end': 413.094, 'src': 'embed', 'start': 387.249, 'weight': 0, 'content': [{'end': 391.933, 'text': "And with the button example I'm going to show you here in a second, that's going to look a lot better and make a lot more sense.", 'start': 387.249, 'duration': 4.684}, {'end': 396.037, 'text': 'Now, of course, if we come down here into the design section and click on that,', 'start': 392.253, 'duration': 3.784}, {'end': 400.201, 'text': "we're also going to be able to change all of these guys in multiple different ways.", 'start': 396.037, 'duration': 4.164}, {'end': 404.726, 'text': "For example, we'll be able to come in here and define our height and our width.", 'start': 400.241, 'duration': 4.485}, {'end': 413.094, 'text': 'And we can use DPs, which is just going to scale pixels based off of the screen density or the resolution or however you want to look at it.', 'start': 405.066, 'duration': 8.028}], 'summary': 'Demonstrating how to customize button dimensions and scale using dps.', 'duration': 25.845, 'max_score': 387.249, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus387249.jpg'}, {'end': 534.627, 'src': 'embed', 'start': 508.719, 'weight': 2, 'content': [{'end': 513.244, 'text': "And to change that font size, again, we're going to use SPs for fonts.", 'start': 508.719, 'duration': 4.525}, {'end': 520.6, 'text': 'DPS for everything else, and this is just going by using SP, going to scale the pixels based on preferred font size,', 'start': 513.697, 'duration': 6.903}, {'end': 522.541, 'text': 'which is going to work out a lot better for us.', 'start': 520.6, 'duration': 1.941}, {'end': 526.563, 'text': 'so if I want to change my text size, I just come in here and type in text size.', 'start': 522.541, 'duration': 4.022}, {'end': 532.125, 'text': "there you go and let's say I want to do something like 15 SP, and let's just do that for everything.", 'start': 526.563, 'duration': 5.562}, {'end': 534.627, 'text': 'there we go and then do the same thing for this guy.', 'start': 532.125, 'duration': 2.502}], 'summary': 'Using sps for fonts and dps for everything else, scaling pixels based on preferred font size for better text size control.', 'duration': 25.908, 'max_score': 508.719, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus508719.jpg'}, {'end': 616.592, 'src': 'embed', 'start': 588.612, 'weight': 3, 'content': [{'end': 591.554, 'text': "Well, I'm just going to keep this simple and I'm going to add padding everywhere.", 'start': 588.612, 'duration': 2.942}, {'end': 592.735, 'text': "So I'm just going to hit this like this.", 'start': 591.654, 'duration': 1.081}, {'end': 596.618, 'text': "I'm going to go to 15 and we're going to use DP because we use DP everywhere except for fonts.", 'start': 592.835, 'duration': 3.783}, {'end': 601.942, 'text': 'And I can also come in here and do exactly the same thing for all of our other buttons.', 'start': 597.138, 'duration': 4.804}, {'end': 602.962, 'text': 'There we go.', 'start': 601.962, 'duration': 1}, {'end': 604.403, 'text': 'And there we go.', 'start': 603.603, 'duration': 0.8}, {'end': 607.265, 'text': 'And you can see over here how things have changed.', 'start': 604.684, 'duration': 2.581}, {'end': 613.37, 'text': 'Basically, all I did was I put spacing between the text here and the outside border.', 'start': 607.526, 'duration': 5.844}, {'end': 616.592, 'text': "if, however, let's go and see if you can see this over here.", 'start': 613.67, 'duration': 2.922}], 'summary': 'Applying padding, spacing, and dp to buttons and text for improved design.', 'duration': 27.98, 'max_score': 588.612, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus588612.jpg'}], 'start': 312.118, 'title': 'Android ui design', 'summary': 'Covers android ui basics, including linear layout gravity and its flexibility, alignment options, positioning elements using start, end, and multiple, defining height and width using dps, customizing buttons with padding and margins, use of sps for font sizes, and differences between padding and margins.', 'chapters': [{'end': 350.71, 'start': 312.118, 'title': 'Linear layout gravity', 'summary': 'Discusses the use of linear layout and setting gravity for components, emphasizing the flexibility of the system and its constraints, and showcasing the various alignment options.', 'duration': 38.592, 'highlights': ['The system offers flexibility with few constraints, particularly in using a linear layout, and other layouts are better suited in certain situations.', 'Demonstrates setting gravity for the entire linear layout and its components, showcasing various alignment options such as bottom, center, and clip.']}, {'end': 676.991, 'start': 350.71, 'title': 'Android ui basics', 'summary': 'Covers the basics of android ui design, including positioning elements using start, end, and multiple, defining height and width using dps, and customizing buttons with padding and margins. it also explains the use of sps for font sizes and the difference between padding and margins.', 'duration': 326.281, 'highlights': ['The chapter covers the basics of Android UI design, including positioning elements using start, end, and multiple. It explains the usage of positioning options such as left, right, top, bottom, start, and multiple for aligning UI elements.', 'Defining height and width using DPs and customizing buttons with padding and margins. It discusses the use of DPs for defining height and width of elements, and customizing buttons using padding and margins to create spacing and adjust the layout.', 'Explaining the use of SPs for font sizes and the difference between padding and margins. It explains the use of SPs for font sizes and clarifies the difference between padding (inside the border) and margins (outside the border) in UI design.']}], 'duration': 364.873, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus312118.jpg', 'highlights': ['The chapter covers the basics of Android UI design, including positioning elements using start, end, and multiple.', 'Demonstrates setting gravity for the entire linear layout and its components, showcasing various alignment options such as bottom, center, and clip.', 'Explaining the use of SPs for font sizes and the difference between padding and margins.', 'Defining height and width using DPs and customizing buttons with padding and margins.']}, {'end': 1154.408, 'segs': [{'end': 719.554, 'src': 'embed', 'start': 697.019, 'weight': 0, 'content': [{'end': 705.925, 'text': 'basically, what match parents gonna do is, if the first widget has match parent, it will push all the other widgets off the screen.', 'start': 697.019, 'duration': 8.906}, {'end': 709.347, 'text': 'if instead we would use match parent with the last component,', 'start': 705.925, 'duration': 3.422}, {'end': 715.111, 'text': "it will take up all of the additional space that wasn't needed by all the previous widgets.", 'start': 709.347, 'duration': 5.764}, {'end': 719.554, 'text': "so let's change that back to wrap content right like this, and it will come down here to the last one,", 'start': 715.111, 'duration': 4.443}], 'summary': 'Using match_parent with first widget pushes others off screen, with last component it takes up additional space.', 'duration': 22.535, 'max_score': 697.019, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus697019.jpg'}, {'end': 771.228, 'src': 'embed', 'start': 739.181, 'weight': 1, 'content': [{'end': 741.123, 'text': "We're going to change that back to wrap content again.", 'start': 739.181, 'duration': 1.942}, {'end': 757.398, 'text': "Again, with our buttons we're also going to be able to use layout weight to define how much the extra space that is available that is not needed by the other components goes automatically and resizes the largest component or the component that has the highest layout weight.", 'start': 741.143, 'duration': 16.255}, {'end': 764.104, 'text': "So in this situation, for our third button, we're going to come in here and we're going to go layout weight, first thing selected.", 'start': 757.718, 'duration': 6.386}, {'end': 771.228, 'text': "and we're going to change this to two and you're going to see that the third button automatically resized and took up the rest of the weight that was there.", 'start': 764.424, 'duration': 6.804}], 'summary': 'Demonstrating layout weight to resize components, setting button layout weight to 2 resized it automatically.', 'duration': 32.047, 'max_score': 739.181, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus739181.jpg'}, {'end': 856.345, 'src': 'embed', 'start': 827.086, 'weight': 3, 'content': [{'end': 833.312, 'text': "And what we're going to do here is we're going to create what's called a nested linear layout that's going to have not only the text view,", 'start': 827.086, 'duration': 6.226}, {'end': 835.795, 'text': "but it's also going to have two buttons underneath of it.", 'start': 833.312, 'duration': 2.483}, {'end': 840.84, 'text': 'And to create another linear layout, you just type in linear layout, just like that.', 'start': 836.095, 'duration': 4.745}, {'end': 842.281, 'text': 'You just created one right like that.', 'start': 840.88, 'duration': 1.401}, {'end': 846.902, 'text': "here we're going to go wrap content again, and here we're going to go wrap content again.", 'start': 842.461, 'duration': 4.441}, {'end': 850.744, 'text': "and don't forget to also come in here and set the orientation,", 'start': 846.902, 'duration': 3.842}, {'end': 856.345, 'text': "and you can see that this guy doesn't end with the forward slash and the closing bracket.", 'start': 850.744, 'duration': 5.601}], 'summary': 'Creating a nested linear layout with text view and two buttons.', 'duration': 29.259, 'max_score': 827.086, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus827086.jpg'}, {'end': 975.607, 'src': 'embed', 'start': 950.866, 'weight': 4, 'content': [{'end': 957.573, 'text': "specifically. so let's say, you wanted this to be 200 dp and then for our height we wanted this to be 50 dp.", 'start': 950.866, 'duration': 6.707}, {'end': 960.496, 'text': 'you can also define very specific things like that.', 'start': 957.573, 'duration': 2.923}, {'end': 968.464, 'text': "and then for our width, we're going to have it be wrap content again, and then for our height, we're also going to have it be wrap content,", 'start': 960.496, 'duration': 7.968}, {'end': 971.085, 'text': 'And this is actually underneath here right now.', 'start': 968.604, 'duration': 2.481}, {'end': 975.607, 'text': "And in this situation, I'm going to have the orientation be horizontal.", 'start': 971.385, 'duration': 4.222}], 'summary': 'Setting dimensions for a view: 200dp width, 50dp height, with horizontal orientation.', 'duration': 24.741, 'max_score': 950.866, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus950866.jpg'}, {'end': 1045.618, 'src': 'embed', 'start': 1018.836, 'weight': 5, 'content': [{'end': 1022.479, 'text': "But in this situation, since I want a name, I'm going to type in text, person name.", 'start': 1018.836, 'duration': 3.643}, {'end': 1026.583, 'text': "It's going to automatically switch to capital whenever it hits a space.", 'start': 1022.739, 'duration': 3.844}, {'end': 1028.384, 'text': "You know, that's basically what it's going to do.", 'start': 1026.983, 'duration': 1.401}, {'end': 1033.008, 'text': "A little thing, but whenever an app doesn't do that for you, it kind of irritates you.", 'start': 1028.584, 'duration': 4.424}, {'end': 1034.049, 'text': "So we're going to cover that.", 'start': 1033.088, 'duration': 0.961}, {'end': 1036.911, 'text': 'And I could also come in here and add a hint.', 'start': 1034.269, 'duration': 2.642}, {'end': 1037.771, 'text': "There's a hint.", 'start': 1037.152, 'duration': 0.619}, {'end': 1040.694, 'text': 'And in this situation, type in your name.', 'start': 1038.212, 'duration': 2.482}, {'end': 1044.338, 'text': 'But remember last time I said you know all these things that we have here.', 'start': 1040.875, 'duration': 3.463}, {'end': 1045.618, 'text': 'everywhere we have text.', 'start': 1044.338, 'duration': 1.28}], 'summary': 'Improving input fields by adding auto-capitalization and hints for better user experience.', 'duration': 26.782, 'max_score': 1018.836, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1018836.jpg'}, {'end': 1122.892, 'src': 'embed', 'start': 1098.095, 'weight': 6, 'content': [{'end': 1103.459, 'text': "I'm going to go in here and I'm going to change all of the text into text that is stored in strings.xml.", 'start': 1098.095, 'duration': 5.364}, {'end': 1106.582, 'text': "So I'm going to do, are you happy? Select that.", 'start': 1103.479, 'duration': 3.103}, {'end': 1107.303, 'text': 'Come over here.', 'start': 1106.742, 'duration': 0.561}, {'end': 1108.784, 'text': 'Extract string resource.', 'start': 1107.503, 'duration': 1.281}, {'end': 1109.645, 'text': 'There it is.', 'start': 1109.044, 'duration': 0.601}, {'end': 1111.506, 'text': 'Type in happy question.', 'start': 1110.005, 'duration': 1.501}, {'end': 1113.748, 'text': "Boom And we know it's in there automatically.", 'start': 1111.726, 'duration': 2.022}, {'end': 1115.149, 'text': 'which is really, really great.', 'start': 1113.888, 'duration': 1.261}, {'end': 1117.83, 'text': "Don't have anything for the layout, so you don't need to worry about that.", 'start': 1115.249, 'duration': 2.581}, {'end': 1121.251, 'text': "Right here we have Yes, so let's just put our mouse there.", 'start': 1118.07, 'duration': 3.181}, {'end': 1122.892, 'text': "There's a light bulb that pops up.", 'start': 1121.411, 'duration': 1.481}], 'summary': 'Changing text to strings.xml, extracting string resource, and automatically adding it to the file.', 'duration': 24.797, 'max_score': 1098.095, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1098095.jpg'}], 'start': 677.211, 'title': 'Android layout and event handling', 'summary': 'Discusses using match parent and layout weight in android layouts, showing how match parent pushes widgets off the screen and how layout weight automatically resizes components based on available space. it also covers creating a nested linear layout with buttons and text views, setting specific dimensions, defining input types, and extracting text resources into strings.xml file for easy translation.', 'chapters': [{'end': 790.019, 'start': 677.211, 'title': 'Using match parent and layout weight in android layouts', 'summary': 'Discusses the use of match parent and layout weight in android layouts, demonstrating how match parent pushes widgets off the screen and how layout weight automatically resizes components based on available space, with examples of changing button sizes using layout weight.', 'duration': 112.808, 'highlights': ['Using match parent resizes components and pushes others off the screen When the first widget has match parent, it pushes all the other widgets off the screen, while using match parent with the last component takes up additional space not needed by previous widgets.', 'Demonstrating the resizing of components using layout weight The third button automatically resized and took up the rest of the weight available when the layout weight was changed, showing how it automatically resizes components based on available space.', 'Explaining the purpose of layout weight in resizing components Layout weight is used to define how much extra space not needed by other components goes into resizing the largest component or the one with the highest layout weight, with examples of changing button sizes using layout weight.']}, {'end': 1154.408, 'start': 790.219, 'title': 'Android layout and event handling', 'summary': 'Demonstrates creating a nested linear layout with buttons and text views, setting specific dimensions, defining input types, and extracting text resources into strings.xml file for easy translation.', 'duration': 364.189, 'highlights': ['Demonstrating creating a nested linear layout with buttons and text views. The chapter demonstrates how to create a nested linear layout with buttons and text views for user interaction.', 'Setting specific dimensions using wrap content and dp for layout elements. The tutorial explains setting specific dimensions for layout elements, such as setting width to 200 dp and height to 50 dp.', "Defining input types for the editable text area, such as 'textPersonName' to automatically capitalize the input. The chapter covers defining input types, exemplifying 'textPersonName' to automatically capitalize the input.", 'Extracting text resources into strings.xml file for easy translation to other languages. The tutorial illustrates the process of extracting text resources into strings.xml file for easy translation to other languages.']}], 'duration': 477.197, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus677211.jpg', 'highlights': ['Using match parent resizes components and pushes others off the screen', 'Demonstrating the resizing of components using layout weight', 'Explaining the purpose of layout weight in resizing components', 'Creating a nested linear layout with buttons and text views', 'Setting specific dimensions using wrap content and dp for layout elements', "Defining input types for the editable text area, such as 'textPersonName' to automatically capitalize the input", 'Extracting text resources into strings.xml file for easy translation to other languages']}, {'end': 1608.166, 'segs': [{'end': 1201.866, 'src': 'embed', 'start': 1176.409, 'weight': 1, 'content': [{'end': 1182.453, 'text': "So we have values, which works as the default, and values.es if the person's phone is set to Spanish.", 'start': 1176.409, 'duration': 6.044}, {'end': 1191.46, 'text': 'And if you want to find what all the different country codes are, just go to wikipedia.org, wiki, list of ISO 639-1 codes.', 'start': 1183.536, 'duration': 7.924}, {'end': 1194.562, 'text': "Okay? And here you're going to see every single code.", 'start': 1191.48, 'duration': 3.082}, {'end': 1197.524, 'text': "Specifically, I'm looking at these codes right here.", 'start': 1194.822, 'duration': 2.702}, {'end': 1201.866, 'text': "And if we go down further enough, it's going to show ES is indeed Spanish.", 'start': 1197.804, 'duration': 4.062}], 'summary': 'Values and values.es are default and spanish settings for phone. iso 639-1 codes available on wikipedia.', 'duration': 25.457, 'max_score': 1176.409, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1176409.jpg'}, {'end': 1261.616, 'src': 'embed', 'start': 1234.841, 'weight': 0, 'content': [{'end': 1240.724, 'text': "Then automatically, if the person goes and they have a phone set to Spanish, it's automatically going to translate it.", 'start': 1234.841, 'duration': 5.883}, {'end': 1243.545, 'text': "And that is all that's into translating the different languages.", 'start': 1240.844, 'duration': 2.701}, {'end': 1247.907, 'text': "Now, of course, you're going to have to set up a folder for each language you want to be able to support, but that's not that hard.", 'start': 1243.765, 'duration': 4.142}, {'end': 1251.689, 'text': 'Now, previously, I showed you a way to catch events with our buttons.', 'start': 1248.127, 'duration': 3.562}, {'end': 1254.831, 'text': "I'm going to show you a brand new way to do that this time.", 'start': 1251.749, 'duration': 3.082}, {'end': 1261.616, 'text': "If I want a specific function inside of mainActivity.java to execute when one of these buttons is clicked on, it's very easy.", 'start': 1255.091, 'duration': 6.525}], 'summary': 'Automatic translation based on phone language, supporting multiple languages in app setup.', 'duration': 26.775, 'max_score': 1234.841, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1234841.jpg'}, {'end': 1301.763, 'src': 'embed', 'start': 1272.524, 'weight': 4, 'content': [{'end': 1274.065, 'text': "So it doesn't have to even exist.", 'start': 1272.524, 'duration': 1.541}, {'end': 1278.809, 'text': 'I can say onYesButtonClick is what I want that function to be called.', 'start': 1274.345, 'duration': 4.464}, {'end': 1279.79, 'text': 'And look at this.', 'start': 1279.05, 'duration': 0.74}, {'end': 1281.151, 'text': 'A little light bulb pops up.', 'start': 1279.95, 'duration': 1.201}, {'end': 1281.892, 'text': 'Click on it.', 'start': 1281.372, 'duration': 0.52}, {'end': 1286.076, 'text': "And it's going to say create onYesButtonClick view in main activity.", 'start': 1281.992, 'duration': 4.084}, {'end': 1287.377, 'text': 'Yes, do that for me.', 'start': 1286.256, 'duration': 1.121}, {'end': 1289.738, 'text': 'If I jump over into MainActivity, look at that.', 'start': 1287.617, 'duration': 2.121}, {'end': 1290.678, 'text': 'It created it for me.', 'start': 1289.758, 'duration': 0.92}, {'end': 1294.2, 'text': "Isn't that cool? So I'm going to do exactly the same thing for my No button.", 'start': 1290.698, 'duration': 3.502}, {'end': 1294.78, 'text': 'Click here.', 'start': 1294.34, 'duration': 0.44}, {'end': 1296.221, 'text': "I'm going to say OnClick.", 'start': 1294.8, 'duration': 1.421}, {'end': 1297.001, 'text': 'Write that.', 'start': 1296.521, 'duration': 0.48}, {'end': 1300.883, 'text': "And in this situation, I'm going to call this OnNoButtonClick.", 'start': 1297.241, 'duration': 3.642}, {'end': 1301.763, 'text': 'Pretty simple.', 'start': 1301.123, 'duration': 0.64}], 'summary': 'Demonstration of creating functions for yes and no buttons in main activity.', 'duration': 29.239, 'max_score': 1272.524, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1272524.jpg'}, {'end': 1343.748, 'src': 'embed', 'start': 1309.927, 'weight': 5, 'content': [{'end': 1312.668, 'text': 'Never want to avoid a situation in which I can avoid clicking.', 'start': 1309.927, 'duration': 2.741}, {'end': 1313.529, 'text': 'So there we go.', 'start': 1312.768, 'duration': 0.761}, {'end': 1314.709, 'text': 'Or typing anyway.', 'start': 1313.769, 'duration': 0.94}, {'end': 1315.53, 'text': 'And there you go.', 'start': 1314.929, 'duration': 0.601}, {'end': 1316.51, 'text': 'Both of them are set up.', 'start': 1315.65, 'duration': 0.86}, {'end': 1322.694, 'text': "Now if I want to be able to interact with these different components inside of my code, I'm going to have to create them over in main activity.", 'start': 1316.69, 'duration': 6.004}, {'end': 1326.296, 'text': "So I'm just going to type in private and I'm going to have two buttons.", 'start': 1322.934, 'duration': 3.362}, {'end': 1327.957, 'text': 'I can put them both in here at the same time.', 'start': 1326.396, 'duration': 1.561}, {'end': 1333.361, 'text': "So I'm going to have my answer yes button and I'm also going to have my answer no button.", 'start': 1327.977, 'duration': 5.384}, {'end': 1335.342, 'text': 'Both of those are defined inside of there.', 'start': 1333.541, 'duration': 1.801}, {'end': 1343.748, 'text': "I also have the editable text area that I want to be able to pull their name from and I'm going to call this user's name edit text.", 'start': 1335.542, 'duration': 8.206}], 'summary': "Creating two buttons, 'answer yes' and 'answer no', and an editable text area named 'user's name edit text' in the main activity.", 'duration': 33.821, 'max_score': 1309.927, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1309927.jpg'}, {'end': 1394.511, 'src': 'embed', 'start': 1366.078, 'weight': 6, 'content': [{'end': 1368.199, 'text': 'But then I remember I forgot to give them an ID.', 'start': 1366.078, 'duration': 2.121}, {'end': 1371.181, 'text': "So let's jump back over into activity main.xml.", 'start': 1368.239, 'duration': 2.942}, {'end': 1372.241, 'text': 'Not a big deal.', 'start': 1371.501, 'duration': 0.74}, {'end': 1373.322, 'text': 'Very simple to do.', 'start': 1372.421, 'duration': 0.901}, {'end': 1377.324, 'text': 'So I need to do this for my buttons and my editable text area.', 'start': 1373.522, 'duration': 3.802}, {'end': 1380.766, 'text': "So to create an ID, I'm just going to go into my first button right here.", 'start': 1377.584, 'duration': 3.182}, {'end': 1381.946, 'text': 'Type in ID.', 'start': 1381.006, 'duration': 0.94}, {'end': 1382.687, 'text': 'There it is.', 'start': 1382.066, 'duration': 0.621}, {'end': 1387.209, 'text': "I'm going to click on this because it's a brand new one I want added to the r.java file.", 'start': 1382.947, 'duration': 4.262}, {'end': 1390.81, 'text': "And I'm going to call the very first one answer yes button.", 'start': 1387.429, 'duration': 3.381}, {'end': 1393.091, 'text': "I'm going to do the same thing for the no button.", 'start': 1390.83, 'duration': 2.261}, {'end': 1394.511, 'text': 'ID, yes.', 'start': 1393.511, 'duration': 1}], 'summary': 'Adding ids to buttons and text area in android activity main.xml.', 'duration': 28.433, 'max_score': 1366.078, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1366078.jpg'}, {'end': 1498.396, 'src': 'embed', 'start': 1471.368, 'weight': 7, 'content': [{'end': 1477.21, 'text': "Now all I've got to do is come down here, inside of here, and open up what is called a toast.", 'start': 1471.368, 'duration': 5.842}, {'end': 1484.451, 'text': "And it's just a little pop-up window that shows up on your screen to give a little notification to the user and you can send them a little note.", 'start': 1477.55, 'duration': 6.901}, {'end': 1486.332, 'text': "Very useful if you've ever used Android.", 'start': 1484.591, 'duration': 1.741}, {'end': 1490.793, 'text': "You've seen them, the little gray things that pop up near the bottom of the screen with a little note inside of them.", 'start': 1486.352, 'duration': 4.441}, {'end': 1498.396, 'text': "first thing I'm going to do, though, is I'm going to go string and I'm going to get the user's name and store it inside of here,", 'start': 1491.053, 'duration': 7.343}], 'summary': "Creating a toast to show a notification with user's name.", 'duration': 27.028, 'max_score': 1471.368, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1471368.jpg'}, {'end': 1559.64, 'src': 'embed', 'start': 1530.491, 'weight': 8, 'content': [{'end': 1532.631, 'text': "And just to keep this simple, I'm going to say that is great.", 'start': 1530.491, 'duration': 2.14}, {'end': 1534.792, 'text': 'Remember, I asked them if they had a good day.', 'start': 1532.912, 'duration': 1.88}, {'end': 1537.293, 'text': "And I'll print out the user's name.", 'start': 1535.152, 'duration': 2.141}, {'end': 1541.854, 'text': 'Now to create the toast, like I said, it just displays a little pop-up on our screen.', 'start': 1537.513, 'duration': 4.341}, {'end': 1542.655, 'text': 'Very simple.', 'start': 1542.054, 'duration': 0.601}, {'end': 1544.835, 'text': 'Just go toast, make text.', 'start': 1542.855, 'duration': 1.98}, {'end': 1547.436, 'text': 'And you have to pass this, which is our activity.', 'start': 1545.196, 'duration': 2.24}, {'end': 1552.818, 'text': "And then you have to pass what you want to show up on the screen, which is the string that's right there.", 'start': 1547.656, 'duration': 5.162}, {'end': 1557.079, 'text': 'And then you have to tell it how long you want this little message to show up on the screen.', 'start': 1553.018, 'duration': 4.061}, {'end': 1559.64, 'text': 'And you can either have it be length long or short.', 'start': 1557.299, 'duration': 2.341}], 'summary': 'Creating a toast to display a pop-up message on the screen, involving passing activity and text, with options for message duration.', 'duration': 29.149, 'max_score': 1530.491, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1530491.jpg'}], 'start': 1154.408, 'title': 'Android app localization and event handling', 'summary': 'Covers translating strings into different languages and handling onclick events for buttons in an android app. it includes using values folders, language-specific xml files, iso 639-1 codes for localization, and creating functions for event handling. it also encompasses initializing components, creating ids, using toast for notifications, and handling user input.', 'chapters': [{'end': 1251.689, 'start': 1154.408, 'title': 'Translating strings for multiple languages', 'summary': 'Discusses how to translate strings into different languages using values folders, creating language-specific xml files, and referencing iso 639-1 codes, making it easy to support multiple languages in an android app.', 'duration': 97.281, 'highlights': ['The process involves creating language-specific folders, such as values.es for Spanish, and then creating a corresponding strings.xml file for each language, making it easy to support multiple languages in an Android app.', 'Referencing ISO 639-1 codes from wikipedia.org, specifically looking at the codes listed there, such as ES for Spanish, helps to define the language-specific folders and files for translation.', "The method allows for automatic translation when a person's phone is set to a specific language, making it convenient for users and app developers.", "Setting up a folder for each language is required to support multiple languages in an Android app, but it's not a complex task."]}, {'end': 1608.166, 'start': 1251.749, 'title': 'Android button onclick event handling', 'summary': 'Demonstrates how to handle onclick events for buttons in an android app, including creating functions to execute upon button click, initializing components in mainactivity, creating ids for buttons and editable text area, using toast for user notifications, and handling user input.', 'duration': 356.417, 'highlights': ['Creating functions to execute upon button click Demonstrates how to create functions like onYesButtonClick and onNoButtonClick to execute when the respective buttons are clicked.', 'Initializing components in MainActivity Explains the process of initializing buttons and editable text area inside MainActivity to enable interaction with these components through the code.', 'Creating IDs for buttons and editable text area Shows the process of assigning unique IDs to buttons and the editable text area, enabling their identification and interaction in the code.', 'Using Toast for user notifications Illustrates the use of Toast, a pop-up window for user notifications, to display messages on the screen with customizable display duration.', "Handling user input Discusses the process of retrieving user input, such as the user's name, and utilizing it to display personalized messages through the app."]}], 'duration': 453.758, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/kmsB_P2xbus/pics/kmsB_P2xbus1154408.jpg', 'highlights': ['Creating language-specific folders and corresponding strings.xml files for each language simplifies supporting multiple languages in an Android app.', 'Referencing ISO 639-1 codes, like ES for Spanish, helps define language-specific folders and files for translation.', "Automatic translation based on the user's phone language setting provides convenience for both users and app developers.", "Setting up a folder for each language is necessary to support multiple languages in an Android app, but it's not a complex task.", 'Creating functions like onYesButtonClick and onNoButtonClick to execute upon button click demonstrates event handling in an Android app.', 'Initializing components in MainActivity enables interaction with buttons and editable text areas through the code.', 'Assigning unique IDs to buttons and editable text areas facilitates their identification and interaction in the code.', 'Using Toast for user notifications demonstrates displaying customizable messages on the screen with a customizable display duration.', "Handling user input involves retrieving user input, such as the user's name, and utilizing it to display personalized messages through the app."]}], 'highlights': ['The tutorial covers linear layouts, user input, and creating toast in Android app development.', 'The chapter demonstrates creating a new project in Android Studio.', 'The tutorial emphasizes using a blank activity in the project setup.', "The chapter covers changing layout from relative to linear, setting orientation to horizontal, and adding a text view with 'wrap content' functionality.", "The tutorial emphasizes the functionality of 'wrap content' for dynamic adjustment of widgets based on content length.", 'Shows the use of layout weight to divide space on the screen and its impact on text view alignment and space distribution.', 'The tutorial briefly mentions handling translation for app adaptation to different languages.', 'The chapter covers the basics of Android UI design, including positioning elements using start, end, and multiple.', 'Demonstrates setting gravity for the entire linear layout and its components, showcasing various alignment options such as bottom, center, and clip.', 'Explaining the use of SPs for font sizes and the difference between padding and margins.', 'Defining height and width using DPs and customizing buttons with padding and margins.', 'Using match parent resizes components and pushes others off the screen', 'Demonstrating the resizing of components using layout weight', 'Explaining the purpose of layout weight in resizing components', 'Creating a nested linear layout with buttons and text views', 'Setting specific dimensions using wrap content and dp for layout elements', "Defining input types for the editable text area, such as 'textPersonName' to automatically capitalize the input", 'Extracting text resources into strings.xml file for easy translation to other languages', 'Creating language-specific folders and corresponding strings.xml files for each language simplifies supporting multiple languages in an Android app.', 'Referencing ISO 639-1 codes, like ES for Spanish, helps define language-specific folders and files for translation.', "Automatic translation based on the user's phone language setting provides convenience for both users and app developers.", "Setting up a folder for each language is necessary to support multiple languages in an Android app, but it's not a complex task.", 'Creating functions like onYesButtonClick and onNoButtonClick to execute upon button click demonstrates event handling in an Android app.', 'Initializing components in MainActivity enables interaction with buttons and editable text areas through the code.', 'Assigning unique IDs to buttons and editable text areas facilitates their identification and interaction in the code.', 'Using Toast for user notifications demonstrates displaying customizable messages on the screen with a customizable display duration.', "Handling user input involves retrieving user input, such as the user's name, and utilizing it to display personalized messages through the app."]}