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

jopen 11年前

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 {    @Override    public 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;     }      }}  }