Giter Club home page Giter Club logo

bigimageviewpager's Introduction

Hi there 👋

能提高你的开发效率,这是我的荣幸。

🚀概览

SherlockGougou's GitHub stats

bigimageviewpager's People

Contributors

bzcoder avatar equationl avatar lovexyx avatar sherlockgougou avatar shinichi54 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bigimageviewpager's Issues

快速点击开启了两个页面造成的问题

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.lang.ref.Reference.clear()' on a null object reference
因为快速点击,会开启了两个ImagePreviewActivity,然后报上述问题

滑动内存切换内存消耗大

展示图片列表时滑动切换之前的没有回收吧,性能差点的手机滑动到10张左右就卡的很,好点的手机能多滑一些,不过多了也会卡

About default placeholder

@SherlockGougou
Thanks to the resources provided by the author, I personally feel that we can optimize the following problems:
The default placeholder when the picture address is empty or the picture can not be successfully loaded.

基础功能

有点击事件监听和长按事件监听吗?没看到有加入这个功能

com.android.support:appcompat-v728.0.0报错

<item name="sh_progress_text" type="id">false</item>
<item name="sh_progress_view" type="id">false</item>

28以后只能这样写
<item name="sh_progress_text" type="id"/>
<item name="sh_progress_view" type="id"/>

和另外一个九宫格库冲突..

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xunqi.mm/cc.shinichi.library.view.ImagePreviewActivity}: java.lang.ClassCastException: com.lzy.ninegrid.preview.HackyViewPager cannot be cast to cc.shinichi.library.view.HackyViewPager
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2593)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2653)
at android.app.ActivityThread.access$900(ActivityThread.java:173)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1431)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:171)
at android.app.ActivityThread.main(ActivityThread.java:5726)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)
Caused by: java.lang.ClassCastException: com.lzy.ninegrid.preview.HackyViewPager cannot be cast to cc.shinichi.library.view.HackyViewPager
at cc.shinichi.library.view.ImagePreviewActivity.onCreate(ImagePreviewActivity.java:123)
at android.app.Activity.performCreate(Activity.java:6350)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1121)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2546)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2653) 
at android.app.ActivityThread.access$900(ActivityThread.java:173) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1431) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:171) 
at android.app.ActivityThread.main(ActivityThread.java:5726) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:732) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107) 

图片加载方向错误。

小米:mix2s
图片信息:4032x2016px
具体描述:图片在相册显示是竖向的,使用该库就变成了横向的。

您好,百分比进度回调无法回调

.setProgressLayoutId(ImagePreview.PROGRESS_THEME_CIRCLE_TEXT, new OnOriginProgressListener() {
@OverRide public void progress(View parentView, int progress) {
Log.d(TAG, "progress: " + progress);

                        // 需要找到进度控件并设置百分比,回调中的parentView即是传入的布局的根View,可通过parentView找到进度控件:
                        ProgressBar progressBar = parentView.findViewById(R.id.sh_progress_view);
                        TextView textView = parentView.findViewById(R.id.sh_progress_text);
                        progressBar.setProgress(progress);
                        String progressText = progress + "%";
                        textView.setText(progressText);
                    }

                    @Override public void finish(View parentView) {
                        Log.d(TAG, "finish: ");
                    }
                })

打印不出来百分比

NoSuchMethodError

glide 4.5

java.lang.NoSuchMethodError: No direct method (I)V in class Lcom/bumptech/glide/util/LruCache; or its super classes (declaration of 'com.bumptech.glide.util.LruCache' appears in /data/app/com.cmiot.logisticswarehouse-ZGK19cyE4HzT7HFVl7U9rw==/split_lib_dependencies_apk.apk)

大神,我之前用这个框架一直没问题,最近莫名其妙报错,错误信息如下

java.lang.NoSuchMethodError: No virtual method addListener(Lcom/bumptech/glide/request/RequestListener;)Lcom/bumptech/glide/RequestBuilder; in class Lcom/bumptech/glide/RequestBuilder; or its super classes (declaration of 'com.bumptech.glide.RequestBuilder' appears in /data/app/com.vc.app-2/base.apk:classes9.dex)
at cc.shinichi.library.view.ImagePreviewAdapter.instantiateItem(ImagePreviewAdapter.java:201)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1010)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1158)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1092)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:19886)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:19886)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6085)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:19886)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6085)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
at android.view.View.measure(View.java:19886)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6085)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:19886)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6085)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1464)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:758)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:640)
at android.view.View.measure(View.java:19886)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6085)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:693)
at android.view.View.measure(View.java:19886)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2316)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1407)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1660)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1295)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6400)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:876)
at android.view.Choreographer.doCallbacks(Choreographer.java:688)
at android.view.Choreographer.doFrame(Choreographer.java:623)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:862)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6239)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

定位到的代码 Glide.with(activity).downloadOnly().load(url).addListener(new RequestListener() {
@OverRide public boolean onLoadFailed(@nullable GlideException e, Object model, Target target,
boolean isFirstResource) {

请问一下图片的高度你是怎么设置的,是动态这样

请问一下图片的高度你是怎么设置的,是java动态这样设置吗
LinearLayout.LayoutParams params;
params = new LinearLayout.LayoutParams(width,height);
ll_signle.setLayoutParams(params);

如果是这样设置的,大神能不能告诉我参数width和height的单位是px,pt还是dp,我想使用这种方式设置图片原本的高度,但是就是使用imageview动态设置的高度和您的框架显示的高度有点差别,我现在知道图片的高度是288pt,直接传288进去貌似显示的高度太小了,到底应该288乘以多少然后传参进去呢

崩溃问题

11-23 12:54:11.025 27152-27152/com.yf.yftrace.app.dev E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.yf.yftrace.app.dev, PID: 27152
java.lang.NoSuchFieldError: No static field rootView of type I in class Lcc/shinichi/library/R$id; or its superclasses (declaration of 'cc.shinichi.library.R$id' appears in /data/app/com.yf.yftrace.app.dev-1/split_lib_slice_8_apk.apk)
at cc.shinichi.library.view.ImagePreviewActivity.onCreate(ImagePreviewActivity.java:126)
at android.app.Activity.performCreate(Activity.java:6355)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2438)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2545)
at android.app.ActivityThread.access$1100(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1396)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5597)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:771)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:649)
11-23 12:54:11.108 1468-1618/? E/InputDispatcher: channel '827302d com.yf.yftrace.app.dev/com.yf.yftrace.arms.mvp.ui.activity.PestAddActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
11-23 12:54:11.200 393-393/? E/HAL: Dawei load: module=/system/lib64/hw/gralloc.msm8937.so

建议可以禁用缓存

当使用来自同一来源的图片时,会被Glide自动缓存,但是这个来源的图片经常改变,而Glide的缓存并不会更新,以前用过一个框架就可以禁用缓存,不过那个框架无法查看超大图,所以转成了作者现在的这个框架,希望作者能考虑一下我的建议

依赖不上

我用的'com.github.bumptech.glide:glide:3.7.0 + com.github.SherlockGougou:BigImageViewPager:v3_4.0.1 依赖不上啊
ImagePreview找不到这个类

友盟报了一个错,如下,imagepreview里有空指针异常

1
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xindonshisan.ThireteenFriend/cc.shinichi.library.view.ImagePreviewActivity}: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
2
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3303)
3
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
4
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5477)
5
at android.app.ActivityThread.-wrap19(Unknown Source:0)
6
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2000)
7
at android.os.Handler.dispatchMessage(Handler.java:108)
8
at android.os.Looper.loop(Looper.java:166)
9
at android.app.ActivityThread.main(ActivityThread.java:7529)
10
at java.lang.reflect.Method.invoke(Native Method)
11
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
12
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
13
Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
14
at cc.shinichi.library.view.ImagePreviewActivity.onCreate(ImagePreviewActivity.java:118)
15
at android.app.Activity.performCreate(Activity.java:7383)
16
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
17
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256)
18
... 10 more
19
java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
20
at cc.shinichi.library.view.ImagePreviewActivity.onCreate(ImagePreviewActivity.java:118)
21
at android.app.Activity.performCreate(Activity.java:7383)
22
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1218)
23
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3256)
24
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3411)
25
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5477)
26
at android.app.ActivityThread.-wrap19(Unknown Source:0)
27
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2000)
28
at android.os.Handler.dispatchMessage(Handler.java:108)
29
at android.os.Looper.loop(Looper.java:166)
30
at android.app.ActivityThread.main(ActivityThread.java:7529)
31
at java.lang.reflect.Method.invoke(Native Method)
32
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
33
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

你好我要下载个v3_2.1.4的源码急

为什么下载的都是V4的,请问要如何加载,还有这个控件一般还要加需求,例如像微信朋友圈查看那样,加上文字描述之类的需求

java.lang.NoSuchMethodError: com.bumptech.glide.util.LruCache.<init>

Process: com.jaagro.driver, PID: 12805
java.lang.NoSuchMethodError: com.bumptech.glide.util.LruCache.
at cc.shinichi.library.glide.cache.SafeKeyGenerator.(SafeKeyGenerator.java:17)
at cc.shinichi.library.glide.ImageLoader.getGlideCacheFile(ImageLoader.java:30)
at cc.shinichi.library.view.ImagePreviewAdapter.instantiateItem(ImagePreviewAdapter.java:276)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:1004)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1152)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1086)
at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1616)
at android.view.View.measure(View.java:16513)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:719)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:455)
at android.view.View.measure(View.java:16513)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.support.v7.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141)
at android.view.View.measure(View.java:16513)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16513)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:16513)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1404)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
at android.view.View.measure(View.java:16513)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5125)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2367)
at android.view.View.measure(View.java:16513)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1962)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1159)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1341)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1046)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5665)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:761)
at android.view.Choreographer.doCallbacks(Choreographer.java:574)
at android.view.Choreographer.doFrame(Choreographer.java:544)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:747)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5135)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:614)
at dalvik.system.NativeStart.main(Native Method)

是否支持自定义预览页面布局

在不修改源码的情况下是否支持自定义预览页面布局结构,比如说左上角返回键,右上角功能按钮,底部增加文本显示等。

新功能

强烈建议添加个删除图片功能

在长按回调中显示一个新的AlertDilaog会被覆盖

代码如下:
ImagePreview.getInstance() .setContext(MainActivity.this) .setEnableDragClose(true) .setShowDownButton(false) .setIndex(position) .setImageList(fileList) .setBigImageLongClickListener(new OnBigImageLongClickListener() { @Override public boolean onLongClick(View view, final int pos) { String[] items; items = new String[] {"分享", "删除"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setItems(items, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { switch (i) { case 0: sharePicture(fileList.get(pos)); break; case 1: deletePicture(fileList.get(pos), pos, true); break; } } }); builder.create(); builder.show(); return false; } }) .start();

分享、删除的dialog无法正常弹出,而是被图片查看界面遮挡

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.