강의/부캠 안드로이드 학습정리

day 17. 안드로이드 view 만들기

느낀점은 딱히 없고 그냥 그렇구나.. 하는 느낌.

자식일 수록 맨 위로 오게 짰고, 동적으로 하려면 각각 frame간에 대한 상대적 위치 정보를 가지고 있어서 frame들이 변할때마다 업데이트 해주는 방식으로 과제가 나와서 진짜로 이런 식으로 되어 있는 것 같다. 생각보다 복잡하면서도 간단하다.

 


 

string에 repeat 사용가능

val indent = if (deep == 0) "" else "  ".repeat(deep)+"ㄴ" // 들여쓰기

random 글자 생성

private fun rand() = (('a'..'z') + ('0'..'9')).random()

recursive string

    fun recursiveDescription(layer: Int = 0): String {
        var space = layer
        val output = StringBuilder()
        for (i in 1..space) output.append(" ")
        if (space != 0) output.append("ㄴ")
        output.append("Frame($id) $color $origin $size\n")
        space += 2
        subFrames.forEach {
            output.append(it.recursiveDescription(space))
        }
        return output.toString()
    }

 

사실 ui 조정은 left, right가 동시에 주어지면 size도 조절하게 하는게 맞는듯.

 

원래 layout은 만들때 절대위치 가지고 있다가 누군가의 안으로 들어왔을 때 그 layout의 상대위치로 바뀌고, 나오면 다시 절대위치로 바뀌고.. 하는 방식인 것 같다.

 

run { ... } 으로 하면 그냥 깔끔하게 구현 가능. local variable 그런거 없다.

 

 

실제 안드로이드에선 relative layout로 하면 성능이 느려진다.. constrant layout로 하는 듯.

linear는 나열을 해야 하는데 constrant로 하면 자유로워서 편한 것 같다.

depth를 깊게 안 할 수록 성능 상 좋다. 계층을 최대한 얇게 만드는것.

constrant로 하면 화면 비율에 따라 의도하지 않은 거라 linear weight 비율로 했었는데 constrant로 하는게 나은 듯. constrant는 flat view 계층.

그럼 비율 문제는? weight 하는게 따로 있음. 단점은 가독성이 낮아짐. 기기 크기를 받아와서 비율 계산해서 하면 되지 않나? 되긴 하는데 복잡한듯.

 

반응형 레이아웃을 사용하지 않아도 되는 이유? 그냥 사용하는게 좋은 듯. 보통은 linear는 화면 크기를 반영한 건 아니니까. 완전 크기가 고정된 어플엔 반응형을 안써도 되겠지만.. 게임 조이스틱이 딱 좋은 예시인듯.

 

data class로 만들기? OOP가 아니게 되고 함수들 다 빼내야 해서 좀 어렵지 않을까.

 

근데 layout이 반응형을 안 쓰는 경우가 더 없을 것 같은데. 물론 상단바 크기, 아이콘 크기 같은 가이드라인이 있긴 하지만 이걸로 layout까진 반영이 되진 않는듯.

 

flutter가 짱짱 아닌가? 나중엔 몰라도 지금은 제한사항이 많아서 아직은 아니다. 미래를 본다면 flutter도 괜찮을 듯.