1

我想在一个点打开带有不受限制的裁剪工具的图像编辑器,并且我想在一个应用程序的另一个点打开带有方形裁剪项目的图像编辑器。

我可以为整个应用程序设置裁剪工具项,但不能为呼叫设置。

更新 1:

我想为两个编辑器调用使用所有工具,但我想限制一个调用的裁剪值列表,而不限制另一个调用。我可以通过覆盖 com_adobe_image_editor_crop_labels / com_adobe_image_editor_crop_values 资源数组来限制裁剪项目,但此限制适用于两个调用。

所以,我想将此限制用于一个编辑器调用:

<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

您可能会采取的一种方法是在您的代码中设置一些逻辑。

在下面的代码中onCreate(),我设置了:

  • 一个CheckBox
  • 一个Button
  • 一个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/else传递不同的代码。int

于 2016-07-20T22:28:52.937 回答