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

Ошибка при нажатии - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Открыть код из Github-а в Android Studio? http://www.cyberforum.ru/android-dev/thread1398266.html
Как открыть код из Github-а навигатора OsmAnd? Вот ссылка на Гит:http://github.com/osmandapp/Osmand Всегда появляются разные ошибки. Помогите компилировать без ошибок в Android Studio или Eclipse.
Программирование Android Не отображается иконка программы Не отображается иконка программы в Android Studio, в Eclipse все отображалось, картинку иконки загрузил (в mipmap), но не отображается иконка в окне в верху справа, в чем же дело? Вот файл манифест <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.contacts.admin.smschat" > <uses-permission... http://www.cyberforum.ru/android-dev/thread1398221.html
Программирование Android Ошибка в Android Studio: "x86 emulation currently requires hardware acceleration"
C:\Users\karr\AppData\Local\Android\sdk\tools\emulator.exe -netdelay none -netspeed full -avd Nexus_S_API_19 emulator: ERROR: x86 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable. CPU acceleration status: HAX kernel module is not installed!
Проблемы с разрешением экрана Программирование Android
Добрый день форумчане давно не заходил на ваш сайт))Рад вашей помощи)) ImageView iv = new ImageView(poisk.this); iv.setBackgroundResource(R.drawable.ic_action); iv.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); я программно хочу добавить картинку в табличку))все получается только с разрешением экрана проблемы)) папка ldpi имеет самый...
Программирование Android Сделать так, что бы прикосновения фиксировались только в определенной зоне http://www.cyberforum.ru/android-dev/thread1398100.html
Здравствуйте товарищи! Есть layout на котором размещена кастомная вьюха(рисовалка) и несколько кнопок. На данный момент если попытаться нарисовать что то на ней когда рука касается(лежит на) дисплея естественно не получится. Возможно ли сделать так, что бы прикосновения экрана фиксировалось только в определенной зоне(собственно только на рисовалке, ну и кнопках), как на рисунке: Что...
Программирование Android Управление фрагментом из активити Добрый день! Имею несколько фрагментов, в которых выполняются некоторые действия, то итогу которых формируется результат. Фрагменты выводятся в одной активити в framelayout. На активити также есть кнопка, по нажатию на которою, хочу, чтобы результат действий в фрагменте записывался в БД. Сейчас у меня смена фрагментов происходит так: public void selectItemTest(Test test){ ... подробнее

Показать сообщение отдельно
Nirfik
0 / 0 / 0
Регистрация: 12.01.2015
Сообщений: 7

Ошибка при нажатии - Программирование Android

18.03.2015, 18:40. Просмотров 316. Ответов 1
Метки (Все метки)

делаю приложение по урокам http://dajver.blogspot.com/2012/01/a...ouchevent.html

GameView.java
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
public class GameView extends SurfaceView{
    private GameManager LoopThread;
    private List<Sprite> sprites = new ArrayList<Sprite>();
    long lastClick = System.currentTimeMillis();
 
 
    public GameView(Context context) {
        super(context);
        LoopThread = new GameManager(this);
        getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                //sprite = new Sprite(GameView.this,bmp);
                sprites.add(createSprite(R.drawable.men1));
                sprites.add(createSprite(R.drawable.women1));
                sprites.add(createSprite(R.drawable.men1));
                sprites.add(createSprite(R.drawable.women1));
                LoopThread.setRunning(true);
                LoopThread.start();
            }
 
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
 
            }
 
            @Override
            public void surfaceDestroyed(SurfaceHolder holder) {
                boolean retry = true;
                LoopThread.setRunning(false);
                while(retry) {
                    try {
                        LoopThread.join();
                        retry = false;
                    } catch (InterruptedException e) {
                    }
                }
            }
        });
    }
 
    private Sprite createSprite(int resouce) {
        Bitmap bmp = BitmapFactory.decodeResource(getResources(), resouce);
        return new Sprite(this,bmp);
    }
 
    protected void onDraw(Canvas canvas){
       canvas.drawColor(Color.BLACK);
        for(Sprite sprite : sprites){
            sprite.onDraw(canvas);
        }
    }
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if(System.currentTimeMillis() - lastClick > 300){
            lastClick = System.currentTimeMillis();
            synchronized (getHolder()){
                for(int i = sprites.size() - 1; i >= 0; i++){
                    Sprite sprite = sprites.get(i);
                    if(sprite.isCollition(event.getX(),event.getY())){
                        sprites.remove(sprite);
                        break;
                    }
                }
            }
        }
 
        return true;
    }
 
 
}
Sprite.java
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
public class Sprite {
    private GameView gameView;
    private Bitmap bmp;
    private int x = 5;
    private int y = 5;
    private int xSpeed = 5;
    private int ySpeed = 5;
    private int currentFrame = 0;
    private int width;
    private int height;
    public static final int BMP_ROWS = 4;
    public static final int BMP_COLUMNS = 3;
 
    public Sprite(GameView gameView, Bitmap bmp){
        this.gameView = gameView;
        this.bmp = bmp;
        this.width = bmp.getWidth() / BMP_COLUMNS;
        this.height = bmp.getHeight() / BMP_ROWS;
 
        Random rnd = new Random();
        xSpeed = rnd.nextInt(10) - 5;
        ySpeed = rnd.nextInt(10) - 5;
        x = rnd.nextInt(gameView.getWidth() - width);
        y = rnd.nextInt(gameView.getHeight() - height);
    }
 
    private void update(){
        if(x > gameView.getWidth() - width - xSpeed || x+xSpeed < 0){
            xSpeed = -xSpeed;
        }
        x += xSpeed;
        if(y > gameView.getHeight() - height - ySpeed || y + ySpeed < 0){
            ySpeed = -ySpeed;
        }
        y += ySpeed;
        currentFrame = ++currentFrame % BMP_COLUMNS;
    }
 
    // animation = 3 up, 1 left, 0 down, 2 right
    int[] DIRECTION_TO_ANIMATION_MAP = { 3, 1, 0, 2 };
    private int getAnimationRow() {
        double dirDouble = (Math.atan2(xSpeed, ySpeed) / (Math.PI / 2) + 2);
        int direction = (int) Math.round(dirDouble) % BMP_ROWS;
        return DIRECTION_TO_ANIMATION_MAP[direction];
    }
 
    public void onDraw(Canvas canvas){
        update();
        int srcX = currentFrame * width;
        int srcY = getAnimationRow() * height;
        Rect src = new Rect(srcX, srcY, srcX + width, srcY + height);
        Rect dst = new Rect(x, y, x + width, y + height);
        canvas.drawBitmap(bmp, src, dst, null);
    }
 
    public boolean isCollition(float x2,float y2){
        return x2 > x && x2 < x + width && y2 > y && y2 < y + height;
    }
}
GameManager.java
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
public class GameManager extends Thread {
    private GameView view;
    private boolean running = false;
    public GameManager(GameView view){
        this.view = view;
    }
    public void setRunning(boolean run){
        running = run;
    }
    public void run(){
        long trickSP = 1000/10;
        long startTime;
        long sleepTime;
 
        while(running){
            Canvas c = null;
            startTime = System.currentTimeMillis();
            try{
                c = view.getHolder().lockCanvas();
                synchronized (view.getHolder()){
                    view.onDraw(c);
                }
            } finally {
                if(c != null){
                    view.getHolder().unlockCanvasAndPost(c);
                }
            }
            sleepTime = trickSP - (System.currentTimeMillis() - startTime);
            try{
                if(sleepTime > 0)
                    sleep(sleepTime);
                else
                    sleep(10);
            }catch (Exception e){}
        }
    }
}
Все хорошо только при нажатии несколько раз вылетает с ошибкой, если не нажить то все норм ошибка только при закрытии.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru