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

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

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

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

31.08.2013, 11:34. Просмотров 598. Ответов 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);
            
            }
        }   
     }  
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2013, 11:34     Canvas - не могу реализовать отображение графических элементов
Посмотрите здесь:
Как реализовать правильное отображение View элементов? Android
Не могу реализовать TimePickerDialog Android
Не могу реализовать условие Drag and Drop Android
Android Как реализовать выделение элементов таблицы
Canvas Android
вылетает canvas Android
Использование canvas Android
Android canvas Android
Canvas и Activity Android
Canvas и Button Android
Canvas в JPEG Android
Потоки. Canvas Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
31.08.2013, 12:53     Canvas - не могу реализовать отображение графических элементов #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);
            
            }
        }   
     }  
}
Ответ Создать тему
Опции темы

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