강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

shafeel22040 のプロフィール画像
shafeel22040

投稿した質問数

モダンアンドロイド - Jetpack Compose入門

水平メーター02 - UIの作成

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

作成

·

264

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

 

androidkotlinjetpack

回答 2

1

shafeel2님의 프로필 이미지
shafeel2
質問者

감사합니다

해결되었습니다

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

import androidx.compose.ui.graphics.Color

 

 

0

survivalcoding님의 프로필 이미지
survivalcoding
インストラクター

import 가 잘못된 것 같습니다.

 

import android.graphics.Color

대신

import androidx.compose.ui.graphics.Color

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

shafeel22040 のプロフィール画像
shafeel22040

投稿した質問数

質問する