Уроки по Kotlin Android Studio

WeatherApp #2 – MainFragment, ViewBinding

MainActivity.kt import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport com.meter_alc_rgb.weatherappcursey.fragments.MainFragmentclass MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) supportFragmentManager .beginTransaction() .replace(R.id.placeHolder, MainFragment.newInstance()) .commit() }} MainFragment.kt import android.os.Bundleimport androidx.fragment.app.Fragmentimport android.view.LayoutInflaterimport android.view.Viewimport android.view.ViewGroupimport com.meter_alc_rgb.weatherappcursey.Rimport com.meter_alc_rgb.weatherappcursey.databinding.FragmentMainBindingclass MainFragment : Fragment() { private lateinit var binding: FragmentMainBinding override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { binding = FragmentMainBinding.inflate(inflater, container, false) return binding.root } companion object { @JvmStatic fun newInstance() = MainFragment() }} build.gradle… Подробнее »WeatherApp #2 – MainFragment, ViewBinding

Weather App Jetpack Compose #1

MainActivity import android.content.Contextimport android.os.Bundleimport android.util.Logimport androidx.activity.ComponentActivityimport androidx.activity.compose.setContentimport androidx.compose.foundation.backgroundimport androidx.compose.foundation.layout.*import androidx.compose.material.Buttonimport androidx.compose.material.MaterialThemeimport androidx.compose.material.Surfaceimport androidx.compose.material.Textimport androidx.compose.runtime.Composableimport androidx.compose.runtime.MutableStateimport androidx.compose.runtime.mutableStateOfimport androidx.compose.runtime.rememberimport androidx.compose.ui.Alignmentimport androidx.compose.ui.Modifierimport androidx.compose.ui.graphics.Colorimport androidx.compose.ui.tooling.preview.Previewimport androidx.compose.ui.unit.dpimport com.android.volley.Requestimport com.android.volley.toolbox.StringRequestimport com.android.volley.toolbox.Volleyimport com.meter_alc_rgb.wetherappcompose.ui.theme.WetherAppComposeThemeimport org.json.JSONObjectconst val API_KEY = “Ваш API ключь”class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { WetherAppComposeTheme { // A surface container using the ‘background’ color from the theme Surface( modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background ) { Greeting(“London”, this) }… Подробнее »Weather App Jetpack Compose #1

Weather app #1

Разрешение в AndroidManifest <uses-permission android:name=”android.permission.INTERNET”/> Зависимость Volley для build.gradle implementation ‘com.android.volley:volley:1.2.1’ MainActivity import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport com.android.volley.Requestimport com.android.volley.toolbox.StringRequestimport com.android.volley.toolbox.Volleyimport com.meter_alc_rgb.wetherapp2.databinding.ActivityMainBindingimport org.json.JSONObjectconst val API_KEY = “297ffc1c3e944aefaaf93152221705″class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.bGet.setOnClickListener { getResult(“London”) } } private fun getResult(name: String){ val url = “https://api.weatherapi.com/v1/current.json” + “?key=$API_KEY&q=$name&aqi=no” val queue = Volley.newRequestQueue(this) val stringRequest = StringRequest(Request.Method.GET, url, { response->… Подробнее »Weather app #1

CountDownTimer

MainActivity import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.os.CountDownTimerimport com.qrvvacuna_desarrollo_qrv.countdowntimer.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding private var timer: CountDownTimer? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.apply { bStart.setOnClickListener { startCountDownTimer(20000) } } } private fun startCountDownTimer(timeMillis: Long){ timer?.cancel() timer = object : CountDownTimer(timeMillis, 1){ override fun onTick(timeM: Long) { binding.tvTimer.text = timeM.toString() } override fun onFinish() { binding.tvTimer.text = “Finish” } }.start() }} activity_main.xml… Подробнее »CountDownTimer

Android Permission | ActivityResultLauncher

MainActivity import android.Manifestimport android.content.pm.PackageManagerimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.Toastimport androidx.activity.result.ActivityResultLauncherimport androidx.activity.result.contract.ActivityResultContractsimport androidx.core.content.ContextCompatclass MainActivity : AppCompatActivity() { private lateinit var pLauncher: ActivityResultLauncher<Array<String>> override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) registerPermissionListener() checkCameraPermission() } private fun checkCameraPermission(){ when{ ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED ->{ Toast.makeText(this,”Camera run”, Toast.LENGTH_LONG).show() } else -> { pLauncher.launch(arrayOf(Manifest.permission.CAMERA)) } } } private fun registerPermissionListener(){ pLauncher = registerForActivityResult( ActivityResultContracts.RequestMultiplePermissions()){ if(it[Manifest.permission.CAMERA] == true){ Toast.makeText(this,”Camera run”, Toast.LENGTH_LONG).show() } else { Toast.makeText(this,”Permission denied”, Toast.LENGTH_LONG).show() } }… Подробнее »Android Permission | ActivityResultLauncher

QR Scanner

MainActivity import android.content.Intentimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.Buttonimport android.widget.ImageViewimport androidmads.library.qrgenearator.QRGContentsimport androidmads.library.qrgenearator.QRGEncoderimport com.google.zxing.WriterExceptionclass MainActivity : AppCompatActivity() { var im: ImageView? = null var bGenerate: Button? = null var bScanner: Button? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) im = findViewById(R.id.imageView) bGenerate = findViewById(R.id.button) bScanner = findViewById(R.id.bScan) bScanner?.setOnClickListener { startActivity(Intent(this, ScannerActivity::class.java)) } bGenerate?.setOnClickListener { generateQrCode(“Поставь лайк если понравилось видео!!”) } } private fun generateQrCode(text: String){ val qrGenerator = QRGEncoder(text, null, QRGContents.Type.TEXT, 500)… Подробнее »QR Scanner

BtMonitor Kotlin | #5

ControlActivity import android.bluetooth.BluetoothManagerimport android.content.Contextimport android.content.Intentimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport android.view.Menuimport android.view.MenuItemimport androidx.activity.result.ActivityResultLauncherimport androidx.activity.result.contract.ActivityResultContractsimport com.neco_desarrollo.btmonitorkotlin.databinding.ActivityControlBindingclass ControlActivity : AppCompatActivity() { private lateinit var binding: ActivityControlBinding private lateinit var actListLauncher: ActivityResultLauncher<Intent> lateinit var btConnection: BtConnection private var listItem: ListItem? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityControlBinding.inflate(layoutInflater) setContentView(binding.root) onBtListResult() init() binding.apply { bA.setOnClickListener { btConnection.sendMessage(“A”) } bB.setOnClickListener { btConnection.sendMessage(“B”) } } } private fun init(){ val btManager = getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager… Подробнее »BtMonitor Kotlin | #5

Accelerometer

MainActivity import android.content.Contextimport android.hardware.Sensorimport android.hardware.SensorEventimport android.hardware.SensorEventListenerimport android.hardware.SensorManagerimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.widget.TextViewclass MainActivity : AppCompatActivity() { lateinit var sManager: SensorManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val tvSensor = findViewById<TextView>(R.id.tvSensor) sManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager val sensor = sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) val sListener = object : SensorEventListener{ override fun onSensorChanged(sEvent: SensorEvent?) { val value = sEvent?.values val sData = “X: ${value?.get(0)}nY: ${value?.get(1)}nZ: ${value?.get(2)}” tvSensor.text = sData } override fun onAccuracyChanged(p0: Sensor?, p1: Int)… Подробнее »Accelerometer

PlantApp || #27

MainActivity import android.content.Intentimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport androidx.activity.result.ActivityResultLauncherimport androidx.activity.result.contract.ActivityResultContractsimport androidx.recyclerview.widget.GridLayoutManagerimport androidx.recyclerview.widget.LinearLayoutManagerimport com.neco_desarrollo.plantshandbook.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding private val adapter = PlantAdapter() private var editLauncher: ActivityResultLauncher<Intent>? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) init() editLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){ if(it.resultCode == RESULT_OK){ adapter.addPlant(it.data?.getSerializableExtra(“plant”) as Plant) } } } private fun init() { binding.apply { rcView.layoutManager = GridLayoutManager(this@MainActivity, 3) rcView.adapter = adapter buttonAdd.setOnClickListener { editLauncher?.launch(Intent(this@MainActivity, EditActivity::class.java)) }… Подробнее »PlantApp || #27

RecyclerView || #26

MainActivity import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport androidx.recyclerview.widget.GridLayoutManagerimport androidx.recyclerview.widget.LinearLayoutManagerimport com.neco_desarrollo.plantshandbook.databinding.ActivityMainBindingclass MainActivity : AppCompatActivity() { lateinit var binding: ActivityMainBinding private val adapter = PlantAdapter() private val imageIdList = listOf( R.drawable.plant1, R.drawable.plant2, R.drawable.plant3, R.drawable.plant4, R.drawable.plant5, ) private var index = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) init() } private fun init() { binding.apply { rcView.layoutManager = GridLayoutManager(this@MainActivity, 3) rcView.adapter = adapter buttonAdd.setOnClickListener { if(index > 4) index = 0 val… Подробнее »RecyclerView || #26