Android開發(fā)小技巧——用Activity打造Dialog

前言

對話框是個(gè)好東西,創(chuàng)建簡單有實(shí)用。當(dāng)下的開發(fā)中,很多的開發(fā)者反而更喜歡使用activity來代替對話框,至少筆者的團(tuán)隊(duì)中,類似于升級提示或者指示頁及其他一些交互的地方,大量的把Dialog替換成activity,好處是顯而易見的,activity具有更靈活的操作和布局,另外很重要一點(diǎn)是,一些容易涉及內(nèi)存泄漏的代碼放在activity中執(zhí)行比放在Dialog中執(zhí)行要好的多,當(dāng)然這是筆者自己的觀點(diǎn),文中有不對的地方,歡迎大家提出指正,好讓筆者及時(shí)改正,共同學(xué)習(xí)。

step1

這個(gè)對話框常常能在一些APP中遇到,首先是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="300dp"
    android:layout_height="400dp"
    android:layout_gravity="center"
    android:background="@drawable/popup_bg"
    android:orientation="vertical"
    tools:context="com.yankee.september_2.MainActivity">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btn_update"
        android:layout_marginBottom="24dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:orientation="vertical">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Version"
            android:textColor="#53BAF8"
            android:textSize="14sp" />
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="12dp">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Nowadays, when it comes to the issues of robots, individuals’ opinions vary from person to person。 Some people believe that robots will enlighten our life, while other are worried about that they will ruin the whole world。 As I see, the increasing number of robots has the power to alter everything in the coming future entirely。"
                android:textColor="#404040"
                android:textSize="12sp" />
        </ScrollView>
    </LinearLayout>
    <Button
        android:id="@+id/btn_update"
        android:layout_width="130dp"
        android:layout_height="32dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="16dp"
        android:background="@color/colorAccent"
        android:gravity="center"
        android:text="Update now"
        android:textColor="#FFFFFF"
        android:textSize="14sp" />
</RelativeLayout>

布局代碼中需要注意的是,這個(gè)布局的大小是寫死的,因?yàn)閺拇a中可以看出,對話框的鏤空效果其實(shí)是一張背景圖產(chǎn)生的,辛苦美術(shù)但是爽了程序員。

step2

接著就是在manifest文件的操作了,把對應(yīng)的activity的theme設(shè)置為自定義的主題即可,背景設(shè)為透明,去掉標(biāo)題,注意,這個(gè)主題繼承自對話框的主題。
manifest:

<activity
    android:name=".MainActivity"
    android:screenOrientation="portrait"
    android:theme="@style/TipDialog">
</activity>

styles.xml:

<style name="TipDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

最后就沒有最后了,還有一點(diǎn),就是讓當(dāng)前這個(gè)activity繼承自Activity,而不是AppCompatActivity,否則會(huì)報(bào)主題的錯(cuò)誤。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,268評論 25 708
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 6,523評論 0 17
  • Day1: 在代碼中通過R.string.hello_world可以獲得該字符串的引用; 在XML中通過@stri...
    冰凝雪國閱讀 1,451評論 0 5
  • 我是一個(gè)不迷信的人,對相面看風(fēng)水之類的事情,總是不屑一顧。那些玄之又玄東西,讓人不可捉摸,把命運(yùn)交給這些東西是極不...
    b7a019f3cbb9閱讀 1,003評論 3 5
  • 幾天前,一個(gè)朋友問我,來部隊(duì)幾年了,后悔過嗎?這突如其來的問題猶如當(dāng)頭一棒,仿佛使我這堪比漿糊的腦漿瞬間緊張起來,...
    Eva小姐姐閱讀 381評論 15 9