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

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

12.02.2012, 21:15. Просмотров 1209. Ответов 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
Ответы с готовыми решениями:

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

Нужна идея. Как научить офиц. приложение 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 практически нулевые,разбираюсь по...

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


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

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

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