android自定义华为弹框简书,FlycoDialog 简单实用的自定义Android弹窗对话框之PopupWindow篇...

效果图镇楼

cb6a20a6b0f2

PopupWindow

在很久很久以前五万曾经带给大家过一篇

FlycoDialog 简单实用的自定义Android弹窗对话框之Dialog篇

现在为大家续写一下它的姊妹篇,Dialog的小兄弟PopupWindow.

同样,是基于非常棒的弹窗框架FlycoDialog实现的。

首先我们当然还是要添加依赖

compile 'com.flyco.dialog:FlycoDialog_Lib:1.3.2@aar'

接下来我们还是先写好一个弹窗的布局,我们这里就以排序的弹窗布局为例。(上图效果中的排序)

android:orientation="vertical"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="#ffffff"

android:paddingLeft="15dp"

android:paddingRight="15dp">

android:id="@+id/pop_item_1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="15dp"

android:text="利率从高到低"

android:textColor="#666666"

android:textSize="15sp"/>

android:id="@+id/pop_item_2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="15dp"

android:text="利率从低到高"

android:textColor="#666666"

android:textSize="15sp"/>

...

这里我把一点用都没有的分割线去掉了,你们要是看着不习惯就自己加上。

接下来我们写关于弹窗的逻辑代码,建议像我一样写成内部类,有利于数据传输和代码的逻辑控制。如果不愿意写成内部类在class前加public就好,在弹框中使用接口回调控制主页相关逻辑。

class SortPopup extends BasePopup implements View.OnClickListener {

private TextView item1;

private TextView item2;

...

public SortPopup(Context context) {

super(context);

}

@Override

public View onCreatePopupView() {

View inflate = View.inflate(mContext, R.layout.popup_sort, null);

//在这里我们对弹窗中的控件进行初始化

item1 = (TextView) inflate.findViewById(R.id.pop_item_1);

item2 = (TextView) inflate.findViewById(R.id.pop_item_2);

...

return inflate;

}

@Override

public void setUiBeforShow() {

//为他们设置监听

item1.setOnClickListener(this);

item2.setOnClickListener(this);

...

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.pop_item_1:

//触发第一个控件的监听要处理的内容(效果图中利率从高到低的那个按钮)。

dismiss();//关闭弹框

break;

case R.id.pop_item_2:

//触发第二个控件的监听要处理的内容。

dismiss();

break;

...

default:

break;

}

}

}

然后我们来实现启动弹框的代码

sortPopup.alignCenter(true)

.anchorView(sort_tv)//弹框从哪个控件里弹出,(这里的sort_tv是效果图中显示排序的TextView)

.gravity(Gravity.BOTTOM)//弹框从控件的哪里弹出。这里设置的是底部

.showAnim(new SlideTopEnter())//选择弹出动画

.dismissAnim(new SlideTopExit())//选择消失动画

.offset(0, 0)//设置弹窗的偏移量,这个你们不用管。

.dimEnabled(false)//弹窗是否具有强制性(点其他位置会不会消失,false是无强制性,会消失)

.show();//展示弹窗

如果还有什么不明白的地方可在博客下留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
带有各种动画效果的弹出对话框控件。你也可以自定义样式及弹出动画。效果非常棒,且使用简单。项目地址:https://github.com/H07000223/FlycoDialog_Master 效果图:        依赖的库文件:   FlycoAnimation_Lib   FlycoDialog_Lib   nineoldandroids这三个库文件都可以使用jar包:FlycoAnimation_Lib-v1.0.0.jarFlycoDialog_Lib-v1.0.0.jarnineoldandroids-2.4.0.jar  但是目前生成的jar包与源文件不一致,建议还是想我demo中那样使用源文件或者你自己生成jar包如何使用一个最简单的使用:final NormalDialog dialog = new NormalDialog(context);//创建对话框实例 dialog.content("是否确定退出程序?")//设置对话框内容                 .showAnim(bas_in)//设置弹出动画                 .dismissAnim(bas_out)//设置关闭动画                 .show(); dialog.setOnBtnClickL(//设置按钮监听                 new OnBtnClickL() {                     @Override                     public void onBtnClick() {                         T.showShort(context, "left");                         dialog.dismiss();                     }                 },                 new OnBtnClickL() {                     @Override                     public void onBtnClick() {                         T.showShort(context, "right");                         dialog.dismiss();                     }                 });

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值