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

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

12.02.2012, 21:15. Просмотров 1195. Ответов 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
http://www.cyberforum.ru/android-dev/thread1253760.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 21:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как научить свой компонент обрабатывать события? (Программирование Android):

Нужна идея. Как научить офиц. приложение Instagram, автоматически, например, комментить фото
Чисто на уровне идей. Как это можно сделать? Как научить офиц. приложение...

Как обрабатывать не только View элементы
ImageView btn1 = (ImageView)findViewById(R.drawable.gorod_cveta_button1); ...

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

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

Как обрабатывать события клавиатуры в терминале?
Доброго времени суток! Постепенно изучаю питон. В процессе изучения часто...

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

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

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

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

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


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

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

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