android 自定义dialogfragment全屏对话窗体

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>

猜你喜欢

转载自blog.csdn.net/u014644594/article/details/80520688