在许多应用程序中,我们已经看到了“设置”屏幕,这是大多数应用程序中最常见的。此设置屏幕用于管理用户的首选项。为了创建此设置屏幕,android提供了用于进行设置首选项屏幕的功能。在本文中,我们将介绍如何在Android中实现偏好设置屏幕。
我们将在本文中构建什么?
我们将构建一个简单的应用程序,其中将显示一个简单的按钮,然后单击该按钮将打开一个设置屏幕,该屏幕将使用设置首选项创建。此设置屏幕的外观类似于我们可以在常规选项的YouTube设置中看到的屏幕。下面提供了一个示例视频,以使您对我们在本文中将要做的事情有个大概的了解。注意,我们将使用Java语言实现该项目。
分步实施
步骤1:创建一个新项目
要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Java作为编程语言。
步骤2:使用activity_main.xml文件
导航到应用程序> res>布局> activity_main.xml,然后将以下代码添加到该文件中。以下是activity_main.xml文件的代码。
XML
Java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// creating a variable for our button.
private Button settingsBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing our button.
settingsBtn = findViewById(R.id.idBtnSettings);
// adding on click listener for our button.
settingsBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// opening a new intent to open settings activity.
Intent i = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(i);
}
});
}
}
XML
GFG App
Remind me to take a break
key_upload_quality
Remind me to take a break
remind_me_for_bed_time
Remind me for bed time
prefs_limit_data_usage
Only stream HD video on Wi-Fi
Limit mobile data usage
Double-tap to seek
pref_seek_val
seconds
Uploads
pref_uploads
Specify network preferences for uploads
prefs_restricted_mode
Restricted Mode can help to hide videos with potentially mature content.No filter is 100% accurate, but it should help you to avoid most of this type of content.
Restricted Mode
prefs_enable_stats
Enable stats for nerds
- 360p
- 480p
- 720p
- 1080p
- Original
- 1 hours
- 2 hours
- 3 hours
- 5 hours
- 10 hours
- 5
- 10
- 15
- 20
- 30
- 0
- 1
- 2
- 3
- 4
- Only when on Wi-Fi
- On any network
XML
Java
import android.os.Bundle;
import android.preference.PreferenceFragment;
import androidx.annotation.Nullable;
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// below line is used to add preference
// fragment from our xml folder.
addPreferencesFromResource(R.xml.prefrences);
}
}
XML
Java
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
// below line is to change
// the title of our action bar.
getSupportActionBar().setTitle("Settings");
// below line is used to check if
// frame layout is empty or not.
if (findViewById(R.id.idFrameLayout) != null) {
if (savedInstanceState != null) {
return;
}
// below line is to inflate our fragment.
getFragmentManager().beginTransaction().add(R.id.idFrameLayout, new SettingsFragment()).commit();
}
}
}
步骤3:建立新活动以显示设定画面
导航到应用程序> Java >应用程序的包名称>右键单击它>新建>活动,然后选择空活动并将其命名为SettingsActivity 。
步骤4:使用MainActivity。 Java文件
转到MainActivity。 Java文件并参考以下代码。下面是MainActivity的代码。 Java文件。在代码内部添加了注释,以更详细地了解代码。
Java
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
// creating a variable for our button.
private Button settingsBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// initializing our button.
settingsBtn = findViewById(R.id.idBtnSettings);
// adding on click listener for our button.
settingsBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// opening a new intent to open settings activity.
Intent i = new Intent(MainActivity.this, SettingsActivity.class);
startActivity(i);
}
});
}
}
第5步:创建首选项文件以显示我们的设置
导航到应用程序> res>右键单击它> New> Android Resource文件,您将看到以下屏幕。
步骤6:在字符串.xml文件中添加以下代码
导航至应用程序> res>值>字符串.xml文件,然后将以下代码添加到其中。
XML格式
GFG App
Remind me to take a break
key_upload_quality
Remind me to take a break
remind_me_for_bed_time
Remind me for bed time
prefs_limit_data_usage
Only stream HD video on Wi-Fi
Limit mobile data usage
Double-tap to seek
pref_seek_val
seconds
Uploads
pref_uploads
Specify network preferences for uploads
prefs_restricted_mode
Restricted Mode can help to hide videos with potentially mature content.No filter is 100% accurate, but it should help you to avoid most of this type of content.
Restricted Mode
prefs_enable_stats
Enable stats for nerds
- 360p
- 480p
- 720p
- 1080p
- Original
- 1 hours
- 2 hours
- 3 hours
- 5 hours
- 10 hours
- 5
- 10
- 15
- 20
- 30
- 0
- 1
- 2
- 3
- 4
- Only when on Wi-Fi
- On any network
步骤7:使用prefrences.xml文件
在首选项中,以下列出了不同类型的首选项:
- EditTextPreference :用于从用户获取文本。
- ListPreference :此选项用于显示一个对话框,其中包含可供选择的选项列表。
- CheckBoxPreference :此选项用于显示复选框以切换设置。
- SwitchPreference :此选项用于打开和关闭开关。
- RingtonePreference :此选项用于打开设备的铃声页面。
- 具有Intent操作android.intent.action.VIEW的首选项–打开导航到URL的外部浏览器。
导航到app> res> xml> prefrences.xml文件,然后将以下代码添加到其中。在代码中添加了注释,以便更详细地了解。
XML格式
步骤8:现在创建一个新的Java类来显示我们的首选项片段
导航到应用程序> Java >应用程序的程序包名称>右键单击它>新建> Java类,并将其命名为SettingsFragment,然后将以下代码添加到其中。在代码中添加了注释,以便更详细地了解。
Java
import android.os.Bundle;
import android.preference.PreferenceFragment;
import androidx.annotation.Nullable;
public class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// below line is used to add preference
// fragment from our xml folder.
addPreferencesFromResource(R.xml.prefrences);
}
}
步骤9:使用activity_settings.xml文件
导航到activity_settings.xml文件,并将以下代码添加到其中。在代码中添加了注释,以便更详细地了解。
XML格式
步骤10:使用SettingsActivity。 Java文件
导航到应用程序> Java >您的应用程序包名称> SettingsActivity。 Java文件,并向其中添加以下代码。在代码中添加了注释,以便更详细地了解。
Java
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
// below line is to change
// the title of our action bar.
getSupportActionBar().setTitle("Settings");
// below line is used to check if
// frame layout is empty or not.
if (findViewById(R.id.idFrameLayout) != null) {
if (savedInstanceState != null) {
return;
}
// below line is to inflate our fragment.
getFragmentManager().beginTransaction().add(R.id.idFrameLayout, new SettingsFragment()).commit();
}
}
}
现在运行您的应用程序,并查看该应用程序的输出。