Android使用Activity用作彈出式對話框

jopen 10年前發布 | 56K 次閱讀 Android Android開發 移動開發

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>  
</div> </div>

</div> </div>

    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()就可以,這樣可以使代碼結構上更加清晰。

下面我們實現這個一個例子:

Android使用Activity用作彈出式對話框

1、Activity的布局文件

</div> </div>

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns: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>  </pre><br />

2、在style.xml中定義一個theme(背景透明,無標題,動畫效果),一般Activity默認動畫效果右進右出,我們可以覆蓋。

</div> </div> 動畫效果:

</div> </div>

    <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()就可以了

</div> </div>

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

最終效果:

Android使用Activity用作彈出式對話框

來自:http://blog.csdn.net/lmj623565791/article/details/23116115

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!