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

Отследить положение на экране ползунка из SeekBar - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android layout_gravity http://www.cyberforum.ru/android-dev/thread971883.html
На горизонтальном LinearLayout не могу разместить два элемента та, чтобы один был выравнен по левой стороне LinearLayout, а второй по правой. Второму элементу прописал android:layout_gravity="right",...
Программирование Android Как обратиться в ресурсах на конкретный элемент массива string-array? Подскажите пожалуйста начинающему как вывести в ListView или TextView один элемент из массива string-array в ресурсах? http://www.cyberforum.ru/android-dev/thread971423.html
Программирование Android Какой по вашему мнению движок 2D - лучший?
Всем привет. Вот решил начать писать игры в 2D на Android, зарегистрировал аккаунт разработчика в Google Play, вот теперь осталось определиться с движком. Остановился на AndEngine и libGDX. Какой из...
Программирование Android Импорт готовой базы в приложение
Нужно использовать в приложении готовую базу, около 22 тыс записей. В голову приходит 2 варианта: 1. Добавить базу в assets и оттуда скопировать ее в приложение (пример как это делать показан вот...
Программирование Android .Возможна ли связь приложений? http://www.cyberforum.ru/android-dev/thread970812.html
Привет, у меня назрел наверное самый глупый вопрос на этом форуме. Но все же. Короче имеется сервер написанный на Delphi, к серверу подключается клиент для получения и обработки информации. Клиент...
Программирование Android Посоветуйте книги, самоучители, видео для обучения программирование под мобильные платформы Имею навык и опыт программирования по паскалю и делфи, закончил 1 курс института и понял, что ко всему придется идти самому. Заинтересовался мобильной разработкой (игры, полезные программы).... подробнее

Показать сообщение отдельно
kpoxaa
72 / 33 / 1
Регистрация: 03.08.2012
Сообщений: 447
13.10.2013, 13:24  [ТС]
Давайте с малого начнем... не могу понять как запустить хотя бы любое отображение, просто канвасом на активити. Вот проект, я тут уже по всякому мучался. 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 просмотров)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru