你的位置:首页 > 操作系统

[操作系统]Exampleapp窗口大小调节



结构图:

基类:
package ch.halcyon.squareprogressbar.example;import android.app.Activity;import android.app.FragmentManager;import android.content.Context;import android.content.Intent;import android.content.res.Configuration;import android.net.Uri;import android.os.Bundle;import android.support.v4.app.ActionBarDrawerToggle;import android.support.v4.view.GravityCompat;import android.support.v4.widget.DrawerLayout;import android.text.Html;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.BaseAdapter;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.ImageView;import android.widget.ListView;import android.widget.TextView;import java.util.ArrayList;import ch.halcyon.squareprogressbar.example.dialogs.CustomColourDialog;import ch.halcyon.squareprogressbar.example.dialogs.PercentDialog;import ch.halcyon.squareprogressbar.utils.ColourUtil;public class MainActivity extends Activity {  private DrawerLayout drawerLayout;  private ListView drawerListView;  private ActionBarDrawerToggle drawerToggle;  private CharSequence drawerTitle;  private CharSequence title;  public static String[] partTitle, descriptions;  private SquareFragment squareFragment;  private int lastPosition;  @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    FragmentManager fragmentManager = getFragmentManager();    squareFragment = new SquareFragment();    fragmentManager.beginTransaction()        .replace(ch.halcyon.squareprogressbar.example.R.id.content_frame, squareFragment).commit();    setContentView(ch.halcyon.squareprogressbar.example.R.layout.activity_main);    title = drawerTitle = getTitle();    partTitle = getResources().getStringArray(ch.halcyon.squareprogressbar.example.R.array.drawer_titel);    descriptions = getResources().getStringArray(        ch.halcyon.squareprogressbar.example.R.array.drawer_descriptions);    drawerLayout = (DrawerLayout) findViewById(ch.halcyon.squareprogressbar.example.R.id.drawer_layout);    drawerListView = (ListView) findViewById(ch.halcyon.squareprogressbar.example.R.id.left_drawer);    drawerLayout.setDrawerShadow(ch.halcyon.squareprogressbar.example.R.drawable.drawer_shadow,        GravityCompat.START);    BaseAdapter adapter = new BaseAdapter() {      //获得视图      @Override      public View getView(final int position, View convertView,                ViewGroup parent) {        View item = convertView;        //首项        View headerItem = LayoutInflater.from(getApplicationContext())            .inflate(ch.halcyon.squareprogressbar.example.R.layout.lv_header_layout, parent, false);        TextView title = (TextView) headerItem            .findViewById(ch.halcyon.squareprogressbar.example.R.id.lv_list_hdr);        //自定义项目        View styleItem = LayoutInflater.from(getApplicationContext())            .inflate(ch.halcyon.squareprogressbar.example.R.layout.lv_style, parent, false);        CheckBox box = (CheckBox) styleItem            .findViewById(ch.halcyon.squareprogressbar.example.R.id.checkBox1);        View styleBoxItem = LayoutInflater            .from(getApplicationContext()).inflate(                ch.halcyon.squareprogressbar.example.R.layout.lv_style_box, parent, false);        final CheckBox styleBox = (CheckBox) styleBoxItem            .findViewById(ch.halcyon.squareprogressbar.example.R.id.checkBox11);        ImageView styleImage = (ImageView) styleBoxItem            .findViewById(ch.halcyon.squareprogressbar.example.R.id.imageView1);        // 链接到Github        View githubItem = LayoutInflater.from(getApplicationContext())            .inflate(ch.halcyon.squareprogressbar.example.R.layout.lv_github, parent, false);        TextView githublink = (TextView) githubItem            .findViewById(ch.halcyon.squareprogressbar.example.R.id.textView1);        // 链接到homepage        View signerItem = LayoutInflater.from(getApplicationContext())            .inflate(ch.halcyon.squareprogressbar.example.R.layout.lv_signer, parent, false);        // 链接到Image        View imageItem = LayoutInflater.from(getApplicationContext())            .inflate(ch.halcyon.squareprogressbar.example.R.layout.lv_image, parent, false);        ImageView imagePreview = (ImageView) imageItem            .findViewById(ch.halcyon.squareprogressbar.example.R.id.imageView1);        TextView imageDesc = (TextView) imageItem            .findViewById(ch.halcyon.squareprogressbar.example.R.id.imagetag);                switch (position) {          case 0:            title.setText("Colour");            return headerItem;          case 11:            Context context = getApplicationContext();            item = LayoutInflater.from(context).inflate(                ch.halcyon.squareprogressbar.example.R.layout.lv_colour_text, parent, false);            item.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View arg0) {                final CustomColourDialog customColourDialog = new CustomColourDialog(                    MainActivity.this);                customColourDialog.show();                customColourDialog.getSaveButton()                    .setOnClickListener(new OnClickListener() {                      @Override                      public void onClick(View v) {                        squareFragment.squareProgressBar                            .setColorRGB(customColourDialog                                .getChoosenRGB());                        customColourDialog.dismiss();                      }                    });                selectItem(position);                lastPosition = position;              }            });            TextView textView = (TextView) item                .findViewById(ch.halcyon.squareprogressbar.example.R.id.colour_name_center);            textView.setText("choose RGB colour");            return item;          case 12:            title.setText("Style");            return headerItem;          case 13:            box.setText(ch.halcyon.squareprogressbar.example.R.string.opacity);            box.setChecked(squareFragment.squareProgressBar.isOpacity());            box.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .setOpacity(isChecked);              }            });            return styleItem;          case 14:            box.setText("Outline");            box.setChecked(squareFragment.squareProgressBar.isOutline());            box.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .drawOutline(isChecked);              }            });            return styleItem;          case 15:            box.setText("Startline");            box.setChecked(squareFragment.squareProgressBar                .isStartline());            box.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .drawStartline(isChecked);              }            });            return styleItem;          case 16:            box.setText("Centerline");            box.setChecked(squareFragment.squareProgressBar                .isCenterline());            box.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .drawCenterline(isChecked);              }            });            return styleItem;          case 17:            styleBox.setText("Show percent");            styleBox.setChecked(squareFragment.squareProgressBar                .isShowProgress());            styleBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .showProgress(isChecked);              }            });            styleImage.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View arg0) {                final PercentDialog percentDialog = new PercentDialog(                    MainActivity.this);                percentDialog.show();                percentDialog                    .setPercentStyle(squareFragment.squareProgressBar                        .getPercentStyle());                percentDialog.getSaveButton().setOnClickListener(                    new OnClickListener() {                      @Override                      public void onClick(View v) {                        squareFragment.squareProgressBar                            .setPercentStyle(percentDialog                                .getSettings());                        percentDialog.dismiss();                        styleBox.setChecked(true);                        drawerLayout.closeDrawers();                      }                    });              }            });            return styleBoxItem;          case 18:            box.setText("Grayscale");            box.setChecked(squareFragment.squareProgressBar                .isGreyscale());            box.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .setImageGrayscale(isChecked);              }            });            return styleItem;          case 19:            box.setText("Clear at 100%");            box.setChecked(squareFragment.squareProgressBar                .isClearOnHundred());            box.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .setClearOnHundred(isChecked);              }            });            return styleItem;          case 20:            box.setText("Indeterminate");            box.setChecked(squareFragment.squareProgressBar                .isIndeterminate());            box.setOnCheckedChangeListener(new OnCheckedChangeListener() {              @Override              public void onCheckedChanged(CompoundButton buttonView,                             boolean isChecked) {                squareFragment.squareProgressBar                    .setIndeterminate(isChecked);              }            });            return styleItem;          case 21:            title.setText("Image");            return headerItem;          case 22:            imagePreview.setImageResource(ch.halcyon.squareprogressbar.example.R.drawable.blenheim_palece);            imageDesc.setText("blenheim palace");            imageItem.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) {                squareFragment.squareProgressBar                    .setImage(ch.halcyon.squareprogressbar.example.R.drawable.blenheim_palece);              }            });            return imageItem;          case 23:            imagePreview                .setImageResource(ch.halcyon.squareprogressbar.example.R.drawable.millennium_stadium);            imageDesc.setText("the millennium stadium");            imageItem.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) {                squareFragment.squareProgressBar                    .setImage(ch.halcyon.squareprogressbar.example.R.drawable.millennium_stadium);              }            });            return imageItem;          case 24:            imagePreview.setImageResource(ch.halcyon.squareprogressbar.example.R.drawable.edinburgh);            imageDesc.setText("carlton hill");            imageItem.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) {                squareFragment.squareProgressBar                    .setImage(ch.halcyon.squareprogressbar.example.R.drawable.edinburgh);              }            });            return imageItem;          case 25:            imagePreview.setImageResource(ch.halcyon.squareprogressbar.example.R.drawable.holyroodpark);            imageDesc.setText("holyrood park");            imageItem.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) {                squareFragment.squareProgressBar                    .setImage(ch.halcyon.squareprogressbar.example.R.drawable.holyroodpark);              }            });            return imageItem;          case 26:            imagePreview.setImageResource(ch.halcyon.squareprogressbar.example.R.drawable.operahuset);            imageDesc.setText("operahuset oslo");            imageItem.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View v) {                squareFragment.squareProgressBar                    .setImage(ch.halcyon.squareprogressbar.example.R.drawable.operahuset);              }            });            return imageItem;          case 27:            title.setText("Source");            return headerItem;          case 28:            String text = "<font color=#4183C4>mrwonderman</font>/<b><font color=#4183C4>android-square-progressbar</font></b> (v. 1.6.0)";            githublink.setText(Html.fromHtml(text));            githubItem.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View arg0) {                Intent browserIntent = new Intent(                    Intent.ACTION_VIEW,                    Uri.parse("https://github.com/mrwonderman/android-square-progressbar"));                startActivity(browserIntent);              }            });            return githubItem;          case 29:            signerItem.setOnClickListener(new OnClickListener() {              @Override              public void onClick(View arg0) {                Intent browserIntent = new Intent(                    Intent.ACTION_VIEW, Uri                    .parse("http://www.halcyon.ch/"));                startActivity(browserIntent);              }            });            return signerItem;          default:            break;        }        //获得颜色数组        ArrayList<Integer> colourArray = ColourUtil.getColourArray();        if (position <= 10) {          Context context = getApplicationContext();          item = LayoutInflater.from(context).inflate(              ch.halcyon.squareprogressbar.example.R.layout.lv_colour, parent, false);          View colourView = item.findViewById(ch.halcyon.squareprogressbar.example.R.id.colour_preview);          final Integer integer = colourArray.get(position - 1);          colourView.setBackgroundColor(context.getResources()              .getColor(integer));          item.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View arg0) {              squareFragment.squareProgressBar                  .setHoloColor(integer);              selectItem(position);              lastPosition = position;            }          });          TextView textView = (TextView) item              .findViewById(ch.halcyon.squareprogressbar.example.R.id.colour_name);          textView.setText(getName(position - 1));        }        return item;      }            @Override      public long getItemId(int position) {        return position;      }      @Override      public Object getItem(int position) {        return position;      }      @Override      public int getCount() {        return 30;      }    };    drawerListView.setAdapter(adapter);    drawerListView.setOnItemClickListener(new DrawerItemClickListener());    getActionBar().setDisplayHomeAsUpEnabled(true);    getActionBar().setHomeButtonEnabled(true);    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,        ch.halcyon.squareprogressbar.example.R.drawable.ic_drawer, ch.halcyon.squareprogressbar.example.R.string.drawer_open,        ch.halcyon.squareprogressbar.example.R.string.drawer_close) {      @Override      public void onDrawerClosed(View view) {        getActionBar().setTitle(title);        invalidateOptionsMenu();      }      //开启      @Override      public void onDrawerOpened(View drawerView) {        getActionBar().setTitle(drawerTitle);        invalidateOptionsMenu();      }    };    drawerLayout.setDrawerListener(drawerToggle);  }  //回调方法  @Override  public boolean onOptionsItemSelected(MenuItem item) {    if (drawerToggle.onOptionsItemSelected(item)) {      return true;    }    return true;  }  //选项菜单  @Override  public boolean onPrepareOptionsMenu(Menu menu) {    return super.onPrepareOptionsMenu(menu);  }  @Override  public void setTitle(CharSequence title) {    this.title = title;    getActionBar().setTitle(title);  }  @Override  protected void onPostCreate(Bundle savedInstanceState) {    super.onPostCreate(savedInstanceState);    drawerToggle.syncState();  }  //横竖屏转换  @Override  public void onConfigurationChanged(Configuration newConfig) {    super.onConfigurationChanged(newConfig);    drawerToggle.onConfigurationChanged(newConfig);  }  //获得名字的序列  private CharSequence getName(int position) {    switch (position) {      case 0:        return "holo_blue_bright";      case 1:        return "holo_blue_dark";      case 2:        return "holo_blue_light";      case 3:        return "holo_green_dark";      case 4:        return "holo_green_light";      case 5:        return "holo_orange_dark";      case 6:        return "holo_orange_light";      case 7:        return "holo_purple";      case 8:        return "holo_red_dark";      case 9:        return "holo_red_light";      default:        break;    }    return "";  }  private void selectItem(int position) {    drawerListView.setItemChecked(position, true);  }  //点击事件监听器  private class DrawerItemClickListener implements      ListView.OnItemClickListener {    @Override    public void onItemClick(AdapterView<?> parent, View view, int position,                long id) {      if ((position != 0) && (position != 12) && (position != 21)          && (position != 27)) {        selectItem(position);      } else {        selectItem(lastPosition);      }    }  }}

MainActivity
创建PreviewView类继承View
package ch.halcyon.squareprogressbar.example;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Paint.Align;import android.graphics.Paint.Style;import android.graphics.Path;import android.util.AttributeSet;import android.view.View;public class PreviewView extends View {  private final Paint paintPaint;  //中心对齐  private Align center = Align.CENTER;  private float size = 150;  private boolean b = true;  //预览视图  public PreviewView(Context context) {    super(context);    paintPaint = new Paint();    paintPaint.setColor(context.getResources().getColor(        android.R.color.black));    paintPaint.setAntiAlias(true);    paintPaint.setStyle(Style.STROKE);  }  public PreviewView(Context context, AttributeSet attrs, int defStyle) {    super(context, attrs, defStyle);    paintPaint = new Paint();    paintPaint.setColor(context.getResources().getColor(        android.R.color.black));    paintPaint.setAntiAlias(true);    paintPaint.setStyle(Style.STROKE);  }  public PreviewView(Context context, AttributeSet attrs) {    super(context, attrs);    paintPaint = new Paint();    paintPaint.setColor(context.getResources().getColor(        android.R.color.black));    paintPaint.setAntiAlias(true);    paintPaint.setStyle(Style.STROKE);  }  @Override  protected void onDraw(Canvas canvas) {    super.onDraw(canvas);    Path path = new Path();    path.moveTo(0, 0);    path.lineTo(0, canvas.getWidth());    path.lineTo(canvas.getHeight(), canvas.getWidth());    path.lineTo(canvas.getHeight(), 0);    path.lineTo(0, 0);    canvas.drawPath(path, paintPaint);    paintPaint.setTextAlign(center);    paintPaint.setTextSize(Float.valueOf(String.valueOf(size)));    canvas.drawText(b ? "32%" : "32", canvas.getWidth() / 2, (int) ((canvas        .getHeight() / 2) - ((paintPaint.descent() + paintPaint        .ascent()) / 2)), paintPaint);  }  public void drawText(int size, Align center, boolean b) {    this.size = size;    this.center = center;    this.b = b;    this.invalidate();  }}

PreviewView
创建SquareFragment类继承Fragment
package ch.halcyon.squareprogressbar.example;import ch.halcyon.squareprogressbar.SquareProgressBar;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class SquareFragment extends Fragment {  public SquareProgressBar squareProgressBar;  @Override  public View onCreateView(LayoutInflater inflater, ViewGroup container,      Bundle savedInstanceState) {    View view = inflater.inflate(ch.halcyon.squareprogressbar.example.R.layout.square_layout, container, false);    squareProgressBar = (SquareProgressBar) view.findViewById(ch.halcyon.squareprogressbar.example.R.id.subi2);    squareProgressBar.setImage(ch.halcyon.squareprogressbar.example.R.drawable.blenheim_palece);    squareProgressBar.setColor("#C9C9C9");    squareProgressBar.setProgress(32);    squareProgressBar.setWidth(8);    final TextView progressView = (TextView) view        .findViewById(ch.halcyon.squareprogressbar.example.R.id.progressDisplay);    progressView.setText("32%");    SeekBar progressSeekBar = (SeekBar) view        .findViewById(ch.halcyon.squareprogressbar.example.R.id.progressSeekBar);    progressSeekBar        .setOnSeekBarChangeListener(new OnSeekBarChangeListener() {          @Override          public void onStopTrackingTouch(SeekBar seekBar) {            // nothing to do          }          @Override          public void onStartTrackingTouch(SeekBar seekBar) {            // nothing to do          }          @Override          public void onProgressChanged(SeekBar seekBar,              int progress, boolean fromUser) {            squareProgressBar.setProgress(progress);            progressView.setText(progress + "%");          }        });    SeekBar widthSeekBar = (SeekBar) view.findViewById(ch.halcyon.squareprogressbar.example.R.id.widthSeekBar);    widthSeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {      @Override      public void onStopTrackingTouch(SeekBar seekBar) {        // nothing to do      }      @Override      public void onStartTrackingTouch(SeekBar seekBar) {        // nothing to do      }      @Override      public void onProgressChanged(SeekBar seekBar, int progress,          boolean fromUser) {        squareProgressBar.setWidth(progress);      }    });    return view;  }}

SquareFragment

创建CustomColourDialog类并且继承Dialog:

package ch.halcyon.squareprogressbar.example.dialogs;import ch.halcyon.squareprogressbar.example.R;import android.app.Dialog;import android.content.Context;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.view.View;import android.view.Window;import android.widget.Button;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.TextView;public class CustomColourDialog extends Dialog {  private final Button saveButton;  private SeekBar rSeekBar;  private SeekBar gSeekBar;  private SeekBar bSeekBar;  private int choosenRGB;  public CustomColourDialog(final Context context) {    super(context);    //舍去标题    requestWindowFeature(Window.FEATURE_NO_TITLE);    this.setContentView(R.layout.customcolourdialog);    this.setCancelable(false);    Button closeButton = (Button) this        .findViewById(R.id.returnColourDialog);    closeButton.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        dismiss();      }    });    saveButton = (Button) this.findViewById(R.id.shareColourDialog);    rSeekBar = (SeekBar) findViewById(R.id.rSeekBar);    rSeekBar.setMax(255);    rSeekBar.setProgress(111);    rSeekBar.setOnSeekBarChangeListener(rgbOnSeekBarListener());    gSeekBar = (SeekBar) findViewById(R.id.gSeekBar);    gSeekBar.setMax(255);    gSeekBar.setProgress(111);    gSeekBar.setOnSeekBarChangeListener(rgbOnSeekBarListener());    bSeekBar = (SeekBar) findViewById(R.id.bSeekBar);    bSeekBar.setMax(255);    bSeekBar.setProgress(111);    bSeekBar.setOnSeekBarChangeListener(rgbOnSeekBarListener());    calculateRGB();      }  private OnSeekBarChangeListener rgbOnSeekBarListener() {    return new OnSeekBarChangeListener() {      @Override      public void onStopTrackingTouch(SeekBar arg0) {        // nothing to do =)      }      @Override      public void onStartTrackingTouch(SeekBar arg0) {        // nothing to do =)      }      @Override      public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {        calculateRGB();      }    };  }  public Button getSaveButton() {    return saveButton;  }  //计算颜色属性值  private void calculateRGB() {    int r = rSeekBar.getProgress();    int g = gSeekBar.getProgress();    int b = bSeekBar.getProgress();    ((TextView) findViewById(R.id.rgbText)).setText("(" + r + "," + g + ","        + b + ")");    choosenRGB = Color.rgb(r, g, b);    getWindow().setBackgroundDrawable(new ColorDrawable(choosenRGB));  }  /**   * Returns the Color which was chosen in the Dialog.   *   * @return the chosen RGB-colour.   */  public int getChoosenRGB() {    return choosenRGB;  }}

CustomColourDialog
创建PercentDialog类并且继承Dialog:
package ch.halcyon.squareprogressbar.example.dialogs;import ch.halcyon.squareprogressbar.example.PreviewView;import ch.halcyon.squareprogressbar.utils.PercentStyle;import ch.halcyon.squareprogressbar.example.R;import android.app.Dialog;import android.content.Context;import android.graphics.Paint.Align;import android.view.View;import android.view.Window;import android.widget.AdapterView;import android.widget.AdapterView.OnItemSelectedListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.CheckBox;import android.widget.CompoundButton;import android.widget.CompoundButton.OnCheckedChangeListener;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;import android.widget.Spinner;import android.widget.TextView;public class PercentDialog extends Dialog {  private final Spinner spinner;  private final CheckBox box;  private final Button saveButton;  private final SeekBar bar;  private int size;  private final PreviewView previewView;  public PercentDialog(final Context context) {    super(context);    requestWindowFeature(Window.FEATURE_NO_TITLE);    this.setContentView(R.layout.percentdialog);    this.setCancelable(false);    spinner = (Spinner) this.findViewById(R.id.spinner1);    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(        context, R.array.alignstyle,        android.R.layout.simple_spinner_item);    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);    spinner.setAdapter(adapter);    previewView = (PreviewView) findViewById(R.id.previewView1);    spinner.setOnItemSelectedListener(new OnItemSelectedListener() {      @Override      public void onItemSelected(AdapterView<?> arg0, View arg1,          int arg2, long arg3) {        redrawPreview();      }      @Override      public void onNothingSelected(AdapterView<?> arg0) {        // nothing to do =)      }    });    Button closeButton = (Button) this.findViewById(R.id.returnDialog);    closeButton.setOnClickListener(new View.OnClickListener() {      @Override      public void onClick(View v) {        dismiss();      }    });    saveButton = (Button) this.findViewById(R.id.shareDialog);    final TextView progress = (TextView) findViewById(R.id.textView3);    bar = (SeekBar) findViewById(R.id.textSize);    bar.setMax(400);    bar.setProgress(125);    bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {      @Override      public void onStopTrackingTouch(SeekBar arg0) {        // nothing to do =)      }      @Override      public void onStartTrackingTouch(SeekBar arg0) {        // nothing to do =)      }      @Override      public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {        size = arg1;        progress.setText(arg1 + " dp");        redrawPreview();      }    });    box = (CheckBox) this.findViewById(R.id.checkBox1);    box.setOnCheckedChangeListener(new OnCheckedChangeListener() {      @Override      public void onCheckedChanged(CompoundButton buttonView,          boolean isChecked) {        redrawPreview();      }    });  }  public PercentStyle getSettings() {    return new PercentStyle(Align.valueOf((String) spinner        .getSelectedItem()), Float.valueOf(bar.getProgress()),        box.isChecked());  }  public Button getSaveButton() {    return saveButton;  }  private Align returnAlign(int position) {    switch (position) {    case 0:      return Align.CENTER;    case 1:      return Align.RIGHT;    case 2:      return Align.LEFT;    default:      return Align.CENTER;    }  }  private void redrawPreview() {    previewView        .drawText(size, returnAlign(spinner.getSelectedItemPosition()),            box.isChecked());  }  public void setPercentStyle(PercentStyle settings) {    switch (settings.getAlign()) {    case CENTER:      spinner.setSelection(0);      break;    case RIGHT:      spinner.setSelection(1);      break;    case LEFT:      spinner.setSelection(2);      break;    default:      spinner.setSelection(0);      break;    }    bar.setProgress(Math.round(settings.getTextSize()));    box.setChecked(settings.isPercentSign());  }}

PercentDialog