ioneday / imageselector Goto Github PK
View Code? Open in Web Editor NEWPhoto picker library for Android. Support single choice、multi-choice、cropping image and preview image.
Photo picker library for Android. Support single choice、multi-choice、cropping image and preview image.
if there has action to open camera,but not in select activity
Intent 设置Uri 没有适配android N
android.os.FileUriExposedException: file:///storage/emulated/0/LiteNote/pictures/1476891731242.jpg exposed beyond app through Intent.getData()
I pick some of pics in ImagePreviewActivity,after that back to ImageSelectorActivity,there is nothing happen !!!
It should show the pics which i choosed in ImagePreviewActivity~
When 2 folders with the same exists in the phone, the 2 folders would be viewed as the same one.
because it compares using folder name instead of folder full path.
Modify this method
LocalMediaLoader.java
private LocalMediaFolder getImageFolder(String path, List imageFolders)
change
if (folder.getName().equals(folderFile.getName()))
into
if (folder.getPath().equals(folderFile.getAbsolutePath()))
希望能适配7.0以上拍照Uri的问题
hi...
for large image on device it's very slow...i think for loading all image at the time...
is there any way to loading image by scroll...thanks
通过这样调用界面
ImageSelectorActivity.start(PersonInfoActivity.this, 1, ImageSelectorActivity.MODE_SINGLE, true, true, true);
onActivityResult 回调的时候会报下面的异常,一开始以为是Fragment的问题,换到Activity中也一样
07-20 00:22:03.922 12846-12846/com.ixwork E/WindowManager: android.view.WindowLeaked: Activity com.yongchun.library.view.ImageCropActivity has leaked window com.android.internal.policy.PhoneWindow$DecorView{a5cff5a V.E...... R.....ID 0,0-1336,464} that was originally added here
at android.view.ViewRootImpl.(ViewRootImpl.java:565)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:326)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
at android.app.Dialog.show(Dialog.java:350)
at android.app.ProgressDialog.show(ProgressDialog.java:151)
at android.app.ProgressDialog.show(ProgressDialog.java:139)
at com.yongchun.library.view.ImageCropActivity$2.onClick(ImageCropActivity.java:108)
at android.view.View.performClick(View.java:5697)
at android.widget.TextView.performClick(TextView.java:10816)
at android.view.View$PerformClick.run(View.java:22526)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7232)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
当SD有重名的目录时, 只能加载其中一个目录文件。原因是因为多加了一个判断, 注释了就可以了. 之前已经通过hashset判断重复文件,这里应该可以不用了
private LocalMediaFolder getImageFolder(String path, List imageFolders) {
File imageFile = new File(path);
File folderFile = imageFile.getParentFile();
// for (LocalMediaFolder folder : imageFolders) {
// if (folder.getName().equals(folderFile.getName())) {
// return folder;
// }
// }
LocalMediaFolder newFolder = new LocalMediaFolder();
newFolder.setName(folderFile.getName());
newFolder.setPath(folderFile.getAbsolutePath());
newFolder.setFirstImagePath(path);
return newFolder;
}
目前图片排序为升序, 建议改为降序
我想直接启动拍照功能,然后,预览,在裁剪。注意:不需要显示相册列表
在相册选择图片,单选模式下选中一张图片后,图片上的CheckBox没有勾上,这个怎么回事?
当加载的图片很多(如所有图片,超过6000多张)的时候,在选择图片界面直接点击图片预览时,程序奔溃,报错信息如下:
FATAL EXCEPTION: main
Process: com.lanqian.skxcpt, PID: 13174
java.lang.RuntimeException: Failure from system
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1516)
at android.app.Activity.startActivityForResult(Activity.java:3993)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
at android.app.Activity.startActivityForResult(Activity.java:3954)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:856)
at com.yongchun.library.view.ImagePreviewActivity.startPreview(ImagePreviewActivity.java:63)
at com.yongchun.library.view.ImageSelectorActivity.startPreview(ImageSelectorActivity.java:269)
at com.yongchun.library.view.ImageSelectorActivity$4.onPictureClick(ImageSelectorActivity.java:189)
at com.yongchun.library.adapter.ImageListAdapter$3.onClick(ImageListAdapter.java:124)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21177)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5458)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
Caused by: android.os.TransactionTooLargeException: data parcel size 1904920 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:503)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2680)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1509)
at android.app.Activity.startActivityForResult(Activity.java:3993)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:75)
at android.app.Activity.startActivityForResult(Activity.java:3954)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:856)
at com.yongchun.library.view.ImagePreviewActivity.startPreview(ImagePreviewActivity.java:63)
at com.yongchun.library.view.ImageSelectorActivity.startPreview(ImageSelectorActivity.java:269)
at com.yongchun.library.view.ImageSelectorActivity$4.onPictureClick(ImageSelectorActivity.java:189)
at com.yongchun.library.adapter.ImageListAdapter$3.onClick(ImageListAdapter.java:124)
at android.view.View.performClick(View.java:5207)
at android.view.View$PerformClick.run(View.java:21177)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5458)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
在进入 onLoadFinished 结束后,如何图片特别多话,很卡,这个数据while 很显然没有优化好,我手机2000多图片,结束数据图片while 大约要1234毫m, 大家有没有优化的方案
http://hanhailong.com/2016/06/27/%E4%BC%98%E5%8C%96%E6%9F%A5%E8%AF%A2%E5%8A%A0%E8%BD%BD%E5%A4%A7%E6%95%B0%E9%87%8F%E7%9A%84%E6%9C%AC%E5%9C%B0%E7%9B%B8%E5%86%8C%E5%9B%BE%E7%89%87/
这个文章中,也说了,三个方面优化,但是没有看懂
否则需要对横屏做适配
还需要手动添加各种依赖库,可以直接写在pom文件中,这样就不用手动添加了
标题栏不能设置样式吗?跟我的App风格不匹配
通过友盟崩溃日志查看会出现如下异常;
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ikongjian.im/com.yongchun.library.view.ImageSelectorActivity}: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2401)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2463)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4047)
at android.app.ActivityThread.access$1000(ActivityThread.java:175)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1372)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5386)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:927)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:722)
Caused by: android.database.StaleDataException: Attempted to access a cursor after it has been closed.
at android.database.BulkCursorToCursorAdaptor.throwIfCursorIsClosed(BulkCursorToCursorAdaptor.java:64)
at android.database.BulkCursorToCursorAdaptor.getCount(BulkCursorToCursorAdaptor.java:70)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:197)
at android.database.AbstractCursor.moveToNext(AbstractCursor.java:245)
at android.database.CursorWrapper.moveToNext(CursorWrapper.java:166)
at com.yongchun.library.utils.LocalMediaLoader$1.onLoadFinished(LocalMediaLoader.java:78)
at com.yongchun.library.utils.LocalMediaLoader$1.onLoadFinished(LocalMediaLoader.java:54)
at android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:476)
at android.support.v4.app.LoaderManagerImpl$LoaderInfo.finishRetain(LoaderManager.java:306)
at android.support.v4.app.LoaderManagerImpl.finishRetain(LoaderManager.java:806)
at android.support.v4.app.FragmentHostCallback.reportLoaderStart(FragmentHostCallback.java:280)
at android.support.v4.app.FragmentController.reportLoaderStart(FragmentController.java:378)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:609)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1245)
at android.app.Activity.performStart(Activity.java:6099)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
... 11 more
android.database.StaleDataException: Attempted to access a cursor after it has been closed.
at android.database.BulkCursorToCursorAdaptor.throwIfCursorIsClosed(BulkCursorToCursorAdaptor.java:64)
at android.database.BulkCursorToCursorAdaptor.getCount(BulkCursorToCursorAdaptor.java:70)
at android.database.AbstractCursor.moveToPosition(AbstractCursor.java:197)
at android.database.AbstractCursor.moveToNext(AbstractCursor.java:245)
at android.database.CursorWrapper.moveToNext(CursorWrapper.java:166)
at com.yongchun.library.utils.LocalMediaLoader$1.onLoadFinished(LocalMediaLoader.java:78)
at com.yongchun.library.utils.LocalMediaLoader$1.onLoadFinished(LocalMediaLoader.java:54)
at android.support.v4.app.LoaderManagerImpl$LoaderInfo.callOnLoadFinished(LoaderManager.java:476)
at android.support.v4.app.LoaderManagerImpl$LoaderInfo.finishRetain(LoaderManager.java:306)
at android.support.v4.app.LoaderManagerImpl.finishRetain(LoaderManager.java:806)
at android.support.v4.app.FragmentHostCallback.reportLoaderStart(FragmentHostCallback.java:280)
at android.support.v4.app.FragmentController.reportLoaderStart(FragmentController.java:378)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:609)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1245)
at android.app.Activity.performStart(Activity.java:6099)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2463)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4047)
at android.app.ActivityThread.access$1000(ActivityThread.java:175)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1372)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5386)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:927)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:722)
首先因为预览页底部的选择checkbox会被虚拟按键条挡住 我去掉了ImagePreviewActivity中的FLAG_LAYOUT_NO_LIMITS
接着发现toolbar上面有片黑色区域 于是去掉了activity_image_preview中那个占位的view
然后发现有些图片预览时左右会留空 于是改了好长时间 但还没改好
我觉得应该改window的flag
在ImageSelectorActivity里,FolderWindow消失的时候,会引起这个问题
java.lang.NullPointerException
at android.view.ViewRootImpl.drawAccessibilityFocusedDrawableIfNeeded(ViewRootImpl.java:2301)
不知道为什么会引起,stackoverflow上给了一个解决方案http://stackoverflow.com/questions/16221175/aos-4-x-crash-issue-with-animation。
能分析下是怎么引起的吗?
It will crash at ImageSlelectorActivity when my phone without Pics.
7.0+版本拍照异常,这里没做处理,依赖后无法正常使用
final View contentView = inflater.inflate(R.layout.fragment_preview, container, false);
final ImageView imageView = contentView.findViewById(R.id.image);
final PhotoViewAttacher mAttacher = new PhotoViewAttacher(imageView);
// TODO: 2018/2/8 0008 不明白为什么要这样写
Glide.with(this)
.asBitmap()
.load(new File(strUrl))
.into(new SimpleTarget<Bitmap>(480, 800) {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
imageView.setImageBitmap(resource);
mAttacher.update();
}
});
return contentView;
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.