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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
#1

Размер view по время выполнения - Android

21.08.2013, 16:28. Просмотров 1249. Ответов 6
Метки нет (Все метки)

Здрасте
Создаю класс наследованный от view. В нем рисуют на canvas. Только перед рисованием мне нужно узнать размер view или canvas. Как это сделать?
спс
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
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.Window;
import android.view.WindowManager;
 
public class MainActivity extends Activity{
    GrafView Graf;
    class point{
        public float x,y;
        public point()
        {
            x=y=0;
        }
    }
    
    class GrafView extends View {
        Paint paint;
        int count;
        point dxy = new point();
        point[] arrays_points;
        protected float start_point, end_point,dh;
        private point[] pnt_touch; // массив координат касания
        protected point center = new point();
        public GrafView(Context context) {
            super(context);
            paint = new Paint();
            count=100;
            arrays_points = new point[count];
            pnt_touch = new point[2];
            dxy.x=dxy.y=10;
            paint.setColor(Color.GREEN);
            paint.setStrokeWidth(3);
            start_point=-10; end_point=10;
            Log.d("size", ""+center.x+"  "+center.y);
        }
        
        float func(float i)
        {
            return 4*i+5;
        }
        
        protected void calc_point(Canvas canvas)
        {
            int i=0;
            dh=(end_point-start_point)/count;
            for (float j=start_point;j<end_point-dh;j+=dh,i++)
            {
                point pnt=new point();
                pnt.x=dxy.x*j;
                pnt.y=dxy.y*func(j);    
                arrays_points[i]=pnt;
                //Log.d("my", ""+arrays_points[i].x+"  "+arrays_points[i].y+"   "+i);
            }
        }
        private void onDrawAxis(Canvas canvas)
        {
            Paint line = new Paint();
            line.setColor(Color.BLACK);
            line.setStrokeWidth(2);
            canvas.drawLine(center.x, 0, center.x, canvas.getHeight(), line);
            canvas.drawLine(0, center.y, canvas.getWidth(), center.y, line);
        }
        protected void onDrawPoints(Canvas canvas)
        {
            for (int i=0;i<count-1;i++)
            {
                canvas.drawLine((arrays_points[i].x+center.x), (-arrays_points[i].y+center.y),
                        (arrays_points[i+1].x+center.x), (-arrays_points[i+1].y+center.y), paint);
            }
        }
        
        protected void onDraw(Canvas canvas) {
            canvas.drawRGB(255, 255, 255);
            calc_point(canvas);
            onDrawAxis(canvas);
            onDrawPoints(canvas);
            }
        }
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Graf = new GrafView(this);
            setContentView(Graf);
        }
P.S
В коде у меня это надо для определения центра этой вьюшки или канвы(center.x и center.y)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2013, 16:28     Размер view по время выполнения
Посмотрите здесь:

Ограничить время выполнения HTTP запроса Android
Получение координат View во время анимации Android
Android Время выполнения функции из C++ и из Java
ProgressDialog во время динамического создания View Android
Android Размер шрифта, размер контролов
Android Размер кнопок, не пойму что влияет на их размер
Android Изменить имя ресурса во время выполнения программы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
verylazy
Заблокирован
21.08.2013, 16:54     Размер view по время выполнения #2
myView.getWidth() и myView.gwtHeight(); по идее
а если в методе самой вьюшки надо координаты самой себя то this.getWidth();
или я не понял вопроса
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
22.08.2013, 19:23  [ТС]     Размер view по время выполнения #3
Мне надо узнать размер canvas до рисования на ней(т.е. перед тем как нарисовать на ней). При использовании getHeight() или getWidth() возвращаются 0.
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
22.08.2013, 19:37     Размер view по время выполнения #4
Java
1
2
3
4
5
6
7
8
9
10
11
public class MainActivity extends Activity {
  
    public static int WIDTH_DEVICE;
    public static int HEIGTH_DEVICE;
  @Override
    protected void onCreate(Bundle savedInstanceState) {
        Display display = getWindowManager().getDefaultDisplay();
        WIDTH_DEVICE = display.getWidth();
        HEIGTH_DEVICE = display.getHeight();
     }
}
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
22.08.2013, 19:53  [ТС]     Размер view по время выполнения #5
Конечно спасибо. Но если canvas занимает не весь экран, а только часть?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
22.08.2013, 20:18     Размер view по время выполнения #6
попробуйте getMeasuredHeight/getMeasuredWidth
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2013, 20:50     Размер view по время выполнения
Еще ссылки по теме:

Закрыть диалог во время выполнения процесса (принудительное срабатывание dismiss() Android
Android Тип view
Android Как подгонять размер диалоговых окон по размер экрана?
Basic4Android Как реализовать паузу во время выполнения программы
Android Узнать размер view

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

Или воспользуйтесь поиском по форуму:
strevg
1 / 1 / 0
Регистрация: 24.06.2013
Сообщений: 57
22.08.2013, 20:50  [ТС]     Размер view по время выполнения #7
Пробовал. Тоже 0 возвращает. Может нужно вызывать размер канвы не в onCreate, а в другой процедуре, которая выполняется после onCreate, но перед onDraw()?Только я не знаю, что это за процедура.
Yandex
Объявления
22.08.2013, 20:50     Размер view по время выполнения
Ответ Создать тему
Опции темы

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