Skip to main content

Posts

Showing posts from July, 2020

android kotlin - RadioButton with image and text

MainActivity.kt package com.example.jetpack import android.content.Context import android.graphics.drawable.Drawable import android.os.Bundle import android.text.style.DynamicDrawableSpan import android.widget.RadioButton import androidx.appcompat.app.AppCompatActivity import androidx.core.text.set import androidx.core.text.toSpannable import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // set radio buttons icon and text programmatically setRadioImageText(radioNormal, R.drawable.ic_text_format," Normal text") setRadioImageText(radioBold, R.drawable.ic_format_bold," Bold text") setRadioImageText(radioItalic, R.drawable.ic_format_italic," Italic text") setRadioImageText(radioUnd...

android kotlin - RadioButton circle color programmatically

MainActivity.kt package com.cfsuman.kotlintutorials import android.content.res.ColorStateList import android.graphics.BlendMode import android.graphics.Color import android.graphics.PorterDuff import android.os.Build import android.os.Bundle import android.widget.* import androidx.appcompat.app.AppCompatActivity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Get the widgets reference from XML layout val radioGroup = findViewById<RadioGroup>(R.id.radioGroup) val radioAndroid = findViewById<RadioButton>(R.id.radioAndroid) val radioKotlin = findViewById<RadioButton>(R.id.radioKotlin) val radioFireworks = findViewById<RadioButton>(R.id.radioFireworks) val radioColdFusion = findViewById<RadioButton>(R.id.radioColdFusion) val tvResult = findViewById...

android kotlin - Change checked RadioButton text color

MainActivity.kt package com.example.jetpack import android.graphics.Color import android.graphics.Typeface import android.os.Bundle import android.widget.RadioButton import androidx.appcompat.app.AppCompatActivity import androidx.core.view.forEach import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // radio group checked change listener radioGroup.setOnCheckedChangeListener { radioGroup, i -> // get the radio group checked radio button findViewById<RadioButton>(i)?.apply { // show the checked radio button's text in text view textView2.text = text // update radio button style based on checked status updateRadioButtonStyle() } } } // functio...

android kotlin - RadioGroup onCheckedChange listener

MainActivity.kt package com.example.jetpack import android.os.Bundle import android.widget.RadioButton import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // radio group checked change listener radioGroup.setOnCheckedChangeListener { radioGroup, i -> // get the radio group checked radio button findViewById<RadioButton>(i)?.apply { // show the checked radio button's text in text view textView2.text = text } } } } activity_main.xml <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

android kotlin - TextView get width height programmatically

MainActivity.kt package com.example.jetpack import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // get first text view's width and height programmatically textView.getWidthHeight().apply { // show height and width in second text view textView2.text = "width $first pixels * height $second pixels" } } } // extension function to get a view's width and height programmatically fun View.getWidthHeight():Pair<Int,Int>{ // find out how big a view should be measure( // horizontal space requirements as imposed by the parent 0, // widthMeasureSpec // vertical space requirements as imposed ...

android kotlin - Coroutines with timeout or null

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 androidx.lifecycle.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.MalformedURLException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url of image to download val urlImage:URL? = try { URL("https://images.pexels.com/photos/298246/" + "pexels-photo-298246.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260") }catch (e:MalformedURLException){ button.isEnabled = false button2.isEnable...

android kotlin - Coroutines async with timeout

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 androidx.lifecycle.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.* import java.io.IOException import java.net.MalformedURLException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url of image to download val urlImage:URL? = try { URL("https://images.pexels.com/photos/1031770/" + "pexels-photo-1031770.jpeg?" + "auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260") }catch (e:MalformedURLException){ button.isEnabled = false bu...

android kotlin - Coroutines with timeout

MainActivity.kt package com.example.coroutine import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* 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 { textView.text = "Repeat 200 times, timeout 5000" + " milliseconds and delay 100 milliseconds\n\n\n" lifecycleScope.launch(Dispatchers.Default) { try { withTimeout(5000){ repeat(200){i-> withContext(Dispatchers.Main){ delay(100) textView.append("$i, ") } } ...

android kotlin - Coroutines JSON from URL

MainActivity.kt package com.example.coroutine import android.os.Bundle import android.util.Log import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.json.JSONException import org.json.JSONObject import java.io.BufferedReader import java.io.IOException import java.io.InputStreamReader import java.net.MalformedURLException import java.net.URL class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // url to download json data val url:URL? = try { URL("https://pastebin.com/raw/2bW31yqa") }catch (e:MalformedURLException){ Log.d("Exception", e.toString()) null } // downloa...

android kotlin - Coroutines with LiveData

MainActivity.kt package com.example.coroutine import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.* import androidx.lifecycle.Observer import kotlinx.android.synthetic.main.activity_main.* import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import org.json.JSONObject import java.io.BufferedReader import java.io.IOException import java.io.InputStream import java.io.InputStreamReader import java.net.URL import java.text.SimpleDateFormat import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // live data instance val apiTime = MutableLiveData<APITime>() // initially fetch json data fetchJson(apiTime) // observe the api time live data apiTime.observe(this, Observer { textView.text = "" i...

android kotlin - Coroutines with ViewModel LiveData

MainActivity.kt package com.example.coroutine import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { private lateinit var model: TimeViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // initialize the time view model model = ViewModelProvider(this).get(TimeViewModel::class.java) // observe the api time live data model.apiTime.observe(this, Observer { textView.text = "" it?.apply { textView.append(zone) textView.append("\n" + date) textView.append("\n\n" + time) } }) // fetch api json data button.setOnClickListener { ...

android kotlin - Coroutines Room ViewModel LiveData

MainActivity.kt package com.example.coroutine import android.os.Bundle import android.text.method.ScrollingMovementMethod import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import kotlinx.android.synthetic.main.activity_main.* import java.util.UUID import kotlin.random.Random class MainActivity : AppCompatActivity() { private lateinit var model: StudentViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // make text view text scrollable textView.movementMethod = ScrollingMovementMethod() // initialize the student view model model = ViewModelProvider(this).get(StudentViewModel::class.java) // observe the students live data model.students.observe(this, Observer { students-> textView.text = "Students(${students.size})..." ...