public class ConfigDialogFragment extends DialogFragment implements View.OnClickListener{
private ImageView force_close;
private Dialog dialog;
private Button ip_config;
private EditText ip_txt;
private SharedPreferences sp_ip;
private SharedPreferences.Editor ip_edtior;
private Button start_btn_store;
private RadarScanView radarScanView;//雷达弹出视图
private static Context context;
private Toolbar toolbars;
private TextView tvPrevTitle;
private ImageView ivBack;
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.start_btn_store://返回重新配置
dialog.dismiss();
mListener.dialogDismiss();//
radarScanView.setSearching(false);
break;
case R.id.ivBack:
dialog.dismiss();
mListener.dialogDismiss();//
radarScanView.setSearching(false);
break;//返回键
default:
break;
}
}
public interface DialogClickListener{
void doRadioWifi();
void doRadioScanDevice();
void dialogDismiss();
}
static DialogClickListener mListener;
public ConfigDialogFragment(){
}
public static ConfigDialogFragment newInstance(Context context1,String title, String message, DialogClickListener listener){
ConfigDialogFragment frag = new ConfigDialogFragment();
Bundle b = new Bundle();
b.putString("title", title);
b.putString("message", message);
frag.setArguments(b);
mListener = listener;
context = context1;
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
dialog = new Dialog(getActivity(), R.style.DialogStyle);
LayoutInflater inflater = (LayoutInflater) getActivity()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.config_dialog_fragment, null, false);
//添加这一行
// LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.linear);
// linearLayout.getBackground().setAlpha(255);//0~255透明度值
String title = getArguments().getString("title");
String message = getArguments().getString("message");
initView(view);
initEvent();
//在这里配置wifi
dialog.setContentView(view);
setCancelable(true);//这句话调用这个方法时,按对话框以外的地方不起作用。按返回键也不起作用 -setCancelable (false);按返回键也不起作用
StatusBarCompat.compat(getActivity(), getResources().getColor(R.color.colorPrimary));//更改标题栏的颜色
return dialog;
}
/**
* 让dialogFragment铺满整个屏幕的好办法
*/
@Override
public void onStart() {
// TODO Auto-generated method stub
super.onStart();
Window win = getDialog().getWindow();
// 一定要设置Background,如果不设置,window属性设置无效
win.setBackgroundDrawable( new ColorDrawable(getResources().getColor(R.color.dialog_fragment_back)));
DisplayMetrics dm = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics( dm );
android.view.WindowManager.LayoutParams params = win.getAttributes();
params.gravity = Gravity.BOTTOM;
// 使用ViewGroup.LayoutParams,以便Dialog 宽度充满整个屏幕
params.width = ViewGroup.LayoutParams.MATCH_PARENT;
params.height = ViewGroup.LayoutParams.WRAP_CONTENT;
win.setAttributes(params);
}
/**
* 初始化存入服务器地址的sp
*/
private void initSpIp() {
sp_ip = getActivity().getSharedPreferences("IPInfo", MODE_PRIVATE);
ip_edtior = sp_ip.edit();
}
private void initView(View view) {
tvPrevTitle = (TextView) view.findViewById(R.id.tvPrevTitle);//配对中
tvPrevTitle.setText("配对中");
ivBack = (ImageView)view.findViewById(R.id.ivBack);//返回键
start_btn_store = (Button)view.findViewById(R.id.start_btn_store);//返回重新配置
radarScanView = (RadarScanView) view.findViewById(R.id.radaScan);
radarScanView.setSearching(true);//让雷达视图跑起来
}
private void initEvent() {
ivBack.setOnClickListener(this);//返回键
start_btn_store.setOnClickListener(this);//监听雷达比如雷达扫到45s时,就可以扫设备列表了
radarScanView.setOnDownActionListener(new OnDownActionListener() {
@Override
public void OnStart() {
// TODO Auto-generated method stub
// Toast.makeText( context, "雷达开始扫描", Toast.LENGTH_SHORT).show();
mListener.doRadioWifi();
}
@Override
public void OnEnd() {
// TODO Auto-generated method stub
// Toast.makeText( context, "雷达结束扫描", Toast.LENGTH_SHORT).show();
mListener.doRadioScanDevice();//当把ConfigDialogFragment给强制关闭时,就要把radaView给停掉
dialog.dismiss();
//快速连接完成后我要在这里进行 ,设备搜索
}
@Override
public void onDismiss() {
// TODO Auto-generated method stub
dialog.dismiss();//80ms,后都没能搜索到设备,
mListener.dialogDismiss();//
}
});
}
}
activity中初始化配置:
//在这里弹出dialogFragment对话框
if (!newFragment.isAdded()) {//DialogFragment.show()内部调用了FragmentTransaction.add()方法,所以调用DialogFragment.show()方法时候也可能
FragmentManager manager = getFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.add(newFragment, "dialog");
ft.commit();
}
dialog样式:
<style name="DialogStyle">
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:background">@android:color/background_light</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground"> @android:color/transparent </item>
<item name="android:backgroundDimEnabled">false</item>
</style>
完整项目源码:点击下载