package com.bestapp.yikuair.officialaccount; import java.io.File; import android.content.Intent; import android.net.Uri; import android.os.Environment; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.LinearLayout.LayoutParams; import android.widget.PopupWindow; import android.widget.Toast; import com.bestapp.yikuair.R; public class PopupController { private final int REQUEST_CODE_TAKE_PHOTO; private final int REQUEST_CODE_CHOOSE_PIC; private Fragment activity; private PopupWindow popupWindow; private Button takePhotoBtn; private Button choosePicBtn; private Button cancelBtn; public PopupController(Fragment activity, int take_photo_code, int choose_pic_code) { this.activity = activity; this.REQUEST_CODE_TAKE_PHOTO = take_photo_code; this.REQUEST_CODE_CHOOSE_PIC = choose_pic_code; } public PopupWindow getPopupWindow() { return popupWindow; } /*** * 获取PopupWindow实例 */ public void checkPopupWindow() { if (null != popupWindow) { popupWindow.dismiss(); return; } else { initPopuptWindow(); } } @SuppressWarnings("deprecation") private void initPopuptWindow() { View popupWindow_view = activity.getActivity().getLayoutInflater() .inflate(R.layout.pop, null, false); popupWindow = new PopupWindow(popupWindow_view, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT, true); // popupWindow.setAnimationStyle(R.style.animation_fade); popupWindow_view.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); popupWindow = null; } return false; } }); takePhotoBtn = (Button) popupWindow_view.findViewById(R.id.take_photo); choosePicBtn = (Button) popupWindow_view.findViewById(R.id.choose_pic); cancelBtn = (Button) popupWindow_view.findViewById(R.id.cancel); takePhotoBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); popupWindow = null; String state = Environment.getExternalStorageState(); // 获取系统的存储状态 if (state.equals(Environment.MEDIA_MOUNTED)) { // 被分区,有读和写的权限 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 设置 // intent // 的行为为拍照 intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri .fromFile(new File(Environment .getExternalStorageDirectory(), "pic.png"))); activity.startActivityForResult(intent, REQUEST_CODE_TAKE_PHOTO); } else { Toast.makeText(activity.getActivity(), "SD卡无读写权限", Toast.LENGTH_LONG).show(); } } }); choosePicBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); popupWindow = null; Intent intent = new Intent(Intent.ACTION_PICK, null); intent.setDataAndType( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); activity.startActivityForResult(intent, REQUEST_CODE_CHOOSE_PIC); } }); cancelBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); popupWindow = null; } }); } }