`

一个典型的从下部弹上来的Dialog

阅读更多
典型的看图




import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import cn.tangdada.tangbang.R;

public class SimpleBottomDialog extends Dialog
{

    private Context context;

    public SimpleBottomDialog(Context context)
    {
        this(context, R.style.Theme_Dialog_From_Bottom);
        // TODO Auto-generated constructor stub
    }

    public SimpleBottomDialog(Context context, int theme)
    {
        super(context, theme);
        // TODO Auto-generated constructor stub
        this.context = context;
        init();
    }

    private void init()
    {
        this.setCanceledOnTouchOutside(true);
        this.setCancelable(true);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_simple_bottom);

        initViews();
        initValues();
    }

    private void initViews()
    {
        findViewById(R.id.btn_0).setOnClickListener(clickListener);
        findViewById(R.id.btn_1).setOnClickListener(clickListener);

    }

    private void initValues()
    {
        // 不能写在init()中
        Window window = getWindow();
        WindowManager.LayoutParams lp = window.getAttributes();
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        lp.width = dm.widthPixels;//让dialog的宽占满屏幕的宽
        lp.gravity = Gravity.BOTTOM;//出现在底部
        window.setAttributes(lp);

    }

    View.OnClickListener clickListener = new View.OnClickListener()
    {

        @Override
        public void onClick(View v)
        {
            // TODO Auto-generated method stub
            switch (v.getId())
            {
                case R.id.btn_0:
                    if (onOKClickListener != null)
                    {
                        onOKClickListener.onOKClick(v);
                    }
                    dismiss();
                    break;
                case R.id.btn_1:
                    dismiss();
                    break;

                default:
                    break;
            }
        }

    };

    private OnOKClickListener onOKClickListener;

    public interface OnOKClickListener
    {
        public void onOKClick(View v);
    }

    public void setOnOKClickListener(OnOKClickListener onOKClickListener)
    {
        this.onOKClickListener = onOKClickListener;
    }
}



布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:orientation="vertical"
    android:padding="@dimen/padding" >

    <Button
        android:id="@+id/btn_0"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/margin"
        android:background="@drawable/bg_btn_white_blue_with_corner"
        android:padding="@dimen/padding"
        android:text="@string/send" />

    <Button
        android:id="@+id/btn_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_btn_white_blue_with_corner"
        android:padding="@dimen/padding"
        android:text="@string/cancel" />

</LinearLayout>


样式:
<style name="Theme_Dialog_From_Bottom" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowAnimationStyle">@style/dialog_animation</item>
        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

    <style name="dialog_animation" parent="@android:style/Animation.Dialog">
        <item name="android:windowEnterAnimation">@anim/push_bottom_in</item>
        <item name="android:windowExitAnimation">@anim/push_bottom_out</item>
    </style>


两个动画文件:
push_bottom_in.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="400"
        android:fromYDelta="100%p"
        android:toYDelta="0" />

    <alpha
        android:duration="400"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />

</set>


push_bottom_out.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="400"
        android:fromYDelta="0"
        android:toYDelta="50%p" />

    <alpha
        android:duration="400"
        android:fromAlpha="1.0"
        android:toAlpha="0.0" />

</set>



http://blog.csdn.net/wangkeke1860/article/details/46488285
http://blog.csdn.net/wangkeke1860/article/details/46497307
  • 大小: 30.7 KB
分享到:
评论

相关推荐

    各种android弹出dialog效果以及各种dialog样式

    各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果以及各种dialog样式各种android弹出dialog效果...

    Android 底部弹出dialog+动画

    本文将详细讲解如何实现一个带有动画效果的底部弹出Dialog,并通过具体的代码实例进行演示。 首先,我们需要创建一个自定义的Dialog布局文件。这个布局通常包含一个根布局(如LinearLayout或ConstraintLayout),...

    android 全屏弹出dialog,底部弹入,底部弹出+弹出dialog输入法

    本文将详细介绍如何实现一个全屏弹出的Dialog,并且重点讨论如何实现底部弹入和底部弹出的效果,以及如何处理Dialog与输入法的交互。这个功能在很多应用场景中都非常有用,比如在登录、注册或者评论等场景,用户可能...

    VC++如何弹出对话框Dialog

    下面我们将详细介绍如何在VC++中创建并弹出一个对话框。 首先,我们需要理解对话框的工作原理。在MFC(Microsoft Foundation Classes)框架下,对话框通常是基于`CDialog`类的派生类。这个类提供了创建、显示和管理...

    弹出Dialog

    在Android开发中,"弹出Dialog"是一种常见的用户交互方式,用于向用户显示临时信息、进行选择操作或者请求用户确认。Dialogs不会占据整个屏幕,而是以一个小窗口的形式出现在当前活动(Activity)之上,通常用于中断...

    一个类实现Android弹出dialog,调用相册,相机截图功能

    在Android开发中,创建一个能够弹出Dialog并提供调用相册、相机以及截图功能的类是一项常见的需求。这样的功能可以极大地提升用户交互体验,让用户能够方便快捷地选择图片资源或者进行屏幕截图。以下我们将详细探讨...

    底部弹出dialog

    要创建一个底部弹出的Dialog,我们可以自定义一个DialogFragment。DialogFragment是Android提供的一个类,它是Fragment的子类,可以方便地在Activity中添加和管理Dialog。以下是一个基本的步骤来实现这个功能: 1. ...

    使用Dialog实现从页面顶部弹出类似搜索的对话框

    在标题“使用Dialog实现从页面顶部弹出类似搜索的对话框”中,我们要探讨的是如何创建一个从屏幕顶部滑出的对话框,模拟常见的搜索功能。这种效果在许多应用程序中都能看到,它提供了简洁且不中断用户体验的方式来...

    Android Studio Service安卓在服务中如何弹出Dialog

    然而,有时我们需要在服务中弹出一个Dialog来通知用户或获取用户输入。`Android Studio`作为官方推荐的集成开发环境,提供了一系列工具来支持这种需求。本文将详细介绍如何在`Service`中实现弹出Dialog的功能。 ...

    dialog 弹出窗和底部弹出窗的实现和动画效果

    在Android中,`Dialog`是基于`Window`的,通常表现为一个浮于当前Activity之上的小窗口。我们可以通过继承`AppCompatActivity`并重写`onCreateDialog()`方法来创建自定义`Dialog`,或者直接使用`AlertDialog.Builder...

    分享弹出Dialog

    在"分享弹出Dialog"的场景中,布局可能包括一个标题、一个分享内容的预览区以及一系列可选择的分享平台按钮。 2. **创建Dialog类**:在Java或Kotlin代码中,我们需要创建一个继承自`AlertDialog.Builder`或`...

    (仿照系统音量dialog)在广播中弹出系统级别dialog,并且dialog后边背景不变暗,并且可以获取焦点

    通过以上步骤,我们可以在广播中弹出一个系统级别的Dialog,其背景不会变暗,且能够获取焦点。需要注意的是,这样的功能可能会受到系统的严格限制,只有系统应用或被用户授予相应权限的应用才能实现。因此,在实际...

    android底部弹出Dialog

    在Android应用开发中,"底部弹出Dialog"是一种常见的用户交互设计,用于在屏幕底部显示半透明或全屏的对话框,通常用于展示菜单、选项或者提示信息。本示例着重于实现一个适应不同分辨率手机的底部Dialog,并且提供...

    swift-PopupDialog采用Swif编写的一个简单可定制的iOS弹出对话框.

    总结来说,PopupDialog是Swift开发中的一个实用工具,为iOS应用提供了丰富的弹出对话框解决方案,有助于提高UI设计的灵活性和用户体验。通过掌握PopupDialog的使用,开发者可以在不牺牲功能性和美观性的前提下,快速...

    使用Dialog实现从底部弹出类似分享的对话框

    在本示例中,我们将探讨如何利用Dialog来创建一个从底部弹出的分享对话框,这个对话框通常用于让用户选择不同的分享渠道,如微信、QQ等。 首先,我们需要了解Dialog的基本用法。在Android中,Dialog是基于对话框...

    Dialog 弹出提示窗 js

    首先," Dialog.js "是这个功能的核心脚本文件,它包含了一系列的函数和方法,用于创建、显示和管理Dialog弹出层。这些函数可能包括初始化弹出层,设置内容,调整尺寸,控制透明度,以及处理用户的交互事件,如点击...

    jQuery Dialog 弹出层对话框插件(可加载url地址)

    jQuery Dialog是jQuery UI库中的一个组件,它提供了一种优雅的方式在网页上创建交互式的弹出层对话框。这个插件不仅允许用户展示信息,还可以加载外部URL内容,极大地增强了网页的交互性和用户体验。在本文中,我们...

    jquery dialog弹出层

    而jQuery UI则是在jQuery基础上扩展的一套交互式用户界面组件库,其中包括一个强大的对话框(Dialog)功能,即“jQuery dialog弹出层”。这个弹出层在网页应用中广泛用于创建模态或非模态警告、提示、确认或者更复杂...

    dialog动画从下面弹出来

    "从下面弹出来"的Dialog动画是Android UI设计中一种吸引用户的交互方式,常用于分享功能,给用户带来更加生动和自然的体验。这种动画效果增加了应用的视觉吸引力,使得用户在进行分享操作时感觉更加流畅。 首先,...

    自定义Dialog以动画方式从底部弹出

    通过dialog解析自定义的布局文件,点击触发后以动画方式从底部弹出,类似点击分享底部弹出微信,qq等内容

Global site tag (gtag.js) - Google Analytics