Форум программистов, компьютерный форум CyberForum.ru

SeekBar - движение по заданным значениям - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
16.01.2014, 15:53     SeekBar - движение по заданным значениям #1
Всем привет.
Не смог найти нормального материала по рботе с SeekBar
Можете подсказать каким образом мне сделать чтобы при движении SeekBar принимал не значение где остановился палец, а прыгал на значение, которое оказывалось ближе, например 25, 50, 75,100

И еще, подскажите свойство виджета (в моем случае этого самого SeekBar) при котором элемент виден на экране, но не активен.

Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2014, 15:53     SeekBar - движение по заданным значениям
Посмотрите здесь:

Android Расположение SeekBar: чтобы картинка на заднем плане была все также растянута по всей высоте и ширине экрана
SeekBar thumb Android
SeekBar встроенный в строку из меню настроек Android
Android Android и SeekBar OnSeekBarChangeListener
Android Отследить положение на экране ползунка из SeekBar
Android Можно ли в SeekBar отставить только ползунок, а рамку убрать?
Установить кастомный thumb на seekBar по цетру Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
16.01.2014, 16:19     SeekBar - движение по заданным значениям #2
Есть же SeekBar.OnSeekBarChangeListener
Следить за значениями в onProgressChanged и самому переставлять на нужную позицию.
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
16.01.2014, 16:29  [ТС]     SeekBar - движение по заданным значениям #3
Цитата Сообщение от Netscape Посмотреть сообщение
Есть же SeekBar.OnSeekBarChangeListener
Следить за значениями в onProgressChanged и самому переставлять на нужную позицию.
Это понятно. Просто мне кроме как вот так втупую написать:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener{
TextView m;
int b = 0;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        final SeekBar see = (SeekBar)findViewById(R.id.seekBar1);
        see.setOnSeekBarChangeListener(this);
        m = (TextView)findViewById(R.id.textView2);
        m.setText("0");
        
    
    }
 
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
 
    @Override
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void onStartTrackingTouch(SeekBar arg0) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void onStopTrackingTouch(SeekBar see) {
        // TODO Auto-generated method stub
        int b = 0;
        int a = see.getProgress();
        if (a > 0 & a<25) { 
            b=25;           
        } {
            if (a > 25 & a< 50) {
                b=50;
            } {
                if (a > 50 & a<75) {
                    b=75;
                } {
                    if (a > 75 & a <100) {
                        b = 100;
                    }
                }
            }
        }
        see.setProgress(b);
        m.setText(String.valueOf(see.getProgress()));
        
    }
 
}
Ничего в голову не пришло, думаю может кто подскажет как лучше сделать, а то мозг совсем уже сварился за день.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
16.01.2014, 17:46     SeekBar - движение по заданным значениям #4
Цитата Сообщение от NOSC Посмотреть сообщение
Ничего в голову не пришло, думаю может кто подскажет как лучше сделать, а то мозг совсем уже сварился за день.
Ну, хз. Простое и очевидное решение.

Можно поковырять https://github.com/karabaralex/android-comboseekbar.

Добавлено через 7 минут
И все же, я сделал бы так:
Java
1
2
3
4
5
6
7
8
9
if (a <= 25) {
    b = 25;
} else if (a > 25 & a <= 50) {
    b = 50;
} else if (a > 50 & a <= 75) {
    b = 75;
} else {
    b = 100;
}
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
17.01.2014, 06:40  [ТС]     SeekBar - движение по заданным значениям #5
Спасибо
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
20.01.2014, 15:20  [ТС]     SeekBar - движение по заданным значениям #6
У меня немного усложнилась задача. Теперь у меня несколько seekbar и не получается правильно поставить слушателей, когда передвигаю второй seekbar - меняется значение первого.
Кто знает что не так в коде?
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
public class MainActivity extends Activity implements SeekBar.OnSeekBarChangeListener {
 
    TextView dl1;
    TextView dl2;
    TextView blsr;
    TextView blsg;
    TextView blsb;
    String url;
    WebView web;
    String chanel;
    String light;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        //Элементы экрана
            //Seekbars
        final SeekBar see = (SeekBar)findViewById(R.id.SeekBar02); //Dot lights #1
        see.setOnSeekBarChangeListener(this);
        see.setMax(255);
        final SeekBar see1 = (SeekBar)findViewById(R.id.SeekBar01); //Dot lights #2
        see1.setOnSeekBarChangeListener(this);
        see1.setMax(255);
        final SeekBar seer = (SeekBar)findViewById(R.id.seekBar1); //Bottom lightning stripe red
        seer.setOnSeekBarChangeListener(this);
        seer.setMax(255);
        final SeekBar seeg = (SeekBar)findViewById(R.id.seekBar2); //Bottom lightning stripe green
        seeg.setOnSeekBarChangeListener(this);
        seeg.setMax(255);
        final SeekBar seeb = (SeekBar)findViewById(R.id.seekBar3); //Bottom lightning stripe blue
        seeb.setOnSeekBarChangeListener(this);
        seeb.setMax(255);
        
        
            //TexViews
        dl1 = (TextView)findViewById(R.id.TextView03);
        dl1.setText("0");
        dl2 = (TextView)findViewById(R.id.TextView01);
        dl2.setText("0");
        blsr = (TextView)findViewById(R.id.textView2);
        blsr.setText("0");
        blsg = (TextView)findViewById(R.id.textView3);
        blsg.setText("0");
        blsb = (TextView)findViewById(R.id.textView4);
        blsb.setText("0");
        
            //ImageViews - кликабельные
        
 
     
       
    }
    
 
    //SeekBars - управление
    @Override
    public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void onStartTrackingTouch(SeekBar arg0) {
        // TODO Auto-generated method stub
 
    }
 
    @Override
    public void onStopTrackingTouch(SeekBar see) {
        // TODO Auto-generated method stub
        int b=0;
        int a = see.getProgress();
        if (a==0) { b=0; } 
        else if (a<=65) {
            b=65;
        } else if (a > 65 & a <= 125) {
            b=125;
        } else if ( a > 125 & a <= 190) {
            b=190;
        } else if ( a > 190) {
            b=255;
        }
        see.setProgress(b);
        chanel = "11";
        light = String.valueOf(b);
            
        dl1.setText(String.valueOf(see.getProgress()));
        web = (WebView)findViewById(R.id.webView1);
        url = ("http://mysite:1300/fadechannel?"+ chanel + "=" + light);
        web.loadUrl(url);
        
    }


Спасибо за помощь!
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
20.01.2014, 15:22     SeekBar - движение по заданным значениям #7
Цитата Сообщение от NOSC Посмотреть сообщение
Кто знает что не так в коде?
Вы всем сикбарам назначаете один и тот же слушатель. Соответственно значения всех сикбаров будет одно и тоже при изменении значения одного из них.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2014, 08:17     SeekBar - движение по заданным значениям
Еще ссылки по теме:

Android Чек большого количества togglebutton при прогрессе seekBar тормозит
Android Как поменять цвет seekBar?
Android SeekBar и Arduino
Создать SeekBar с 2 ползунками для выбора диапазона значений Android
Android Как менять message AlertDialog в зависимости от progress SeekBar?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
NOSC
43 / 43 / 3
Регистрация: 10.10.2013
Сообщений: 297
21.01.2014, 08:17  [ТС]     SeekBar - движение по заданным значениям #8
Цитата Сообщение от Netscape Посмотреть сообщение
Вы всем сикбарам назначаете один и тот же слушатель.
Верно, исправился - спасибо за подсказку.
Yandex
Объявления
21.01.2014, 08:17     SeekBar - движение по заданным значениям
Ответ Создать тему
Опции темы

Текущее время: 15:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru