Code Monkey home page Code Monkey logo

android-circledialog's Introduction

JCenter迁移说明

JCenter服务已经宣布停止维护,对于旧版本大家可以使用阿里云镜像引用,以后新版本将会发布在JitPack

1、旧版本阿里云镜像引用方式

在项目根目录下的build.gradle文件中加入

 allprojects {
    repositories {
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
    }
 }

1、新版本JitPack引用方式

在项目根目录下的build.gradle文件中加入

 allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
 }

Android-CircleDialog

License JCenter API

  • 基于DialogFragment封装,已封装的对话框类型有,常规对话框、列表框、输入框、进度框; 每个对话框类型也支持自定义边框圆角、背景透明度、字体大小与色值
  • 初衷是掌握知识点,此库不一定适合你的产品整体风格,当然能够适合你的项目最好不过,有建议和不足之处欢迎*扰

知识点

全代码创建shapeselectorLayout,主要是Drawable所使用类如下: ShapeDrawableRoundRectShapeGradientDrawableClipDrawableLayerDrawableStateListDrawable

效果图

引入

 implementation 'com.github.mylhyl:Android-CircleDialog:5.3.8'

如果版本号后面有-alpha,那说明最后一个版本是预览版,可能存在bug谨慎使用,稳定版则没有-alpha后缀
例如
稳定版:implementation 'com.mylhyl:circleDialog:x.x.x'
预览版:implementation 'com.mylhyl:circleDialog:x.x.x-alpha'

下载APK体验

使用

注意

  • 依赖包:appcompat-v7cardview-v7recyclerview-v7
  • 继承基类AbsBaseCircleDialog背景为透明,自定义layout时按需求设置背景
  • v3版本开始放弃百分比适配
  • 3.0.9开始,刷新dialog界面的方法由create改为refresh
  • v4版本开始,除字体大小保持原来的sp单位,偏移量px外,其它宽、高、间距、均改为了dp单位
  • v5版本已经适配为androidx

联系方式

  • 可能会因为工作忙碌原因没有及时回复,请联系我的个人微信号:48025211

License

Copyright 2017 mylhyl

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

android-circledialog's People

Contributors

mylhyl avatar qingtianxiaoyu 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

android-circledialog's Issues

建议增加几个设置参数的函数

1,AndroidManifest 设置参数没用,依旧是那么大,建议能增加带宽高度的构造函数或解决bug
2.建议增加设置标题高度,标题字体颜色的函数;
3.建议增加内容颜色的函数

使用百分比布局导致不同分辨率的机子上效果有较大差异

这个是1080*1920屏幕的效果
image

这个是1440*2880屏幕的效果
image

可以看出来,这两图取消(确认)按钮的高度与上部分内容的高度的比值是不相同的。

我的代码是这样设置的
image

其实用dp适配下屏幕密度的就挺好的,一个对话框,还是不太适合用百分比布局。

会出现不显示的问题

1首先在页面点击显示弹窗然后点击返回(此时弹窗消失)
2在点击返回(此时页面返回到上一页)
3重新进入有弹窗的那个页面点击弹出按钮(此时弹窗不显示了)

java.lang.NullPointerException: Attempt to invoke interface method 'android.view.View

Android 9.0 出现了这个异常,
06-11 12:18:41.674 11249 11249 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke interface method 'android.view.View com.mylhyl.circledialog.view.listener.ItemsView.getView()' on a null object reference

15506-11 12:18:41.674 11249 11249 E AndroidRuntime: at com.mylhyl.circledialog.view.BuildViewImpl.buildItems(BuildViewImpl.java:88)
15606-11 12:18:41.674 11249 11249 E AndroidRuntime: at com.mylhyl.circledialog.Controller.applyBody(Controller.java:82)
15706-11 12:18:41.674 11249 11249 E AndroidRuntime: at com.mylhyl.circledialog.Controller.createView(Controller.java:53)
15806-11 12:18:41.674 11249 11249 E AndroidRuntime: at com.mylhyl.circledialog.AbsCircleDialog.createView(AbsCircleDialog.java:50)
15906-11 12:18:41.674 11249 11249 E AndroidRuntime: at com.mylhyl.circledialog.BaseCircleDialog.onCreateView(BaseCircleDialog.java:70)
16006-11 12:18:41.674 11249 11249 E AndroidRuntime: at android.support.v4.app.Fragment.performCreateView(Fragment.java:2439)
16106-11 12:18:41.674 11249 11249 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1460)
16206-11 12:18:41.674 11249 11249 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1784)
16306-11 12:18:41.674 11249 11249 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1852)
16406-11 12:18:41.674 11249 11249 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.dispatchStateChange(FragmentManager.java:3269)
16506-11 12:18:41.674 11249 11249 E AndroidRuntime: at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:3229)
16606-11 12:18:41.674 11249 11249 E AndroidRuntime: at android.support.v4.app.FragmentController.dispatchActivityCreated(FragmentController.java:201)

使用Fragment.dismissAllowingStateLoss()

建议在CircleDialog类中,dissmiss()的地方使用dismissAllowingStateLoss()
否则可能引发
IllegalStateException: Can not perform this action after onSaveInstanceState

setMaxHeight 问题

我使用listview或recyclerview作为弹框后,我数据源很多,即列表很多,那弹框的高度怎么限制,我设置setMaxHeight 没效果,不然他就充满整个屏幕了,不好看,求解决,谢谢

BodyRecyclerView dividerHeight设置无效

private void createItemDecoration() {
if (mItemsParams.dividerHeight > 0 && !(mLayoutManager instanceof LayoutManager)) {
}
}
这个取非应该是大佬手误吧?
!(mLayoutManager instanceof LayoutManager)

app停止运行。

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.mylhyl.circledialog.params.CircleParams)
at android.os.Parcel.writeSerializable(Parcel.java:1279)
at android.os.Parcel.writeValue(Parcel.java:1233)
at android.os.Parcel.writeMapInternal(Parcel.java:591)
at android.os.Bundle.writeToParcel(Bundle.java:1627)
at android.os.Parcel.writeBundle(Parcel.java:605)
at android.support.v4.app.FragmentState.writeToParcel(Fragment.java:137)
at android.os.Parcel.writeTypedArray(Parcel.java:1102)
at android.support.v4.app.FragmentManagerState.writeToParcel(FragmentManager.java:385)
at android.os.Parcel.writeParcelable(Parcel.java:1254)
at android.os.Parcel.writeValue(Parcel.java:1173)
at android.os.Parcel.writeMapInternal(Parcel.java:591)
at android.os.Bundle.writeToParcel(Bundle.java:1627)
at android.os.Parcel.writeBundle(Parcel.java:605)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:2252)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3052)
at android.os.Handler.handleCallback(Handler.java:725)
at android.os.Handler.dispatchMessage(Handler.java:92)
circledialog at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5041)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.io.NotSerializableException: com.mylhyl.circledialog.AbsCircleDialog
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)

依赖问题

项目中没有使用AndroidX如何使用该库呢

jar 冲突

项目中 com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.40 导致了我冲突

NullPointerException

java.lang.NullPointerException:Attempt to invoke interface method 'android.view.View com.mylhyl.circledialog.view.listener.ItemsView.getView()' on a null object reference

出现了空指针异常,请问
@OverRide
public ItemsView buildItems() {
if (mItemsView == null) {
if (mParams.itemListener != null || mParams.itemsParams.adapter != null)
mItemsView = new BodyItemsView(mContext, mParams);
else if (mParams.rvItemListener != null || mParams.itemsParams.adapterRv != null)
mItemsView = new BodyItemsRvView(mContext, mParams);

        mRoot.addView(mItemsView.getView());
    }
    return mItemsView;
}

这个怎么会为空呢,是因为设备部兼容么

请问 多选或者单选 怎么设置下面多个按钮的

我按属性设置没有用 显示不出来
.setCancelable(false)
.setInputManualClose(true)

这两个设置了也没有用 是后面的冲突了嘛
new CircleDialog.Builder()
.configDialog(new ConfigDialog() {
@OverRide
public void onConfig(DialogParams params) {
params.backgroundColorPress = Color.GRAY;
}
})
.setTitle("选择特殊车辆类型[可不选择]")
.setItems(singleAdapter, new AdapterView.OnItemClickListener() {
@OverRide
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
singleAdapter.toggle(position, objects[position]);
}
})
.setGravity(Gravity.CENTER)//显示居中
.setItemsManualClose(true)
.setNegative("取消", null)
.setPositive("下一步", new View.OnClickListener() {
@OverRide
public void onClick(View v) {

                }
            })
            .show(getSupportFragmentManager());

V3.0.8版本自定义对话框的问题

V3.0.8版本使用setBodyView()方法自定义对话框内容时,Positive、Negative等按钮就不能显示了,Demo中的“自定义内容视图”例子也有此问题,V2版本正常。

对话框背景颜色设置无效

.configDialog(new ConfigDialog() {
@OverRide
public void onConfig(DialogParams params) {
params.backgroundColor = Color.BLACK;
}
})
.show();
设置di'alog背景无颜色无效

输入框高度

输入框的告诉设置高速 输入的东西完全看不到,并且怎么获取到输入的值

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.