neco2018

DataStore | Jetpack Compose

MainActivity.kt import android.os.Bundleimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layout.Arrangementimport androidx.compose.foundation.layout.Boximport androidx.compose.foundation.layout.Columnimport androidx.compose.foundation.layout.Spacerimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.layout.heightimport androidx.compose.foundation.layout.wrapContentHeightimport androidx.compose.foundation.layout.wrapContentWidthimport androidx.compose.material3.Buttonimport androidx.compose.material3.Surfaceimport androidx.compose.material3.Textimport androidx.compose.runtime.Composableimport androidx.compose.runtime.LaunchedEffectimport androidx.compose.runtime.MutableStateimport androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport androidx.compose.runtime.rememberCoroutineScopeimport androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.unit.dpimport androidx.compose.ui.unit.spimport com.neco_desarrollo.datastorelesson.ui.theme.Blueimport com.neco_desarrollo.datastorelesson.ui.theme.DataStoreLessonThemeimport com.neco_desarrollo.datastorelesson.ui.theme.Greenimport com.neco_desarrollo.datastorelesson.ui.theme.Redimport kotlinx.coroutines.launchclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val dataStoreManager = DataStoreManager(this) setContent { DataStoreLessonTheme { val bgColorState = remember { mutableStateOf(Red.value) } val textSizeState = remember { mutableStateOf(40) } LaunchedEffect(key1 = true){ dataStoreManager.getSettings().collect{ settings ->… Подробнее »DataStore | Jetpack Compose

RewardedAd | XML

MainActivity.kt import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.Buttonimport android.widget.Toastimport com.google.android.gms.ads.AdErrorimport com.google.android.gms.ads.AdRequestimport com.google.android.gms.ads.FullScreenContentCallbackimport com.google.android.gms.ads.LoadAdErrorimport com.google.android.gms.ads.MobileAdsimport com.google.android.gms.ads.rewarded.RewardedAdimport com.google.android.gms.ads.rewarded.RewardedAdLoadCallbackconst val AD_ID = “ca-app-pub-3940256099942544/5224354917″class MainActivity : AppCompatActivity() { private var rewardedAd: RewardedAd? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val showAd = findViewById<Button>(R.id.showAd) MobileAds.initialize(this){} loadAd() showAd.setOnClickListener { rewardedAd?.show(this){ rewardItem -> Toast.makeText(this, “Reward: ${rewardItem.amount}”, Toast.LENGTH_SHORT).show() } } } private fun loadAd(){ val adRequest = AdRequest.Builder().build() RewardedAd.load(this, AD_ID, adRequest, object : RewardedAdLoadCallback(){ override fun onAdFailedToLoad(p0: LoadAdError) {… Подробнее »RewardedAd | XML

InfoApp Jetpack Compose | #4

MainActivity.kt import android.os.Bundleimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.navigation.compose.NavHostimport androidx.navigation.compose.composableimport androidx.navigation.compose.rememberNavControllerimport com.example.infoapp.ui.theme.InfoAppThemeimport com.example.infoapp.ui_components.InfoScreenimport com.example.infoapp.ui_components.MainScreenimport com.example.infoapp.utils.ListItemimport com.example.infoapp.utils.Routesclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val navController = rememberNavController() var item: ListItem? = null InfoAppTheme { NavHost( navController = navController, startDestination = Routes.MAIN_SCREEN ){ composable(Routes.MAIN_SCREEN){ MainScreen(context = this@MainActivity){ listItem -> item = listItem navController.navigate(Routes.INFO_SCREEN) } } composable(Routes.INFO_SCREEN){ InfoScreen(item = item!!) } } } } }} InfoScreen.kt import android.webkit.WebViewimport android.webkit.WebViewClientimport androidx.compose.foundation.layout.Columnimport… Подробнее »InfoApp Jetpack Compose | #4

Retrofit2 | #9

https://youtu.be/WPS9qwySwF0 MainActivity.kt import android.os.Bundleimport com.google.android.material.snackbar.Snackbarimport androidx.appcompat.app.AppCompatActivityimport androidx.core.view.WindowCompatimport androidx.navigation.findNavControllerimport androidx.navigation.ui.AppBarConfigurationimport androidx.navigation.ui.navigateUpimport androidx.navigation.ui.setupActionBarWithNavControllerimport android.view.Menuimport android.view.MenuItemimport com.neco_desarrollo.retrofitdataclasslesson.databinding.ActivityMainBindingimport com.neco_desarrollo.retrofitdataclasslesson.retrofit.MainApiimport kotlinx.coroutines.CoroutineScopeimport kotlinx.coroutines.Dispatchersimport kotlinx.coroutines.launchimport retrofit2.Retrofitimport retrofit2.converter.gson.GsonConverterFactoryclass MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { WindowCompat.setDecorFitsSystemWindows(window, false) super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) val retrofit = Retrofit.Builder() .baseUrl(“https://api.weatherapi.com/v1/”) .addConverterFactory(GsonConverterFactory.create()) .build() binding.request.setOnClickListener { CoroutineScope(Dispatchers.Main).launch { val api = retrofit.create(MainApi::class.java) val model = api.getWeatherData( “ВАШ КЛЮЧ”, “London”, “3”, “no”, “no” ) binding.temp.text = model.current.temp_c.toString()… Подробнее »Retrofit2 | #9

Jetpack Compose: Navigation

MainActivity.kt import android.os.Bundleimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.material3.MaterialThemeimport androidx.compose.material3.Surfaceimport androidx.compose.material3.Textimport androidx.compose.runtime.Composableimport androidx.compose.ui.Modifierimport androidx.compose.ui.tooling.preview.Previewimport androidx.navigation.compose.NavHostimport androidx.navigation.compose.composableimport androidx.navigation.compose.rememberNavControllerimport com.neco_desarrollo.navigationcompose.ui.theme.NavigationComposeThemeclass MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val navController = rememberNavController() NavigationComposeTheme { NavHost( navController = navController, startDestination = “screen_1” ) { composable(“screen_1”){ Screen1 { navController.navigate(“screen_2”) } } composable(“screen_2”){ Screen2 { navController.navigate(“screen_3”) } } composable(“screen_3”){ Screen3 { navController.navigate(“screen_1”){ popUpTo(“screen_1”){ inclusive = true } } } } } } }… Подробнее »Jetpack Compose: Navigation

Bluetooth module | #20

MainActivity.kt import android.os.Bundleimport androidx.appcompat.app.AppCompatActivityimport androidx.core.view.WindowCompatclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.content_main) }} MainFragment.kt import android.bluetooth.BluetoothAdapterimport android.bluetooth.BluetoothManagerimport android.content.Contextimport android.os.Bundleimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport androidx.fragment.app.Fragmentimport androidx.navigation.fragment.findNavControllerimport com.neco_desarrollo.bluetoothmoduletest.databinding.FragmentMainBindingimport com.neco_dev.bt_def.BluetoothConstantsimport com.neco_dev.bt_def.bluetooth.BluetoothControllerclass MainFragment : Fragment(), BluetoothController.Listener { private lateinit var bluetoothController: BluetoothController private lateinit var btAdapter: BluetoothAdapter private lateinit var binding: FragmentMainBinding override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { binding = FragmentMainBinding.inflate(inflater, container, false) return binding.root… Подробнее »Bluetooth module | #20

InfoApp Jetpack Compose | #3

https://youtu.be/QOF4yBl3uuc MainActivity.kt import android.annotation.SuppressLintimport android.content.Contextimport android.os.Bundleimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.layout.fillMaxSizeimport androidx.compose.foundation.lazy.LazyColumnimport androidx.compose.foundation.lazy.itemsimport androidx.compose.material.*import androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport androidx.compose.runtime.rememberCoroutineScopeimport androidx.compose.ui.Modifierimport com.example.infoapp.ui.theme.InfoAppThemeimport com.example.infoapp.ui_components.DrawerMenuimport com.example.infoapp.ui_components.MainListItemimport com.example.infoapp.ui_components.MainTopBarimport com.example.infoapp.utils.DrawerEventsimport com.example.infoapp.utils.IdArrayListimport com.example.infoapp.utils.ListItemimport kotlinx.coroutines.launchclass MainActivity : ComponentActivity() { @SuppressLint(“UnusedMaterialScaffoldPaddingParameter”) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val scaffoldState = rememberScaffoldState() val coroutineScope = rememberCoroutineScope() val mainList = remember { mutableStateOf(getListItemsByIndex(0, this)) } val topBarTitle = remember { mutableStateOf(“Грибы”) } InfoAppTheme { Scaffold( scaffoldState = scaffoldState, topBar = { MainTopBar(… Подробнее »InfoApp Jetpack Compose | #3

InfoApp Jetpack Compose | #2

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 androidx.compose.runtime.rememberCoroutineScopeimport com.example.infoapp.ui.theme.InfoAppThemeimport com.example.infoapp.ui_components.DrawerMenuimport com.example.infoapp.ui_components.MainTopBarimport com.example.infoapp.utils.DrawerEventsimport kotlinx.coroutines.launchclass MainActivity : ComponentActivity() { @SuppressLint(“UnusedMaterialScaffoldPaddingParameter”) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { val scaffoldState = rememberScaffoldState() val coroutineScope = rememberCoroutineScope() val topBarTitle = remember { mutableStateOf(“Грибы”) } InfoAppTheme { Scaffold( scaffoldState = scaffoldState, topBar = { MainTopBar( title = topBarTitle.value, scaffoldState ) }, drawerContent = { DrawerMenu(){ event -> when(event){ is DrawerEvents.OnItemClick -> {… Подробнее »InfoApp Jetpack Compose | #2

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)