Я получаю изображения, используя метод Html.fromHtml(). Поэтому я использую классы URLImageParser и URLDrawable, как определено здесь: Android HTML ImageGetter as AsyncTask.Изображения Android растянуты, когда телефон повернут
Я адаптировал два метода из URLImageParser, чтобы масштабировать изображение до ширины экрана при сохранении пропорции. Измененные методы заключаются в следующем:
@Override
protected void onPostExecute(Drawable result) {
DisplayMetrics dm = new DisplayMetrics();
((WindowManager) c.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = width * container.getHeight()/container.getWidth();
urlDrawable.setBounds(0, 0, 0+width, 0+height);
// change the reference of the current drawable to the result
// from the HTTP call
urlDrawable.drawable = result;
// redraw the image by invalidating the container
URLImageParser.this.container.invalidate();
// For ICS
URLImageParser.this.container.setHeight((URLImageParser.this.container.getHeight()
+ height));
// Pre ICS
URLImageParser.this.container.setEllipsize(null);
}
и
public Drawable fetchDrawable(String urlString) {
try {
InputStream is = fetch(urlString);
Drawable drawable = Drawable.createFromStream(is, "src");
DisplayMetrics dm = new DisplayMetrics();
((WindowManager) c.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = width * container.getHeight()/container.getWidth();
drawable.setBounds(0, 0, 0 + width, 0
+ height);
return drawable;
} catch (Exception e) {
return null;
}
}
Моя проблема заключается в том, что, когда телефон удерживается в портретной ориентации изображение выглядит хорошо. Однако, когда я поворачиваю телефон, ширина изображения переходит на новую ширину телефона, однако высота не изменяется, поэтому изображение выглядит искаженным.
Есть ли способ сбросить высоту, когда телефон повернут?
Довольно уверен, что это нелепая ошибка где-то