仿支付宝广告-顶部往下掉的popwindow,消失在左上角

最近玩支付宝,有时候打开时,会从顶部掉下一个营销的广告窗口,效果图如下


仿支付宝广告-顶部往下掉的popwindow,消失在左上角
 分析:

1.从顶部往下掉,一个位移动画

背景半透明

首页构建广告界面

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#78666666">
    <FrameLayout android:layout_gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

     <LinearLayout android:id="@+id/adArea"
         android:orientation="vertical"
         android:layout_gravity="center"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
         <ImageView android:id="@+id/closeIcon"
             android:src="@drawable/close"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />
         <ImageView android:id="@+id/adContent"
             android:src="@drawable/adcontent"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />

     </LinearLayout>

    </FrameLayout>
</FrameLayout>

 用到的动画,顶部掉下来fade_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="1000"
        android:fromYDelta="-100%"
        android:toYDelta="0" />
    <alpha android:startOffset="500"
        android:fromAlpha="0"
        android:toAlpha="1"
        android:duration="1000"/>

</set>

 退出时动画fade_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true" android:fillBefore="false">

    <translate
        android:duration="2000"
        android:fromYDelta="0"
        android:toYDelta="-100%" />
    <scale android:startOffset="800"
        android:pivotX="0%"
        android:pivotY="0%"
        android:fromXScale="1"
        android:toXScale="0"
        android:fromYScale="1"
        android:duration="1000"
        android:toYScale="0">
    </scale>
</set>

 启动Activity

package com.example.exportgradledemo;

import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.PopupWindow;


public class Main3Activity extends Activity {

    private android.widget.Button button;
    private PopupWindow popupWindow;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main3);
        this.button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showPopupWindow();
            }
        });
    }

    /**
     * 微信分享弹框
     */
    private void showPopupWindow() {

        if (popupWindow == null) {
            LayoutInflater layoutInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View view = layoutInflater.inflate(R.layout.popad_layout, null);

            popupWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
        }

        popupWindow.setFocusable(true);
        popupWindow.setOutsideTouchable(true);
        popupWindow.setAnimationStyle(R.style.AnimationPreview);
        // 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);

        popupWindow.showAtLocation(findViewById(R.id.screen_content_layout), Gravity.BOTTOM, 0, 0);

    }

}