Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
1

Отследить положение на экране ползунка из SeekBar

08.10.2013, 10:54. Просмотров 1605. Ответов 10
Метки нет (Все метки)

Подскажите, возможно ли это реализовать. Задача такая: отследить положение ползунка в SeekBar и чуть выше в TextView вывести значение ползунка. Например если значение 0 то и текст сверху будет 0 и вьюха с текстом будет полностью с права над ползунком. Если значение 50, то вьюха будет по центру экрана прямо над полхзунком и т.д. Кто хоть что-т знает отпишитесь пожалуйста. Спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2013, 10:54
Ответы с готовыми решениями:

Положение своей клавиатуры на экране с полем ввода, спрятать клавиатуру
Здравствуйте! Только начала изучать андроид. Пишу свою клавиатуру по образцу...

SeekBar и Arduino
Здравствуйте! Помогите реализовать:при нажатии кнопки происходит передача...

SeekBar thumb
Здравствуйте, я наверноє немного поднадоел со своими елементарними...

Кастомизация SeekBar?
Добрый день! нужно кастомизировать seekbar, знаю (видел) много примеров, но...

Как заблокировать SeekBar?
Хочу использовать SeekBar для того, чтобы отображать выбранный уровень...

10
verylazy
Заблокирован
08.10.2013, 11:03 2
http://developer.android.com/referen...eListener.html
1
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
08.10.2013, 11:08  [ТС] 3
Да, эти методы вызываются при изменении ползунка. Но как мне вытащить текущее положении ползунка относительно экрана, чтобы немного выше самого ползунка написать текст, который будет двигаться вместе с ползунком по экрану?
0
verylazy
Заблокирован
08.10.2013, 11:32 4
Сейчас нет возможности проверить, поэтому гуглил и читал вслепую.
http://developer.android.com/reference/android/widget/AbsSeekBar.html
у которого есть
public Drawable getThumb ()
Added in API level 16
Return the drawable used to represent the scroll thumb - the component that the user can drag back and forth indicating the current value by its position.
Returns
The current thumb drawable
печалька, только с API 16

И еще нашел вот такую тему http://stackoverflow.com/questions/9...-seekbar-thumb
1
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
08.10.2013, 15:41  [ТС] 5
verylazy, спасибо большое. Попробую разобраться.

Добавлено через 3 часа 16 минут
Там полная жесть ) Ничего не понятно

Добавлено через 9 минут
Java
1
2
x = myMethodToSetXPosition();
y = myMethodToSetYPosition();
там в коде остались не определены 2 метода.... как их реализовать?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.10.2013, 16:30 6
где?
0
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
08.10.2013, 18:04  [ТС] 7
http://stackoverflow.com/questions/9...-seekbar-thumb - вот это я разобрать пытаюсь
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.10.2013, 18:06 8
ссылка битая
1
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
09.10.2013, 12:53  [ТС] 9
http://stackoverflow.com/questions/9...-seekbar-thumb
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.10.2013, 13:45 10
берете ширину SeekBar'а, умножаете на его прогресс в процентах и получаете положение ползунка относительно левого края SeekBar'а.
1
kpoxaa
74 / 35 / 1
Регистрация: 03.08.2012
Сообщений: 447
13.10.2013, 13:24  [ТС] 11
Давайте с малого начнем... не могу понять как запустить хотя бы любое отображение, просто канвасом на активити. Вот проект, я тут уже по всякому мучался. V0v1k, если у вас есть пару минуток, гляньте пожалуйста.

Главная активити:

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
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
 
public class MainActivity extends Activity
{
    SeekBarWithText seekBarWithText;
 
    
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        
        seekBarWithText = new SeekBarWithText(this);
        seekBarWithText.findViewById(R.id.seekBar2);
        
        
        seekBarWithText.setOnSeekBarChangeListener(new OnSeekBarChangeListener() 
        {
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) 
            {
                seekBarWithText.setOverlayText("Hello");
            }
            
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) 
            {
                seekBarWithText.setOverlayText("Hello");
                
            }
            
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) 
            {
                seekBarWithText.setOverlayText("Hello");
            }
        });
}

class SeekBarWithText

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import android.widget.SeekBar;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.Align;
import android.graphics.Typeface;
 
public class SeekBarWithText extends SeekBar 
{
      private static final int textMargin = 6;
      private final int leftPlusRightTextMargins = textMargin + textMargin;
      private static final int maxFontSize = 18;
      private static final int minFontSize = 10;
 
      protected String overlayText;
      protected Paint textPaint;
 
      public SeekBarWithText(Context context) 
      {
        super(context);
        Resources resources = getResources();
 
        //Set up drawn text attributes here
        textPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        textPaint.setTypeface(Typeface.DEFAULT_BOLD);
        textPaint.setTextAlign(Align.LEFT);
      }
 
      //This attempts to ensure that the text fits inside your SeekBar on a resize
      @Override
      protected void onSizeChanged(int w, int h, int oldw, int oldh) 
      {
        super.onSizeChanged(w, h, oldw, oldh);
        
        setFontSmallEnoughToFit(w - leftPlusRightTextMargins);
      }
 
      //Finds the largest text size that will fit
      protected void setFontSmallEnoughToFit(int width) 
      {
        int textSize = 16;
        textPaint.setTextSize(textSize);
        
        while((textPaint.measureText("Hello") > width) && (textSize > 11)) 
        {
          textSize--;
          textPaint.setTextSize(textSize);
        }
      }
 
      //Clients use this to change the displayed text
      public void setOverlayText(String text) 
      {
        this.overlayText = text;
        invalidate();
      }
 
      //Draws the text onto the SeekBar
      @Override
      protected synchronized void onDraw(Canvas canvas) 
      {
        //Draw everything else (i.e., the usual SeekBar) first
        super.onDraw(canvas);
 
        //No text, no problem
        if(overlayText.length() == 0) 
        {
          return;
        }
 
        canvas.save();
 
        //Here are a few parameters that could be useful in calculating where to put the text
        int width = this.getWidth() - leftPlusRightTextMargins;
        int height = this.getHeight();
 
        //A somewhat fat finger takes up about seven digits of space 
        // on each side of the thumb; YFMV
        int fatFingerThumbHangover = (int) textPaint.measureText("1234567");
 
        float textWidth = textPaint.measureText(overlayText);
 
        int progress = this.getProgress();
        int maxProgress = this.getMax();
        double percentProgress = (double) progress / (double) maxProgress;
        int textHeight = (int) (Math.abs(textPaint.ascent()) + textPaint.descent() + 1);
 
        int thumbOffset = this.getThumbOffset();
 
        //These are measured from the point textMargin in from the left of the SeekBarWithText view.
        int middleOfThumbControl = (int) ((double) width * percentProgress); 
        int spaceToLeftOfFatFinger = middleOfThumbControl - fatFingerThumbHangover;
        int spaceToRightOfFatFinger = (width - middleOfThumbControl) - fatFingerThumbHangover; 
 
        int spaceToLeftOfThumbControl = middleOfThumbControl - thumbOffset;
        int spaceToRightOfThumbControl = (width - middleOfThumbControl) - thumbOffset; 
 
        int bottomPadding = this.getPaddingBottom();
        int topPadding = this.getPaddingTop();
 
        //Here you will use the above and possibly other information to decide where you would 
        // like to draw the text.  One policy might be to draw it on the extreme right when the thumb
        // is left of center, and on the extreme left when the thumb is right of center.  These
        // methods will receive any parameters from the above calculations that you need to
        // implement your own policy.
        //x = myMethodToSetXPosition();
        //y = myMethodToSetYPosition();
 
        //Finally, just draw the text on top of the SeekBar
        //canvas.drawText(overlayText, 13, 13, textPaint);
 
        canvas.restore();
      }
}
0
Вложения
Тип файла: rar Canvas+SeekBar.rar (1.18 Мб, 3 просмотров)
13.10.2013, 13:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 13:24

Android и SeekBar OnSeekBarChangeListener
Здорова товарищи у меня на форме есть несколько TextView, EditText и есть...

Можно ли задать положение ползунка прокрутки в ScrollBar при нажатии кнопки
Здравствуйте, можете ли подсказать возможно ли задать положение полосы...

Как отследить положение объекта
Дорогие и многоуважаемые, Работаю с формами Windows Forms. Нужно: двигать...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru