【发布时间】:2016-01-15 10:28:11
【问题描述】:
我有一个关于在方向更改上调整 ImageView 大小的过程的问题。 我必须在图像视图的顶部放置一个位图。 (基本上是用户在触摸它时放置的标记)。在方向更改时,我会存储标记的相对位置,并打算在重新显示图像时恢复它。
现在我是这样做的:
在恢复时我称之为:
handler.post(setCollectedAnswersRunnable);
参考这个:
Runnable setCollectedAnswersRunnable = new Runnable() {
@Override
public void run() {
if (iv.getMeasuredHeight() != 0) {
int x = Math.round(coordinateCollectedAnswer.x * iv.getMeasuredWidth() / (float) question.getImage().getWidth());
int y = Math.round(coordinateCollectedAnswer.y * iv.getMeasuredHeight() / (float) question.getImage().getHeight());
selectedX = x;
selectedY = y;
addPointerImageView(x, y);
} else {
handler.postDelayed(this, 330);
}
}
};
需要注意的重要一点是,当我从较大的 ImageView 转到较小的 ImageView 时,即从横向转换为纵向时,这非常有效。
但另一方面,它没有。 ImageView 似乎首先以相同的大小重新恢复,然后按比例放大我的标记。因此,除了可运行文件中的 !=0 条件之外,我当然可以检查它是否与纵向相同。但首先我对这种方式并不感到自豪,我宁愿在 ImageView 获得最终尺寸时得到通知。而且我不希望在我的状态包中传递视图大小。
有没有更简单的方法来实现这一点?
顺便说一下,我以这种方式加载 ImageView:
Picasso.with(iv.getContext())
.load(AppConstants.SERVER_URL + "/api/" + question.getImage().getUrl())
.config(Bitmap.Config.RGB_565)
.into(new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
iv.setImageBitmap(bitmap);
iv.setAdjustViewBounds(true);
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
});
【问题讨论】:
标签: android imageview android-imageview onconfigurationchanged