Страница 3 из 21

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 07 авг 2012, 15:25
Milker
rezak90 писал(а):так вроде как и ничего сложного что ле... просто повесить на картинку обработчик onClick и в теле метода вызвать другое активити. Но это если нужно слышать щелчек по всей картинке, если же только на отдельной части картинки то это уже проблема (первое что приходит в голову так это разбить картинку на несколько картинок, при том что картинка не сложная) ... как то так.
Картинку, к сожалению разбить сложо. Тем более, что предполагается использовать на разных разрешениях экрана. А вот из onClick можно узнать координату?

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 07 авг 2012, 15:41
rezak90
Milker писал(а):
rezak90 писал(а):так вроде как и ничего сложного что ле... просто повесить на картинку обработчик onClick и в теле метода вызвать другое активити. Но это если нужно слышать щелчек по всей картинке, если же только на отдельной части картинки то это уже проблема (первое что приходит в голову так это разбить картинку на несколько картинок, при том что картинка не сложная) ... как то так.
Картинку, к сожалению разбить сложо. Тем более, что предполагается использовать на разных разрешениях экрана. А вот из onClick можно узнать координату?
Реализуй кастомноую вьюху для изображения и в ней переопредели метод onTouchEvent для определения координат изображения и выводи в лог координаты. Попробуй, должно сработать.

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 07 авг 2012, 18:29
math64
Делай изображение с прозрачным фоном.
Если не кликается на прозрачную часть - всё ОК.
Если кликается - лови onTouchEvent (в производном классе или слушателем). А там
imageView.getDrawable().getTransparentRegion().contains(x, y) - проверяй, тапаешь ли в прозрачный регион.

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 08 авг 2012, 08:33
andev
Milker, дайте скрины как оно примерно должно выглядеть и примерное описание что к чему. Подозреваю, что вам необходимо делать совсем иначе.
Кстати, вы там выше писали, что у вас в активити реализуется один интерфейс, нет никаких проблем реализовать несколько

Код: Выделить всё

public class MainActivity extends Activity implements OnClickListener, OnTouchListener

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 08 авг 2012, 08:36
andev
krjakov, абсолютно неверно, я так понимаю logo.xml это у вас активити-заставка, ее надо реализовать иначе, например, так:

Код: Выделить всё

package somepackage.activity;

import mobi.krona.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class ActivitySplash extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_splash);
		
		Thread splashThread = new Thread() { 
			@Override 
			public void run() { 
				try {
					sleep(500); // задержка
				} catch (InterruptedException e) { 
	                // do nothing 
	            } finally { 
	            	finish(); 
	                Intent i = new Intent();
	                i.setClassName("somepackage", "somepackage.activity.ActivityEnter"); // следующая активити, в вашем случае MAIN.xml
	                startActivity(i); 
	            } 
	        } 
		}; 
		splashThread.start();
	}
}

Блокируя кнопки Ифсл и Home вы нарушаете гайдлайны гугла, вводите пользователя в заблуждение и вообще сеете хаос :)

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 18:30
le}{a52rus
Ребят! Прошу прощения за дилетантский вопрос!
Но я что то никак не могу определится с кнопкой Cancel
с ОК все более менее понятно! т.к. имеется готовый образец кода,а вот куда дальше вписывать обработчик Cancel ?,я что то разобратся не смог(((
Не составит у вас труда ткнуть меня носом в правильном направлении)))
Спасибо.

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 19:15
rezak90
le}{a52rus писал(а):Ребят! Прошу прощения за дилетантский вопрос!
Но я что то никак не могу определится с кнопкой Cancel
с ОК все более менее понятно! т.к. имеется готовый образец кода,а вот куда дальше вписывать обработчик Cancel ?,я что то разобратся не смог(((
Не составит у вас труда ткнуть меня носом в правильном направлении)))
Спасибо.
кнопку Cancel делайте аналогично кнопке ОК. Так же создавайте обработчик и передавайте его методу setOnClickListener.

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 19:23
le}{a52rus
rezak90,я дико извиняюсь,не смогли бы вы продолжить код?... 2 дня я его уже "Пилю" что то в лужу сел(((

Код: Выделить всё

package com.example.onclickbuttons;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
 
   TextView tvOut;
   Button btnOk;
   Button btnCancel;
 
   /** Called when the activity is first created. */
   
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 
     // найдем View-элементы
     tvOut = (TextView) findViewById(R.id.tvOut);
     btnOk = (Button) findViewById(R.id.btnOk);
     btnCancel = (Button) findViewById(R.id.btnCancel);
 
     // создаем обработчик нажатия
      OnClickListener oclBtnOk = new OnClickListener() {
       
       public void onClick(View v) {
         // Меняем текст в TextView (tvOut)
         tvOut.setText("Нажата кнопка ОК");
       }
      };
   
     // присвоим обработчик кнопке OK (btnOk)
     btnOk.setOnClickListener(oclBtnOk);
  
 

   }
};

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 19:32
rezak90

Код: Выделить всё

btnCancel = (Button) findViewById(R.id.btnCancel);
     // создаем обработчик нажатия
      OnClickListener oclBtnCancel = new OnClickListener() {
       public void onClick(View v) {
         // Меняем текст в TextView (tvOut)
         tvOut.setText("Нажата кнопка Cancel");
       }
      };
     // присвоим обработчик кнопке Cancel (btnCancel)
     btnOk.setOnClickListener(oclBtnCancel );

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 19:52
le}{a52rus
Выдаёт ошибку...

Код: Выделить всё

package com.example.onclickbuttons;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
 
   TextView tvOut;
   Button btnOk;
   Button btnCancel;
 
   /** Called when the activity is first created. */
   
   public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 
     // найдем View-элементы
     tvOut = (TextView) findViewById(R.id.tvOut);
     btnOk = (Button) findViewById(R.id.btnOk);
     btnCancel = (Button) findViewById(R.id.btnCancel);
 
     // создаем обработчик нажатия
      OnClickListener oclBtnOk = new OnClickListener() {
       
       public void onClick(View v) {
         // Меняем текст в TextView (tvOut)
         tvOut.setText("Нажата кнопка ОК");
       }
      };
   
     // присвоим обработчик кнопке OK (btnOk)
     btnOk.setOnClickListener(oclBtnOk);
  
   }
};// сдесь ошибка Sintax error "}""{" expected
btnCancel = (Button) findViewById(R.id.btnCancel);

// создаем обработчик нажатия

 OnClickListener oclBtnCancel = new OnClickListener() {

 public void onClick(View v) {

 // Меняем текст в TextView (tvOut)

 tvOut.setText("Нажата кнопка Cancel");
 }


 };
// присвоим обработчик кнопке Cancel (btnCancel)

btnOk.setOnClickListener(oclBtnCancel )//  и сдесь ошибка тоже Sintax error


ЗАпарился я что то... Да так что туплю конкретно.

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 19:55
rezak90
ну вы хотя бы вниклись в мой копи-паст код =)
btnOk.setOnClickListener(oclBtnCancel );
поменять на
btnCancel.setOnClickListener(oclBtnCancel );

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 21:07
le}{a52rus
Дружище! а как тогда будет реализовываться кнопка ок? :-)
я так то понял это еще по урокам, что нужно btnOk.setOnClickListener заменить btnCancel...
но тогда обработчика для батнОк не будет!? получается что будет работать только кнопка батнКанцел??
–---------
ребят извините я только начинаю! Это мой первый опыт коддинга, если не считать HTML... но это разные вещи...

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 21:19
rezak90
просто создаёте два разных обработчика, один для кнопки ОК, другой для Cancel.

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 22:23
le}{a52rus
rezak90, попробую завтра, но я просто не пойму куда их вставлять?
эти оба обработчика можно рядом друг с другом ставить?
или же сперва идет один обработчик с его атрибутами а потом уже другой?.... я не смог разобраться в порядке расположения!...
завтра попробую, сейчас нет возможности, комп на работе оставил...
Спасибо!

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 22:54
rezak90
le}{a52rus вам лучше прочитать хотя бы одну книгу по Java если возникают такие вопросы как "порядок расположения" (и даже не обязательно по Jav'e), потому что такого понятия нету. Здесь нужно понять логику кода. Обработчик можно определить в одном месте, а присвоить его кнопке в другом и т.д.

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 16 сен 2012, 23:13
le}{a52rus
rezak90
Спасибо большое за внимание и терпение к таким глупым вопросам с моей стороны:-)
буду пробовать, изучать!
Ковчег тоже не профессионал строил! :-)
Что не скажешь про Титаник...
Вы уже мне во многом приоткрыли глаза! :-)

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 17 сен 2012, 07:36
math64
le}{a52rus: Обращайте внимание на соответствие фигурных скобок
Код вставлен за пределами класса, а нужно во внутрь метода onCreate();

Re: Урок 9. Обработчики событий на примере Button.

Добавлено: 17 сен 2012, 16:52
le}{a52rus
Друзья!,спасибо! Разобрался скомпилил запустил,код работает!! :-)
Всё дело в том что я обработчик создавал в обработчике :-) Естественно он не мог понять что я от него хочу "math64" отчасти был прав! И только после того как я пару раз сегодня перебил этот код то понял где совершаю ошибку!
Спасибо ребят!.
Как говорится! Повторение мать ученья :-)
Приступаю к следующему уроку!

зачем два OnClickListener

Добавлено: 18 сен 2012, 22:36
Quver
в джава знаю есть
if (event.getSource() == item1)

как в андройде сделать проверку..какая кнопка была нажата ?

Re: зачем два OnClickListener

Добавлено: 18 сен 2012, 22:49
AndreyI
Quver писал(а):в джава знаю есть
if (event.getSource() == item1)

как в андройде сделать проверку..какая кнопка была нажата ?
В обработчик нажатия передается объект View из которого можно, к примеру, взять ID нажатой кнопки.

Код: Выделить всё

public void onClickStart(View v) {
if (v.getId()==R.id.item1)...
}