安卓第九天---底部弹窗的PopWindow

首先讲解一下底部弹窗的思路:
1.弹出的窗口也是一种布局,并不是固定的格式,需要我们自己去设置这个布局
2.弹窗的位置我们是可以自己去设置的,当然,具体的设置步骤需要自己去实现了(我不会告诉你们其他的我没有去学习的)
3.打开弹窗一般有一些动画效果,所以如果需要自己的弹窗变得生动,可以去设置动画效果
然后,这里给一个贴图,这里弹窗的触发事件就只是简单的点击TextView(HelloWorld)
安卓第九天---底部弹窗的PopWindow_第1张图片

然后弹窗的布局:




Button按钮里面的文字设置带string.xml里面,需要怎样的文字,自己添加就好
然后我们这里的按钮是一个四角为圆角的按钮,所以我们需要为原生的button设置一个样式背景,具体如下:





是写在drawable文件夹下面的btn_bg.xml下
然后我们设置一下动画效果
//打开时的动画效果pop_show.xml





//关闭时的动画效果pop_hid.xml

 
   

然后在style.xml中设置

  

然后准备工作准备就绪,接下来设置主要的代码(先给TextView设置一个id或点击事件0o0)
MainActivity.class

package com.leaves.autum.popupwindowdemo;

import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
private TextView textView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    textView = findViewById(R.id.hello_world);
    textView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showPopWindow();
        }
    });

}
//设置PopWindow的主方法
public void showPopWindow(){
    View parent = ((ViewGroup)this.findViewById(android.R.id.content)).getChildAt(0);
    View popView = View.inflate(this,R.layout.popup_window,null);

    Button takePhoto = popView.findViewById(R.id.take_photo_from_camera);
    Button selectPicture = popView.findViewById(R.id.select_from_album);
    Button cancelSelect = popView.findViewById(R.id.cancel_select);

    int width = getResources().getDisplayMetrics().widthPixels;
    int height = getResources().getDisplayMetrics().heightPixels;

    final PopupWindow popupWindow = new PopupWindow(popView,width,height);
    popupWindow.setAnimationStyle(R.style.pop_anim);
    popupWindow.setFocusable(true);
    popupWindow.setOutsideTouchable(false);//设置点击外部消失;
    View.OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.take_photo_from_camera:
                    Toast.makeText(MainActivity.this, "拍照", Toast.LENGTH_SHORT).show();
                    popupWindow.dismiss();
                    break;
                case R.id.select_from_album:
                    Toast.makeText(MainActivity.this, "相册", Toast.LENGTH_SHORT).show();
                    popupWindow.dismiss();
                    break;
                case R.id.cancel_select:
                    Toast.makeText(MainActivity.this, "取消", Toast.LENGTH_SHORT).show();
                    popupWindow.dismiss();
                    break;
            }
        }
    };

    takePhoto.setOnClickListener(onClickListener);
    selectPicture.setOnClickListener(onClickListener);
    cancelSelect.setOnClickListener(onClickListener);
	//设置popupwindow的背景颜色
    ColorDrawable dw = new ColorDrawable(0x30000000);
    popupWindow.setBackgroundDrawable(dw);
     //设置打开popupWindow的位置
    popupWindow.showAtLocation(parent, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);

}
}

博客持续更新中,还望有心人士共勉,如果觉得不错,请不要吝啬你的赞,你们的观看是我持续的动力!

你可能感兴趣的:(Android)