Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
alexbec-2012
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 83
#1

Перемещение иконки по клику

23.03.2014, 08:51. Просмотров 1223. Ответов 5
Метки нет (Все метки)

как переместить иконку по клику?
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
package com.example.jjj;
 
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
 
 
public class GameView extends SurfaceView {
    private Bitmap bmp;
    private SurfaceHolder holder;
    private int x = 150;
    private int y = 300;
    public GameView(Context context) {
        super(context);
        holder = getHolder();
        holder.addCallback(new SurfaceHolder.Callback() {
            public void surfaceDestroyed(SurfaceHolder holder) {
            }
            @SuppressLint("WrongCall")
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                Canvas c = holder.lockCanvas(null);
                onDraw(c);
                holder.unlockCanvasAndPost(c);
            }
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            }
        });
        bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    }
    protected void onDraw(Canvas canvas) {
        canvas.drawColor(Color.BLACK);
        canvas.drawBitmap(bmp, x, y, null);   
    } 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2014, 08:51
Ответы с готовыми решениями:

Смена иконки в трее по клику
Доброго времени суток! Подскажите пожалуйста как по нажатии на button1...

Image (writeablebitmap) перемещение по нему иконки
Пзравствуйте уважаемые прогеры точканетовцы Пожалуйста помогите возникла...

Перемещение элементов на заданные координаты по клику
Есть картинка , после какого-то события нужно что бы она была на заданных мною...

Перемещение тела в GraphABC по клику мыши
Имеется персонаж, который перемещается по клику правой кнопки мыши. При...

Отключить перемещение Itemindex по клику в Listview
Всем Привет...и Собственно нужно пояснение как можно реализовать...(заголовок...

5
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
23.03.2014, 12:06 #2
1) обработать нажатие пальца - OnTouch. Нажатие, движение, отпускание
2) поймать если палец нажали на иконке, а не рядом
3) перерисовывать при движении.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public class GameView extends SurfaceView implements View.OnTouchListener {
...
    @Override
    public boolean onTouchEvent(MotionEvent event) {
// ИЛИ ЗДЕСЬ ЛОВИМ ДВИЖЕНИЕ        
        return true;
    }
 
    @Override
    public boolean onTouch(View v, MotionEvent event) {
// ИЛИ ЗДЕСЬ ЛОВИМ ДВИЖЕНИЕ        
        return true;
    }
поищити среди недавних сообщений форума... что-то подобное уже было недавно!
1
alexbec-2012
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 83
23.03.2014, 13:22  [ТС] #3
Вообще не могу срастить
Дописал public boolean onTouch(View v, MotionEvent event) что при нажатии изменить x y но ничего не поменялось(
Мне надо чтоб при нажатии из координат 300 150 иконка переместилась в 10 15
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
package com.example.jjj;
 
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
 
 
public class GameView extends SurfaceView implements View.OnTouchListener {
    private Bitmap bmp;
    private SurfaceHolder holder;
    private int x = 150;
    private int y = 300;
    public GameView(Context context) {
        super(context);
        holder = getHolder();
        holder.addCallback(new SurfaceHolder.Callback() {
            public void surfaceDestroyed(SurfaceHolder holder) {
            }
            @SuppressLint("WrongCall")
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                Canvas c = holder.lockCanvas(null);
                onDraw(c);
                holder.unlockCanvasAndPost(c);
            }
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            }
        });
        bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    }
 
    public void onDraw(Canvas canvas) {
 
        canvas.drawColor(Color.BLACK);
        canvas.drawBitmap(bmp, x, y, null);   
    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: 
            x = 10;
            y = 15;
            break;
        }
        return true;
    }
}
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
23.03.2014, 14:49 #4
Вы установили переменные. Теперь надо их ПЕРЕРИСОВАТЬ после изменения! Dозможно так
Java
1
2
3
4
5
6
x = 10;
y = 15;
Canvas c = holder.lockCanvas(null);
onDraw(c);
holder.unlockCanvasAndPost(c);
break;
1
alexbec-2012
0 / 0 / 0
Регистрация: 27.05.2013
Сообщений: 83
23.03.2014, 15:03  [ТС] #5
изменил но все ровно не работает(
Где ошибка? после клика по экрану не чего не происходит(
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.jjj;
 
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
 
public class GameView extends SurfaceView implements View.OnTouchListener {
    private Bitmap bmp;
    private SurfaceHolder holder;
    private int x = 150;
    private int y = 300;
    public GameView(Context context) {
        super(context);
        holder = getHolder();
        holder.addCallback(new SurfaceHolder.Callback() {
            public void surfaceDestroyed(SurfaceHolder holder) {
            }
            @SuppressLint("WrongCall")
            @Override
            public void surfaceCreated(SurfaceHolder holder) {
                Canvas c = holder.lockCanvas(null);
                onDraw(c);
                holder.unlockCanvasAndPost(c);
            }
            @Override
            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            }
        });
        bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
    }
    public void onDraw(Canvas canvas) {
        canvas.drawColor(Color.BLACK);
        canvas.drawBitmap(bmp, x, y, null);   
    }
    @SuppressLint("WrongCall")
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN: 
            x = 10;
            y = 15;
            Canvas c = holder.lockCanvas(null);
            onDraw(c);
            holder.unlockCanvasAndPost(c);
            break;
        }
        return true;
    }
}
0
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
24.03.2014, 02:00 #6
Странно! внешне должно работать...
у меня все немножко по другому!

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    public GameView (Context context) {
        super(context);
!!!        setOnTouchListener(this); // без этого клики не обрабатываются!
        surfaceHolder.addCallback(this);
 
    }
 
Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
}
 
    @Override
    public void run() {
        canvas = surfaceHolder.lockCanvas();
        render(canvas);//это сам рисовальщик картинки
        surfaceHolder.unlockCanvasAndPost(canvas);
    }
0
24.03.2014, 02:00
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 02:00

перемещение по инпутам по клику, застрял, дайте совет
задача, есть кол-во инпутов, нужно по нажатию кнопки по ним перемещаться. ...

Как сделать перемещение формы по клику левой кнопки мыши на задний фон приложения?
Как сделать перемещение формы по клику левой кнопки мыши на задний фон...

Появление элемента по клику на кнопку и скрытие элемента по клику на любое место body
Задача стоит такая. Нужно сделать так, чтобы по клику на button class="helper"...


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

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

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