[英]Crop a drawable image by android gallery cropping method
我的Imageview的onclick,我想通过android gallery的默认裁剪技术来裁剪位于我的应用程序可绘制文件夹中的imageview的背景图像,并且裁剪后的图像应设置在相同的位置。
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(Uri.parse("android.resource://com.example.croppingactivity/drawable/apple"), "image/*");
intent.putExtra("outputX", 400);
intent.putExtra("outputY", 400);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("crop", true);
//intent.putExtra("output", Uri.parse("android.resource://com.example.croppingactivity/drawable/apple"));
startActivityForResult(intent, 1);
}
这是我的堆栈跟踪。
12-04 10:21:28.812: E/AndroidRuntime(2553): FATAL EXCEPTION: main
12-04 10:21:28.812: E/AndroidRuntime(2553): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT dat=android.resource://com.example.croppingactivity2130837504 typ=image/* (has extras) }
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1417)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.app.Activity.startActivityForResult(Activity.java:3370)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.app.Activity.startActivityForResult(Activity.java:3331)
12-04 10:21:28.812: E/AndroidRuntime(2553): at com.example.croppingactivity.MainActivity$1.onClick(MainActivity.java:52)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.view.View.performClick(View.java:4202)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.view.View$PerformClick.run(View.java:17340)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.os.Handler.handleCallback(Handler.java:725)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.os.Handler.dispatchMessage(Handler.java:92)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.os.Looper.loop(Looper.java:137)
12-04 10:21:28.812: E/AndroidRuntime(2553): at android.app.ActivityThread.main(ActivityThread.java:5039)
12-04 10:21:28.812: E/AndroidRuntime(2553): at java.lang.reflect.Method.invokeNative(Native Method)
12-04 10:21:28.812: E/AndroidRuntime(2553): at java.lang.reflect.Method.invoke(Method.java:511)
12-04 10:21:28.812: E/AndroidRuntime(2553): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
12-04 10:21:28.812: E/AndroidRuntime(2553): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
12-04 10:21:28.812: E/AndroidRuntime(2553): at dalvik.system.NativeStart.main(Native Method)
但它不起作用。我正在获取未找到活动的异常。 我做错了,请帮帮我。
好吧,这是我用来执行此操作的代码。 也许您可以尝试一下:
final Intent intent = new Intent();
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 400);
intent.putExtra("outputY", 400);
// Scale the image down to 400 x 400
intent.putExtra("scale", true);
intent.putExtra("windowTitle", "My_title");
// You need to use a temporary file for cropping to work
File tempFile = File.createTempFile("crop", "png",
myActivity.getCacheDir());
mSavedUri = Uri.fromFile(tempFile);
intent.putExtra("output", mSavedUri);
intent.putExtra("outputFormat", "PNG");
profileActivity.startActivityForResult(intent, INTENT_PICK_PICTURE);
我想您必须将intent.setType(...)
更改为intent.setDataAndType(Uri.parse("android.resource://..."), "image/*")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.