inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

모던 안드로이드 - Jetpack Compose 입문

수평 측정기 02 - UI 작성

drawCircle( color = Color.... 부분에서 빨간줄이 ...

269

shafeel2

작성한 질문수 67

0

강사님의 노고에 다시한번 감사드리며

질문드립니다

 

 

TiltScreen 부분의

Color.Black

Color.Green

부분에 빨간줄이 생기는데 이유가 뭘까요

q5.png

 

import android.app.Application
import android.content.Context
import android.graphics.Color
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.Composable
import androidx.compose.runtime.State
import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import com.dongguntech.copose_tiltsensor.ui.theme.Copose_TiltSensorTheme

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            Copose_TiltSensorTheme {
                TiltScreen()
            }
        }
    }
}

class MainViewModel(application: Application) :
    AndroidViewModel(application), SensorEventListener, LifecycleEventObserver {

        private val _value0 = mutableStateOf(0f)
        val x: State<Float> = _value0

        private val _value1 = mutableStateOf(0f)
        val y: State<Float> = _value1

        private val sensorManager by lazy {
            application.getSystemService(Context.SENSOR_SERVICE) as SensorManager
        }

        fun registerSensor() {
            sensorManager.registerListener(
                this,
                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
                SensorManager.SENSOR_DELAY_NORMAL                               // 센서의 작동주기
            )
        }

        private fun unregisterSensor() {
            sensorManager.unregisterListener(this)
        }

        override fun onSensorChanged(event: SensorEvent?) {
            event?.let {
                Log.d(
                    "MainViewModel",
                    "onSensorChanged x: ${event.values[0]}, y: ${event.values[1]}, z: ${event.values[2]}"
                )
                _value0.value = event.values[0]                     // x 값
                _value1.value = event.values[1]                     // y 값
            }
        }

        override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
        }

        override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
            if (event == Lifecycle.Event.ON_RESUME) {
                registerSensor()
            } else if (event == Lifecycle.Event.ON_PAUSE) {
                unregisterSensor()
            }
        }
}

@Composable
fun TiltScreen(x: Float, y: Float) {
    val yCoord = x * 20
    val xCoord = y * 20

    Canvas(modifier = Modifier.fillMaxSize()) {
        // 원의 중심
        val centerX = size.width / 2
        val centerY = size.height / 2
        // 바깥 원
        drawCircle(
            color = Color.Black,
            radius = 100f,
            center = Offset(centerX, centerY),
            style = Stroke()
        )
        // 녹색 원
        drawCircle(
            color = Color.Green,
            radius = 100f,
            center = Offset(xCoord + centerX, yCoord + centerY),
        )
        // 가운데 십자가
        drawLine(
            color = Color.Black,
            start = Offset(centerX - 20, centerY),
            end = Offset(centerX + 20, centerY)
        )
        drawLine(
            color = Color.Black,
            start = Offset(centerX, centerY - 20),
            end = Offset(centerX, centerY + 20)
        )
    }
}

 

android kotlin jetpack

답변 2

1

shafeel2

감사합니다

해결되었습니다

강사님의 건강과 부자되심을 기원합니다

import androidx.compose.ui.graphics.Color

 

 

0

오준석

import 가 잘못된 것 같습니다.

 

import android.graphics.Color

대신

import androidx.compose.ui.graphics.Color

이것으로 교체해 보시기 바랍니다.

ViewModel 사용 관련 질문

0

75

1

onTabFavorite 콜백 관련 질문

0

60

2

livedata가 왜 필요한 건지 궁금합니다

0

128

3

깃허브에 있는 MemoryTodoRepository 는 룸을 사용하는게 아닌 메모리에 저장, 수정, 삭제 하는건가요?

0

172

1

이젠 아래와 같은 오류가 뜨는데 KSP가 문제 인걸까요?

0

369

2

영상 1분쯤에서 MainActivity에서 viewModel이 저는 안되고 그래들 문제인거 같은데 해결 방법을 모르겠습니다.

0

186

1

전자액자에서 영상과 깃허브의 내용이 달라서 영상을 다보고 깃허브 내용으로 돌려봤는데 권한요청부터가 안됩니다.

0

188

2

Navigation수업에서 string대신 bitmap을 인자로 넘겨주는 방법?

0

177

1

TodoList - 04에서 recentlyDeleteTodo가 null일 경우 처리 방법 문의

0

171

1

나만의 웹 브라우저 03 - UI와 ViewModel 연동 강의에서 질문들이 있습니다.

0

205

2

Scaffold를 사용하면 Content padding parameter it is not used 에러

0

349

1

Material3로 바뀌면서 강의랑 다른 부분이 초반부터 있는데요.

0

221

1

강의에서 사용하는 리소스(이미지 등)을 다운 받을 수 있으면 좋겠어요.

0

248

2

Card Compose에서 elevation 옵션

1

347

1

구글맵 질문입니다

0

233

1

구글맵강의중에서 ..

0

578

7

val scaffoldState = rememberScaffoldState() 에서 빨간줄이 생기네요

0

524

1

나만의 웹브라우져 02 코드실행시 에뮬레이터에 따라

0

221

1

나만의 웹브라우져 01 코딩 후 실행하면 아래와 같은 오류가 뜨네요

0

3220

2

비만도계산기 로직작성 에서 문제가 발생했어요 ^^

0

338

3

viewModel() 오류 추가질문입니다

0

1118

2

viewModel: MainViewModel = viewModel() 에 오류있습니다

0

537

3

AAR metadata 관련오류발생

0

1437

3

모바일화면에 키보드가 사라지지 않아

0

250

1