登入頁Activity從下向上的彈出效果實現

weixin_34365417發表於2018-07-23

最近產品有需求,一開始通過啟動頁進入登入頁是正常的頁面跳轉,而後要進入主頁面,在主頁面裡面的點選判斷是否是登入狀態,然後登入頁從下向上彈出。這個需求一開始感覺應該不是很麻煩,直接用

overridePendingTransition(R.anim.anim_activity_up, 0)

anim_activity_up的檔案為:

<?xml version="1.0" encoding="utf-8"?>
<translate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromYDelta="100%p"
    android:toYDelta="0%p"
    >
</translate>

然後這時候執行的時候問題就來了,切換的時候會有黑的陰影閃現,然後谷歌方案一般都是說設定主題,在裡面新增如下程式碼:

<item name="android:windowIsTranslucent">true</item>

這個是改 Activity 的背景為透明,因為一開始設定主題的父主題為:

parent="Theme.AppCompat.Light.NoActionBar"

頁面的狀態列也會變成黑色,跟著頁面一塊來從下往上走,效果也不好。並且設定這個透明色以後,原先的頁面跳轉也會跟著變化。。。谷歌了一下是確實有這個問題,折騰了好久,最終改變方案。

用 popupwindow 來實現,設定其彈出跟關閉的動畫,動畫效果可以達到產品效果,但是如果popupWindow彈出,這個時候按下 home 鍵,然後點選圖示進入,popupWindow 頁面的動畫效果就會再展現一遍,個人感覺有可能是由下面的設定造成:

<item name="android:windowEnterAnimation">@anim/menushow</item>
     <item name="android:windowExitAnimation">@anim/menuhide</item>

設定進入跟退出的動畫。效果還是不理想。

這個問題被同組的大神也遇到過,他設定的頁面也是點選從下到上彈出,並且說設定overridePendingTransition後面的引數為0的時候沒有效果,必須自己去寫來實現這個效果,最終程式碼如下:

overridePendingTransition(R.anim.anim_activity_up,R.anim.anim_activity_stay)

anim_activity_stay的檔案為:

<?xml version="1.0" encoding="utf-8"?>
<set  xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:duration="200"
        android:fromAlpha="1"
        android:toAlpha="1"
        />
</set>

其實就是設定透明度一直為1,效果實現跟產品要求一致,並且不用重新另起一個頁面了,一開始的研究方向就出問題了。

記自己的一次踩坑之旅,後者可以少耽誤點時間了,共勉

相關文章