PdaSeekBarView.java 3.17 KB
package com.huaheng.mobilewms.view;

import android.content.Context;
import android.graphics.Color;
import android.support.constraint.ConstraintLayout;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.SeekBar;

import com.huaheng.mobilewms.R;

public class PdaSeekBarView extends ConstraintLayout {
    final EditText percent;
    final SeekBar sb;
    final Button btLess, btMore, bt0, bt50, bt100;
    boolean beenEdit = false;
    int rate = 1;

    public PdaSeekBarView(Context context) {
        super(context);
        LayoutInflater.from(context).inflate(R.layout.pda_seekbar_view, this);
        this.setBackgroundColor(Color.rgb(255,255,255));

        percent = findViewById(R.id.percent);
        btLess = findViewById(R.id.btLess);
        btMore = findViewById(R.id.btMore);
        bt0 = findViewById(R.id.bt0);
        bt50 = findViewById(R.id.bt50);
        bt100 = findViewById(R.id.bt100);

        sb = findViewById(R.id.seekbar);
        sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                percent.setText(String.valueOf(progress * rate));
                beenEdit = true;
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

        bt0.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                setProgress(0);
            }
        });

        bt50.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                setProgress(50);
            }
        });

        bt100.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                setProgress(100);
            }
        });

        btLess.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int newP = sb.getProgress() - 10;
                setProgress(newP);
            }
        });

        btMore.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                int newP = sb.getProgress() + 10;
                setProgress(newP);
            }
        });
    }

    private void setProgress(int p){
        beenEdit = true;
        if(p<=0){
            sb.setProgress(0, true);
            return;
        }

        if(p>=sb.getMax()){
            sb.setProgress(sb.getMax(), true);
            return;
        }

        sb.setProgress(p, true);
        return;
    }

    public int getPercent(){
        return Integer.parseInt(percent.getText().toString());
    }

    public void setMax(int max){
        if(100 % max != 0){
            throw new RuntimeException("max value error!");
        }
        sb.setMax(max);
        rate = 100 / max;
    }

    public boolean hasBeenEdit(){
        return beenEdit;
    }
}