Android:无法将矩阵 ImageView 放置在屏幕中央?

标签 android android-layout imageview android-imageview android-framelayout

我正在研究图像缩放。一切都很好。我正在尝试在布局的中心显示矩阵图像。但是我做不到。

我的 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/

相关文章:

java - 当数据不以新行结尾时,有没有办法从套接字中读取数据?

android - Firebase 搜索事件术语未显示在分析中

android - 如何计算 sw600dp 和 sw720dp 的尺寸值?

具有快速滚动和字母部分索引的 Android ListView

android - 如何修改 TouchImageView 双击放大缩小?

android - px、dip、dp和sp有什么区别?

java - 从android中的另一个类加载纹理

android - 第一次安装 .apk 时如何启动服务

java - 使用十六进制值设置 Android 图像

Android:ImageView.ScaleType 但用于按钮和/或单选按钮