Giter VIP home page Giter VIP logo

anylayer's Introduction

Hi there 👋

Anurag's GitHub stats

Top Langs

anylayer's People

Contributors

goweii avatar mbacuiz 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

anylayer's Issues

4.1.5-androidx

build报错如下:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.

Could not resolve all task dependencies for configuration ':app:debugCompileClasspath'.
Could not resolve per.goweii.visualeffect:visualeffect-core:1.0.3.
Required by:
project :app > com.github.goweii.AnyLayer:anylayer:4.1.5-androidx
> Could not resolve per.goweii.visualeffect:visualeffect-core:1.0.3.
> Could not get resource 'https://dl.bintray.com/rongcloud/maven/per/goweii/visualeffect/visualeffect-core/1.0.3/visualeffect-core-1.0.3.pom'.
> Could not HEAD 'https://dl.bintray.com/rongcloud/maven/per/goweii/visualeffect/visualeffect-core/1.0.3/visualeffect-core-1.0.3.pom'. Received status code 403 from server: Forbidden
Could not resolve per.goweii.visualeffect:visualeffect-blur:1.0.3.
Required by:
project :app > com.github.goweii.AnyLayer:anylayer:4.1.5-androidx
> Could not resolve per.goweii.visualeffect:visualeffect-blur:1.0.3.
> Could not get resource 'https://dl.bintray.com/rongcloud/maven/per/goweii/visualeffect/visualeffect-blur/1.0.3/visualeffect-blur-1.0.3.pom'.
> Could not HEAD 'https://dl.bintray.com/rongcloud/maven/per/goweii/visualeffect/visualeffect-blur/1.0.3/visualeffect-blur-1.0.3.pom'. Received status code 403 from server: Forbidden
Could not resolve per.goweii.visualeffect:visualeffect-view:1.0.3.
Required by:
project :app > com.github.goweii.AnyLayer:anylayer:4.1.5-androidx
> Could not resolve per.goweii.visualeffect:visualeffect-view:1.0.3.
> Could not get resource 'https://dl.bintray.com/rongcloud/maven/per/goweii/visualeffect/visualeffect-view/1.0.3/visualeffect-view-1.0.3.pom'.
> Could not HEAD 'https://dl.bintray.com/rongcloud/maven/per/goweii/visualeffect/visualeffect-view/1.0.3/visualeffect-view-1.0.3.pom'. Received status code 403 from server: Forbidden


我加上maven { url "https://gitee.com/goweii/maven-repository/raw/master/releases/" },build成功了。但是app运行报错,如下:

java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: java.lang.ClassNotFoundException: Didn't find class "androidx.startup.InitializationProvider" on path: DexPathList[[zip file "/data/app/...

这是要我依赖startup吗?求解决

pop形式支持指定区域的背景灰色吗

平时用pop弹窗的大多需求为在某个view位置下面弹窗,该内容下面的剩余部分背景置灰处理,这块的处理会受限于一些android 版本产生一些适配性的差异,这种情况能支持吗

提几个建议

是否可以增加几个类型:
1.bottomSheet样式的dialog
2.仿抖音评论长按删除的dialog
3.单选列表的dialog

compatSoftInput概率性出现将DialogLayer移动过于高的问题

我的用法
mDialog?.onVisibleChangeListener(object :
Layer.OnVisibleChangeListener {
override fun onShow(layer: Layer) {
(layer as DialogLayer).compatSoftInput(true, etNote)
}

        override fun onDismiss(layer: Layer) {
            (layer as DialogLayer).removeSoftInput()
        }
    })

场景是一个底部弹出且始终处于底部的浮层,浮层内部一个输入框一个按钮。

点击屏幕两次dialog才会消失

我使用AnyLayer.dialog(getContext())创建并显示了一个dialog,第一次,点击屏幕一次就会消失,但是再次显示的话,如果使用第一次创建时保留下来的对象,直接调用layer.show(),那么就要点击屏幕两次才会退出。而且demo中的NormalActivity中的layer_dark_bg也出现了这种情况

void showSaveDlg(){
        if(actionLayer1 == null){
            actionLayer1 = AnyLayer.dialog(getContext())
                    .contentView(R.layout.dlg_circle_article_action_copy_and_save)
                    .backgroundDimDefault()
                    .cancelableOnTouchOutside(true)
                    .gravity(Gravity.BOTTOM)
                    .contentAnimator(new DialogLayer.AnimatorCreator() {
                        @Override
                        public Animator createInAnimator(@NonNull View content) {
                            return AnimatorHelper.createBottomInAnim(content);
                        }

                        @Override
                        public Animator createOutAnimator(@NonNull View content) {
                            return AnimatorHelper.createBottomOutAnim(content);
                        }
                    })
                    .onShowListener(new Layer.OnShowListener() {
                        @Override
                        public void onShowing(@NonNull Layer layer) {
                            
                        }
                        @Override
                        public void onShown(@NonNull Layer layer) {

                        }
                    })
                    .onClickToDismiss(R.id.iv_close);
        }
        actionLayer1.show();
    }

Bug

传入一个new出来的View,或者inflate出来的View对象,传入contentView函数,第二次就会弹不出来。
initContent函数中,mContent第二次getParent是不为空的。
原函数:

private void initContent() {
        if (mContent != null) {
            if (mContent.getParent() == null) {
                mContent.setClickable(true);
                if (mGravity != -1) {
                    FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) mContent.getLayoutParams();
                    params.gravity = mGravity;
                    mContent.setLayoutParams(params);
                }
                mViewHolder.getContentWrapper().addView(mContent);
            }
        }
    }

作修改:

private void initContent() {
        if (mContent != null) {
            ViewGroup contentGroup = (ViewGroup) mContent.getParent();
            if (contentGroup != null) {
                contentGroup.removeView(mContent);
            }
            mContent.setClickable(true);
            if (mGravity != -1) {
                FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) mContent.getLayoutParams();
                params.gravity = mGravity;
                mContent.setLayoutParams(params);
            }
            mViewHolder.getContentWrapper().addView(mContent);
        }
    }

布局问题

最新版使用锚点效果添加的View宽度异常

移除不彻底的问题

在一个APP主界面弹出了一个DIALOG,然后关掉,再次从微信公众号跳转到APP主界面,此时弹出一个DIALOG会导致 之前在主界面弹出的DIALOG出现在下方

NullPointerException

java.lang.NullPointerException

Attempt to invoke virtual method 'android.view.View android.view.View.findFocus()' on a null object reference

per.goweii.anylayer.ViewManager$1.run(ViewManager.java:153)

全局复用Layer会有问题

compatSoftInput处理有点问题,在remove时没有将softInputHelper置空。或者在重新调用compatSoftInput时应该重新attach,不然复用dialog会有问题

使用该库的APP信息收集

如果你的产品正在使用AnyLayer,欢迎留下相关信息。
如:

APP名 APP图标(128*128以内) 公司名(可选)
玩安卓 icon-wanandroid 个人

这些信息将在首页展示,用来帮助更多开发者关注并使用本框架,增加框架的活跃度。而高活跃度则意味着更多隐藏BUG被发现并修复,即活跃度等同于框架的健壮性。同时这也是我维护项目的最大动力,感谢。

坐标问题

AnyLayer中

private void initRootView(){
        Activity activity = Utils.getActivity(mContext);
        if (activity == null) {
            throw new NullPointerException();
        }
        mRootView = activity.getWindow().getDecorView().findViewById(android.R.id.content);
    }

...

private void initContainer() {
        if (mCancelableOnTouchOutside) {
            mViewHolder.getContainer().setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dismiss();
                }
            });
        }
        if (mTargetView != null) {
            int[] locationTarget = new int[2];
            mTargetView.getLocationOnScreen(locationTarget);
            int[] locationRoot = new int[2];
            mRootView.getLocationOnScreen(locationRoot);
            int paddingTop = 0;
            int paddingBottom = 0;
            int paddingLeft = 0;
            int paddingRight = 0;
            if (mDirection == Direction.TOP) {
                paddingBottom = mRootView.getHeight() - locationTarget[1];
            } else if (mDirection == Direction.BOTTOM){
                paddingTop = locationTarget[1] - locationRoot[1] + mTargetView.getHeight();
            } else if (mDirection == Direction.LEFT){
                paddingRight = mRootView.getWidth() - locationTarget[0];
            } else if (mDirection == Direction.RIGHT){
                paddingLeft = locationTarget[0] - locationRoot[0] + mTargetView.getWidth();
            }
            mViewHolder.getContainer().setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);
        }
    }

getLocationOnScreen是包括状态栏的,计算的坐标是整个屏幕的,而mRootView取的是android.R.id.content,此View是不包括状态栏的,所以mRootView.getHeight是忽略栏状态栏的高度,所算出的paddingBottom肯定是有偏差的。DecorView是包括状态栏的。
可作修改:

private void initRootView(){
        Activity activity = Utils.getActivity(mContext);
        if (activity == null) {
            throw new NullPointerException();
        }
        mRootView = (ViewGroup) activity.getWindow().getDecorView();
    }

Layer contentView 宽度

我在TV设备上面使用AnyLayer.dialog 宽度会被固定,该怎么设置固定宽度?

minSdk version to at least 19

minSdk version to at least 19,感觉minSdk 19太高了,兼容不好。
没看代码的Sdk需求,如无特殊,推荐能小一些。

如何提一个有效的Issues?

我觉得提一个Issue至少要包括下面3个点:

  • 报错日志
  • 调用代码
  • 页面显示

不然我可能会直接关掉这个Issue。

可以让跟随targetView滑动吗?

  1. 可以使用targetView.getViewTreeObserver().addOnScrollChangedListener来监听target的滑动事件
  2. PopupWindow有类似的功能
  3. 目前看了下应该是不可以的,demo好像弹出popup后也动不了了。
    如有误请斧正

然后看了下似乎是用margin来控制弹出的坐标的,个人感觉用layout方法好些

BUG

圆形揭露 关闭同时不断点击屏幕,关闭动画会重复执行导致屏幕闪烁

棒棒棒!

希望库主可以更新了设计思路,给了小star的同学们想学习学习哈~ (^_−)☆

使用compatSoftInput 出现如下问题

在我的两个界面中都使用了同一个dialog,代码如下:
`public static void showBottomInputDialog(Activity activity, OnDialogClickListener listener) {
AnyLayer.dialog(activity)
.backgroundDimDefault()
.gravity(Gravity.BOTTOM)
.contentView(R.layout.dialog_text_input)
.onVisibleChangeListener(new Layer.OnVisibleChangeListener() {
@OverRide
public void onShow(Layer layer) {
((DialogLayer) layer).compatSoftInput(true, layer.getView(R.id.edtText));
}

                @Override
                public void onDismiss(Layer layer) {
                    ((DialogLayer) layer).removeSoftInput();
                }
            })
            .onClick((layer, v) -> {
                if (v.getId() == R.id.iv_confirm) {
                    if (listener != null) {
                        String content = ((EditText) layer.getView(R.id.edtText)).getText().toString().trim();
                        if (ObjectUtils.isEmpty(content)) {
                            ToastUtils.showShort("请输入文字");
                        } else {
                            listener.onConfirm(content, layer);
                            layer.dismiss();
                        }
                    }
                } else if (v.getId() == R.id.iv_cancel) {
                    layer.dismiss();
                }

            }, R.id.iv_confirm, R.id.iv_cancel)
            .show();
}`

第一个界面弹窗后显示正常,如下:
image

第二个界面弹窗后,出现异常:
中间会多出一段空白,点击空白处,
image

空白处消失,如下:
image
再点击输入框后,页面显示正常,如下:
image

请问这种情况,我该如何处理呢?

Anylayer会自动获取焦点的问题

使用中如果edittext拥有焦点,键盘处于展开状态,这时候用anylayer弹出popu会导致edittext失去焦点,键盘状态不变,但是无法输入,请问有好的解决办法

执行消失的动画时,偶然会崩溃

java.lang.IllegalStateException: Cannot start this animator on a detached view!
at android.view.RenderNode.addAnimator(RenderNode.java:799)
at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:299)
at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:281)
at android.animation.RevealAnimator.(RevealAnimator.java:37)
at android.view.ViewAnimationUtils.createCircularReveal(ViewAnimationUtils.java:71)
at per.goweii.anylayer.AnimatorHelper.createCircularRevealOutAnim(AnimatorHelper.java:339)

gravity 无效

mDialogLayer.gravity(Gravity.BOTTOM); 无效
版本:3.2.0
不管gravity设置什么属性都是top状态

依赖加载不到

我使用Android Studio 4.2 beta 5版本,没使用代理。编译时报如下错误:
Could not resolve com.github.goweii:AnyLayer:4.1.4-androidx.
> Could not get resource 'https://dl.bintray.com/tencentqcloudterminal/maven/com/github/goweii/AnyLayer/4.1.4-androidx/AnyLayer-4.1.4-androidx.pom'.
> Could not HEAD 'https://dl.bintray.com/tencentqcloudterminal/maven/com/github/goweii/AnyLayer/4.1.4-androidx/AnyLayer-4.1.4-androidx.pom'. Received status code 403 from server: Forbidden
> Could not resolve com.github.goweii:AnyLayer:4.1.4-androidx.
> Could not get resource 'https://dl.bintray.com/umsdk/release/com/github/goweii/AnyLayer/4.1.4-androidx/AnyLayer-4.1.4-androidx.pom'.
> Could not HEAD 'https://dl.bintray.com/umsdk/release/com/github/goweii/AnyLayer/4.1.4-androidx/AnyLayer-4.1.4-androidx.pom'. Received status code 403 from server: Forbidden

用于过生产环境吗

看了下,使用View实现的弹窗,思路很好,解决了一些dialog与pop的痛点,请问作者此库用于过生产环境吗,表现如何

AnyLayer.dialog 滚动视图不显示滚动条

版本4.1.4-androidx
代码位于demo的 per/goweii/android/anylayer/DragActivity.java:66
嵌入ScrollView 或者Recyleview等滚动视图是不显示滚动条,
我自己的项目是这种情况, 使用demo 也是这种情况.
按理说应该显示滚动条的,不知道是为什么
QQ20210513-160633

Toast键盘遮挡问题

小米手机上使用AnyLayer.toast(),如果软键盘处于打开状态,会被toast软键盘挡住,其他手机没试过,不清楚。

使用view报错

View view = LayoutInflater.from(context).inflate(R.layout.dialog_confirm, null);
AnyLayer.with(context)
                .cancelableOnClickKeyBack(true)
                .cancelableOnTouchOutside(true)
                .contentView(view)
.show()

报错Attempt to write to field 'int android.widget.FrameLayout$LayoutParams.gravity' on a null object reference

界面存在RecyclerView造成RecyclerView滑动

你好,在存在RecyclerView加载图片的界面调用, 并且有点击存在时,

onClick(AnyLayer.OnLayerClickListener { p0, p1 ->
                        p0.dismiss()
                        when (p1.id) {
                            R.id.tv_edit -> {
                                startActivity<NewTaskActivity>("order" to mData)
                            }
                            R.id.tv_delete -> {
                                mData?.apply {
                                    mPresenter.operatorRewardOrder(id, RewardOrderBean.OPERATOR_TYPE_REVOKE)
                                }
                            }
                            else -> {
                            }
                        }
                    }, R.id.tv_edit, R.id.tv_delete, R.id.tv_cancel)

会造成RecyclerView向下滑动一段距离, 请问这个能解决么?

点击前
点击后

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.