Переопределить домашнюю и обратную кнопку – это случай, когда логическое значение true
Мне было интересно, могу ли я переопределить действие задней и домашней кнопки в некоторых случаях. Обычно эти кнопки должны просто реагировать так, как они всегда, но в случае, когда какая-то настройка верна, я хочу переопределить кнопки и позволить им вызывать мои собственные методы.
Я использую эти два метода для переопределения этих кнопок:
@Override public void onBackPressed() { // call my backbutton pressed method when boolean==true } @Override public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); // call my homebutton pressed method when boolean==true }
- Изменить текст и действие кнопки - разработка Android-приложений
- Как активировать кнопку «Поделиться» в приложении Android?
- Обнаружить кнопку средней кнопки (кнопка прокрутки) с помощью jQuery
- Кнопка раунда в Android
- Android: как программно обновить селектор (StateListDrawable)
- Как установить / изменить / удалить стиль фокусировки на кнопке в C #?
- Как обращаться с кнопкой «Назад» в диалоговом окне?
- Как пропустить проверку при нажатии на определенную кнопку?
- Получить цвет фона кнопки в android
- Как вы полностью удаляете границу кнопки в wpf?
- Как установить конкретный шрифт для текста кнопки в android?
- Как установить непрозрачность (альфа) для просмотра в Android
- Android - граница для кнопки
Мне было интересно, могу ли я переопределить действие задней и домашней кнопки в некоторых случаях.
Да, вы можете сделать переопределение кнопки « Home
.
Я разработал приложение, которое отключает жесткую кнопку, вы можете посмотреть. Я взял кнопку переключения, которая блокирует все жесткие кнопки для работы, кроме кнопки питания
public class DisableHardButton extends Activity { /** Called when the activity is first created. */ TextView mTextView; ToggleButton mToggleButton; boolean isLock=false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView=(TextView) findViewById(R.id.tvInfo); mToggleButton=(ToggleButton) findViewById(R.id.btnLock); mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { // TODO Auto-generated method stub isLock=isChecked; onAttachedToWindow(); } }); } @Override public boolean dispatchKeyEvent(KeyEvent event) { if ( (event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) { mTextView.setText("KEYCODE_HOME"); return true; } else return super.dispatchKeyEvent(event); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if( (keyCode==KeyEvent.KEYCODE_BACK) && isLock) { mTextView.setText("KEYCODE_BACK"); return true; } else return super.onKeyDown(keyCode, event); } @Override public void onAttachedToWindow() { System.out.println("Onactivity attached :"+isLock); if(isLock) { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); } else { this.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION); super.onAttachedToWindow(); } } }
main.xml
Вы вызываете super.onBackPressed (), чтобы вызвать обычный метод. Пример:
@Override public void onBackPressed() { if (activated) { //doyourthing } else { super.onBackPressed() } }
Нет, ты не можешь. То, что вы можете сделать, это ovveride метод и управлять булевым внутри него:
например:
public void onBackPressed() { // call my backbutton pressed method when boolean==true if (myCondition) { // take care of my needs } else // call super to let the back behavior be "normal" }
Что касается переопределения поведения Home Button, вам не повезло .
Однако, если ваше приложение является конкретным и имеет ограниченную целевую аудиторию, например, приложение для межорганизаций, больничный киоск, заказ ресторана, вы можете попробовать сделать свое приложение в качестве Домашнего (приложение для запуска). Вы можете найти хороший пример здесь: Как написать приложение для пользовательских Launcher в Android
И чтобы переопределить события задней клавиши, есть много примеров.
Например:
- Catch keypress с Android
- Кнопка «Отменить назад», чтобы действовать как кнопка «домой»
- Android – Как переопределить кнопку «Назад», чтобы она не закончила () мою активность?
введите переменную-член переменной типа boolean
boolean temp; @Override public void onBackPressed() { // call my backbutton pressed method when boolean==true if(temp) //your methode else finish(); }
Я использую это:
public void onBackPressed() { switch (screen) { case 1: screen = 99; setContentView(R.layout.menu); break; case 99: finish(); break; } return; }
Когда я нахожусь на другом экране (другой экран меню), я устанавливаю экран переменной 1. Когда я нажимаю кнопку «Назад», он возвращается к экрану меню (вместо того, чтобы убивать приложение). и дать экранной переменной число 99, а затем, когда вы снова нажмете кнопку «Назад», она убивает приложение.
Однако вы не можете изменить кнопку «домой».