Overridden DialogFragment Method onCreateDialog

Method onCreateDialog (Fig. 7.35) inflates the custom View (lines 32–34) defined by fragment_color.xml containing the GUI for selecting a color, then attaches that View to the AlertDialog by calling AlertDialog.Builder’s setView method (line 35). Lines 42–50 get references to the dialog’s SeekBars and colorView. Next, lines 53–56 register colorChangedListener (Fig. 7.38) as the listener for the SeekBars’ events.


26      // create an AlertDialog and return it
27      @Override
28      public Dialog onCreateDialog(Bundle bundle)
29      {
30         AlertDialog.Builder builder =
31            new AlertDialog.Builder(getActivity());
32         View colorDialogView =                                
33            getActivity().getLayoutInflater().inflate(         
34               R.layout.fragment_color, null);                 
35         builder.setView(colorDialogView); // add GUI to dialog
36
37         // set the AlertDialog's message
38         builder.setTitle(R.string.title_color_dialog);
39         builder.setCancelable(true);
40
41         // get the color SeekBars and set their onChange listeners
42         alphaSeekBar = (SeekBar) colorDialogView.findViewById(
43            R.id.alphaSeekBar);
44         redSeekBar = (SeekBar) colorDialogView.findViewById(
45            R.id.redSeekBar);
46         greenSeekBar = (SeekBar) colorDialogView.findViewById(
47            R.id.greenSeekBar);
48         blueSeekBar = (SeekBar) colorDialogView.findViewById(
49            R.id.blueSeekBar);
50         colorView = colorDialogView.findViewById(R.id.colorView );
51
52         // register SeekBar event listeners
53         alphaSeekBar.setOnSeekBarChangeListener(colorChangedListener);
54         redSeekBar.setOnSeekBarChangeListener(colorChangedListener);
55         greenSeekBar.setOnSeekBarChangeListener(colorChangedListener);
56         blueSeekBar.setOnSeekBarChangeListener(colorChangedListener);
57
58         // use current drawing color to set SeekBar values
59         final DoodleView doodleView = getDoodleFragment().getDoodleView();
60         color = doodleView.getDrawingColor();
61         alphaSeekBar.setProgress(Color.alpha(color));
62         redSeekBar.setProgress(Color.red(color));
63         greenSeekBar.setProgress(Color.green(color));
64         blueSeekBar.setProgress(Color.blue(color));
65
66         // add Set Color Button
67         builder.setPositiveButton(R.string.button_set_color,
68            new DialogInterface.OnClickListener()
69            {
70               public void onClick(DialogInterface dialog, int id)
71               {
72                  doodleView.setDrawingColor(color);
73               }
74            }
75         ); // end call to setPositiveButton
76
77         return builder.create(); // return dialog
78      } // end method onCreateDialog
79


Fig. 7.35 | Overridden DialogFragment method onCreateDialog.

Line 59 calls method getDoodleFragment (Fig. 7.36) to get a reference to the DoodleFragment, then calls the DoodleFragment’s getDoodleView method to get the DoodleView. Lines 60–64 get the DoodleView’s current drawing color, then use it to set each SeekBar’s value. Color’s static methods alpha, red, green and blue extract the ARGB values from the color, and SeekBar’s setProgress method positions the thumbs. Lines 67–75 configure the AlertDialog’s positive button to set the DoodleView’s new drawing color. Line 77 returns the AlertDialog.


80      // gets a reference to the DoodleFragment
81      private DoodleFragment getDoodleFragment()
82      {
83         return (DoodleFragment) getFragmentManager().findFragmentById(
84            R.id.doodleFragment );
85      }
86


Fig. 7.36 | Method getDoodleFragment.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset