方法一:
<LinearLayout
android:id="@+id/ll_bottom_pop"
android:layout_width="match_parent"
android:layout_height="227dp"
android:layout_gravity="bottom"
android:layout_marginBottom="-227dp"
android:background="@drawable/change_user_header_pop_bg"
android:orientation="vertical">
<TextView
android:id="@+id/tv_take_photo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="18dp"
android:text="拍照"
android:textColor="@color/color44"
android:textSize="16sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#e9e9e9" />
<TextView
android:id="@+id/tv_select_from_album"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="18dp"
android:text="从相册选取"
android:textColor="@color/color44"
android:textSize="16sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:background="#e9e9e9" />
<TextView
android:id="@+id/tv_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="18dp"
android:text="取消"
android:textColor="@color/color44"
android:textSize="16sp" />
</LinearLayout>
private void showPop() {
llBottomPop.animate().translationY(-llBottomPop.getHeight()).setDuration(20).start();
}
private void hidPop() {
llBottomPop.animate().translationY(0).setDuration(20).start();
}
方法二:
public class HeadImgTool {
public static String systemCameraPicPath = null;
private BaseActivity baseLocalActivity;
private PopupWindow popupWindowPicture = null;
public HeadImgTool(BaseActivity baseLocalActivity) {
this.baseLocalActivity = baseLocalActivity;
systemCameraPicPath = ToolUtils.getSD_CardRootPath()+"/tempCameraPic"+System.currentTimeMillis()+".jpg";//"tempCameraPic"
}
public void showPopChangePicDialog(View showAtView){
showPopChangePicDialog(showAtView,null,null);
}
public void showPopChangePicDialog(View showAtView,Boolean selectMulti,Integer maxCount){
if(null != popupWindowPicture){
if(popupWindowPicture.isShowing()){
popupWindowPicture.dismiss();
}else{
popupWindowPicture.showAtLocation(showAtView, Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,0,0);
}
}else{
createPopChangePicDialog(showAtView,selectMulti,maxCount);
}
}
protected void createPopChangePicDialog(View showAtView, final Boolean selectMulti,final Integer maxCount) {
final View popupView = LayoutInflater.from(baseLocalActivity).inflate(R.layout.popwindow_bottom_pic_change, null);
popupView.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
int height = popupView.findViewById(R.id.popLy).getTop();
if (event.getAction() == MotionEvent.ACTION_UP){
if(null != popupWindowPicture && event.getY() < height)popupWindowPicture.dismiss();
}
return true;
}
});
(popupView.findViewById(R.id.btnCamera)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(null != popupWindowPicture)popupWindowPicture.dismiss();
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory(Intent.CATEGORY_DEFAULT);
ToolUtils.ViewAndDeleteDirOrFile(systemCameraPicPath);
systemCameraPicPath = nToolUtils.getSD_CardRootPath()+"/tempCameraPic"+System.currentTimeMillis()+".jpg";
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(systemCameraPicPath)));
baseLocalActivity.startActivityForResult(intent, Config.req_ActivityCameraPhoto);
}
});
(popupView.findViewById(R.id.btnPhoto)).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(null != popupWindowPicture)popupWindowPicture.dismiss();
if(null != selectMulti){
Bundle bundle = new Bundle();
bundle.putBoolean(PicSelectorActivity.ParamMulti,selectMulti);
if(null != maxCount)bundle.putInt(PicSelectorActivity.ParamMaxCount,maxCount);
ToolUtils.startActivityNoFinish(baseLocalActivity, PicSelectorActivity.class,bundle,VickyConfig.req_ActivityPictureSelect);
}else{
ToolUtils.startActivityNoFinish(baseLocalActivity, PicSelectorActivity.class,null,VickyConfig.req_ActivityPictureSelect);
}
}
});
popupWindowPicture = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT,true);//创建popupWindow
popupWindowPicture.setAnimationStyle(R.style.popup_animation);
popupWindowPicture.setBackgroundDrawable(new ColorDrawable(0x00000000));
popupWindowPicture.showAtLocation(showAtView,Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,0,0);
}
}
方法三:
View view = getLayoutInflater().inflate(R.layout.dialog_cancel_instruction, null);
dialogDesc = new Dialog(this, R.style.transparentFrameWindowStyle);
dialogDesc.setContentView(view, new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT));
Window window = dialogDesc.getWindow();
window.setWindowAnimations(R.style.main_menu_animstyle);// 设置显示动画
WindowManager.LayoutParams wl = window.getAttributes();
wl.x = 0;
wl.y = getWindowManager().getDefaultDisplay().getHeight();
wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;
//下面方法解决固定到窗体底部
wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
wl.gravity = Gravity.BOTTOM;
dialogSelect.onWindowAttributesChanged(wl);
dialogSelect.setCanceledOnTouchOutside(true);
dialogDesc.onWindowAttributesChanged(wl);// 设置显示位置
dialogDesc.setCanceledOnTouchOutside(true);// 设置点击外围解散
dialogDesc.show();