Я пытаюсь создать представление (LinearLayout), которое бы заполнило весь экран, а затем загрузить какое-то пользовательское фоновое изображение (bmp, png, jpg).Во время выполнения я хотел бы посмотреть пиксель и определенные координаты для их цвета.Поскольку есть много разных устройств, я должен поддерживать разные разрешения.Мое решение состоит в том, чтобы иметь одно изображение для фона и позволить ему масштабироваться до нужного размера экрана.Проблема в том, что хотя изображение заполняет весь экран, как и должно быть, фоновые растровые изображения масштабируются до ложного размера.Это мешает мне проверять цвета пикселей в растровом изображении, поскольку мои координаты возвращают ложный пиксель из растрового изображения.
У меня есть следующий макет xml:
<LinearLayout
android:id="@+id/viewWithBackground"
android:visibility="invisible"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
</LinearLayout>
В res / drawable у меня background_320x480.PNG.Это изображение должно быть масштабировано до размера экрана.
В событии onCreate действия я делаю следующее:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
viewWithBackground = findViewById(R.id.viewWithbackground);
//the problem is that the width and height of the bitmap are not correct. Following log entries show sizes
Log.d(TAG, "viewWithBackground - width: " + viewWithBackground.getWidth() + ", height: " + viewWithBackground.getHeight());
Log.d(TAG, "viewWithBackground.getBackground() - intrinsicWidth: " + viewWithBackground.getBackground().getIntrinsicWidth() + " intrinsicHeight: " + viewWithBackground.getBackground().getIntrinsicHeight());
Log.d(TAG, "((BitmapDrawable)viewWithBackground.getBackground()).getBitmap() - width: " + ((BitmapDrawable)viewWithBackground.getBackground()).getBitmap().getWidth() + ", height:" + ((BitmapDrawable)viewWithBackground.getBackground()).getBitmap().getHeight());
}
Например: Размер дисплея устройства составляет 480x800.Размер изображения в формате res / drawable - 32x x 480, растровые изображения и BitmapDrawable - 480x720.Это не имеет смысла.
Мой вопрос: Как получить фоновое растровое изображение с тем же размером пикселя, который отображается на экране?