2014-02-28 1 views
3

여러 화면 크기를 지원하도록 Android 앱을 설치하려고합니다. 다른 dimens.xml 파일을 사용하여 레이아웃의 dp 값을 변경하여 대체 레이아웃을 최소한으로 유지하려고합니다.Android - dimens.xml 파일의 별칭?

진부한 부분은 십진 파일 (값, 값 -sw320dp, 값 -sw480dp, 값 -sw600dp 및 값 -sw720dp)이 포함 된 9 개의 다른 폴더가 있습니다 (상위 apis, 값 - 작은, 값 - 정상, 값 -large, values-xlarge for older apis) 그리고 my sw values ​​폴더에서 이전 값 폴더로 복사 붙여 넣기를 계속 반복하는 것을 싫어합니다.

나는 layout.xml 파일 별칭 like this shows을 만드는 방법을 알고 있지만, 누군가가 파일을 만들 수 있는지 알고 있습니다. 내 values.xml에 여러 개의 dimens 파일을 만들려고했지만 당연히 작동하지 않습니다. 왜냐하면 내 두 개의 dimens 파일이 같은 이름의 속성을 가지고 충돌로 인해 작동하지 않기 때문입니다.

dimens 파일의 이름을 values-sw600dpdimens-large.xml으로하고 values-large 폴더에서 참조 할 수 있습니까?

+1

이것은 시도하지 않은 것이지만 대부분의 컴파일러와 IDE에는 사용자 정의 빌드 단계를 구성 할 수있는 곳이 있습니다. 어쩌면 파일을 복사하는 작은 스크립트를 만들 수 있으며이 스크립트를 빌드 단계로 추가 할 수 있습니다. 스크립트를 만들 때마다 프로젝트가 실행됩니다. – Merlevede

답변

0

나는 Merlevede의 제안을 사용하고 eclipse의 빌드 경로에 스크립트를 추가했다.

는 특히, 안드로이드 프로젝트를 선택 프로젝트로 이동 -> 속성 -> 빌더 ->

새로운

는 "프로그램"빌더를 확인한 다음 파일 시스템에서 기본적으로 실행 가능한 파일을 선택합니다. 개인적으로 필자는 3 줄짜리 자바 애플리케이션을 작성하여 jarred 한 다음 java jar를 호출하는 배치 파일을 작성했습니다. 배치 파일은 빌더의 실행 파일로 지정한 파일입니다.

그런 다음 해당 빌더를 빌드 목록 맨 위에 놓으면 내 파일이 자동으로 복사됩니다!

1

레이아웃 구성 요소의 크기를 동적으로 변경할 수 있습니다. 여기에 480 x 854 크기의 화면에 따라 첫 xml 레이아웃을 생성합니다. 아래 코드는 화면 크기에 따라 UI를 자동으로 맞 춥니 다.

int width = 0; 
int height = 0; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 

    getTheDisplay(); 
    getUiComponents(); 
    adjustUIComponents(); 

}private void getTheDisplay() { 

    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 
    width = dm.widthPixels; 
    height = dm.heightPixels; 

}private void adjustUIComponents() { 
    // myButton is button from layout xml file 
    adjustUI(myButton); 

}private void adjustUI(View v) { 
    //myButton is in LinearLayout 
     LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams)v.getLayoutParams(); 
    lp.width = calculateWidth(211);//211 is width of button in px given in xml 
    lp.height = calculateHeight(80);//80 is height of button in px given in xml 

    v.setLayoutParams(lp); 
}private int calculateWidth(int w) { 
    int wi = (w * width)/480; 
    return wi; 
} 

private int calculateHeight(int h) { 
    int hi = (h * height)/854; 
return hi; 
} 
+0

+1 노력했지만, 그게 최선의 방법으로 여겨지지는 않는다고 생각합니다. 그리고 꽤 복잡한 것입니다. – CorayThan