1

MikeOrtiz TouchImageViewFrom the 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 に 1 つのフォルダーを作成し、その中に同じ名前の xml ファイルを 1 つ作成し、landsacpe モードで必要に応じて UI を設定します。

home.xml を layout-port フォルダーに配置すると、デバイスが縦向きの場合、ファイル: layout-port/home.xml が使用されます。

home.xml を layout-land フォルダーに配置すると、デバイスが横向きの場合、ファイル: layout-land/home.xml が使用されます。

縦向きや横向きなどのさまざまな方向モードの意味... 2 つの home.xml ファイルを使用します。1 つはレイアウトポートに、もう 1 つはレイアウトランドに。一方、両方に同じレイアウト ファイルを使用する場合は、home.xml をレイアウト フォルダーに置き、layout-land と layout-port から削除します。

このリンクを参照してください

于 2013-01-02T07:07:29.603 に答える