ОК, поэтому у меня есть изображение, которое я использую в ImageView для заполнения экрана. Я с сохранением пропорций с помощью scaletype = «centerCrop», как показано здесь:Android: Как найти масштабное соотношение фонового изображения
<ImageView
android:id="@+id/imageView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop"
android:src="@drawable/full_bg" />
В коде, как я могу идти о поиске соотношение масштаба, или масштабный коэффициент, что в результате исходного изображения к масштабированное изображение? Мне нужно знать, поэтому я могу применить это же соотношение к кнопке, расположенной стратегически поверх фона. Это то, что я пытался получить соотношение масштаба:
ImageView view = (ImageView) findViewById(R.id.imageView1);
Log.i("Test", "x scale = " + Float.toString(view.getScaleX()));
Это возвращает 1,0 (немасштабированная), который не то, что я ищу. Я также пытался получать размеры масштабируется Bitmap вместо ImageView, который также дает мне оригинальный размер изображения (540px):
ImageView view = (ImageView) findViewById(R.id.imageView1);
Drawable drawing = view.getDrawable();
Bitmap bitmap = ((BitmapDrawable)drawing).getBitmap();
Log.i("Test", "width = " + Integer.toString(bitmap.getWidth()));
ли я приближающуюся все это не так? Я не могу найти ничего, чтобы помочь мне понять это. Любая помощь приветствуется!
Марк, вы получаете масштаб и растровую ширину в onCreate или где-то еще? Я спрашиваю, потому что в onCreate компоненты на самом деле еще не обращены к экрану. Поэтому запрос getWidth может вернуть размер по умолчанию до того, как произойдет масштабирование. Попробуйте переопределить onWindowFocusChanged и посмотреть, какие значения существуют (http://developer.android.com/reference/android/app/Activity.html#onWindowFocusChanged(boolean)) – spartygw
Почему вы не занимаете высоту и ширину изображения? –
@spartygw Я получил масштаб и растровую ширину в onCreate, поэтому я попробовал переопределить onWindowFocusChanged, как вы предложили, но все же получили те же результаты. –