diff --git a/Lab1_Flutter/lib/main.dart b/Lab1_Flutter/lib/main.dart index 09219e9169b517e817d4d477184edaa16aade3b7..fb8aa29e62f1e9db917a0a2c7faa9bf793142a18 100644 --- a/Lab1_Flutter/lib/main.dart +++ b/Lab1_Flutter/lib/main.dart @@ -39,23 +39,26 @@ class _MyHomePageState extends State<MyHomePage> { ), ); - @override Widget build(BuildContext context) { return Scaffold( + appBar: AppBar( backgroundColor: Theme.of(context).colorScheme.inversePrimary, title: Text(widget.title), ), - body: Column( - - mainAxisAlignment: MainAxisAlignment.spaceEvenly, + body: SingleChildScrollView( + child:Wrap( + spacing: 20, + runSpacing: 40, children: <Widget>[ + Spacer(), Center(child: Image.network('https://picsum.photos/250?image=9')), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: <Widget>[ElevatedButton( + children: <Widget>[ + ElevatedButton( style: raisedButtonStyle, onPressed: () { }, child: const Text('TextButton'), @@ -69,7 +72,8 @@ class _MyHomePageState extends State<MyHomePage> { ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, - children: <Widget>[ElevatedButton( + children: <Widget>[ + ElevatedButton( style: raisedButtonStyle, onPressed: () { }, child: const Text('TextButton'), @@ -81,7 +85,10 @@ class _MyHomePageState extends State<MyHomePage> { ), ], ), - Row( + Padding( + padding: EdgeInsets.fromLTRB(20,0, 20, 0), + child:Row( + children: [ const Text('Email:'), const SizedBox(width: 10), // Add some space between the text and input field @@ -94,9 +101,10 @@ class _MyHomePageState extends State<MyHomePage> { ), ], ), - + ), ], ), + ), ); } } diff --git a/Lab1_Kotlin_xml/app/src/main/res/layout/activity_main.xml b/Lab1_Kotlin_xml/app/src/main/res/layout/activity_main.xml index 3b2b5035583f0e12b2ffcdfbdb5cc548b26425ab..1ef0db23a4504057ab9e0e9f1a86fb5ea756ef9a 100644 --- a/Lab1_Kotlin_xml/app/src/main/res/layout/activity_main.xml +++ b/Lab1_Kotlin_xml/app/src/main/res/layout/activity_main.xml @@ -87,9 +87,8 @@ android:layout_width="340dp" android:layout_height="wrap_content" android:contentDescription="Enter email" - android:inputType="text" android:ems="10" - /> + android:inputType="text" /> </LinearLayout> <LinearLayout diff --git a/Lab1_kotlin_compose/.idea/vcs.xml b/Lab1_kotlin_compose/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..6c0b8635858dc7ad44b93df54b762707ce49eefc --- /dev/null +++ b/Lab1_kotlin_compose/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$/.." vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/Lab1_kotlin_compose/app/src/main/java/com/example/lab1_kotlin_compose/MainActivity.kt b/Lab1_kotlin_compose/app/src/main/java/com/example/lab1_kotlin_compose/MainActivity.kt index b8b500f790a893b394921876d8bdd0a830c2f392..4bb32708fa22a0b6a7793be91ed705672ea79e9c 100644 --- a/Lab1_kotlin_compose/app/src/main/java/com/example/lab1_kotlin_compose/MainActivity.kt +++ b/Lab1_kotlin_compose/app/src/main/java/com/example/lab1_kotlin_compose/MainActivity.kt @@ -58,7 +58,7 @@ class MainActivity : ComponentActivity() { .padding(innerPadding) .fillMaxWidth() .fillMaxHeight(), - verticalArrangement = Arrangement.SpaceEvenly, + verticalArrangement = Arrangement.spacedBy(40.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { @@ -92,21 +92,7 @@ class MainActivity : ComponentActivity() { } } -@Composable -fun Greeting(name: String, modifier: Modifier = Modifier) { - Text( - text = "Hello $name!", - modifier = modifier - ) -} -@Preview(showBackground = true) -@Composable -fun GreetingPreview() { - Lab1_kotlin_composeTheme { - Greeting("Android") - } -} @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/lab1_react_native/.idea/misc.xml b/lab1_react_native/.idea/misc.xml index 639900d13c6182e452e33a3bd638e70a0146c785..6e86672130aac0e4918a028246f39139ae5a99c5 100644 --- a/lab1_react_native/.idea/misc.xml +++ b/lab1_react_native/.idea/misc.xml @@ -1,4 +1,3 @@ -<?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="ProjectRootManager"> <output url="file://$PROJECT_DIR$/out" /> diff --git a/lab1_react_native/App.js b/lab1_react_native/App.js index 311ebcaf7c91b59c379319cca40b037465f626bb..fb90dbab80d36dd786201f0967be7578cc597533 100644 --- a/lab1_react_native/App.js +++ b/lab1_react_native/App.js @@ -3,6 +3,7 @@ import { StyleSheet, Text, View, Image, Button, TextInput } from 'react-native'; export default function App() { return ( + //make top aligned <View style={styles.container}> <View style={styles.header}> <Text style={{fontSize: 24}}>Header</Text> @@ -37,10 +38,11 @@ const styles = StyleSheet.create({ display: 'flex', flexDirection: 'column', flex: 1, + gap: 30, backgroundColor: '#fff', }, header: { - flex: 1, + backgroundColor: 'cyan', display: 'flex', flexDirection: 'row', @@ -53,22 +55,24 @@ const styles = StyleSheet.create({ height: 240, }, imageContainer: { - flex: 3, + alignItems: 'center', justifyContent: 'center', }, buttonsOuterContainer : { - flex: 3, + display:'flex', + flexDirection: 'column', + gap: 30, }, buttonsContainer: { - flex: 1, + display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'space-evenly', }, textInputContainer: { - flex: 1, + flexDirection: 'row', justifyContent: 'space-around', alignItems: 'center', diff --git a/lab1_react_native/package-lock.json b/lab1_react_native/package-lock.json index be48803686c4fec73c51ec6d037a87778edabedf..1fd04af33cdf849debe494ac8ae041078cd723f0 100644 --- a/lab1_react_native/package-lock.json +++ b/lab1_react_native/package-lock.json @@ -11,7 +11,8 @@ "expo": "~49.0.15", "expo-status-bar": "~1.6.0", "react": "18.2.0", - "react-native": "0.72.6" + "react-native": "0.72.6", + "react-native-web": "~0.19.6" }, "devDependencies": { "@babel/core": "^7.20.0" @@ -7034,6 +7035,14 @@ "node": ">=8" } }, + "node_modules/css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "dependencies": { + "hyphenate-style-name": "^1.0.3" + } + }, "node_modules/dag-map": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", @@ -7647,6 +7656,11 @@ "node": ">=8.6.0" } }, + "node_modules/fast-loops": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", + "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" + }, "node_modules/fast-xml-parser": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", @@ -8211,6 +8225,11 @@ "node": ">=10.17.0" } }, + "node_modules/hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -8323,6 +8342,15 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "node_modules/inline-style-prefixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz", + "integrity": "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==", + "dependencies": { + "css-in-js-utils": "^3.1.0", + "fast-loops": "^1.1.3" + } + }, "node_modules/internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", @@ -11512,6 +11540,11 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -11759,6 +11792,28 @@ } } }, + "node_modules/react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "peerDependencies": { + "react": "^18.2.0" + } + }, + "node_modules/react-dom/node_modules/scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -11816,6 +11871,30 @@ "react": "18.2.0" } }, + "node_modules/react-native-web": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.19.9.tgz", + "integrity": "sha512-m69arZbS6FV+BNSKE6R/NQwUX+CzxCkYM7AJlSLlS8dz3BDzlaxG8Bzqtzv/r3r1YFowhnZLBXVKIwovKDw49g==", + "dependencies": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-color": "^2.1.0", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^6.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, + "node_modules/react-native-web/node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, "node_modules/react-native/node_modules/promise": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", @@ -12585,6 +12664,11 @@ "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==" }, + "node_modules/styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==" + }, "node_modules/sucrase": { "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", @@ -18530,6 +18614,14 @@ "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" }, + "css-in-js-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-3.1.0.tgz", + "integrity": "sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==", + "requires": { + "hyphenate-style-name": "^1.0.3" + } + }, "dag-map": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/dag-map/-/dag-map-1.0.2.tgz", @@ -18989,6 +19081,11 @@ "micromatch": "^4.0.4" } }, + "fast-loops": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/fast-loops/-/fast-loops-1.1.3.tgz", + "integrity": "sha512-8EZzEP0eKkEEVX+drtd9mtuQ+/QrlfW/5MlwcwK5Nds6EkZ/tRzEexkzUY2mIssnAyVLT+TKHuRXmFNNXYUd6g==" + }, "fast-xml-parser": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", @@ -19407,6 +19504,11 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" }, + "hyphenate-style-name": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz", + "integrity": "sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -19483,6 +19585,15 @@ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, + "inline-style-prefixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-6.0.4.tgz", + "integrity": "sha512-FwXmZC2zbeeS7NzGjJ6pAiqRhXR0ugUShSNb6GApMl6da0/XGc4MOJsoWAywia52EEWbXNSy0pzkwz/+Y+swSg==", + "requires": { + "css-in-js-utils": "^3.1.0", + "fast-loops": "^1.1.3" + } + }, "internal-ip": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", @@ -21783,6 +21894,11 @@ "source-map-js": "^1.0.2" } }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -21963,6 +22079,27 @@ } } }, + "react-dom": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.0" + }, + "dependencies": { + "scheduler": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "peer": true, + "requires": { + "loose-envify": "^1.1.0" + } + } + } + }, "react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", @@ -22034,6 +22171,28 @@ } } }, + "react-native-web": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/react-native-web/-/react-native-web-0.19.9.tgz", + "integrity": "sha512-m69arZbS6FV+BNSKE6R/NQwUX+CzxCkYM7AJlSLlS8dz3BDzlaxG8Bzqtzv/r3r1YFowhnZLBXVKIwovKDw49g==", + "requires": { + "@babel/runtime": "^7.18.6", + "@react-native/normalize-color": "^2.1.0", + "fbjs": "^3.0.4", + "inline-style-prefixer": "^6.0.1", + "memoize-one": "^6.0.0", + "nullthrows": "^1.1.1", + "postcss-value-parser": "^4.2.0", + "styleq": "^0.1.3" + }, + "dependencies": { + "memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + } + } + }, "react-refresh": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", @@ -22623,6 +22782,11 @@ "resolved": "https://registry.npmjs.org/structured-headers/-/structured-headers-0.4.1.tgz", "integrity": "sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==" }, + "styleq": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/styleq/-/styleq-0.1.3.tgz", + "integrity": "sha512-3ZUifmCDCQanjeej1f6kyl/BeP/Vae5EYkQ9iJfUm/QwZvlgnZzyflqAsAWYURdtea8Vkvswu2GrC57h3qffcA==" + }, "sucrase": { "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", diff --git a/lab1_react_native/package.json b/lab1_react_native/package.json index 080a380cd49c150dc0c65837e51fb6dc5aa8f4e2..56394bfaae71e79fcf400227c23372ef23629a7d 100644 --- a/lab1_react_native/package.json +++ b/lab1_react_native/package.json @@ -12,7 +12,8 @@ "expo": "~49.0.15", "expo-status-bar": "~1.6.0", "react": "18.2.0", - "react-native": "0.72.6" + "react-native": "0.72.6", + "react-native-web": "~0.19.6" }, "devDependencies": { "@babel/core": "^7.20.0"