💻STUDY/ANDROID STUDY

[Android-Kotlin] 5주차

coldNoodlePigeon 2022. 5. 9.
  • 한빛미디어의 『이것이 안드로이드다 with 코틀린』 유튜브 강좌를 듣고 정리한 내용입니다 

텍스트 뷰 다루기 

 

-maxLines 속성: 최대로 표시하는 line의 수 결정 

-minLines 속성: 최소 표시하는 line의 수 결정 

-singleLine: true로 할 시 여러줄을 한 줄로 만들어줌 

-ellipsize: 말줄임 start, end, middle,marquee 각 부분들을 줄여줌. 

-fontFamily: font 지정 가능 

-maxLength: 최대로 보여주는 텍스트 수 

 

 

화면에 그려지는 디자인 요소 위젯 : 에디트텍스트 

 

buildFeatures{
        viewBinding true 
    }

뷰바인딩을 사용하기 위해 build.grale(:app)에서 다음과 같은 코드를 추가해주어야 한다. (후에 Sync Now 누르는 것을 잊지 말자!) 

 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.example.basiclayout.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

    }
}

기본 여기에서 시작한다. 

 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding){
            editText.addTextChangedListener { //it는 addTextChangedListener 함수의 return값 
                Log.d("에딧텍스트","입력된값${it.toString()}")
            }
        }
    }
}

위 함수는 editText가 변경되면 다음과 같은 코드를 실행한다. 

 

 

화면에 그려지는 디자인 요소 위젯 - 라디오그룹고 라디오버튼 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        binding.radioGroup.setOnCheckedChangeListener { radioGroup, i ->
            when(i){
                R.id.apple->{Log.d("라디오버튼","사과가 선택되었습니다.")} //apple 버튼이 체크 되었을 때 
                R.id.banana->{Log.d("라디오버튼","바나나가 선택되었습니다.")} //banana 버튼이 체크 되었을 때 
                R.id.orange->{Log.d("라디오버튼","오렌지가 선택되었습니다.")} //orange .. 
            }
        }
    }
}

라디오버튼이 클릭되면 각각의 명령들을 수행하도록 한다. 

 

 

화면에 그려지는 디자인 요소 위젯: 체크박스 

 

 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding){
            apple.setOnCheckedChangeListener { compoundButton, b ->
                if(b) Log.d("체크박스","사과가 선택되었습니다.")
                else Log.d("체크박스","사과가 선택해제되었습니다.")

            }

            banana.setOnCheckedChangeListener { compoundButton, b ->
                if(b) Log.d("체크박스","바나나가 선택되었습니다.")
                else Log.d("체크박스","바나나가 선택해제되었습니다.")

            }

            orange.setOnCheckedChangeListener { compoundButton, b ->
                if(b) Log.d("체크박스","오렌지가 선택되었습니다.")
                else Log.d("체크박스","오렌지가 선택해제되었습니다.")

            }
        }
        
        
    }
}

 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.CompoundButton
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding){

            apple.setOnCheckedChangeListener(checkBoxListener)
            banana.setOnCheckedChangeListener(checkBoxListener)
            orange.setOnCheckedChangeListener(checkBoxListener)
        }
    }
    val checkBoxListener = CompoundButton.OnCheckedChangeListener { checkBox, b ->
        when(checkBox.id){
            R.id.apple->{
                if(b) Log.d("체크박스","사과가 선택되었습니다.")
                else Log.d("체크박스","사과가 선택해제되었습니다.")
            }
            R.id.banana->{
                if(b) Log.d("체크박스","바나나가 선택되었습니다.")
                else Log.d("체크박스","바나난가 선택해제되었습니다.")
            }
            R.id.orange->{
                if(b) Log.d("체크박스","오렌지가 선택되었습니다.")
                else Log.d("체크박스","오렌지가 선택해제되었습니다.")
            }
        }
    }
}

 

 

화면에 그려지는 디자인 요소 위젯: 토글 스위치 

 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.CompoundButton
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding){
            toggleButton.setOnCheckedChangeListener { compoundButton, b ->
                if(b) textToggle.text="On"
                else textToggle.text="Off"
            }
        }
    }


}

창을 닫거나 할때 자주 사용되는 토글버튼. 

 

 

화면에 그려지는 디자인 요소 위젯: 프로그레스 바 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.CompoundButton
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding
import kotlin.concurrent.thread

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        
        with(binding){
            //<- 메인스레드 
            thread(start=true){ //->서브 스레드 
                Thread.sleep(3000)
                //화면에 영향을 미치는 코드는 메인스레드로 다시 보내야한다 
                runOnUiThread {
                    progresslayout.visibility= View.GONE
                }
            }//<-서브스레드 
            
            //<-메인스레드 
        }
    }


}

 

 

 

화면에 그려지는 디자인 요소 위젯: 시크 바 

 

음악 플레이어에서 구간을 찾아갈 때 사용 

 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.CompoundButton
import android.widget.SeekBar
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding
import kotlin.concurrent.thread

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding){
            seekBar.setOnSeekBarChangeListener(object: SeekBar.OnSeekBarChangeListener{
                override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {

                }

                override fun onStartTrackingTouch(p0: SeekBar?) {

                }

                override fun onStopTrackingTouch(p0: SeekBar?) {
                    
                }


            })
        }
    }


}

 

 

화면에 그려지는 디자인 요소 위젯: 레이팅바 

package com.example.basiclayout

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.CompoundButton
import android.widget.SeekBar
import androidx.core.widget.addTextChangedListener
import com.example.basiclayout.databinding.ActivityMainBinding
import kotlin.concurrent.thread

class MainActivity : AppCompatActivity() {

    val binding by lazy {ActivityMainBinding.inflate(layoutInflater)}

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(binding.root)

        with(binding){
            ratingBar.setOnRatingBarChangeListener{ ratingBar, rating, fromUser->
                if(fromUser) textView.text-"$rating"
            }
        }
    }


}

'💻STUDY > ANDROID STUDY' 카테고리의 다른 글

[Android-Kotlin] 7주차  (0) 2022.05.25
[Android-Kotlin] 6주차  (0) 2022.05.16
[Android-Kotlin] 4주차  (0) 2022.05.02
[Android-Kotlin] 3주차  (0) 2022.04.02
[Android- Kotlin] 2주차  (0) 2022.03.27

댓글