zoukankan      html  css  js  c++  java
  • Android使用Activity用作弹出式对话框

    转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/23116115

    Android中可用于实现对话框的有Dialog,PopupWindow,Activity。

    下面简单介绍下,Dialog比较方便,但是显示位置比较固定,有时不能满足我们的需求。

    例子:(消除了背景)

    <resources>
        <style name="dialog" parent="@android:style/Theme.Dialog">
             <item name="android:windowFrame">@null</item>
            <item name="android:windowIsFloating">true</item>
            <item name="android:windowIsTranslucent">false</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:background">@android:color/black</item>
            <item name="android:windowBackground">@null</item>
            <item name="android:backgroundDimEnabled">false</item>
        </style>
    </resources>
     Dialog dialog = new Dialog(SetActivity.this, R.style.dialog);
                        dialog.setContentView(R.layout.test);
                        dialog.show();

    PopupWindow可以通过showAtLocation设置显示位置,也可以通过ShowAsDropDown显示在某个View的相对位置,基本能满足我们的需求了。

    下面介绍使用Activity作为弹出对话框,个人觉得好处有以下:

            1、显示位置的设置,直接就是一个layout.xml随心所遇的感觉,可以实现在任何位置。

            2、对对话框内控件的事件的处理,都独立出来在一个类中,调用的地方仅需要startActivity()就可以,这样可以使代码结构上更加清晰。

    下面我们实现这个一个例子:

    1、Activity的布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        >
    
        <LinearLayout
            android:onClick="tip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:layout_marginTop="46dp"
            android:background="@drawable/title_function_bg"
            android:orientation="vertical" >
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:drawableLeft="@drawable/mm_title_btn_compose_normal"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="发起聊天"
                android:textColor="#fff"
                android:textSize="20sp" />
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:drawableLeft="@drawable/mm_title_btn_keyboard_normal"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="登录网页版"
                android:textColor="#fff"
                android:textSize="20sp" />
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="10dp"
                android:drawableLeft="@drawable/mm_title_btn_qrcode_normal"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="扫一扫"
                android:textColor="#fff"
                android:textSize="20sp" />
    
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="10dp"
                android:layout_marginTop="10dp"
                android:drawableLeft="@drawable/mm_title_btn_receiver_normal"
                android:paddingLeft="10dp"
                android:paddingRight="10dp"
                android:text="听筒模式"
                android:textColor="#fff"
                android:textSize="20sp" />
        </LinearLayout>
    
    </RelativeLayout>

    2、在style.xml中定义一个theme(背景透明,无标题,动画效果),一般Activity默认动画效果右进右出,我们可以覆盖。

       <style name="MyDialogTopRight">
            <item name="android:windowBackground">@android:color/transparent</item>
            <item name="android:windowIsTranslucent">true</item>
            <item name="android:windowNoTitle">true</item>
            <item name="android:windowAnimationStyle">@style/Anim_scale</item>
        </style>
    动画效果:

        <style name="Anim_scale" parent="@android:style/Animation.Activity">
            <item name="android:activityOpenEnterAnimation">@anim/scale_in</item>
            <item name="android:activityOpenExitAnimation">@anim/scale_out</item>
             <item name="android:activityCloseEnterAnimation">@anim/scale_in</item>
            <item name="android:activityCloseExitAnimation">@anim/scale_out</item>
        </style>

    3、在需要使用的地方直接startActity()就可以了

    Intent intent = new Intent(context, MainWeixinTitleRightActivity.class);
    		startActivity(intent);


    最终效果:




    源码下载,点击这里

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    jchdl
    jchdl
    UVa 10256 (判断两个凸包相离) The Great Divide
    UVa 11168 (凸包+点到直线距离) Airport
    LA 2572 (求可见圆盘的数量) Kanazawa
    UVa 10652 (简单凸包) Board Wrapping
    UVa 12304 (6个二维几何问题合集) 2D Geometry 110 in 1!
    UVa 10674 (求两圆公切线) Tangents
    UVa 11796 Dog Distance
    LA 3263 (平面图的欧拉定理) That Nice Euler Circuit
  • 原文地址:https://www.cnblogs.com/dingxiaoyue/p/4924999.html
Copyright © 2011-2022 走看看