안녕하세요.
제가 현재 앱을 개발중인데요, 화면 사이즈별로 레이아웃이 달라지는 것과 관련하여 질문이 있습니다.
다양한 화면 사이즈를 지원하기 위한 방법으로 layout_weight를 이용하는 방법과 dip를 사용하는 것으로 알고 있고,
dip를 활용해서 레이아웃을 설정해 왔습니다.
그런데 이번에 갤럭시탭의 레이아웃을 맞추려고 보니까 몇가지 문제가 있어서 질문드립니다.
먼저 제가 원하는 것은 아이패드에서 아이폰 앱을 실행했을 때와 동일하게 갤럭시 탭에서도 갤럭시S의 화면을 전체적으로 scale된 레이아웃을 원합니다.
그러나 위와 같이 하려고 support-screen 옵션을 확인하여도 모든 화면을 large screen에 맞춰 scaling 되는 옵션은 없더군요.
그래서 layout-large 폴더를 따로 만들어서 large screen에 맞춘 레이아웃을 따로 작성하려고 하고 있습니다.
질문 1) 위와 같은 경우에 아이패드에서 아이폰앱을 실행했을때처럼 scaling된 (이미지가 뭉개지더라도) 실행 화면을 갤럭시 탭에서 구현할 수 있는 방법이 있나요?
질문 2) 1의 해답이 따로 layout-large에 레이아웃을 만드는 방법밖에 없다면,
좌우 비율이 일정하게 고정되어야 하는 이미지 (사진등)의 경우
폭은 전체 화면 사이즈에 맞추고, 높이는 기존 비율을 유지하는 선에서 자동으로 설정되는 높이로 설정하고 싶습니다.
(예를 들면 32*100의 이미지가 있으면 폭이 320인 경우 높이를 1000으로, 폭이 640인 경우 높이를 2000으로)
이런 경우 어떻게 구현할 수 있는지 궁금합니다.
(참고로 ImageView의 width를 fill_parent로 하고 height를 wrap_content로 했을 경우에는 안되더군요 ㅠ)
질문 3) 이러한 모든 과정에서 weight를 조정하는 것만으로는 이미지 비율을 유지할수 없다고 생각하는데 이런것들을 다른 고수님들은 어떻게 해결하시나요?
정말 이것때문에 몇날 몇일 고민하고 있는데 도저히 혼자서는 방법이 안나오네요 .. ㅠㅠ
(안드로이드펍도 몇번씩 검색하고 뒤졌는데 도저히 모르겠어서 질문드립니다..)
제발 아시는 분은 알려주시면 감사하겠습니다.
먼저, 자세히 알려주셔서 감사드립니다 ^^
각 메인이되는 레이아웃에 사이즈를 고정 dip로 주는 것은 생각을 못해봤었네요.
이 방법으로 다른 것을 구현할때 많은 도움이 될 것 같습니다.
다만 아쉬운 것은 아이패드에서 어플을 실행한것<< 이것을 제가 이야기했을때는 갤탭 사이즈가 600*1000이라고 한다면
전체적인 레이아웃이 모두 600*1000에 맞춰서 늘어나는 것을 생각했었는데 쉽게 하는 방법이 없는것 같네요.
일단 위에 제가 질문드린 내용에 대해서는 결국 비율로 (ㅠㅠ) 해결하긴 했습니다.
이미지뷰의 경우에는 fill_parent나 weight를 조정해서 하는 고정된 폭이 아닌 경우도 이미지뷰를 상속해서 커스텀 이미지뷰를 만들어서 nMeasure함수 overide해서 해결을 하였구요...
안드로이드는 정말 화면 사이즈때문에 골을 썩이는 군요 (+로 삼성의 겐세이까지!!)
알려주신 내용은 다음 프로젝트때 참고해서 이용하도록 하겠습니다. 다시한번 알려주셔서 감사드립니다 ^^




1번의 질문에 도움이 되셨으면 좋겠습니다. 일단 가장 메인이 되는 layout에 사이즈를 주시면 아이패드에서 어플을 실행한 것과 거의 비슷한 효과를 얻으실수 있습니다. 가장 기본 레이아웃에 현재 사이즈가 parent나 wrap으로 되어 있으시다면, 거기서 사이즈를 주시면 됩니다.
원하는 해상도가 320 460이다...라면, 가장 기본 layoout에 가로 세로 사이즈를 320 460으로 넣어 주시면 되겠지요.
물론 사이즈는 dip로 해주셔야 합니다.
비율 문제로 고민을 저도 많이 했는데요, 저같은 경우는 weight를 이용하기도 하지만, xml에서 할수 없는, java코딩이라면 weight를 주기가 쉽지 않죠.. 그럴때는 비율을 직접 구해서 넣던가, 아니면 사이즈에 항상 density를 곱해서 적용하면 해결됩니다. 이 density도 능사는 아니고, 가로세로의 density를 따로 구해줘야 하는 문제가 최근 생겨 났지만, 일단 저렇게 하면 해결 됩니다.
도움이 되셨으면 좋겠습니다.^^