XanderPanel -- 一个好用的 Dialog 拓展

XanderPanel

平时工作需要,加上自己的业余时间做了这么一个控件。

priview

  • 普通模式

就像 AlertDialog , 只不过宽度是全屏,并且对进入和退出动画做了优化,使用方法参考下面代码

XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext);
mBuilder.setTitle("Title")
    .setIcon(R.mipmap.ic_launcher)
    .setMessage("I am Message!!!")
    .setGravity(Gravity.TOP)
    .setController("Cancel", "Ok", new PanelInterface.PanelControllerListener() {
        @Override
        public void onPanelNagetiiveClick(XanderPanel panel) {
            toast("onPanelNagetiiveClick");
        }

        @Override
        public void onPanelPositiveClick(XanderPanel panel) {
            toast("onPanelPositiveClick");
        }
    })
    .setCanceledOnTouchOutside(true);
xanderPanel.show();
  • Sheet 模式

仿照 iOS 上的 ActionSheet 做的,

XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext);
mBuilder.setSheet(
    new String[]{"I", "am", "sheet", "item"},
    true,
    new PanelInterface.SheetListener() {
        @Override
        public void onSheetItemClick(int position) {
            toast("click sheet item " + position);
        }

        @Override
        public void onSheetCancelClick() {
            toast("sheet cancel");
        }
    }
);
xanderPanel.show();
  • Menu 模式

添加对 menu.xml 文件的支持, menuitem 的宽度时全屏的,现在很多 app 都是这样子的设计了。
同时还可以设置排列的样式 list 和 grid

XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext);
mBuilder.list()
.setMenu(R.menu.main_menu, new PanelInterface.PanelMenuListener() {
    @Override
    public void onMenuClick(MenuItem menuItem) {
        toast("click MenuItem " + menuItem.getTitle());
    }
})
.setGravity(Gravity.BOTTOM)
.setCanceledOnTouchOutside(true);
xanderPanel.show();
  • 自定义布局

同样支持自定义布局,自定义布局代码可参考如下代码

XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext);
mBuilder.setCanceledOnTouchOutside(true);
mBuilder.setGravity(Gravity.BOTTOM);
View mCustomViewBottom = mInflater.inflate(R.layout.custom_layout, null);
mBuilder.setView(mCustomViewBottom);
xanderPanel.show();
  • 分享模式

项目里面有时候需要分享,顺便就加进来了,同样支持 list 和 grid 样式排列

XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext);
mBuilder.grid(2,3)
.shareText("test share")
.setGravity(Gravity.BOTTOM)
.setCanceledOnTouchOutside(true);
xanderPanel.show();

如何使用

发布到了 Jcenter , 如果你是用 Android studio 开发的话,会比较方便,在模块 build.gradle 下添加

gradle

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.xandy.panel:xanderpanel:1.3'
}

maven

<dependency>
  <groupId>com.xander.panel</groupId>
  <artifactId>xanderpanel</artifactId>
  <version>1.3</version>
  <type>pom</type>
</dependency>
平时工作需要,加上自己的业余时间做了这么一个控件。普通模式就像 AlertDialog , 只不过宽度是全屏,并且对进入和退出动画做了优化,使用方法参考下面代码XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext); mBuilder.setTitle("Title")     .setIcon(R.mipmap.ic_launcher)     .setMessage("I am Message!!!")     .setGravity(Gravity.TOP)     .setController("Cancel", "Ok", new PanelInterface.PanelControllerListener() {         @Override         public void onPanelNagetiiveClick(XanderPanel panel) {             toast("onPanelNagetiiveClick");         }         @Override         public void onPanelPositiveClick(XanderPanel panel) {             toast("onPanelPositiveClick");         }     })     .setCanceledOnTouchOutside(true); XanderPanel xanderPanel = mBuilder.create(); xanderPanel.show();Sheet 模式仿照 iOS 上的 ActionSheet 做的,XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext); mBuilder.setSheet(     new String[]{"I", "am", "sheet", "item"},     true,     new PanelInterface.SheetListener() {         @Override         public void onSheetItemClick(int position) {             toast("click sheet item "   position);         }         @Override         public void onSheetCancelClick() {             toast("sheet cancel");         }     } ); XanderPanel xanderPanel = mBuilder.create(); xanderPanel.show();Menu 模式添加对 menu.xml 文件的支持, menuitem 的宽度时全屏的,现在很多 app 都是这样子的设计了。 同时还可以设置排列的样式 list 和 gridXanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext); mBuilder.list() .setMenu(R.menu.main_menu, new PanelInterface.PanelMenuListener() {     @Override     public void onMenuClick(MenuItem menuItem) {         toast("click MenuItem "   menuItem.getTitle());     } }) .setGravity(Gravity.BOTTOM) .setCanceledOnTouchOutside(true); XanderPanel xanderPanel = mBuilder.create(); xanderPanel.show();自定义布局同样支持自定义布局,自定义布局代码可参考如下代码XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext); mBuilder.setCanceledOnTouchOutside(true); mBuilder.setGravity(Gravity.BOTTOM); View mCustomViewBottom = mInflater.inflate(R.layout.custom_layout, null); mBuilder.setView(mCustomViewBottom); XanderPanel xanderPanel = mBuilder.create(); xanderPanel.show();分享模式项目里面有时候需要分享,顺便就加进来了,同样支持 list 和 grid 样式排列XanderPanel.Builder mBuilder = new XanderPanel.Builder(mContext); mBuilder.grid(2,3) .shareText("test share") .setGravity(Gravity.BOTTOM) .setCanceledOnTouchOutside(true); XanderPanel xanderPanel = mBuilder.create(); xanderPanel.show();如何使用发布到了 Jcenter , 如果你是用 Android studio 开发的话,会比较方便,在模块 build.gradle 下添加gradledependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     compile 'com.xandy.panel:xanderpanel:1.3' }maven<dependency>   <groupId>com.xander.panel</groupId>   <artifactId>xanderpanel</artifactId>   <version>1.3</version>   <type>pom</type> </dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值