Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Team-16] [Android] [PR-5] 구글맵 연동, 숙소 상세 및 예약 화면, 위시리스트 화면, 예약 내역 화면 구현 #275

Open
wants to merge 19 commits into
base: team-16
Choose a base branch
from

Conversation

hanchang97
Copy link
Collaborator

@hanchang97 hanchang97 commented Jun 8, 2022

안녕하세요 레노!
깃 이슈로 PR이 조금 늦어졌습니다ㅜㅜ


  • 숙소 상세 정보 및 예약 화면, 위시리스트 화면, 예약 내역 화면 작업을 진행했습니다

  • 구글 맵 연동 후 디자인 요구사항과 같은 마커를 추가해봤습니다

image

google_map_demo


<질문>

1.

val nearInfoList: List<NearInfo> by viewModel.nearTripList.collectAsState(initial = emptyList())

compose에서 viewModel의 stateFlow를 이렇게 사용하는 글을 보고 이렇게 사용을 했는데 맞는 방식인지 궁금합니다

2.

이미지가 아닌 텍스트 뷰를 포함한 xml 파일을 지도의 마커로 설정했습니다.
이 과정에서 위 xml 파일을 inflate 해서 View 타입으로 만든 후 이 View를 bitmap으로 변환했습니다.
보통 마커를 xml 파일로 커스텀하는 경우 위와 같이 구현을 하는지 궁금합니다!!

변환 과정 코드

 private fun createDrawableFromView(context: Context, view: View): Bitmap {
        /*  val displayMetrics = DisplayMetrics()
          context.display?.getMetrics(displayMetrics)*/

        val wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager

        val width = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            val windowMetrics = wm.currentWindowMetrics
            val insets = windowMetrics.windowInsets
                .getInsetsIgnoringVisibility(WindowInsets.Type.systemBars())
            windowMetrics.bounds.width() - insets.left - insets.right
        } else {
            val displayMetrics = DisplayMetrics()
            wm.defaultDisplay.getMetrics(displayMetrics)
            displayMetrics.widthPixels
        }

        val height = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
            val windowMetrics = wm.currentWindowMetrics
            val insets = windowMetrics.windowInsets
                .getInsetsIgnoringVisibility(WindowInsets.Type.systemBars())
            windowMetrics.bounds.height() - insets.bottom - insets.top
        } else {
            val displayMetrics = DisplayMetrics()
            wm.defaultDisplay.getMetrics(displayMetrics)
            displayMetrics.heightPixels
        }

        ////

        view.layoutParams = ViewGroup.LayoutParams(
            ViewGroup.LayoutParams.WRAP_CONTENT,
            ViewGroup.LayoutParams.WRAP_CONTENT
        )
        view.measure(width, height)
        view.layout(0, 0, width, height)
        view.buildDrawingCache(false)

        val bitmap = Bitmap.createBitmap(view.measuredWidth, view.measuredHeight, Bitmap.Config.ARGB_8888)
        val canvas = Canvas(bitmap)

        view.draw(canvas)

        return bitmap
    }

hanchang97 and others added 18 commits June 8, 2022 18:03
하단 영역 제외 작업
정보 설정 여부에 따른 하단 영역 상태 2가지 작업하기
검색 조건 정보 유무에 따른 2가지 하단 영역 구현
숙소 결과 리스트 더미데이터를 통한 테스트
그 외 앱 실행을 위한 수정 작업
구글 맵 사용
지도 마커 xml로 커스텀 후 디자인 요구사항처럼 구현
레포지토리, 데이터소스 클래스 Hilt 설정
뷰모델에서 flow 데이터 수집 후 UI 업데이트
지역 검색어 없을 시 기본 리스트 받아오도록 구현
[Android] fix: PR 받을 커밋 기록
@hanchang97 hanchang97 added the review-android Further information is requested label Jun 8, 2022
@hanchang97 hanchang97 requested a review from renovatio0424 June 8, 2022 12:16
@hanchang97 hanchang97 self-assigned this Jun 8, 2022
@renovatio0424
Copy link

renovatio0424 commented Jun 8, 2022

질문 1

compose에서 viewModel의 stateFlow를 이렇게 사용하는 글을 보고 이렇게 사용을 했는데 맞는 방식인지 궁금합니다

맞지 않은 방식이라고 생각하신 이유가 있나요 ㅎㅎ??

@renovatio0424
Copy link

질문2

이미지가 아닌 텍스트 뷰를 포함한 xml 파일을 지도의 마커로 설정했습니다.
이 과정에서 위 xml 파일을 inflate 해서 View 타입으로 만든 후 이 View를 bitmap으로 변환했습니다.
보통 마커를 xml 파일로 커스텀하는 경우 위와 같이 구현을 하는지 궁금합니다!!

저도 커스텀 마커는 많이 사용해보지 않아서 잘모르지만 구글링해봤을때 말씀하신대로 구현하시긴 하네요

Comment on lines 32 to 41
this.result?.forEach {
val imageThumnail = it.imageThumnail.orEmpty()
val price = requireNotNull(it.price)
val review = it.review ?: 0
val roomId = requireNotNull(it.roomId)
val roomName = requireNotNull(it.roomName)
val star = it.star ?: 0.0

list.add(WishData.ResultData(imageThumnail, price, review, roomId, roomName, star))
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

map, toList() 오퍼레이터를 잘 이용하면 list.add(WishData.ResultData(imageThumnail, price, review, roomId, roomName, star) 하지 않아도 됩니다 ㅎㅎ

//context?.dialogFragmentResize(this, 0.95f, 0.95f)
}

fun Context.dialogFragmentResize(dialogFragment: DialogFragment, width: Float, height: Float) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dialogFragmentResizeDialogFragment도 가능할거 같은데 Context 의 extension 함수로 만드신 이유가 있나요?

@renovatio0424
Copy link

혹시 깃 이슈가 무엇이었나요?
어떤게 문제였는지 궁금해서요 ㅎㅎ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-android Further information is requested
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants