標籤:android popupwindow 底部彈出框
本片文章主要談探討了如何?在底部彈出提示框背景為半透明效果的實現。想要實現此種效果一般有兩種方式一個是使用Activity設定Theme另一種方式就是使用PopupWindow設定樣式實現效果。
一,使用Activity
首先是此activity的布局檔案:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" android:background="#b0000000" > <LinearLayout android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:id="@+id/pop_layout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" android:layout_alignParentBottom="true" android:background="@drawable/callsharp_select" > <Button android:padding="10dp" android:id="@+id/btn_take_photo" android:layout_marginLeft="30dip" android:layout_marginRight="30dip" android:layout_marginTop="20dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="拍照" android:background="@drawable/whiteselector" android:textStyle="bold" /> <Button android:padding="10dp" android:id="@+id/btn_pick_photo" android:layout_marginLeft="30dip" android:layout_marginRight="30dip" android:layout_marginTop="5dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="從相簿選擇" android:background="@drawable/whiteselector" android:textStyle="bold" /> <Button android:padding="10dp" android:id="@+id/btn_cancel" android:layout_marginLeft="30dip" android:layout_marginRight="30dip" android:layout_marginTop="15dip" android:layout_marginBottom="15dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="取消" android:background="@drawable/whiteselector" android:textStyle="bold" /> </LinearLayout> </RelativeLayout>
在AndroidManifest當中的配置
<activity android:theme="@style/activity_popup" android:name=".PopupActivity" ></activity>
指定了自訂的Theme 在style當中設定
<style name="activity_popup" parent="android:Theme.Translucent.NoTitleBar"> <item name="android:windowAnimationStyle">@style/AnimBottom</item> </style>
在其中我添加了進入很退出的動畫採用了上下進出的方式:
<style name="AnimBottom" parent="@android:style/Animation"> <item name="android:windowEnterAnimation">@anim/push_bottom_in</item> <item name="android:windowExitAnimation">@anim/push_bottom_out</item> </style>
進出的動畫為:
push_bottom_in:
<?xml version="1.0" encoding="utf-8"?> <!-- 上下滑入式 --> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="200" android:fromYDelta="100%p" android:toYDelta="0" /> </set>
push_bottom_out為:
<?xml version="1.0" encoding="utf-8"?> <!-- 上下滑出式 --> <set xmlns:android="http://schemas.android.com/apk/res/android" > <translate android:duration="200" android:fromYDelta="0" android:toYDelta="50%p" /> </set>
這樣就實現了下部彈出框。
二,使用PopupWindow實現
使用的樣式和動畫效果不改變與上邊的相同,首先一個自訂的PopupWindow
package com.example.activityanimationdemo;import android.app.ActionBar.LayoutParams;import android.app.Activity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.widget.PopupWindow;public class MyPopupWindow extends PopupWindow{private View mainview;public MyPopupWindow(Activity context,OnClickListener itemclick){super(context);LayoutInflater inflater=(LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);mainview=inflater.inflate(R.layout.activity_popup, null);this.setWidth(LayoutParams.MATCH_PARENT);this.setHeight(LayoutParams.MATCH_PARENT);this.setContentView(mainview);this.setFocusable(true);this.setAnimationStyle(R.style.AnimBottom);}}
然後在Activity當中的點擊事件顯示PopupWindow:
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stub//ActivityMy.this.startActivity(new Intent(ActivityMy.this, PopupActivity.class));popupwindow=new MyPopupWindow(ActivityMy.this, null);popupwindow.showAtLocation(ActivityMy.this.findViewById(R.id.demo), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0);}});}
: