neco2018

NavigationView & Navigation #2

MainActivity import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport androidx.navigation.NavControllerimport androidx.navigation.findNavControllerimport androidx.navigation.ui.AppBarConfigurationimport androidx.navigation.ui.navigateUpimport androidx.navigation.ui.setupActionBarWithNavControllerimport androidx.navigation.ui.setupWithNavControllerimport com.neco_dev.navigationdrawerlesson.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() { private lateinit var conf: AppBarConfiguration private lateinit var navController: NavController private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) setSupportActionBar(binding.ab.toolbar) navController = findNavController(R.id.fragmentContainerView) conf = AppBarConfiguration( setOf( R.id.item1, R.id.item2 ), binding.drawer ) setupActionBarWithNavController(navController, conf) binding.navView.setupWithNavController(navController) } override fun onSupportNavigateUp(): Boolean { return navController.navigateUp(conf) || super.onSupportNavigateUp() }} main_navigation.xml <?xml version=”1.0″… Подробнее »NavigationView & Navigation #2

NavigationView & Navigation

MainActivity import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }} activity_main.xml <?xml version=”1.0″ encoding=”utf-8″?><androidx.drawerlayout.widget.DrawerLayout 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” android:fitsSystemWindows=”true” tools:openDrawer=”start” tools:context=”.MainActivity”> <com.google.android.material.navigation.NavigationView android:id=”@+id/navView” android:layout_width=”match_parent” android:layout_height=”match_parent” android:layout_gravity=”start” app:headerLayout=”@layout/header” android:fitsSystemWindows=”true” app:menu=”@menu/main_drawer” /> <include layout=”@layout/action_bar” android:layout_width=”wrap_content” android:layout_height=”wrap_content” /></androidx.drawerlayout.widget.DrawerLayout> header.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=”170dp” android:background=”#8A0000″> <TextView android:id=”@+id/textView” android:layout_width=”wrap_content” android:layout_height=”wrap_content” android:layout_marginStart=”16dp” android:layout_marginBottom=”5dp” android:text=”The sport app!” android:textColor=”#FDFDFD” android:textSize=”16sp” app:layout_constraintBottom_toBottomOf=”parent” app:layout_constraintEnd_toEndOf=”parent” app:layout_constraintHorizontal_bias=”0.0″ app:layout_constraintStart_toStartOf=”parent” /> <ImageView android:id=”@+id/imageView”… Подробнее »NavigationView & Navigation

Navigation

MainActivity import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport androidx.navigation.findNavControllerimport androidx.navigation.ui.setupActionBarWithNavControllerclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setupActionBarWithNavController(findNavController(R.id.fragmentContainerView)) } override fun onSupportNavigateUp(): Boolean { val controller = findNavController(R.id.fragmentContainerView) return controller.navigateUp() || super.onSupportNavigateUp() }} dependencies implementation(“androidx.navigation:navigation-fragment-ktx:2.5.2”)implementation(“androidx.navigation:navigation-ui-ktx:2.5.2”) MainFragment import android.os.Bundleimport androidx.fragment.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.Buttonimport androidx.navigation.fragment.findNavControllerimport com.neco_dev.navtesty.Rclass MainFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_main,… Подробнее »Navigation

Weather App JetPack Compose #9 : MainCard()

https://youtu.be/4Q83Ns_N_8w MianScreen import androidx.compose.foundation.layout.*import androidx.compose.foundation.lazy.LazyColumnimport androidx.compose.foundation.lazy.itemsIndexedimport androidx.compose.foundation.shape.RoundedCornerShapeimport androidx.compose.material.*import androidx.compose.runtime.Composableimport androidx.compose.runtime.MutableStateimport androidx.compose.runtime.rememberCoroutineScopeimport androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.draw.clipimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.res.painterResourceimport androidx.compose.ui.text.TextStyleimport androidx.compose.ui.unit.dpimport androidx.compose.ui.unit.spimport coil.compose.AsyncImageimport com.google.accompanist.pager.ExperimentalPagerApiimport com.google.accompanist.pager.HorizontalPagerimport com.google.accompanist.pager.pagerTabIndicatorOffsetimport com.google.accompanist.pager.rememberPagerStateimport com.meter_alc_rgb.weatherappcomposey.Rimport com.meter_alc_rgb.weatherappcomposey.data.WeatherModelimport com.meter_alc_rgb.weatherappcomposey.ui.theme.BlueLightimport kotlinx.coroutines.launch@Composablefun MainCard(currentDay: MutableState<WeatherModel>) { Column( modifier = Modifier .padding(5.dp) ) { Card( modifier = Modifier.fillMaxWidth(), backgroundColor = BlueLight, elevation = 0.dp ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { Text( text… Подробнее »Weather App JetPack Compose #9 : MainCard()

Room & SQLite (Kotlin)

https://youtu.be/sXXlvGZ24H8 Зависимости: plugins { id ‘com.android.application’ id ‘org.jetbrains.kotlin.android’ id ‘kotlin-kapt’} dependencies { implementation ‘androidx.room:room-ktx:2.4.3’ implementation ‘androidx.lifecycle:lifecycle-livedata-ktx:2.5.1’ kapt ‘androidx.room:room-compiler:2.4.3’ implementation ‘androidx.core:core-ktx:1.7.0’ implementation ‘androidx.appcompat:appcompat:1.5.1’ implementation ‘com.google.android.material:material:1.6.1’ implementation ‘androidx.constraintlayout:constraintlayout:2.1.4’ testImplementation ‘junit:junit:4.13.2’ androidTestImplementation ‘androidx.test.ext:junit:1.1.3’ androidTestImplementation ‘androidx.test.espresso:espresso-core:3.4.0’} MainActivity import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport androidx.lifecycle.asLiveDataimport com.text_game.roomtest.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) val db = MainDb.getDb(this) db.getDao().getAllItem().asLiveData().observe(this){ list-> binding.tvList.text = “” list.forEach { val text =… Подробнее »Room & SQLite (Kotlin)

Weather app #20 : AlertDialog для выбора города.

https://youtu.be/pbBPK0eT3bo MainFragment import android.Manifestimport android.content.Contextimport android.content.Intentimport android.content.pm.PackageManagerimport android.location.LocationManagerimport android.os.Bundleimport android.provider.Settingsimport android.util.Logimport androidx.fragment.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.Toastimport androidx.activity.result.ActivityResultLauncherimport androidx.activity.result.contract.ActivityResultContractsimport androidx.core.app.ActivityCompatimport androidx.fragment.app.FragmentActivityimport androidx.fragment.app.activityViewModelsimport com.android.volley.Requestimport com.android.volley.toolbox.StringRequestimport com.android.volley.toolbox.Volleyimport com.google.android.gms.location.FusedLocationProviderClientimport com.google.android.gms.location.LocationRequestimport com.google.android.gms.location.LocationServicesimport com.google.android.gms.location.Priorityimport com.google.android.gms.tasks.CancellationTokenSourceimport com.google.android.material.tabs.TabLayoutMediatorimport com.meter_alc_rgb.weatherappcursey.DialogManagerimport com.meter_alc_rgb.weatherappcursey.MainViewModelimport com.meter_alc_rgb.weatherappcursey.Rimport com.meter_alc_rgb.weatherappcursey.adapters.VpAdapterimport com.meter_alc_rgb.weatherappcursey.adapters.WeatherModelimport com.meter_alc_rgb.weatherappcursey.databinding.FragmentMainBindingimport com.squareup.picasso.Picassoimport org.json.JSONObjectconst val API_KEY = “Ваш API ключ”class MainFragment : Fragment() { private lateinit var fLocationClient: FusedLocationProviderClient private val fList = listOf( HoursFragment.newInstance(), DaysFragment.newInstance() ) private val tList = listOf( “Hours”, “Days” ) private… Подробнее »Weather app #20 : AlertDialog для выбора города.

Weather app #19 : isLocationEnabled()

https://youtu.be/l_MYPJVEiZ4 MainActivity import android.Manifestimport android.content.Contextimport android.content.Intentimport android.content.pm.PackageManagerimport android.location.LocationManagerimport android.os.Bundleimport android.provider.Settingsimport android.util.Logimport androidx.fragment.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.Toastimport androidx.activity.result.ActivityResultLauncherimport androidx.activity.result.contract.ActivityResultContractsimport androidx.core.app.ActivityCompatimport androidx.fragment.app.FragmentActivityimport androidx.fragment.app.activityViewModelsimport com.android.volley.Requestimport com.android.volley.toolbox.StringRequestimport com.android.volley.toolbox.Volleyimport com.google.android.gms.location.FusedLocationProviderClientimport com.google.android.gms.location.LocationRequestimport com.google.android.gms.location.LocationServicesimport com.google.android.gms.location.Priorityimport com.google.android.gms.tasks.CancellationTokenSourceimport com.google.android.material.tabs.TabLayoutMediatorimport com.meter_alc_rgb.weatherappcursey.DialogManagerimport com.meter_alc_rgb.weatherappcursey.MainViewModelimport com.meter_alc_rgb.weatherappcursey.Rimport com.meter_alc_rgb.weatherappcursey.adapters.VpAdapterimport com.meter_alc_rgb.weatherappcursey.adapters.WeatherModelimport com.meter_alc_rgb.weatherappcursey.databinding.FragmentMainBindingimport com.squareup.picasso.Picassoimport org.json.JSONObjectconst val API_KEY = “Ваш API ключ”class MainFragment : Fragment() { private lateinit var fLocationClient: FusedLocationProviderClient private val fList = listOf( HoursFragment.newInstance(), DaysFragment.newInstance() ) private val tList = listOf( “Hours”, “Days” ) private… Подробнее »Weather app #19 : isLocationEnabled()

Weather App JetPack Compose #8 : getWeatherDyDays()

MainScreen import androidx.compose.foundation.Imageimport androidx.compose.foundation.layout.*import androidx.compose.foundation.lazy.LazyColumnimport androidx.compose.foundation.lazy.itemsIndexedimport androidx.compose.foundation.shape.RoundedCornerShapeimport androidx.compose.material.*import androidx.compose.runtime.Composableimport androidx.compose.runtime.MutableStateimport androidx.compose.runtime.rememberCoroutineScopeimport androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.draw.alphaimport androidx.compose.ui.draw.clipimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.layout.ContentScaleimport androidx.compose.ui.res.painterResourceimport androidx.compose.ui.text.TextStyleimport androidx.compose.ui.tooling.preview.Previewimport androidx.compose.ui.unit.dpimport androidx.compose.ui.unit.spimport coil.compose.AsyncImageimport com.google.accompanist.pager.ExperimentalPagerApiimport com.google.accompanist.pager.HorizontalPagerimport com.google.accompanist.pager.pagerTabIndicatorOffsetimport com.google.accompanist.pager.rememberPagerStateimport com.meter_alc_rgb.weatherappcomposey.Rimport com.meter_alc_rgb.weatherappcomposey.data.WeatherModelimport com.meter_alc_rgb.weatherappcomposey.ui.theme.BlueLightimport kotlinx.coroutines.launch@Composablefun MainCard() { Column( modifier = Modifier .padding(5.dp) ) { Card( modifier = Modifier.fillMaxWidth(), backgroundColor = BlueLight, elevation = 0.dp ) { Column( modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally ) { Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) {… Подробнее »Weather App JetPack Compose #8 : getWeatherDyDays()

Weather app #18 : Location

MainFragment import android.Manifestimport android.content.pm.PackageManagerimport android.os.Bundleimport android.util.Logimport androidx.fragment.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.Toastimport androidx.activity.result.ActivityResultLauncherimport androidx.activity.result.contract.ActivityResultContractsimport androidx.core.app.ActivityCompatimport androidx.fragment.app.FragmentActivityimport androidx.fragment.app.activityViewModelsimport com.android.volley.Requestimport com.android.volley.toolbox.StringRequestimport com.android.volley.toolbox.Volleyimport com.google.android.gms.location.FusedLocationProviderClientimport com.google.android.gms.location.LocationRequestimport com.google.android.gms.location.LocationServicesimport com.google.android.gms.tasks.CancellationTokenSourceimport com.google.android.material.tabs.TabLayoutMediatorimport com.meter_alc_rgb.weatherappcursey.MainViewModelimport com.meter_alc_rgb.weatherappcursey.Rimport com.meter_alc_rgb.weatherappcursey.adapters.VpAdapterimport com.meter_alc_rgb.weatherappcursey.adapters.WeatherModelimport com.meter_alc_rgb.weatherappcursey.databinding.FragmentMainBindingimport com.squareup.picasso.Picassoimport org.json.JSONObjectconst val API_KEY = “Ваш API ключ”class MainFragment : Fragment() { private lateinit var fLocationClient: FusedLocationProviderClient private val fList = listOf( HoursFragment.newInstance(), DaysFragment.newInstance() ) private val tList = listOf( “Hours”, “Days” ) private lateinit var pLauncher: ActivityResultLauncher<String> private lateinit var… Подробнее »Weather app #18 : Location

Weather app #17 : Оброботка нажатий на список дней.

MainFragment import android.Manifestimport android.os.Bundleimport android.util.Logimport androidx.fragment.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport android.widget.Toastimport androidx.activity.result.ActivityResultLauncherimport androidx.activity.result.contract.ActivityResultContractsimport androidx.fragment.app.FragmentActivityimport androidx.fragment.app.activityViewModelsimport com.android.volley.Requestimport com.android.volley.toolbox.StringRequestimport com.android.volley.toolbox.Volleyimport com.google.android.material.tabs.TabLayoutMediatorimport com.meter_alc_rgb.weatherappcursey.MainViewModelimport com.meter_alc_rgb.weatherappcursey.Rimport com.meter_alc_rgb.weatherappcursey.adapters.VpAdapterimport com.meter_alc_rgb.weatherappcursey.adapters.WeatherModelimport com.meter_alc_rgb.weatherappcursey.databinding.FragmentMainBindingimport com.squareup.picasso.Picassoimport org.json.JSONObjectconst val API_KEY = “Ваш API ключ”class MainFragment : Fragment() { private val fList = listOf( HoursFragment.newInstance(), DaysFragment.newInstance() ) private val tList = listOf( “Hours”, “Days” ) private lateinit var pLauncher: ActivityResultLauncher<String> private lateinit var binding: FragmentMainBinding private val model: MainViewModel by activityViewModels() override fun onCreateView(… Подробнее »Weather app #17 : Оброботка нажатий на список дней.