1

ある時点で制限されていない切り抜きツールで画像エディターを開きたいのですが、あるアプリケーションで別の時点で正方形の切り抜きアイテムのみで画像エディターを開きたいです。

トリミング ツール アイテムをアプリケーション全体に設定できますが、通話には設定できません。

更新 1:

両方のエディター呼び出しですべてのツールを使用したいのですが、1 つの呼び出しではクロップ値のリストを制限し、別の呼び出しでは制限したくありません。com_adobe_image_editor_crop_labels / com_adobe_image_editor_crop_values リソース配列をオーバーライドすることでトリミング項目を制限できますが、この制限は両方の呼び出しに適用されます。

したがって、この制限を 1 つのエディター呼び出しに使用したいと思います。

<string-array name="com_adobe_image_editor_crop_labels">
    <item>@string/feather_original</item>
    <item>@string/feather_square</item>
    <item>@string/feather_custom</item>
    <item>3:2</item>
    <item>4:3</item>
    <item>5:3</item>
    <item>5:4</item>
    <item>6:4</item>
    <item>6:5</item>
    <item>7:5</item>
    <item>14:11</item>
    <item>16:9</item>
    <item>16:10</item>
    <item>2.35:1</item>
</string-array>
<string-array name="com_adobe_image_editor_crop_values">
    <item>-1:-1</item>
    <item>1:1</item>
    <item>0:0</item>
    <item>3:2</item>
    <item>4:3</item>
    <item>5:3</item>
    <item>5:4</item>
    <item>6:4</item>
    <item>6:5</item>
    <item>7:5</item>
    <item>14:11</item>
    <item>16:9</item>
    <item>16:10</item>
    <item>235:100</item>
</string-array>

そして、別のエディター呼び出しのこの値:

<string-array name="com_adobe_image_editor_crop_labels">
    <item>@string/feather_square</item>
</string-array>
<string-array name="com_adobe_image_editor_crop_values">
    <item>1:1</item>
</string-array>

私はこれを行うことができますか?

4

1 に答える 1

0

これを行う 1 つの方法は、コードに何らかのロジックを設定することです。

以下のコードではonCreate()、次のように設定しました。

  • aCheckBox
  • aButton
  • OnClickListenerボタン の

私のlaunchImageEditor()ヘルパー メソッドには、チェックボックスがオンになっているかどうかを判断するロジックがあり、それに応じてイメージ エディターを設定します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    mCheckBox = (CheckBox) findViewById(R.id.checkBox);
    mImageEditorButton = (Button) findViewById(R.id.imageEditorButton);

    View.OnClickListener imageEditorButtonListener = new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            launchImageEditor();
        }
    };
    mImageEditorButton.setOnClickListener(imageEditorButtonListener);

}

private void launchImageEditor() {
    /* 1) Make a new Uri object (Replace this with a real image on your device) */
    Uri imageUri = Uri.parse("content://media/external/images/media/1248");

    /* 2) Create a new Intent */
    Intent imageEditorIntent;

    if (mCheckBox.isChecked()) {
        ToolLoaderFactory.Tools[] toolList = {ToolLoaderFactory.Tools.CROP};

        imageEditorIntent = new AdobeImageIntent.Builder(this)
                .setData(imageUri)
                .withToolList(toolList)
                .build();
    }
    else {
        imageEditorIntent = new AdobeImageIntent.Builder(this)
                .setData(imageUri)
                .build();
    }

    /* 3) Start the Image Editor with request code 1 */
    startActivityForResult(imageEditorIntent, 1);
}

起動されたイメージ エディターのバージョンに応じてアクティビティの結果を異なる方法で処理する場合は、ステートメントに移動startActivityForResult()して、要求コードごとに異なるコードを渡すことができます。if/elseint

于 2016-07-20T22:28:52.937 に答える