首先讲解一下底部弹窗的思路:
1.弹出的窗口也是一种布局,并不是固定的格式,需要我们自己去设置这个布局
2.弹窗的位置我们是可以自己去设置的,当然,具体的设置步骤需要自己去实现了(我不会告诉你们其他的我没有去学习的)
3.打开弹窗一般有一些动画效果,所以如果需要自己的弹窗变得生动,可以去设置动画效果
然后,这里给一个贴图,这里弹窗的触发事件就只是简单的点击TextView(HelloWorld)
然后弹窗的布局:
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);
}
}
博客持续更新中,还望有心人士共勉,如果觉得不错,请不要吝啬你的赞,你们的观看是我持续的动力!