2013-07-19 2 views
0

좋아요, 그래서 ImageView에서 화면을 채우기 위해 사용하고있는 이미지가 있습니다.Android : 배경 이미지의 비율을 찾는 방법

코드에서
<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scaleType="centerCrop" 
    android:src="@drawable/full_bg" /> 

, 나는 스케일 비율, 또는 스케일 팩터를 찾아 가야합니까 방법, 즉 원래 이미지의 결과 : 여기에서 볼 수 있듯이 나는 scaletype = "centerCrop"를 사용하여 가로 세로 비율을 유지하고있다 크기 조정 된 이미지? 전략적으로 배경 위에 배치 된 버튼에 동일한 비율을 적용 할 수 있도록 알 필요가 있습니다. 이것은 내가 스케일 비율을 얻기 위해 노력했다 무엇 :

ImageView view = (ImageView) findViewById(R.id.imageView1); 
Log.i("Test", "x scale = " + Float.toString(view.getScaleX())); 

이 반환 내가 무엇을 찾고하지 않은 (스케일 없음) 1.0.

ImageView view = (ImageView) findViewById(R.id.imageView1); 
Drawable drawing = view.getDrawable(); 
Bitmap bitmap = ((BitmapDrawable)drawing).getBitmap(); 
Log.i("Test", "width = " + Integer.toString(bitmap.getWidth())); 

내가이 모든 잘못에 접근하는 건가요 : 나는 또한 또한 나에게 원래 이미지 크기 (540px)를 제공하는 대신 이미지 뷰의 스케일 비트 맵의 ​​크기를 점점 시도? 나는 이것을 파악하는 데 도움이되는 것을 찾을 수 없다. 어떤 도움을 많이 주시면 감사하겠습니다! 내가 화면의 크기에 따라 이미지 크기를 변경하려면이있어, 그러나 이것은 쉽게를

int width = bitmap.getWidth(); 

int width = metrics.widthPixels; 

을 변경하여 변경 또는 무엇이든 할 수있다 :

+0

마크, onCreate 또는 다른 곳에 크기 및 비트 맵 너비가 표시됩니까? onCreate에서 컴포넌트가 실제로 스크린에 그려지지 않았기 때문에 묻습니다. 따라서 getWidth를 요구하면 스케일링이 발생하기 전에 기본 크기를 반환 할 수 있습니다. onWindowFocusChanged를 재정의하고 값이 무엇인지 확인하십시오. (http://developer.android.com/reference/android/app/Activity.html#onWindowFocusChanged(boolean)) – spartygw

+0

왜 이미지 뷰의 높이와 너비를 사용하지 않습니까? –

+0

@spartygw onCreate에서 스케일 및 비트 맵 너비를 얻었으므로 제안한대로 onWindowFocusChanged를 재정의하려했지만 여전히 동일한 결과를 얻었습니다. –

답변

0

이 시도 그것이에 스케일링되기를 원한다. 너비는 너가가는 크기이다.

public static void changeImageSize(ImageView object, Context context){ 

     DisplayMetrics metrics = new DisplayMetrics(); 
     ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(metrics); 
     int width = metrics.widthPixels; 
     int height = metrics.heightPixels; 
     BitmapDrawable bmap = (BitmapDrawable) object.getDrawable(); 
     RelativeLayout.LayoutParams layout = (LayoutParams) object.getLayoutParams(); 
     float bmapWidth = bmap.getBitmap().getWidth(); 
     float bmapHeight = bmap.getBitmap().getHeight(); 

     int newBmapWidth = (int) (bmapWidth*width/480); 
     int newBmapHeight = (int) (bmapHeight*height/800); 
     layout.width = newBmapWidth; 
     layout.height = newBmapHeight; 
     object.setLayoutParams(layout); 
    } 
+0

내가 성취하려고하는 것을 다루는 지 알아보기 위해이 부분을 조사해야 할 것입니다. 제안 해 주셔서 감사합니다. –

관련 문제