Панель поиска / слайдер, показывающий перевернутый прогресс в Android - PullRequest
0 голосов
/ 06 мая 2020

Я создал панель поиска с программным подходом c. Я устанавливаю min и max, а затем наSeekBarChange получаю прогресс. Прогресс, который я получаю, (неожиданно) перевернут / инвертирован, например, когда я перемещаю большой палец влево, прогресс увеличивается до максимума, а когда я перемещаю большой палец вправо, прогресс уменьшается до минимума.

Вот мой код:

publi c void setSlider (SliderModel sm) {

    SeekBar sb=null;
    if((sb=(SeekBar) currentFrame.findViewById(sm.getIntid()))!=null){
        ViewGroup parent=(ViewGroup)currentFrame;
        parent.removeView(sb);
    }



    if(sm.getStyle()==2){
        sb=new VerticalSeekBar(this);
    }
    else{
        sb=new SeekBar(this);
    }

    sb.setId(sm.getIntid());



    int type=sm.getStyle();
    int height=sm.getHeight();
    int width=sm.getWidth();
    int temp=0;



    FrameLayout.LayoutParams flp=new FrameLayout.LayoutParams(width,height);
    flp.leftMargin=sm.getLeft();
    flp.topMargin=sm.getTop();

    sb.setLayoutParams(flp);


    String bgcolor=sm.getBackcolor();

    int red=Integer.parseInt(bgcolor.substring(0,3));
    int green=Integer.parseInt(bgcolor.substring(3,6));
    int blue=Integer.parseInt(bgcolor.substring(6,9));

    //sb.setBackgroundColor(Color.rgb(red,green,blue));

    sb.getProgressDrawable().setColorFilter(new PorterDuffColorFilter(Color.rgb(red,green,blue), PorterDuff.Mode.MULTIPLY));


    String fontcolor=sm.getFontcolor();

    red=Integer.parseInt(fontcolor.substring(0,3));
    green=Integer.parseInt(fontcolor.substring(3,6));
    blue=Integer.parseInt(fontcolor.substring(6,9));


    sb.getThumb().setColorFilter(Color.rgb(red,green,blue), PorterDuff.Mode.SRC_IN);    
    //pointer Color



    final String sbid=sm.getId();


    int min=sm.getMin();
    int max=sm.getMax();
    double pos=sm.getPos();

    double diff=max-min;
    final int df=(int)diff;
    double scaled_pos=(((pos-min)/diff)*100);

    Log.d("SCALLED",scaled_pos+"");


    final int mn=min;

    boolean greatr=false;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        sb.setMin(sm.getMin());
        sb.setMax(sm.getMax());
        greatr=true;
        Log.d("SLIDDER","MIN SET!");
        sb.setProgress(sm.getPos());
    }
    else{
        sb.setProgress((int)scaled_pos);
    }

    final boolean finalGreatr = greatr;
    sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {


        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            ProgressChangedEvent pce=new ProgressChangedEvent();
            Message m=new Message();

            m.what=Constants.PROGRESS_CHANGED;

            pce.id=sbid;

            double prog=(mn+(((double)progress/100)*df));



            if (finalGreatr){
                Log.d("Progress",String.valueOf(progress));

                pce.progress=progress;
            }
            else{
                Log.d("Progress",String.valueOf(progress));
                pce.progress=(int)prog;
            }

                    //progress;
            m.obj=pce;
            communicationThread.h.sendMessage(m);


        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

    currentFrame.addView(sb);


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...