3

私は画像選択/トリミングプログラムに取り組んでおり、以下のコードを使用しています:

http://www.androidworks.com/crop_large_photos_with_android/comment-page-1#comment-969

私が理解できる限り、以下のコードのように意図に余分なものを入れてプロパティを設定します。

選択範囲を変更するには、境界線をタッチする必要があり、矢印が表示されるようになりましたが、ユーザーにそれを理解させるのは難しいため、常に表示するようにしたいと考えています。Instagram の Android アプリケーションはそのようにするので、その方法があると思います。

ありがとう。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
                intent.setType("image/*");
                intent.putExtra("crop", "true");
                intent.putExtra("aspectX", aspectX);
                intent.putExtra("aspectY", aspectY);
                intent.putExtra("outputX", outputX);
                intent.putExtra("outputY", outputY);
                intent.putExtra("scale", scale);
                intent.putExtra("return-data", return_data);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());

編集/解決策: @Renard のおかげで、次のような解決策が見つかりました:

このギャラリーのソース コードを使用しました: http://gitorious.org/0xdroid/packages_apps_gallery3d/trees/3c02f2877dc2f8f0b5c01d03fa2b487c040e4000

他のギャラリー リソース コードもいくつか試しましたが、これが最も保守しやすいものです。

Highlightview.java クラスの draw() 関数をチェックインする場合は、以下を削除する必要があります。

if (mMode == ModifyMode.Grow)  

それを行うと機能しますが、矢印は移動中に繰り返されます。これを回避するには、 moveBy() メソッドの最後の行を次のように変更する必要があります。

mContext.invalidate(invalRect);

これとともに:

mContext.invalidate();
4

1 に答える 1

1

はい、方法があります。しかし、それは簡単ではありません。

ギャラリー アプリのソース コードを確認します。特に、HighlightView.java. 矢印の描画を担当するメソッドは、ユーザーが境界線に触れたときにのみ呼び出されることがわかります。そのため、CropImage アクティビティのソース コードを取得する必要があります。これをアプリに含め、常に drawResizeDrawables() を呼び出すように HighlightView.java の draw() メソッドを変更します。

これの利点は、クロップ インテントをサポートしていないカスタム ギャラリーがある場合でも、クロップ インテントがすべてのデバイスで確実に機能することです。

于 2012-04-04T09:53:54.570 に答える