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

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

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

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2012, 21:15     Как научить свой компонент обрабатывать события?
Посмотрите здесь:

Как каждому табу в ActionBar прикрепить свой layout, свою activity Android
Как поменять значок проги на свой png? Android
Как обрабатывать не только View элементы Android
Android Нужна идея. Как научить офиц. приложение Instagram, автоматически, например, комментить фото
Android Как получить свой номер телефона из веб риложения
Android Как в Android Studio по нажатию кнопки выводить свой текст в TextView?
Android Написать свой компонент для частого использования в дальнейшем — редактор с двумя кнопками
Android Как обрабатывать ошибки, когда трассировка стека не имеет пакета приложения?
Android Как добавить поддержку видео на YouTube в свой браузер?
Как работает шаблон NavigationDrawer в AndroidStudio, где обрабатывать нажатия на навигационной панели? Android
Как добавить свой шрифт в Android Studio? Android
Android Как поставить свой шрифт в RecycleAdapter

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 08:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru