1、建立自定義PopWindow
2、建立anim,彈出彈入動畫,和動畫Style
3、實際使用案例
1、建立自定義PopWindow
1.1 建立展示界面
在建立該類之前,先構思好需要展示的布局檔案(PopWindow展示的界面)樣式。
1.2 自定義建立PopWindow類
public void initPopWindow(){
//初始化
//擷取PopWindow()布局的view
mView = LinearLayout.inflate(mContext, R.layout.popup_takephoto, null);
mPopupWindow = new PopupWindow(mView,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT,true);
mPopupWindow.setTouchable(true);
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setBackgroundDrawable(new BitmapDrawable(mContext.getResources(), (Bitmap )null));
mPopupWindow.getContentView().setFocusableInTouchMode(true);
mPopupWindow.setFocusable(true);
mPopupWindow.setAnimationStyle(R.style.anim_menu_bottombar);
//布局點選設定
//如果需要對PopupWindow布局中設定點選事件,可通過布局的View擷取,并設定點選事件
mView.findViewById(R.id.popup_camera).setOnClickListener(this);
mView.findViewById(R.id.popup_album).setOnClickListener(this);
mView.findViewById(R.id.popup_cancel).setOnClickListener(this);
}
//顯示PopupWindow的方法
public void showAtBottom( View view){
mPopupWindow.showAtLocation(mView, Gravity.BOTTOM, 0, 0);
mPopupWindow.showAsDropDown(view);
}
//隐藏PopupWindow的方法
public void dismiss(){
mPopupWindow.dismiss();
}
// 自定義布局點選事件的接口
Public interface PopItemClickListener{
Void onClickItem(intRequestCode);
}
public void setPopItemClickListener(PopItemClickListenerpopItemClickListener){
mPopItemClickListener=popItemClickListener;
}
2、建立anim,彈出彈入動畫,和動畫Style
2.1建立anim
在res目錄下建立anim檔案夾
建立Animation動畫包括彈入彈出兩個動畫檔案。
該動畫檔案用到的是 平移動畫:
① anim_menu_bottombar_in
<?xmlversion="1.0"encoding="utf-8"?>
<setxmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="250"
android:fromYDelta="100.0%"
android:toYDelta="0.0"
/>
</set>
② anim_menu_bottombar_out
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="250"
android:fromYDelta="0.0%"
android:toYDelta="100.0"
/>
</set>
建立後的目錄結構如下圖所示
2.2 在Style中設定
在values/styles檔案中添加建立好的動畫屬性。
<style name="anim_menu_bottombar">
<item name="android:windowEnterAnimation">@anim/anim_menu_bottombar_in</item>
<item name="android:windowExitAnimation">@anim/anim_menu_bottombar_out</item>
</style>
在代碼中使用該style屬性
mPopupWindow.setAnimationStyle(R.style.anim_menu_bottombar);
3、實際使用案例
在需要使用的時候,首先進行自定義Popwindow的初始化操作。
//初始化popwindow
mCameraPopupWindow = new CameraPopupWindow(this);
mCameraPopupWindow.initPopWindow();
mCameraPopupWindow.setPopItemClickListener(new CameraPopupWindow.PopItemClickListener(){
@Override
publicvoidonClickItem(intRequestCode){
//popwindow中item點選事件的處理
}});
//在需要顯示的時候調用
mCameraPopupWindow.showAtBottom(v);
//隐藏該Popwindow
mCameraPopupWindow.dismiss();