💻STUDY/ANDROID STUDY
[Android-Kotlin] 5주차
- 한빛미디어의 『이것이 안드로이드다 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 |
댓글