Android --半透明效果懸浮框及activity(可做遮罩層蛔外,向?qū)ы?yè))

  • 下面是style的一些屬性及其解釋
<style name="dialog_translucent" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item><!-- 邊框 -->
        <item name="android:windowIsFloating">true</item><!-- 是否懸浮在activity上 -->
        <item name="android:windowIsTranslucent">false</item><!-- 半透明 -->
        <item name="android:windowNoTitle">true</item><!-- 無(wú)標(biāo)題 -->
        <item name="android:windowBackground">@android:color/transparent</item><!-- 背景透明 -->
        <item name="android:backgroundDimEnabled">false</item><!-- 模糊 -->
        <item name="android:backgroundDimAmount">0.6</item><!-- 灰度 -->
        <item name="android:windowContentOverlay">@null</item><!-- 對(duì)話框是否有遮蓋 -->
        <item name="android:windowAnimationStyle">@style/dialog_animation</item><!-- 彈出或者進(jìn)入時(shí)的動(dòng)畫效果 -->
        <item name="android:colorBackgroundCacheHint">@null</item><!-- 背景緩存顏色 -->
        
    </style>
  • 自定義對(duì)話框效果如下


    image.png

步驟

  • styles.xml
<style name="popupDialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowBackground">@drawable/filled_box</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:backgroundDimAmount">0.6</item>
        <item name="android:windowAnimationStyle">@style/dialog_animation</item>
    </style>
  • filled_box.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#9000"/>
    <stroke android:width="3dp" color="#ffff8080"/>
    <corners android:radius="30dp"/>
    <padding 
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp"/>
</shape>
  • dialog_animation.xml
<style name="dialog_animation">
        <item name="android:windowEnterAnimation">@anim/fading_in</item>
        <item name="android:windowExitAnimation">@anim/fading_out</item>
    </style>
  • 在anim目錄下創(chuàng)建fading_in.xml,進(jìn)入時(shí)候的淡入效果
<?xml version="1.0" encoding="utf-8"?>
<set 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha 
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="1.0"
        />
</set>
  • fading_out.xml淡出效果
<?xml version="1.0" encoding="utf-8"?>
<set 
    xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha 
        android:duration="500"
        android:fromAlpha="1.0"
        android:toAlpha="0.1"
        />
</set>
  • showVerify方法滔岳,效果如上面圖所示
private void verifyDialog(String msg)
        {
            final Dialog dialog = new Dialog(MainActivity.this, R.style.popupDialog);
            dialog.setContentView(R.layout.verify_dialog);
            dialog.setCanceledOnTouchOutside(false);
            dialog.setCancelable(false);
            TextView message = (TextView)dialog.getWindow().findViewById(R.id.messageTxt);
            Button okBtn = (Button)dialog.getWindow().findViewById(R.id.dismissBtn);
            message.setText(msg);
            okBtn.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    if(dialog!=null && dialog.isShowing())
                    {
                        dialog.dismiss();
                    }
                }
            });
            if(dialog!=null && !dialog.isShowing())
            {
                dialog.show();
            }
        }

如果是想把整個(gè)activity做成類似于微博的new feature透明背景樣式驻仅,如圖

image.png
  • 上面的圖是透明背景,透明顏色可以自己定義
  • styles.xml
 <style name="activity_translucent">
        <item name="android:windowBackground">@drawable/filled_activity_bg</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@style/dialog_animation</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:backgroundDimAmount">0.6</item><!-- 灰度 -->
    </style>
  • 如果想設(shè)置的不是純透明摆舟,改成灰色透明度的亥曹,可以設(shè)置windowBackground背景,下面是filled_activity_bg.xml盏檐,這樣就是灰色的透明背景歇式,類似于第一張圖片
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="#9000"/>
    <stroke color="#ffff8080"/>
</shape>

如果不做任何灰度處理,效果如上圖胡野,可以設(shè)置背景色為透明

 <style name="activity_translucent">
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowAnimationStyle">@style/dialog_animation</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
    </style>
  • 顯示activity,代碼如下痕鳍×蚨梗可以通過類似的原理制作遮罩層,其他的半透明能效果笼呆,例如popup菜單半透明效果等
Dialog dialog = new Dialog(MainActivity.this, R.style.activity_translucent);
                dialog.setContentView(R.layout.transparent_layout);
                dialog.show();

@希望對(duì)大家有所幫助熊响!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市诗赌,隨后出現(xiàn)的幾起案子汗茄,更是在濱河造成了極大的恐慌,老刑警劉巖铭若,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洪碳,死亡現(xiàn)場(chǎng)離奇詭異递览,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瞳腌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門绞铃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嫂侍,你說我怎么就攤上這事儿捧。” “怎么了挑宠?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵菲盾,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我各淀,道長(zhǎng)懒鉴,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任揪阿,我火速辦了婚禮疗我,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘南捂。我一直安慰自己吴裤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布溺健。 她就那樣靜靜地躺著麦牺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪鞭缭。 梳的紋絲不亂的頭發(fā)上剖膳,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音岭辣,去河邊找鬼吱晒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛沦童,可吹牛的內(nèi)容都是我干的仑濒。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼偷遗,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼墩瞳!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起氏豌,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喉酌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泪电,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡般妙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歪架。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片股冗。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖和蚪,靈堂內(nèi)的尸體忽然破棺而出止状,到底是詐尸還是另有隱情,我是刑警寧澤攒霹,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布怯疤,位于F島的核電站,受9級(jí)特大地震影響催束,放射性物質(zhì)發(fā)生泄漏集峦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一抠刺、第九天 我趴在偏房一處隱蔽的房頂上張望塔淤。 院中可真熱鬧,春花似錦速妖、人聲如沸高蜂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)备恤。三九已至,卻和暖如春锦秒,著一層夾襖步出監(jiān)牢的瞬間露泊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工旅择, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留惭笑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓生真,卻偏偏與公主長(zhǎng)得像脖咐,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汇歹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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