我正在研究图像缩放。一切都很好。我正在尝试在布局的中心显示矩阵图像。但是我做不到。
我的 xml 是:
<FrameLayout
android:id="@+id/root1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/root"
>
<ImageView
android:id="@+id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:adjustViewBounds="true"
android:scaleType="matrix"
android:src="@drawable/ic_launcher" >
</ImageView>
</FrameLayout>
而且我已经使用了堆栈溢出的这个解决方案,但我没有得到居中放置的图像。图像与屏幕左上角对齐。请帮助我。
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
screenWidth = rel.getWidth();
screenHeight = rel.getHeight();
Log.e("",
"Image Width : " + image.getWidth() + " > "
+ image.getHeight());
Log.e("", "screen Width : " + screenWidth + " > " + screenHeight);
Matrix matrix = image.getImageMatrix();
RectF drawableRect = new RectF(0, 0, image.getWidth(),
image.getHeight());
RectF viewRect = new RectF(0, 0, screenWidth, screenHeight);
matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
image.setImageMatrix(matrix);
image.invalidate();
}
最佳答案
这里我必须使用 drawable(设置为 imageview)固有宽度和高度作为 screenWidth 和 screenHeight
这是我的解决方案:
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
float imageWidth = imageView.getDrawable().getIntrinsicWidth();
float imageHeight = imageView.getDrawable().getIntrinsicHeight();
RectF drawableRect = new RectF(0, 0, imageWidth, imageHeight);
RectF viewRect = new RectF(0, 0, imageView.getWidth(),
imageView.getHeight());
Matrix matrix = imageView.getMatrix();
matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
imageView.setImageMatrix(matrix);
imageView.invalidate();
}
关于Android:无法将矩阵 ImageView 放置在屏幕中央?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29691029/