강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

shafeel2님의 프로필 이미지
shafeel2

작성한 질문수

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

수평 측정기 02 - UI 작성

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

작성

·

247

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)
        )
    }
}

 

답변 2

1

shafeel2님의 프로필 이미지
shafeel2
질문자

감사합니다

해결되었습니다

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

import androidx.compose.ui.graphics.Color

 

 

0

오준석님의 프로필 이미지
오준석
지식공유자

import 가 잘못된 것 같습니다.

 

import android.graphics.Color

대신

import androidx.compose.ui.graphics.Color

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

shafeel2님의 프로필 이미지
shafeel2

작성한 질문수

질문하기