Уроки по Kotlin Android Studio

InfoApp Jetpack Compose | #1

MainActivity.kt import android.annotation.SuppressLintimport android.os.Bundleimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.material.*import androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport com.example.infoapp.ui.theme.InfoAppThemeimport com.example.infoapp.ui_components.DrawerMenuimport com.example.infoapp.ui_components.MainTopBarclass MainActivity : ComponentActivity() { @SuppressLint(“UnusedMaterialScaffoldPaddingParameter”) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val scaffoldState = rememberScaffoldState() val topBarTitle = remember { mutableStateOf(“Грибы”) } InfoAppTheme { Scaffold( scaffoldState = scaffoldState, topBar = { MainTopBar( title = topBarTitle.value, scaffoldState ) }, drawerContent = { DrawerMenu() } ) { } } } }} DrawerMenu.kt import androidx.compose.foundation.BorderStrokeimport androidx.compose.foundation.Imageimport androidx.compose.foundation.backgroundimport androidx.compose.foundation.clickableimport androidx.compose.foundation.layout.*import… Подробнее »InfoApp Jetpack Compose | #1

ShoppingList curse (Jetpack Compose)

Курс “Список покупок на Jetpack Compose” На данном курсе мы изучим подробно работу с библиотекой Room persistance library для работы с базой данных SQLite. Для того что бы уроки были более понятными и интересными, проще усвоились мы будем изучать данную тему на создание  приложения “Список покупок и Блокнот”, а именно у нас будет два в одном. В процессе создания мы не только изучим работу с БД но и освоим архитектуру… Подробнее »ShoppingList curse (Jetpack Compose)

Jetpack Compose: Drawer Menu

https://youtu.be/2aQJfpavsds MainActivity.kt import android.annotation.SuppressLintimport android.content.Contextimport android.os.Bundleimport android.widget.Toastimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.layout.paddingimport androidx.compose.foundation.shape.RoundedCornerShapeimport androidx.compose.material.*import androidx.compose.material.icons.Iconsimport androidx.compose.material.icons.filled.Deleteimport androidx.compose.material.icons.filled.Menuimport androidx.compose.material.icons.filled.Shareimport androidx.compose.runtime.Composableimport androidx.compose.runtime.rememberCoroutineScopeimport androidx.compose.ui.Modifierimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.tooling.preview.Previewimport androidx.compose.ui.unit.dpimport com.example.topappbar.ui.theme.TopAppBarThemeimport kotlinx.coroutines.launchclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { TopAppBarTheme { MainScreen(applicationContext) } } }}@SuppressLint(“UnusedMaterialScaffoldPaddingParameter”)@Composablefun MainScreen(context: Context) { val coroutineScope = rememberCoroutineScope() val scaffoldState = rememberScaffoldState() Scaffold( scaffoldState = scaffoldState, snackbarHost = { host -> SnackbarHost(hostState = host){ data -> Snackbar( backgroundColor… Подробнее »Jetpack Compose: Drawer Menu

Jetpack Compose: SnackBar()

https://youtu.be/M_LgQtPDZw4 MainActivity.kt import android.annotation.SuppressLintimport android.content.Contextimport android.os.Bundleimport android.widget.Toastimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.layout.paddingimport androidx.compose.foundation.shape.RoundedCornerShapeimport androidx.compose.material.*import androidx.compose.material.icons.Iconsimport androidx.compose.material.icons.filled.Deleteimport androidx.compose.material.icons.filled.Menuimport androidx.compose.material.icons.filled.Shareimport androidx.compose.runtime.Composableimport androidx.compose.runtime.rememberCoroutineScopeimport androidx.compose.ui.Modifierimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.tooling.preview.Previewimport androidx.compose.ui.unit.dpimport com.example.topappbar.ui.theme.TopAppBarThemeimport kotlinx.coroutines.launchclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { TopAppBarTheme { MainScreen(applicationContext) } } }}@SuppressLint(“UnusedMaterialScaffoldPaddingParameter”)@Composablefun MainScreen(context: Context) { val coroutineScope = rememberCoroutineScope() val scaffoldState = rememberScaffoldState() Scaffold( scaffoldState = scaffoldState, snackbarHost = { host -> SnackbarHost(hostState = host){ data -> Snackbar( backgroundColor… Подробнее »Jetpack Compose: SnackBar()

Bluetooth module | #19

BluetoothConnect.kt import android.bluetooth.BluetoothDeviceimport android.bluetooth.BluetoothSocketimport java.io.IOExceptionimport java.util.*class ConnectThread(device: BluetoothDevice, val listener: BluetoothController.Listener) : Thread() { private val uuid = “00001101-0000-1000-8000-00805F9B34FB” private var mSocket: BluetoothSocket? = null init { try { mSocket = device.createRfcommSocketToServiceRecord(UUID.fromString(uuid)) } catch (e: IOException) { } catch (se: SecurityException) { } } override fun run() { try { mSocket?.connect() listener.onReceive(BluetoothController.BLUETOOTH_CONNECTED) readMessage() } catch (e: IOException) { listener.onReceive(BluetoothController.BLUETOOTH_NO_CONNECTED) } catch (se: SecurityException) { } } private fun readMessage() {… Подробнее »Bluetooth module | #19

Jetpack Compose: TopAppBar()

MainActivity.kt import android.annotation.SuppressLintimport android.content.Contextimport android.os.Bundleimport android.widget.Toastimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.material.*import androidx.compose.material.icons.Iconsimport androidx.compose.material.icons.filled.Deleteimport androidx.compose.material.icons.filled.Menuimport androidx.compose.material.icons.filled.Shareimport androidx.compose.runtime.Composableimport androidx.compose.ui.Modifierimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.tooling.preview.Previewimport com.example.topappbar.ui.theme.TopAppBarThemeclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { TopAppBarTheme { MainScreen(applicationContext) } } }}@SuppressLint(“UnusedMaterialScaffoldPaddingParameter”)@Composablefun MainScreen(context: Context) { Scaffold( topBar = { TopAppBar( title = { Text(text = “Menu”) }, backgroundColor = Color.White, navigationIcon = { IconButton( onClick = { Toast.makeText(context, “Menu”, Toast.LENGTH_SHORT).show() } ) { Icon( imageVector… Подробнее »Jetpack Compose: TopAppBar()

Yandex Banner

build.gradle Yandex зависимость: implementation ‘com.yandex.android:mobileads:5.7.0’ MainActivity.kt import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport com.example.yandexapp.databinding.ActivityMainBindingimport com.yandex.mobile.ads.banner.AdSizeimport com.yandex.mobile.ads.banner.BannerAdEventListenerimport com.yandex.mobile.ads.common.AdRequestimport com.yandex.mobile.ads.common.AdRequestErrorimport com.yandex.mobile.ads.common.ImpressionDataclass MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.banner.setAdUnitId(“demo-banner-yandex”) binding.banner.setAdSize(AdSize.stickySize(300)) val adRequest = AdRequest.Builder().build() binding.banner.loadAd(adRequest) binding.banner.setBannerAdEventListener(object : BannerAdEventListener{ override fun onAdLoaded() { } override fun onAdFailedToLoad(erorr: AdRequestError) { Log.d(“MyLog”, “Yandex Ad Error: ${erorr.description}”) } override fun onAdClicked() { } override fun onLeftApplication() {… Подробнее »Yandex Banner

Bluetooth module | #18

https://youtu.be/i-rwv5qeWVQ MainFragment.kt import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothManager import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.content.res.AppCompatResources import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import com.neco_dev.bluetoothmoduldef.databinding.FragmentMainBinding import com.neco_dev.bt_def.BluetoothConstants import com.neco_dev.bt_def.bluetooth.BluetoothController class MainFragment : Fragment(), BluetoothController.Listener { private lateinit var binding: FragmentMainBinding private lateinit var bluetoothController: BluetoothController private lateinit var btAdapter: BluetoothAdapter override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { binding = FragmentMainBinding.inflate(inflater, container, false) return binding.root } override… Подробнее »Bluetooth module | #18

Bluetooth module | #17

https://youtu.be/aEUPpT9cyJw BluetoothController.kt import android.bluetooth.BluetoothAdapterclass BluetoothController(private val adapter: BluetoothAdapter) { private var connectThread: ConnectThread? = null fun connect(mac: String){ if(adapter.isEnabled && mac.isNotEmpty()){ val device = adapter.getRemoteDevice(mac) connectThread = ConnectThread(device) connectThread?.start() } }} ConnectThread.kt import android.bluetooth.BluetoothDeviceimport android.bluetooth.BluetoothSocketimport android.util.Logimport java.io.IOExceptionimport java.util.*class ConnectThread(device: BluetoothDevice) : Thread() { private val uuid = “00001101-0000-1000-8000-00805F9B34FB” private var mSocket: BluetoothSocket? = null init { try { mSocket = device.createRfcommSocketToServiceRecord(UUID.fromString(uuid)) } catch (e: IOException){ } catch (se: SecurityException){ }… Подробнее »Bluetooth module | #17

Bluetooth module | #16

StartActivity.kt import android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport com.neco_dev.bluetoothmoduldef.databinding.ContentStartBindingclass StartActivity : AppCompatActivity() { private lateinit var binding: ContentStartBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ContentStartBinding.inflate(layoutInflater) setContentView(binding.root) }} content_start.xml <?xml version=”1.0″ encoding=”utf-8″?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:app=”http://schemas.android.com/apk/res-auto” android:layout_width=”match_parent” android:layout_height=”match_parent” app:layout_behavior=”@string/appbar_scrolling_view_behavior”> <fragment android:id=”@+id/nav_host_fragment_content_start” android:name=”androidx.navigation.fragment.NavHostFragment” android:layout_width=”0dp” android:layout_height=”0dp” app:defaultNavHost=”true” app:layout_constraintBottom_toBottomOf=”parent” app:layout_constraintEnd_toEndOf=”parent” app:layout_constraintStart_toStartOf=”parent” app:layout_constraintTop_toTopOf=”parent” app:navGraph=”@navigation/nav_graph” /></androidx.constraintlayout.widget.ConstraintLayout> fragment_main.xml <?xml version=”1.0″ encoding=”utf-8″?><androidx.constraintlayout.widget.ConstraintLayout xmlns:android=”http://schemas.android.com/apk/res/android” xmlns:app=”http://schemas.android.com/apk/res-auto” xmlns:tools=”http://schemas.android.com/tools” android:layout_width=”match_parent” android:layout_height=”match_parent” tools:context=”.MainFragment”> <TextView android:id=”@+id/tvStatus” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:layout_marginTop=”56dp” android:text=”@string/hello_first_fragment” app:layout_constraintEnd_toEndOf=”parent” app:layout_constraintHorizontal_bias=”0.498″ app:layout_constraintStart_toStartOf=”parent” app:layout_constraintTop_toTopOf=”parent” /> <Button android:id=”@+id/bList” android:layout_width=”0dp”… Подробнее »Bluetooth module | #16