3

画像を表示するためのイメージビューがあり、次の比率の 16:9,1:1,3:2,2:1,4:3 を使用して画像をトリミングするオプションを有効にしたいと考えています。それぞれにいくつかのボタンがあります。そのため、ユーザーはボタンをクリックして画像を次のように切り取ることができます。さまざまな画面サイズのデバイスに基づいてこれを行う方法。

次のコード スニペットを使用して、デバイスの画面の高さと幅を取得しました

  DisplayMetrics displaymetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
            int height = displaymetrics.heightPixels;
            int width = displaymetrics.widthPixels;

このスニペットを使用して、幅と高さをimageviewに設定できます

  FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);
            params.height=height;
            params.width=width;
            touchImageView.setLayoutParams(params);

しかし、パーセント相対レイアウト (16:9,1:1,3:2,2:1,4:3) でこれを行う方法

誰でも助けることができますか??

4

2 に答える 2

1

パーセント相対レイアウトを使用できます

http://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html

private void changeAspectRatio(int width, int height, Float ratio, PercentRelativeLayout mPercentRelativeLayout) {
    PercentRelativeLayout.LayoutParams layoutParamsMain = new PercentRelativeLayout.LayoutParams(getApplicationContext(), null);
    if (width != 0)
        layoutParamsMain.width = width;
    if (height != 0)
        layoutParamsMain.width = width;
    PercentLayoutHelper.PercentLayoutInfo info1 = layoutParamsMain.getPercentLayoutInfo();
    if (ratio != 0f)
        info1.aspectRatio = ratio;
    mPercentRelativeLayout.setLayoutParams(layoutParamsMain);
    mPercentRelativeLayout.requestLayout();
}


changeAspectRatio((int)(width*.9), 0, 1.77f, mPercentRelativeLayout);

to get 16:9 , 16/9 = 1.77 and pass this value like above function call.

次に、16:9 のアスペクト比を設定します。

于 2016-03-30T11:22:36.253 に答える