仿Iphone从屏幕底部弹出半透明的PopupWindow

来源:互联网 发布:linux下好用的输入法 编辑:程序博客网 时间:2024/04/29 02:25

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;}}}}