2012-09-12 2 views
0

drawable-hdpi 및 drawable-mdpi와 같은 다른 한정자를 기반으로 다른 UI를 설계했습니다. 4.3"에서 테스트 할 때 다음 이미지에서 볼 수있는 것처럼, SG2와 같은 크기의 모바일 세트는 UI가 화면과 일치합니다. 그러나 SG3과 Atrix와 같은 4.7 "테스트에서 좋지 않은 차이가 있습니다.Android 4.7 "장치를 지원하기 위해 한정자를 설정하는 방법

따라서 새로운 치수를 기반으로 이러한 장치의 화면을 다시 디자인하고 싶습니다. Supporting Multiple Screens을 읽었습니다. 솔루션을 찾으십시오. drawable-xdpi에 새 UI를 추가하려고 시도했지만 4.3 "장치에서 현재 디자인에 영향을 미쳤습니다. swdp, wdp 및 hdp를 사용하려고했지만 결과가 만족스럽지 않았습니다.

당신의 의견은 무엇입니까? 어떤 제안이라도 인정 될 것입니다. 감사합니다. enter image description here

답변

0

그래서 {{}} dpi 폴더에 이미지를 넣습니다. 맞습니까? 이미 알고 계시 겠지만, 보통 해상도 (응용 프로그램에 가장 적합한 해상도 - 장치 크기 및 해상도) 이미지를 "mdpi"폴더에 넣으십시오. 응용 프로그램이 매우 높은 해상도의 매우 큰 장치에서 점심을 먹는다면 (xdpi)를 사용하면 이미지가 2.0 비율로 확대되고 장치가 크고 고해상도 (hdpi)이면 1.5 비율로 이미지가 확대됩니다. 그리고 장치가 낮은 dpi & 작은 크기가있는 경우 안드로이드는 이미지 크기를 0.75 비율로 압착합니다. 하지만 충분하지 않은 경우 (나에게 충분하지 않다면) 간단히 대상 장치 해상도를 찾고 이미지의 크기를 조정할 수 있습니다. 당신이해야 할 일은 그것을 직접 계산하십시오) 상수 이미지의 해상도를 조정하십시오. 예 : . 0.6 (발견 된 화면 해상도에 따라, 당신이 일정와 이미지의 폭 & 높이를 곱합니다 것은 여기 내 예입니다

Display currentScreen = this.getWindowManager().getDefaultDisplay(); 
Point dimension = new Point(); 
    currentScreen.getSize(dimension); 
    //int widthPixel = dimension.x; 
    int heightPixel = dimension.y; 
    System.out.println("Screen Resolution (Height) : "+heightPixel); 

    int imgHeight; 
    imgHeight = (int) Math.floor(heightPixel * 0.6); 

    int widthSeparator = (int) dimension.y/13; 
    System.out.println("Width Separator : "+widthSeparator); 

    //imgHeight = 240; 

    System.out.println("Image Resolution (Height) : "+imgHeight); 

    FrameLayout.LayoutParams layoutParamCR = new FrameLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
    layoutParamCR.setMargins(widthSeparator, 0, 0, 0); 

    //FrameLayout.LayoutParams layoutParamL = new FrameLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); 
    //layoutParamL.setMargins(-30, 0, 0, 0); 

    ImageView leftCover = (ImageView) findViewById(R.id.magCoverLeft); 
    leftCover.setAdjustViewBounds(true); 
    leftCover.setMaxHeight(imgHeight); 
    leftCover.setLayoutParams(layoutParamCR); 
    leftCover.setImageBitmap(null); 

    ImageView cover = (ImageView) findViewById(R.id.magCover); 
    cover.setAdjustViewBounds(true); 
    cover.setMaxHeight(imgHeight); 
    cover.setLayoutParams(layoutParamCR); 
    cover.setImageBitmap(coverImages[0]); 

    ImageView rightCover = (ImageView) findViewById(R.id.magCoverRight); 
    rightCover.setAdjustViewBounds(true); 
    rightCover.setMaxHeight(imgHeight); 
    rightCover.setLayoutParams(layoutParamCR); 
    rightCover.setImageBitmap(coverImages[1]); 
+0

감사합니다 사랑 아웅, 이미지는 장치의 모든에 저장되지 않은 그 (것)들은 인터넷에서오고 심상 전망은 심상의 수에 근거를 두어 동적으로 생성한다. 그러나 나는 당신의 생각을 가지고있다. 감사한다. 나는 다른 화면 크기에 결과 인 무슨을보기 위하여 그것을 시험하게한다 ... – Hesam

+0

당신은 환영 받다. 이미지는 {*} dpi 폴더에 있습니다. 내 예제는 내가 그런 방식으로 쓴 것처럼 인터넷에서 오는 이미지에 더 적합합니다. –