1

我正在使用MikeOrtiz TouchImageView来自 GitHub。这是链接TouchImageView

  • 我正在尝试在横向方向中将宽度设置为适合屏幕,只有这里是显示我想要做什么的图像。

  • 我要这个

横向宽度适合屏幕

  • 而不是我现在在风景中得到的这个 横向宽度不适合屏幕

这是一些代码。

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    viewWidth = MeasureSpec.getSize(widthMeasureSpec);
    viewHeight = MeasureSpec.getSize(heightMeasureSpec);

    //
    // Rescales image on rotation
    //
    if (oldMeasuredHeight == viewWidth && oldMeasuredHeight == viewHeight
            || viewWidth == 0 || viewHeight == 0)
        return;
    oldMeasuredHeight = viewHeight;
    oldMeasuredWidth = viewWidth;

    if (saveScale == 1) {
        // Fit to screen.
        float scale;

        Drawable drawable = getDrawable();
        if (drawable == null || drawable.getIntrinsicWidth() == 0
                || drawable.getIntrinsicHeight() == 0)
            return;
        int bmWidth = drawable.getIntrinsicWidth();
        int bmHeight = drawable.getIntrinsicHeight();

        Log.d("bmSize", "bmWidth: " + bmWidth + " bmHeight : " + bmHeight);

        float scaleX = (float) viewWidth / (float) bmWidth;
        float scaleY = (float) viewHeight / (float) bmHeight;
        scale = Math.min(scaleX, scaleY);
        matrix.setScale(scale , scale );

        // Center the image
        float redundantYSpace = (float) viewHeight
                - (scale * (float) bmHeight);
        float redundantXSpace = (float) viewWidth
                - (scale * (float) bmWidth);
        redundantYSpace /= (float) 2;
        redundantXSpace /= (float) 2;

        matrix.postTranslate(redundantXSpace, redundantYSpace);

        origWidth = viewWidth - 2 * redundantXSpace;
        origHeight = viewHeight - 2 * redundantYSpace;
        setImageMatrix(matrix);
    }
    fixTrans();
}

谢谢

4

1 回答 1

0

您已经在 res layout-land 中创建了一个文件夹,然后在其中创建了一个具有相同名称的 xml 文件,并在 landsacpe 模式下根据需要设置 UI,它非常适合您

如果您将 home.xml 放在 layout-port 文件夹中,当您的设备处于纵向时,它将使用文件:layout-port/home.xml。

如果您将 home.xml 放在 layout-land 文件夹中,当您的设备处于横向时,它将使用文件:layout-land/home.xml。

对于纵向和横向等不同方向模式的含义......我们使用两个 home.xml 文件;一个在 layout-port 中,另一个在 layout-land 中。另一方面,如果您想为两者使用相同的布局文件,您只需将 home.xml 放在布局文件夹中,然后将其从 layout-land 和 layout-port 中删除。

参考这个链接

于 2013-01-02T07:07:29.603 回答