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