Chciałbym przeskalować obraz, aby zająć cały rozmiar obrazu. Jest to nieco inne niż użycie scaleType=fit_center
, ponieważ fit_center zostawia pasma wokół obrazu, jeśli proporcje obrazu nie są dokładnie takie same jak proporcje obrazu. Zamiast tego chciałbym, aby obraz został wyśrodkowany i skalowany, aby całkowicie wypełnić widok otaczający, z nadmiarem odciętym.Skaluj obraz tak, aby wypełnić cały obraz ImageView w Androidzie
jestem w stanie tego dokonać poprzez obliczenie własne macierzy niestandardowego obrazu podczas onCreate():
final Display display = getWindowManager().getDefaultDisplay();
final float screenWidth = display.getWidth();
final float screenHeight = display.getHeight();
final float imageWidth = splashView.getDrawable().getIntrinsicWidth();
final float imageHeight = splashView.getDrawable().getIntrinsicHeight();
final Matrix splashMatrix = new Matrix();
final float scale = Math.max(screenHeight/imageHeight,screenWidth/imageWidth);
splashMatrix.postScale(scale, scale);
splashView.setImageMatrix(splashMatrix);
Działa to dobrze, ale wydaje się, że nie musi być łatwiejszy z dala. Czy ktoś wie o sposobie skalowania obrazu w ImageView, jednocześnie zachowując proporcje obrazu i całkowicie wypełniając ImageView?
(Uwaga: w moim przypadku mój ImageView odbywa się na pełnym ekranie, więc używam getWindowManager().getDisplay()
aby znaleźć żądany rozmiar obrazu nie można używać splashView.getWidth()
/getHeight()
ponieważ widok nie został rozplanowany i jeszcze robi. 't mieć rozmiar)
Jak mogłem przegapić? – emmby
Nie zachowuje proporcji! Mam layout_height = wrap_content, layout_width = fill_parent, a proporcje zniknęły, obraz ma szerokość ekranu, ale wysokość jest zła (jest za krótka, jak 40% wysokości, jaką powinien mieć). –
Naprawiłem problem w powyższym komentarzu: android: adjustViewBounds = "true". –