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

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

Войти
Регистрация
Восстановить пароль
 
Роmaн
0 / 0 / 0
Регистрация: 31.08.2013
Сообщений: 8
#1

Canvas - не могу реализовать отображение графических элементов - Программирование Android

31.08.2013, 11:34. Просмотров 606. Ответов 1
Метки нет (Все метки)

Все привет! Некоторое время программировал на AS3, решил освоить программирование на Андроиде на примере игры Морской Бой, столкнулся с проблемой непонимания механизма отображения графики, теорию перечитывал, все равно непонятно. Имеется основная Активити
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
package com.example.smallgame;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MotionEvent;
import android.widget.TableLayout;
import android.widget.Toast;
 
public class RunActivity extends Activity
{
    private TableLayout layout;
    private FieldView fieldview ;
    private EnemyField eField;
    int xs;
    int ys;
    String selX;
    String selY;
     
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        
        super.onCreate(savedInstanceState);
        fieldview = new FieldView(this);
       
        setContentView(R.layout.activity_small_start);
        layout=(TableLayout)findViewById(R.id.enemy_layout);
        layout.addView(fieldview);
        eField=new EnemyField();   // класс логики расстановки вражеских кораблей, получаем массив   
    
    } 
   
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        int s=0;
           if (event.getAction() != MotionEvent.ACTION_DOWN)
                  return super.onTouchEvent(event);
               xs=(int) event.getX();
               ys=(int) event.getY();
               xs=(int) xs/33;
               ys=(int) ys/33;
            s=EnemyField.ToNumber(xs,ys);
            s=eField.getmField()[s][0]; // считывание значения из массива расстановки врага
            selX=String.valueOf(s);        
                    
            Toast toast = Toast.makeText(getApplicationContext(),selX ,Toast.LENGTH_SHORT); 
            toast.setGravity(Gravity.CENTER, 0, 0);
            toast.show(); // вместо сообщения в координатах xs, ys необходимо отображать графический файлик 
                                   // из ресурсов.
 
            return true;
    }
    
  
}
Собственно, вместо сообщения Toast необходимо обращение к отображению графики с возможностью выбора произвольной картинки, типа ....класс отображения (имя картинки, координата x, координата y)
Собственно класс с 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
package com.example.smallgame;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.View;
 
public class FieldView extends View {
 
    public FieldView(Context context) {
        super(context);     
    }   
    @Override
    protected void onDraw (Canvas canvas) {
    
        Bitmap myBitmap;
 
        for (int i=0;i<10;i++){
            for (int j=0;j<10;j++){
            myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empty);
            canvas.drawBitmap(myBitmap, 33 * i, 33*j, null);
            
            }
        }   
     }  
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 11:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Canvas - не могу реализовать отображение графических элементов (Программирование Android):

Как реализовать правильное отображение View элементов? - Программирование Android
Здравствуйте! Хочу реализовать что-то похожее, но не пойму как добиться того, чтоб иконка справа отображалась в свой реальный размер, а...

отображение графических примитивов - C++
не подскажите как нарисовать круг, треугольник и домик. Ищу в интернете не как не могу найти(

Отображение графических примитивов - C++ Builder
не подскажите как нарисовать круг, треугольник и домик. Ищу в интернете не как не могу найти(

Отображение на странице графических файлов формата .cgm - HTML, CSS
Как отобразить на веб странице графический файл с расширнием .cgm ?

Отображение и удаление графических примитивов, программа - индикатор нагрузки - C++ Builder
Подскажите как мне быть. Есть индикатор нагрузки на пямять. Вот текст программы. Программа считает процент нагрузки, если больше 10%...

Отображение графических объектов с учетом диффузной модели освещения - VBA
Разработка математического и алгоритмического обеспечения для отображения графических объектов с учетом диффузной модели освещения

1
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
31.08.2013, 12:53 #2
Java
1
setContentView(R.layout.activity_small_start);
заменить на
Java
1
setContentView(layout);
так же в прорисовке бессмысленно создаете много раз один о тот же битмап

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class FieldView extends View {
 
    private Bitmap myBitmap;
    public FieldView(Context context) {
        super(context);  
        myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.empty);   
    }   
    @Override
    protected void onDraw (Canvas canvas) {
 
        for (int i=0;i<10;i++){
            for (int j=0;j<10;j++){
            
            canvas.drawBitmap(myBitmap, 33 * i, 33*j, null);
            
            }
        }   
     }  
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2013, 12:53
Привет! Вот еще темы с ответами:

Отображение графиков в Canvas - C# WPF
Доброго времени суток, я снова вернулся сюда по вопросам адекватного отображения рисунков в своих программах. Теперь, когда проблема с...

Считывание из файла и отображение в Canvas - C++ Builder
Столкнулся с проблемой, когда вывожу данные из файла, то вместо 0 считывает 4 и к любому символу будь то 5 или любой другой добавляется 4. ...

Реализовать стеганографическое сокрытие информации в графических файлах формата BMP - Программирование
Как реализовать стеганографическое сокрытие информации в графических файлах формата BMP. Или в других форматах TIFF, GIF, PNG.

Canvas - не знаю как реализовать - Delphi
Добрый день. Помогите пожалуйста по следующим вопросам. 1. Не знаю как реализовать отмену последних действий при работе с...


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

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

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