Android仿Iphone從屏幕底部彈出半透明的PopupWindow

jopen 12年前發布 | 130K 次閱讀 Android Android開發 移動開發

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

        }}
}

 

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!