【问题标题】:Crop a drawable image by android gallery cropping method通过android画廊裁剪方法裁剪可绘制图像
【发布时间】:2012-11-30 05:48:10
【问题描述】:

单击我的 Imageview,我想通过默认的 android 图库裁剪技术裁剪我的应用程序的可绘制文件夹中的 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)

但它不起作用。我收到未找到活动的异常。 我做错了什么请帮助我。

【问题讨论】:

标签: android imageview crop


【解决方案1】:

嗯,这是我用来做这种事情的代码。也许你可以试试:

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/*")

【讨论】:

  • 哼,这很奇怪。您的 onClick() 方法在您的 Activity 类中吗?我想知道您是在当前活动实例上还是在另一个对象上调用 startActivityForResult...
  • 抱歉回复晚了。onClick 在我的活动中并在同一个活动中调用 startActivityForResult
  • 这真的很奇怪。您绝对肯定 ActivityNotFoundException 发生在 startActivityForResult 上吗?你可以发布堆栈跟踪吗?
  • 很抱歉再次回复晚了,我发布了我的堆栈跟踪以及我的问题。请检查。谢谢
猜你喜欢
  • 2014-02-03
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 2017-05-18
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多