zoukankan      html  css  js  c++  java
  • Android之图片窗口和大小调节

    结构图:
    基类:
    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
    不努力,还要青春干什么?
  • 相关阅读:
    Codeforces Round #581 div.2 A,B,C
    19年牛客多校第十场记录
    tarjan 学习笔记
    POJ 3177 Redundant Paths (tarjan无向图求缩点)
    hdu 4738 Caocao's Bridges (tarjan求桥)
    hdu 1540 Tunnel Warfare (线段树维护一维联通区间)
    遍历 redis 数据库
    非web 的 java程序 打成jar包 在linux上运行
    java-疑问-远程连接linux服务器找不到文件路径
    java-查询图片url导出到本地
  • 原文地址:https://www.cnblogs.com/caidupingblogs/p/5053373.html
Copyright © 2011-2022 走看看