Skip to main content

Posts

android kotlin - Room with coroutines

MainActivity.kt package com.example.coroutine import android.os.Bundle import android.text.method.ScrollingMovementMethod import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.util.* import kotlin.random.Random class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // get room database instance val db = RoomSingleton.getInstance(this) // make text view text scrollable textView.movementMethod = ScrollingMovementMethod() btnInsert.setOnClickListener { // generate a new student val student = Student( null, UUID.randomUUID().toString(), Random.nextInt(100) ) // insert new student in room database GlobalScope.launch(Dispatcher...

android kotlin - Coroutines async await all

MainActivity.kt package com.example.coroutine import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // urls of images val urlImage1 = URL("https://images.pexels.com/photos/1080762/" + "pexels-photo-1080762.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260") val urlImage2 = URL("https://images.pexels.com/photos/1118440/" + "pexels-photo-1118440.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=75...

android kotlin - Coroutines cancel job

MainActivity.kt package com.example.coroutine import android.graphics.Color import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* class MainActivity : AppCompatActivity() { lateinit var job:Job override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { // initialize the job job = GlobalScope.launch(Dispatchers.Main) { textView.setTextColor(Color.parseColor("#006A4E")) textView.text = "Loop through 10 down to 0" for(i in 10 downTo 0){ delay(1000) textView.append("\n" + i) } } // invoke on job completion job.invokeOnCompletion { it?.apply { ...

android kotlin - Coroutines download image from url

MainActivity.kt package com.example.coroutine import android.content.Context import android.content.ContextWrapper import android.graphics.Bitmap import android.graphics.BitmapFactory import android.net.Uri import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.File import java.io.FileOutputStream import java.io.IOException import java.io.OutputStream import java.net.URL import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val context = this // url of image to download val urlImage:URL = URL("https://images.pexels.com/photos/730344/" + "pexels-photo-730344.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h...

android kotlin - Coroutines url to bitmap

MainActivity.kt package com.example.coroutine import android.graphics.Bitmap import android.graphics.BitmapFactory import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url of image val urlImage:URL = URL("https://images.pexels.com/photos/954129/" + "pexels-photo-954129.jpeg?" + "auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260") button.setOnClickListener { it.isEnabled = false // disable button // async task to get bitmap from url val result: Deferred<Bitmap?> = GlobalScope.async { urlImage.toBitm...

android kotlin - Coroutines async

MainActivity.kt package com.example.coroutine import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.BufferedReader import java.io.InputStreamReader import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url to get html val url:URL = URL("https://developer.android.com/") button.setOnClickListener { // creates a coroutine and returns its future result // as an implementation of deferred // async task to get html as string from url val result: Deferred = GlobalScope.async { url.getHtml() } // global scope is used to launch top-level coroutines which are // operating on the wh...

android kotlin - Coroutines start undispatched

MainActivity.kt package com.example.coroutine import android.graphics.Color import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { // set text color by checkbox checked state if (checkBox.isChecked){ textView.setTextColor(Color.parseColor("#800020")) textView.text = "1. CoroutineStart.UNDISPATCHED" } else{ textView.setTextColor(Color.parseColor("#8DB600")) textView.text = "1. CoroutineStart.DEFAULT" } GlobalScope.launch( Dispatchers.Main , if (checkBox.isChecked...

android kotlin - Coroutines delay

MainActivity.kt package com.example.coroutine import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import kotlin.random.Random class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // show random numbers periodically button.setOnClickListener { GlobalScope.launch(Dispatchers.Main) { doTask() } } } private suspend fun doTask(){ textView.text = "Random numbers..." for (i in 12 downTo 0){ // delays coroutine for a given time without blocking // a thread and resumes it after a specified time delay(1000) // time in milliseconds // show next random number after delay textView.append("\n" +...

android kotlin - Paint gradient path

MainActivity.kt package com.cfsuman.kotlintutorials import android.app.Activity import android.graphics.* import android.os.Bundle import android.widget.* class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // get the widgets reference from XML layout val imageView = findViewById<ImageView>(R.id.imageView) // show drawing on image view imageView.setImageBitmap( drawGradientPath() ) } } // function to draw gradient path on canvas fun drawGradientPath():Bitmap?{ val bitmap = Bitmap.createBitmap( 1500, 850, Bitmap.Config.ARGB_8888 ) // canvas for drawing val canvas = Canvas(bitmap).apply { drawColor(Color.parseColor("#FEFEFA")) } // initialize a rectF instance val margin = 50F val rectF = RectF( ...

android kotlin - Paint linear gradient

MainActivity.kt package com.cfsuman.kotlintutorials import android.app.Activity import android.graphics.* import android.os.Bundle import android.widget.* class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // get the widgets reference from XML layout val imageView = findViewById<ImageView>(R.id.imageView) // show drawing on image view imageView.setImageBitmap( drawLinearGradient() ) } } // function to draw linear gradient on canvas fun drawLinearGradient():Bitmap?{ val bitmap = Bitmap.createBitmap( 1500, 850, Bitmap.Config.ARGB_8888 ) // canvas for drawing val canvas = Canvas(bitmap).apply { drawColor(Color.parseColor("#FEFEFA")) } // initialize a rectF instance val margin = 50F val rectF = RectF( ...