Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114

Нарисовать график на виджете

28.03.2012, 17:17. Показов 5742. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сопсно стал вопрос как, пытался сделать дедовским способом, создал вью и нарисовал на нем, попытался вставить в main.xml ничего не вышло, соответственно попытался сделать то же саоме в моем классе который наследует класс AppWidgetProvider, так же ничего не вышло, полазил по интернету набрел на блог в котором написано как но куда писать или вставлять его код не известно, может кто-то сталкивался и знает как это можно сделать? Хелп плиз.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.03.2012, 17:17
Ответы с готовыми решениями:

Нарисовать фигуру на виджете
Задача - нарисовать фигуру поверх виджета QTableWidget (а лучше за его сеткой). Знаю, что в интернете много примеров с QPainter, однако в...

Нарисовать флаг, нарисовать график y=ctg x Нарисовать анимацию
Дело таково у меня сейчас практика, где я очень не успиваю сделать все свои задания... Большая просьба кто готов помочь, пишите а кто...

Нарисовать график
Мне нужно нарисовать график определенной функции на интервале. Оси я нарисовал еле как, а вот как сам график я вообще не понимаю, помогите...

13
 Аватар для efirist
2 / 2 / 0
Регистрация: 23.03.2012
Сообщений: 20
28.03.2012, 22:30
непонятно подвижный ли график. или это изоображение в виде графика :/.....
1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
28.03.2012, 22:56  [ТС]
Цитата Сообщение от efirist Посмотреть сообщение
непонятно подвижный ли график. или это изоображение в виде графика :/.....
График в движении, он будет рисоваться в зависимости от подающихся данных с удаленного сервера.
0
 Аватар для efirist
2 / 2 / 0
Регистрация: 23.03.2012
Сообщений: 20
29.03.2012, 00:02
пользуй SurfaceView в сети есть примеры.Немного низкоуровнености но зато будут полноценные графики с желаемой задержкой кадров(как в GameCanvas в j2me)
0
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
29.03.2012, 00:05  [ТС]
Цитата Сообщение от efirist Посмотреть сообщение
пользуй SurfaceView в сети есть примеры.Немного низкоуровнености но зато будут полноценные графики с желаемой задержкой кадров(как в GameCanvas в j2me)
Как бы выразиться что бы не оскробить? Я уже написал что я пытался так сделать, но оно не работает таким способом, нужно что-то другое. И так для справки, я писал уроки по созданию игры и написал две игры, у меня опыт в разработке есть.
0
 Аватар для Bes-s
31 / 31 / 0
Регистрация: 05.11.2011
Сообщений: 178
29.03.2012, 18:14
эм... а можно код вашего view? гляну, мож подскажу чтот, у меня почти все реализованно через кастомные view.
1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
29.03.2012, 18:35  [ТС]
Цитата Сообщение от Bes-s Посмотреть сообщение
эм... а можно код вашего view? гляну, мож подскажу чтот, у меня почти все реализованно через кастомные view.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ViewS extends View {
      private Bitmap bmp;
       Paint paint;
      public ViewS (Context context) {
            super(context);
             paint = new Paint();
 
        paint.setFlags(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);
      }
      @Override
      protected void onDraw(Canvas canvas) {
          canvas.drawColor(Color.BLACK);
          canvas.drawLine(0, 0, 128, 128, paint);
      }
}
UPD:
Пытался сделать по другому, не рисуя на вью и на сюрфейсах, просто взять и намалевать на imageView:
Создал отдельный класс малевания:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Graph {
    public Bitmap getBitmap() {
        Bitmap bitmap = Bitmap.createBitmap(128, 128, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
 
        canvas.drawColor(Color.WHITE);
 
        Paint paint = new Paint();
 
        paint.setFlags(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);
        canvas.drawLine(0, 0, 128, 128, paint);
        return bitmap;
    }
}
Прописал имаджВьью
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/main" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        android:background="@drawable/ic_launcher">
 
    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />
 
</RelativeLayout>
Вставил вызов класса рисования в главный класс:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class MainActivity extends AppWidgetProvider {
    public Bitmap bitmap;
     
    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        RemoteViews rViews = new RemoteViews(context.getPackageName(), R.layout.main);
 
        Graph graph = new Graph();
        rViews.setImageViewBitmap(com.w.R.id.imageView1, graph.getBitmap());
 
        appWidgetManager.updateAppWidget(com.w.R.id.imageView1, rViews);
    }
}
И ничего не рисует...
0
 Аватар для Bes-s
31 / 31 / 0
Регистрация: 05.11.2011
Сообщений: 178
29.03.2012, 19:36
как то слишком запутанно...
дам свой рабочий кусок кода. может что то где то принципиально неправильно, зато работает.
в xml:
XML
1
2
3
4
5
6
<com.blablabla.blabla.Graph
            android:id="@+id/graph"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent"
            android:layout_below="@id/downline"
            android:layout_above="@id/buble"/>
в main:
Java
1
2
3
fgGraph=(Graph) findViewById(R.id.graph); //подключаем 
 
fgGraph.reDraw(); //задаем значения для рисования + рисуем.
и сам график:
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
package com.blablabla.blabla;
 
 
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
 
public class Graph extends View
{
    private boolean drawGraph;
    private float w,h, tempX, tempY;
    
    public Graph(Context context, AttributeSet attrs) //сетается при создании View 
    {
        super(context, attrs);
        Log.i("fgLog", "start!");
        drawGraph=false;
    }
    @Override
    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);
        Log.i("fgLog","drawing");
        w=this.getWidth();
        h=this.getHeight();
        
        Paint p=new Paint();
        p.setStyle(Paint.Style.STROKE);
        p.setStrokeWidth(2);
        p.setFlags(Paint.ANTI_ALIAS_FLAG);
        
        Float part = w/26;
        
        if(drawGraph) //если команда дана - рисуем.
        {
            for(int i=0;i<25;i++)
            {
                canvas.drawLine(part, h/10, part, h, p);
                if(i==0||i==6||i==12||i==18||i==24)
                {
                    p.setColor(0xff000000);
                    canvas.drawLine(part, h/10, part, h, p);
                    p.setColor(0x88000000);
                }
                part+=w/26;
            }
        }
        drawGraph=false;
        Log.i("fgLog","end draw");
    }
    public void reDraw() //внешняя команда на перерисовку
    {
        drawGraph=true;
    }
    
}
2
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
29.03.2012, 19:38  [ТС]
В виджетах такое увы не работает...
Класс AppWidgetProvider не знает такого:
Java
1
graph=(Graph) findViewById(R.id.graph);
0
 Аватар для Bes-s
31 / 31 / 0
Регистрация: 05.11.2011
Сообщений: 178
29.03.2012, 20:14
а черт... в виджетах))


Добавлено через 32 минуты

можно создать программно(не знаю сработает али нет, с виджетами не работал пока)
Java
1
2
3
4
5
paramsR = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
 
Graph fgGraph = new Graph(this.getContext());
fgGraph.setLayoutParams(paramsR);
this.addView(fgGraph);
2
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
30.03.2012, 18:26  [ТС]
Цитата Сообщение от Bes-s Посмотреть сообщение
а черт... в виджетах))


Добавлено через 32 минуты

можно создать программно(не знаю сработает али нет, с виджетами не работал пока)
Java
1
2
3
4
5
paramsR = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
 
Graph fgGraph = new Graph(this.getContext());
fgGraph.setLayoutParams(paramsR);
this.addView(fgGraph);
Не) Не будет работать, опять же этот класс не знает этих всех функций.

Добавлено через 20 часов 39 минут
Даже так не работает ):
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        RemoteViews views = new RemoteViews(context.getApplicationContext().getPackageName(), R.layout.main);  
        
        Paint paint = new Paint();
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.RED);
        paint.setTextSize(16);
        paint.setAntiAlias(true);
        paint.setTypeface(Typeface.MONOSPACE);
        
        Bitmap mybitmap = Bitmap.createBitmap(100, 16, Bitmap.Config.ALPHA_8);
        Canvas c = new Canvas(mybitmap);
        
        c.drawColor(Color.BLACK);
        c.drawText("fdgfdgfdgfdfdfdgGFDFGFDDDDG", 0, 0, paint);
        
        views.setImageViewBitmap(R.id.imageView1, mybitmap);  
    }
1
 Аватар для Bes-s
31 / 31 / 0
Регистрация: 05.11.2011
Сообщений: 178
30.03.2012, 19:41
http://stackoverflow.com/quest... ot-working тут аналогичная проблема, вроде как есть решение для кастомных View...
1
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
30.03.2012, 21:00  [ТС]
Цитата Сообщение от Bes-s Посмотреть сообщение
http://stackoverflow.com/quest... ot-working тут аналогичная проблема, вроде как есть решение для кастомных View...
Ну как я понял он сделал вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
 public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        RemoteViews views = new RemoteViews(context.getApplicationContext().getPackageName(), R.layout.main);  
        
        Chart myView = new Chart(context, null);
        myView.measure(150,150);
        myView.layout(0,0,150,150);
        myView.setDrawingCacheEnabled(true);
        
        Bitmap bitmap=myView.getDrawingCache();
        
        views.setImageViewBitmap(R.id.imageView1, bitmap);
    }

Но у меня все равно не работает.
0
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
14.04.2012, 14:10  [ТС]
http://dajver.blogspot.com/201... droid.html решение
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.04.2012, 14:10
Помогаю со студенческими работами здесь

Нарисовать график
Здравствуйте помогите пожалуйста разобраться где я ошибся графи не рисует. Надо нарисовать график U(psi) e=6.75; q=0.964; ...

Нарисовать график
Пытаюсь нарисовать график. Но в самом начале рисуется не нужная линия. Я понимаю, что это из-за того, что указатель стоит в той точке и...

Нарисовать график
Помогите с задачкой, во время запуска рисуются лишь координатные оси , а сам граик не рисуется, в чем дело, все необходимые библиотеки...

Нарисовать график
Добрый день! Подскажите библиотеку, которая может рисовать интервальный график. Есть данные: x,ymin,ymax.

нарисовать график
дано три массива чиссел которые обозначають длину в мм. x:={0;1,87;3,75;7,5;15;30;45;60;75;90;105;120;135;150} ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru