Какие технологии нужны, чтобы использовать switch в android
Хочу сделать активити для настройки уведомления. Что вообще нужно использовать при работе со свитчем? условно хочу, чтобы при активированном свитче уведомления приходили, а когда свитч в положении off, уведомления не приходили.
Ответы (1 шт):
Вопрос поставлен довольно странно на мой субъективный взгляд. Обратимся к документации:
Переключатель - это виджет с двумя состояниями, который может выбирать между двумя вариантами. Пользователь может перетаскивать «большой палец» назад и вперед, чтобы выбрать выбранную опцию, или просто нажать, чтобы переключиться, как если бы это был флажок. Свойство
textуправляет текстом, отображаемым в метке для переключателя, тогда как текстoffи on управляет текстом на большом пальце. Точно так жеtextAppearanceи связанные методыsetTypeface()управляют гарнитурой и стилем текста метки, тогда как методы switchTextAppearance и связанные с нимsetSwitchTypeface()управляют таковыми для большого пальца.
вот еще например можно встретить такое определение:
Switch - ещё один вид переключателей, который появился в Android 4.0 (API 14). Находится в разделах Commons и Buttons. Фактически, это замена немного устаревшего ToggleButton. В новых проектах лучше использовать Switch.
Вот пример работы с виджетом. Для начала добавляем в xml:
<Switch
android:id="@+id/monitored_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="32dip"
android:text="Переключатель с собственным текстом"
android:textOff="Выкл"
android:textOn="Вкл" />
Добавляем слушатель:
public class MainActivity extends Activity implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Switch switch = (Switch) findViewById(R.id.monitored_switch);
if (switch != null) {
switch.setOnCheckedChangeListener(this);
}
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Toast.makeText(this, "Отслеживание переключения: " + (isChecked ? "on" : "off"),
Toast.LENGTH_SHORT).show();
}
}
На этом технологии заканчиваются. Знаний по технологиям почти не нужно, есть только главная технология которую мы все должны знать в совершенстве - вот она. Эта на первый взгляд простая технология открывает путь к многим секретам и плюшкам :)
Теперь по поводу сохранения состояния. Я бы советовал использовать sharedPreferences для этих целей. Таким образом вы сможете программно сохранить в памяти телефона значение отвечающее какой-то функции. При включении switch делаем так в слушателе нажатий на виджет:
SharedPreferences mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
mSettings.edit().putBoolean("switch_state, isChecked).apply();
переменная isChecked находится здесь:
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
Дальше при запуске приложения мы проверяем есть ли что-то в памяти и устанавливаем значение в виджете:
SharedPreferences mSettings= getPreferences(MODE_PRIVATE);
Switch yourSwitch= (Switch) findViewById(R.id.switch1);
yourSwitch.setChecked(mSettings.getBoolean("switch_state", false));
А уже что делать при том или ином состоянии виджета вам решать :)
P.S. Не знаю как правильно перевести thumb из документации :( Переводится как палец, может стоит как-то изменить перевод, например - управляющий элемент, или просто переключатель. Буду рад любым идеям.