最近玩支付宝,有时候打开时,会从顶部掉下一个营销的广告窗口,效果图如下
分析:
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);
}
}