仿Iphone从屏幕底部弹出半透明的PopupWindow
main.xml如下:
<?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="fill_parent" > <Button android:id="@+id/button" android:text="popupWindow" android:layout_width="fill_parent" android:layout_height="wrap_content" /></RelativeLayout>
styles.xml如下:
<?xml version="1.0" encoding="utf-8"?><resources> <style name="popupAnimation" parent="android:Animation"><item name="android:windowEnterAnimation">@anim/in</item><item name="android:windowExitAnimation">@anim/out</item></style></resources>
popupwindow.xml如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#b5555555" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="12dip" android:paddingLeft="10dip" android:paddingRight="10dip" android:orientation="vertical" > <Button android:id="@+id/confirmButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:text="确定"/> <Button android:id="@+id/cancleButton" android:layout_marginTop="12dip" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:text="取消" /> </LinearLayout></RelativeLayout>
in.xml如下:
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="5000" android:toYDelta="0" android:duration="1500" /></set>
out.xml如下:
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fromYDelta="0" android:toYDelta="5000" android:duration="1500" /></set>
PopupWindowTestActivity.java如下:
import android.app.Activity;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup.LayoutParams;import android.widget.Button;import android.widget.PopupWindow;/** * Demo描述: * 仿Iphone从屏幕底部弹出半透明的PopupWindow */public class PopupWindowTestActivity extends Activity {private Button button; private Button confirmButton; private Button cancleButton; private PopupWindow popupWindow; private View popupWindowView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); init(); } private void init(){ button=(Button) findViewById(R.id.button); button.setOnClickListener(new ButtonOnClickListener()); }private class ButtonOnClickListener implements OnClickListener {@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.button:LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);popupWindowView = inflater.inflate(R.layout.popupwindow, null);popupWindow = new PopupWindow(popupWindowView,LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT,true);popupWindow.setBackgroundDrawable(new BitmapDrawable());//设置PopupWindow的弹出和消失效果popupWindow.setAnimationStyle(R.style.popupAnimation);confirmButton = (Button) popupWindowView.findViewById(R.id.confirmButton);confirmButton.setOnClickListener(new ButtonOnClickListener());cancleButton = (Button) popupWindowView.findViewById(R.id.cancleButton);cancleButton.setOnClickListener(new ButtonOnClickListener());popupWindow.showAtLocation(confirmButton, Gravity.CENTER, 0, 0);break;case R.id.confirmButton:System.out.println("点击了确定按钮");break;case R.id.cancleButton:popupWindow.dismiss();break;default:break;}}}}