图像位置无法使用比例类型矩阵设置中心

时间:2015-10-29 06:42:14

标签: android matrix android-imageview android-image

我在xml中有图像视图,我想尝试在中心设置图像:

我目前的代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:gravity="center"
                android:orientation="vertical"
    >

    <ImageView
        android:id="@+id/imageview_fullscreen"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:adjustViewBounds="true"
        android:scaleType="matrix"
        android:src="@drawable/ic_launcher"

        />

</RelativeLayout>

我添加了放大/缩小图像视图的功能 -

http://stackoverflow.com/questions/15609845/add-limit-to-zoom-in-and-zoom-out-in-android

当我在上面编写代码时,图像无法在缩放类型matrix的中心设置。图像设置在代码上方的左上方。

如何将其设置为以缩放类型matrix为中心。 ?

7 个答案:

答案 0 :(得分:1)

您可以使用

android:layout_gravity="center_vertical"

并设置

android:layout_width="wrap_content"
android:layout_height="wrap_content"

答案 1 :(得分:0)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/ic_launcher" />

</FrameLayout>

试试这个。编辑了答案。

答案 2 :(得分:0)

对于ImageView,添加android:layout_centerInParent="true"

答案 3 :(得分:0)

试试这个

08

答案 4 :(得分:0)

您提到过,您正在使用视图缩放。 如果您使用多点触控来缩放ImageView, 请在onMeasure方法中调整大小并将其绘制在imageview中心 观点。

按照此示例在图像视图上实现单点触控和多点触控,图像将自动重新调整大小和适合中心。 此外,您可以将父级更改为FrameLayout以实现扩展许多视图。 http://www.mobile-open.com/2015/66671.html

答案 5 :(得分:0)

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.MATCH_PARENT);
        zoomImageView.setLayoutParams(params);
        RectF drawableRect = new RectF(0, 0, zoomImageView.getDrawable().getIntrinsicWidth(), zoomImageView.getDrawable().getIntrinsicHeight());
        RectF viewRect = new RectF(0, 0, width, (height) - 100);
        matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
        //matrix.setScale(-1,-1);
        view.setScaleType(ImageView.ScaleType.MATRIX);
        zoomImageView.setImageMatrix(matrix);


    <ImageView
        android:id="@+id/zoomImage"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:src="@mipmap/ic_launcher" />

首先在你的布局中将图像放在中心,当用户第一次触摸imaageview时,使imageview的宽度和高度匹配,并设置Scaletype矩阵,然后应用矩阵。

此处宽度和高度是设备宽度和高度,我们可以使用以下代码段进行操作。

DisplayMetrics displayMetrics = getApplicationContext().getResources().getDisplayMetrics();
    width = displayMetrics.widthPixels;
    height = displayMetrics.heightPixels;

答案 6 :(得分:0)

您可以在RelativeLayout上使用

android:layout_gravity="centerl"

并在ImageView上设置

android:layout_width="wrap_content"
android:layout_height="wrap_content"