Android的MediaStore裁剪功能,如何让选择箭头始终可见?(Android MediaS

2019-09-16 08:26发布

我工作的图片选择/作物程序,并使用下面的代码:

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)  

当你这样做,它的作品,但箭头repating本身,而为了避免您需要更改moveBy()方法的最后一行是移动和:

mContext.invalidate(invalRect);

有了这个:

mContext.invalidate();

Answer 1:

是的,有一种方式。 但它是不容易的。

检查图库应用程序的源代码。 特别是HighlightView.java。 你会看到,当用户触摸边框,负责绘制箭头的方法只调用。 所以,你需要抓住CropImage活动的源代码。 包括在您的应用程序,并修改HighlightView.java的draw()方法来始终调用drawResizeDrawables()。

这样做的好处是,你可以肯定的是,作物打算将所有设备的工作,即使他们不支持作物意向的自定义库。



文章来源: Android MediaStore Crop function, how to make selection arrows always visible?