• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

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

23.12.14 19:07 작성 조회수 97

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

질문자

2023.12.15

감사합니다

해결되었습니다

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

import androidx.compose.ui.graphics.Color

 

 

0

import 가 잘못된 것 같습니다.

 

import android.graphics.Color

대신

import androidx.compose.ui.graphics.Color

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