1. 程式人生 > >Android DialogFragment彈出動畫的一點小坑

Android DialogFragment彈出動畫的一點小坑

DialogFragment我相信還是有不少人去使用,但是有一種場景用的人不一定很多。

    就是假設基於MainActivity從下往上滑出一個DialogFragment,在我們與DialogFragment互動去另一個(假設是OtherActivity)介面的時候,此時從OtherActivity返回到MainActivity,會再執行一次滑出DialogFragment的行為,這顯然不是我們想要的互動。

    第一反應就是看原始碼,找來找去終於找到了,原來在DialogFragment的onStart和onStop中,分別呼叫了dialog.show 和dialog.dismiss方法,這就是根源所在。

@Override
    public void onStart() {
        super.onStart();

        if (mDialog != null) {
            mViewDestroyed = false;
            mDialog.show();
        }
    }

    找到了原始碼,那麼就想修改方法,第一個就是想到了如果是返回的時候onStart彈出之前修改DialogFrgament的Style,讓它不再是滑動出現。試了試發現還是不行,再看原始碼。

@NonNull
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return new Dialog(getActivity(), getTheme());
    }

    原來這個Theme只有在建立dialog被用到一次,後面即使修改也不會再被用到,所以這個方法不行。

    既然如此,那該怎麼辦呢。這裡我是使用Dialog風格的Activity來實現的,

<style name="AnimationActivity" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/slide_in_from_bottom</item>
        <item name="android:activityOpenExitAnimation">@null</item>
        <item name="android:activityCloseEnterAnimation">@null</item>
        <item name="android:activityCloseExitAnimation">@anim/slide_out_to_bottom</item>
    </style>

    返回介面以及從Dialog進入別的介面都不執行任何動畫。

    最近測試發現消失的時候不執行這個動畫,而且不同rom消失方式不同,比如華為是右出,錘子是直接消失,發現activityCloseExitAnimation似乎沒起作用,因此重寫finish()方法,再補充一個設定。

 @Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.slide_in_from_bottom,R.anim.slide_out_to_bottom);
    }

相關推薦

Android DialogFragment動畫一點

DialogFragment我相信還是有不少人去使用,但是有一種場景用的人不一定很多。    就是假設基於MainActivity從下往上滑出一個DialogFragment,在我們與DialogFragment互動去另一個(假設是OtherActivity)介面的時候,此時

android dialogfragment問題跳轉微信支付返回時重新執行及閃屏問題

一個activity裡面彈出dialogfragment彈窗輸入金額跳轉微信支付,當返回的時候看到彈出重新彈出,還閃屏了,加上如果有請求dialog圈圈,這尼瑪看起來有點頭痛,測試的人都說眼睛都閃瞎,哎逼到沒法只有去看看怎麼解決,我先看了一下小米商城,因為上面支付的方式很多,隨便找了一個訂單去支

Android中使用廣播接收者來對話方塊的

琢磨了老半天,試了一下網上說的一種方法,我發現不行,這種方法是這樣的: 1.首先註冊靜態廣播 2.在清單中新增許可權 <uses-permission android:name="android

程式 動畫(分享類)

點選分享彈出一個動畫 出現分享型別 wxml: <view> <view animation="{{animationData}}" class="buydes-dialo

Android輸入法時覆蓋輸入框問題

express anti 參考 inpu contex 針對 screen .org apply 本文來自網易雲社區 作者:孫有軍 當一個activity中含有輸入框時,我們點擊輸入框,會彈出輸入法界面,整個界面的變化效果與manifest中對應設置的android

Android EditText軟鍵盤實現頁面標題頭不動,軟鍵盤在編輯框下面

為了實現EditText編輯的時候彈出軟鍵盤標題頭不動,底部編輯框上移,想了好多種方法,也百度,問同事每種辦法都有問題,在這總結一下,希望能幫助到大家。 上圖看下效果: 可以看到彈出鍵盤的時候,只有EditText在軟鍵盤上面,還有一個藍色點,這個隨後再說。 用Relative

Swift.類微博動畫

實現效果: view彈出時:背景漸變展示,有毛玻璃效果.view內部的button依次從上方彈到指定frame. view消失時:背景漸變消失,view內部button依次向上方彈出. 總結實現方式: 1.彈出一個view,首先增加他的漸變效果. 2.新增毛玻璃效果

WPF製作子窗體的動畫效果

建立一個WPF應用程式WpfApplication1,新建個窗體DialogWin <Window x:Class="WpfApplication1.DialogWin" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/

tar命令的 --exclude引數的一點

今天構建一個專案後,發現一些 js、css 檔案不見了( xxx/xxx/dist/xxx.js ), 於是懷疑構建語句中 tar 打包語句的 --exclude=dist 引數有問題: [email protected]:/data/logs$ tar zcvf dist/a.tar

Android --右上角選單

效果: 兩個佈局檔案: 1.main.xml:主要放一個Button,點選彈出選單 2.menu.xml:就是彈出顯示的選單的佈局 MainActivity.java: 點選Button,彈出PopupWindow public class MainActivity ext

Android評論窗根據輸入法自適應高度

需求分析:當我們點選輸入框時,會調出輸入法軟鍵盤,如果不做處理,PopupWindow評論視窗可能會擠到螢幕最上方,更糟糕的事件是看不到我們的輸入框,連自己輸入什麼內容都看不到,這樣使用者體驗非常差!下面先讓大家看我們做出來的效果圖: 上圖可以看出,輸入法彈出和隱藏,對

Android 底部選擇選單ActionSheet

對於各式各樣的選擇選單彈框可以使用很多中方式來實現,下面我們來看看ActionSheet是如何實現的: 一.第三方ActionSheet實現方法: compile 'com.baoyz.actionsheet:library:1.1.4' 1.新增以上依賴,實現下面

android 底部提示框的實現方式

1.android實現底部彈框的兩種實現方式: (1) 使用系統自帶對話方塊AlertDialog 實現 (2)自定義對話方塊實現  1.1使用系統自帶對話方塊AlertDialog 實現 public class MainActivity extends AppCo

【MySQL】建立儲存過程的一點

背景 今天學習到了MySQL儲存過程的建立和使用,遇到了一點小坑 命令列小坑 一開始我使用的是命令列建立儲存過程(該儲存過程為返回資料表中最大年齡的使用者id) 程式碼如下 DELIMITER // CREATE PROCEDURE Largest_Age ( OUT Large

如何改變Android Dialog後的Activity背景亮度

第一次寫部落格,大笑 其實,這也不是原創,只是想把我所遇到的問題記錄下來. 第一種方法 是在樣式檔案styles.xml中新增新的樣式,父樣式指向的是預設的Dialog樣式,修改如下,然後你的D

android popupwindow後背景變暗

private void dimBackground(final float from, final float to) { final Window window = getWindow(); ValueAnimator valueAnim

RecyclerView Item中用ViewPager的一點

    使用ViewPager作為RecyclerView的head來當廣告是經常使用的了,這麼頻繁的設計我以為應該坑都被踩遍了,那天自測發現居然還有坑。    需求是在列表的第一項需要有一個輪詢的廣告,每隔多久就自動切換一下。  我第一反應當然是新增OnPageChange

Android開發—列表、單選、多選框

效果圖如下: 需要建一個menu xml佈局如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/r

阿里雲伺服器的一點---埠不通問題,還是防火牆的鍋

https://www.cnblogs.com/grey-wolf/p/8961581.html 一、問題概述 最近在組長支援下,一直在折騰jenkins,也推廣到了兩三個組。期間也加了jenkins相關的qq群,群裡的一個哥們問題很奇怪: centos 7.4 64位,使用瞭如下連結所示的yum安裝方

Android輸入法時把佈局頂上去和登入按鈕頂上去的解決方法

背景:在寫登入介面時,老闆就覺得在輸入密碼的時候談出來的輸入法軟鍵盤把登入按鈕遮擋住了(入下圖所示,不爽),連輸入框都被擋了一半,於是不滿意了,要叫我改,於是我看QQ的登入效果,我就去研究了一下,彈出輸入法整個佈局上來了,終於讓老闆滿意了。 (如上圖這樣,老闆不滿意的,