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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Pho3nix
0 / 0 / 0
Регистрация: 16.12.2010
Сообщений: 16
#1

Как научить свой компонент обрабатывать события? - Программирование Android

12.02.2012, 21:15. Просмотров 1170. Ответов 0
Метки нет (Все метки)

Код компонента:

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
package my.component;
 
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.View;
 
public class myButton extends View{
    private Bitmap bitmap = null;   
    public myButton(Context context){
        super(context);
        bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.slimeb11);
    }
    
    
 
    @Override 
          public boolean onTouchEvent(MotionEvent event) 
         { 
              
              //Float X=(Float)event.getX(); 
              //Float Y=(Float)event.getY(); 
            int Action=event.getAction(); 
                     
            switch(Action) 
             { 
                case MotionEvent.ACTION_DOWN: 
                    bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.slimeb);
                    invalidate();
                    break;
                    
                case MotionEvent.ACTION_MOVE: break; 
                
                case MotionEvent.ACTION_UP:
                bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.slimeb11);
                invalidate();
                break; 
                
             }
           
            return true;
             } 
 
    
    @Override
    protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec){
        setMeasuredDimension(130, 120);
        //setBackgroundColor(Color.BLUE);
    }
    
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        
        if (bitmap != null) canvas.drawBitmap(bitmap, 0, 0, null);
    }
 
}
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
По сути - это изображение, которое меняется при нажатии на него.. В основном классе создаю объект с типом myButton, и задаю onClickListener:
package my.component;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.Toast;
 
public class CustomComponentActivity extends Activity implements OnClickListener{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        LinearLayout ll = new LinearLayout(this);
        LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);
        ll.setOrientation(LinearLayout.HORIZONTAL);
 
        
        myButton myBtn = new myButton(this);
        LayoutParams pb = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
        myBtn.setId(111);
        myBtn.setOnClickListener(this);
        
        ll.addView(myBtn, pb);
        setContentView(ll,lp);
    }
 
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()){
        case 111:
            Toast.makeText(this, "ololo", 1000).show();
            break;
        }
        
    }
}
Toast не срабатывает. Подскажите что нужно сделать? Статическим делать не хочу компонент - их будет несколько таких и на каждый нужно свою обработку onClick`a

Добавлено через 6 минут
Разобрался сам) Нужно использовать в основном классе не OnClickListener а OnTouchListener.. Соответственно обработчик будет OnTouch
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 21:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как научить свой компонент обрабатывать события? (Программирование Android):

Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками - Программирование Android
Нужно написать свой компонент для частого использования в дальнейшем - редактор с двумя кнопками и одной текстовой строкой описания....

Нужна идея. Как научить офиц. приложение Instagram, автоматически, например, комментить фото - Программирование Android
Чисто на уровне идей. Как это можно сделать? Как научить офиц. приложение Instagram, автоматически(по какому-нибудь событию - как вариант...

Как обрабатывать не только View элементы - Программирование Android
ImageView btn1 = (ImageView)findViewById(R.drawable.gorod_cveta_button1); final Animation anim1 =...

Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения? - Программирование Android
Например вот: java.lang.NullPointerException at...

Как работает шаблон NavigationDrawer в AndroidStudio, где обрабатывать нажатия на навигационной панели? - Программирование Android
Всем здрасьте! Не могу никак понять, где в шаблоне, который генерирует Android Studio, вешать обработки нажатия на соответствующую...

Как обрабатывать события клавиатуры в терминале? - Python
Доброго времени суток! Постепенно изучаю питон. В процессе изучения часто появляется желание писать терминальные игрушки (пишу под линукс),...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2012, 21:15
Привет! Вот еще темы с ответами:

Как обрабатывать события этих кнопок MessageBox - Visual Basic
Доброго всем времени суток!Мои знания VB6 практически нулевые,разбираюсь по самоучителю,консультироваться не с кем,надеюсь только на вашу...

Как перехватывать и обрабатывать события в динамически созданных классах? - C++
Приветствую! Есть много разных классов и много динамически созданных экземпляров каждого из них. И вот в программе происходит какое-то...

[WPF] Как обрабатывать события динамически созданных, например, кнопок? - C# WPF
У меня есть DataGrid, и через код по нажатию кнопки "добавить" я добавляю одну кнопку в каждую строку данной таблицы, т.е. нажимаю кнопку...

Как обрабатывать события элементов одной формы через другую? - C#
Возникла такая проблема: У меня имеются 2 формы Form1 и Form2. В Form1 есть элемент combobox, в которое я ввожу данные. Form2 вызывается из...


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

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

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