Android Q:应用内设置面板
时间:2020-02-23 14:29:10 来源:igfitidea点击:
在本教程中,我们将讨论如何在Android应用程序中显示"设置面板"。
随着Android Q的推出,无需切换到"设置"应用即可显示浮动设置菜单。
Android Q设置面板
设置面板就像"底部浮动菜单",它使我们可以查看/编辑设置。
当前,"设置面板"可以显示三种不同类型的设置:
连接设置–移动数据/Wifi飞机模式
音量设置–更改警报,呼叫通知等的音量。
NFC –配置NFC连接设置
要调用每个这样的设置,我们需要使用特定的操作字符串常量来调用Intent。
以下是每个面板的操作字符串:
- ACTION_INTERNET_CONNECTIVITY
- ACTION_NFC
- ACTION_VOLUME
使用上面的"设置面板"可使UX更加流畅。
要从当前应用程序更改设置,用户必须使用Intents启动设置应用程序。
现在,过渡更加顺畅。
尽管有很多优点,但这种新的"设置面板"设计还是有缺点的。
需要考虑的事实:当用户可以从状态列中的系统通知托盘访问这些操作时,为什么真正需要设置面板?
在下一节中,我们将在Android Studio项目中实现这三个设置面板中的每一个。
Android Q应用内设置面板项目结构
Android Q设置面板项目结构
请确保您已更新Android SDK,并已构建到最新的Android –Q。
代码
下面给出了activity_main.xml布局的代码:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="https://schemas.android.com/apk/res-auto" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context=".MainActivity"> <Button android:id="@+id/btnInternet" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="INTERNET SETTINGS" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" <Button android:id="@+id/btnVolume" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="VOLUME SETTINGS" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" <Button android:id="@+id/btnNFC" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="NFC SETTINGS" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" </LinearLayout>
MainActivity.java类的代码如下:
package com.theitroad.androidqsettingspanel; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button btnInternet, btnVolume, btnNFC; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnInternet = findViewById(R.id.btnInternet); btnVolume = findViewById(R.id.btnVolume); btnNFC = findViewById(R.id.btnNFC); btnInternet.setOnClickListener(this); btnVolume.setOnClickListener(this); btnNFC.setOnClickListener(this); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.btnInternet: showInternetSettings(); break; case R.id.btnVolume: showVolumeSettings(); break; case R.id.btnNFC: showNFCSettings(); break; } } private void showInternetSettings() { startActivity(new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)); } private void showVolumeSettings() { startActivity(new Intent(Settings.Panel.ACTION_VOLUME)); } private void showNFCSettings() { startActivity(new Intent(Settings.Panel.ACTION_NFC)); } }
上面的代码是不言自明的。
我们只是在不同的按钮单击意图上启动了每个设置面板。
上面应用程序的输出如下:
Android Q设置面板输出
由于Android模拟器存在问题,因此请忽略滞后和UI减少的问题。