goweii / anylayer Goto Github PK
View Code? Open in Web Editor NEWAndroid稳定高效的浮层创建管理框架
Home Page: https://github.com/goweii/AnyLayer
License: Apache License 2.0
Android稳定高效的浮层创建管理框架
Home Page: https://github.com/goweii/AnyLayer
License: Apache License 2.0
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运行报错,如下:
这是要我依赖startup吗?求解决
底部不全屏
调用AnyLayer.popup没有遮罩是什么原因呢
平时用pop弹窗的大多需求为在某个view位置下面弹窗,该内容下面的剩余部分背景置灰处理,这块的处理会受限于一些android 版本产生一些适配性的差异,这种情况能支持吗
是否可以增加几个类型:
1.bottomSheet样式的dialog
2.仿抖音评论长按删除的dialog
3.单选列表的dialog
我的用法
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()
}
})
场景是一个底部弹出且始终处于底部的浮层,浮层内部一个输入框一个按钮。
我使用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();
}
传入一个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宽度异常
RT
在一个APP主界面弹出了一个DIALOG,然后关掉,再次从微信公众号跳转到APP主界面,此时弹出一个DIALOG会导致 之前在主界面弹出的DIALOG出现在下方
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)
compatSoftInput处理有点问题,在remove时没有将softInputHelper置空。或者在重新调用compatSoftInput时应该重新attach,不然复用dialog会有问题
在dialogfragment上调用AnyLayer.dialog(context).{...}.show()会出现layer显示在dialogfragment下面,请问下这种情况怎么处理
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();
}
我在TV设备上面使用AnyLayer.dialog 宽度会被固定,该怎么设置固定宽度?
minSdk version to at least 19,感觉minSdk 19太高了,兼容不好。
没看代码的Sdk需求,如无特殊,推荐能小一些。
如题,我的pop展示在menulayout下面,但是有做留白空隙,如何点击空隙处pop不消失
我觉得提一个Issue至少要包括下面3个点:
不然我可能会直接关掉这个Issue。
红米note9,悬浮球移动到角上,上滑到桌面,切换到demo,再到桌面,再切到demo,悬浮球的位置会发生变化
然后看了下似乎是用margin来控制弹出的坐标的,个人感觉用layout方法好些
为什么contentView放View对象 就直接变成了全屏
放resourcesId 就不会全屏
AnyLayer
.dialog(this)
.contentView(R.layout.layout_land) 非全屏
AnyLayer
.dialog(this)
.contentView(mView) 全屏
compatSoftInput(true) 设置以后,第一次 弹窗 下层的view 也跟随上移,点击让弹窗dimiss(),再show(),则正常显示
如题,demo中横屏,点击在下面全屏,但是横屏状态下没有占满整个宽度
圆形揭露 关闭同时不断点击屏幕,关闭动画会重复执行导致屏幕闪烁
希望库主可以更新了设计思路,给了小star的同学们想学习学习哈~ (^_−)☆
在我的两个界面中都使用了同一个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();
}`
第二个界面弹窗后,出现异常:
中间会多出一段空白,点击空白处,
请问这种情况,我该如何处理呢?
软键盘适配现在源码中实现是默认注册,导致不需要适配软键盘的浮层也会被软键盘的显示消失影响。
使用中如果edittext拥有焦点,键盘处于展开状态,这时候用anylayer弹出popu会导致edittext失去焦点,键盘状态不变,但是无法输入,请问有好的解决办法
没看到给整个layer加click事件的方法
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)
有没有好的方式去记录float view的位置,以记录用户拖拽后的float view的location位置,以便用户下次进入的时候float view使用记录的位置作为默认的location?
您好,AnyLayer.toast() 如何设置字体大小 ,能把设置字体大小的函数放出来嘛
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的痛点,请问作者此库用于过生产环境吗,表现如何
因为更换了内容没有调用dismiss方法,然后点击关闭按钮anylayer并没有关闭。
小米手机上使用AnyLayer.toast(),如果软键盘处于打开状态,会被toast软键盘挡住,其他手机没试过,不清楚。
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
1.报错日志
2.调用代码
3.页面显示
你好,在存在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)
长按Edittext会弹出:全选、复制(系统自带的弹窗),怎么处理点击空白自动消失,目前是点击该控件,弹窗才会消失
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.