마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

레이아웃 크기 질문입니다.

0 추천

레이아웃 크기에 대해서... 너무 실용성이 너무 떨어지는거 같아 질문드립니다..

 

일단 레이아웃을 잡을때 보통 크게 나누는건 weightSum 을 많이 사용하는데

 

작은 이미지들이나 버튼들에 이미지가 들어가게 되면 dp로 이미지 크기를 잡는 방법을 몰라서 제가 사용하는법이.. 좋지 않은거 같아 

도움을 받고자합니다..

 

일단 제가 하는 방법은

 

처음에 앱이 실행되고 인트로에서 핸드폰의 화면 사이즈를 가지고 옵니다.

 

그리고 제가 앱디자인 크기를 2560 * 1440 를 기준으로 디자인했으면 그 값에서 차이를 구해서 얼마나 차이나는지를 가지고있구요

 

xml에서 레이아웃 잡은 뷰들을 가지고 옵니다.  그리고 그 뷰들의 크기를 정해주고 이미지를 비트맵으로 잘라서 백그라운드에 적용시키구요 

 

말로하니 이상하네요.. 코드로 하나씩 보여드리는 편이 쉽을거같네요...

 

 

 

1.  핸드폰 사이즈 갭 구한다.

(Width에 기본적으로 1440값을 넣어 사이즈 갭을 구하구요.)

public static int getSize(double size) {

   double resize = Width / size;

   resize = MyWidth / resize;

   return (int) resize;

}

 

2. xml에 view를 생성한다.

<EditText

    android:id="@+id/ed_sports_time"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:clickable="false"

    android:focusable="false"

    android:hint="진행시간"

    android:textColor="@android:color/white"

    android:textColorHint="@android:color/white" />

 

3. 자바코드에서 크기를 정확히 잡아준다.

Ed_SportsTime = (EditText) view.findViewById(R.id.ed_sports_time);

LinearLayout.LayoutParams day3 = (LinearLayout.LayoutParams) Ed_SportsTime.getLayoutParams();

day3.rightMargin = ImageSize.getSize(15);

Ed_SportsTime.setLayoutParams(day3);

Ed_SportsTime.getLayoutParams().height = ImageSize.getSize(43);

Ed_SportsTime.getLayoutParams().width = ImageSize.getSize(135);

Ed_SportsTime.setTextSize(TextReSize.NomarFontSize);

Ed_SportsTime

        .setBackground(DrawableResize(R.drawable.bg_ed_select, ImageSize.getSize(120), ImageSize.getSize(43)));

Ed_SportsTime.setOnClickListener(this);

 

저는 이렇게 하니까.. 모든핸드폰을 커버는 되는데 ...

 

이게 레이아웃작업시간도 너무 오래걸리고 ...  그냥 xml에서 dp로 하고싶은데.. 그러면

 

이미지를 넣을경우 이미지가 깨지거나 안보이는 경우를 어떻게 대비하는지..

 

lg핸드폰은 어떻게 대처가 되는지.. 모르겠더라구요 ...

 

레이아웃을 어떻게 잡으면 좋을까요 ...

 

이건 너무 바보같이 한거죠 ?...

니쿠네임이다 (520 포인트) 님이 2017년 1월 9일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...