Android 开发 底部对话框,Android开发(30) 制作从底部向上出现的对话框

需求

实现一个对话框,它出现时,从底部向上逐渐移动出现,关闭时,逐渐向下移除屏幕:

1.点击 显示 按钮时,一个dialog对话框从底部慢慢向上弹出。

2.关闭dialog时, dialog缓慢的移动向底部消失。很平滑的效果。

dd39ca99b2fa

dd39ca99b2fa

实现方式:

先制作一个style 资源文件,创建 mystyle

@anim/dialog_enter

@anim/dialog_exit

在这个mystyle中使用了两个动画,如下:

进入时的动画 dialog_enter.xml

android:duration="600"

android:fromYDelta="100%p" />

离开时的动画 dialog_exit.xml

android:duration="600"

android:toYDelta="100%p" />

在activity中,指定对话框的 window的 setWindowAnimations,指定一个动画

public class MainActivity extends Activity {

Button button1;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

button1 = (Button)findViewById(R.id.button1);

button1.setOnClickListener(mOnClickListener);

}

OnClickListener mOnClickListener = new View.OnClickListener(){

@Override

public void onClick(View v) {

//TODO Auto-generated method stub

AlertDialog dialog = new AlertDialog.Builder(MainActivity.this)

.setTitle("title").setMessage("message").create();

Window window = dialog.getWindow();

window.setGravity(Gravity.BOTTOM); //此处可以设置dialog显示的位置

window.setWindowAnimations(R.style.mystyle); //添加动画

dialog.show();

}

};

}

代码解释:

为 dialog 所在的windows 设置了一个 动画样式 style

该style 指定了 窗体(windows)进入的动画(dialog_enter) 和离开的动画 (dialog_exit)

在进入时的动画dialog_enter 中,写了一个 translate 的变化,指定从 其父容器的 100% 位置开始。 其父容器的 100% 位置 是 屏幕以外的位置,是看不到,这是一个开始点。没有指定结束点,结束点就默认 本身应该显示的位置(即将显示的位置)。

同理,dialog_exit定义了离开时动画。该动画未指定开始位置,指定了结束位置是 其父容器的 100% 位置 ,这样就慢慢的向下消失在屏幕以外。

android:toYDelta="100%p" 中的 100% 指示了 其父容器的 100% 位置

而如果写成

android:toYDelta="100%",即是指示了 起自身的 100% 位置。

参考:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值