精华内容
下载资源
问答
  • red-moon, 用于夜间电话使用安卓屏幕过滤应用 红色月亮 蓝光可能抑制褪黑素的产生,睡眠激素。 红月过滤蓝灯,在正常的最低位置调暗你的屏幕,因这里你可以以在夜间轻松地使用手机。安排红色月亮从日落到日出或者...
  • 时间使用电脑、手机等设备对我们的眼睛有不小的伤害屏幕的亮度是一个问题太亮了伤眼,太暗了费眼不同的色光是另一个问题其中蓝光对眼睛的伤害较大除了使用电脑一段时间后休息外用软件调节屏幕显示也很必要下面推荐...

    085794b1a7213ede56e38c044929baa2.gif

    长时间使用电脑、手机等设备

    对我们的眼睛有不小的伤害

    917407850cc72eac09bdfe937c9baaac.png

    屏幕的亮度是一个问题

    太亮了伤眼,太暗了费眼

    不同的色光是另一个问题

    其中蓝光对眼睛的伤害较大

    除了使用电脑一段时间后休息外

    用软件调节屏幕显示也很必要

    下面推荐两款护眼软件

    b636d1bf2ac7ebe15011dc51eb602a45.png

    1、护眼宝

    b636d1bf2ac7ebe15011dc51eb602a45.png

    2c76d6d0782f2bdb75ac8128e91d26f6.png

    一款通过智能调节屏幕色温过滤蓝光的软件,能有效减少屏幕蓝光对眼睛的伤害,从而保护眼睛防止近视。

    覆盖Windows、macOS、Android、iOS

    电脑端如:Windows

    有五种颜色可自己调节

    2453f6fb27ab37d2a7cc358d48a5af32.png

    自动护眼模式

    5254ead214e5ef8c81a09da14b5e74c5.png

    点击“手动护眼”切换

    还有疲劳提醒功能

    cdec5fbfad31236e373743b1a084f663.png

    安卓手机端:护眼宝精简版(官方出品)

    3e27954a00f8cded21c2b6bee96b1456.png

    华为应用市场、应用宝有下载

    华为手机自带的护眼模式

    213570632f33fa81c7fd6d0995df59b6.png

    可见软件护眼模式影响截图

    而系统自带的护眼模式不会

    软件有广告,解决办法为

    禁止软件联网即可,操作举例

    fe279bb14ac5fe1adb929039bcaf3d73.png

    设置-流量管理-应用联网-移动数据和WLAN

    官网:http://www.huyanbao.com/

    c540a610715d4b0284577c80db69422d.png

    b636d1bf2ac7ebe15011dc51eb602a45.png

    2、联想护眼管理

    b636d1bf2ac7ebe15011dc51eb602a45.png

    95a0dae9d29e39cb6a59fe4c4ff8076f.png

    联想自带的护眼软件

    体积小、界面简洁

    2e9969ca0095fe7c64de2aaa07b06193.png

    以上软件也可后台回复

    护眼软件,获取下载地址

    —End—

    扩展阅读

    f704dad244da673a026e404889df70d8.png技术松鼠让你的手机屏幕动起来!喜欢就点一下在看呗!
    展开全文
  • 6月23日凌晨,iOS14在2020苹果全球开发者大会上发布,桌面小部件、App资源库、画中画、空间音频、App Clip等很多功能让人眼前一亮,虽然其中某些功能安卓用户已经使用了很长时间,但是苹果到位的细节把控和对流畅...

    9991583240beedcce73f0dc18bf60ceb.png

    欢迎来到APPKE!6月23日凌晨,iOS142020苹果全球开发者大会上发布,桌面小部件、App资源库、画中画、空间音频、App Clip等很多功能让人眼前一亮,虽然其中某些功能安卓用户已经使用了很长时间,但是苹果到位的细节把控和对流畅体验的极致追求仍会给大家带来耳目一新的感觉,不过没有以往那么惊艳。

    231c5f0002a00d20524296901d0117c0.png

    iOS14中,还有一个隐藏功能——轻点背面,只需轻敲两下手机背部即可截屏,或者设置为其他操作,一只手就可以搞定,非常实用。

    而安卓手机目前有指关节敲击截屏,电源键加音量下键截屏,三指下滑截屏等,几乎都需要两只手来操作,相比之下就没有那么方便。那么今天,小浦就为大家安利一款能够在安卓手机上实现相似功能的APP.

    62964a0924d4164d017b17bea8035a85.png

    这款软件就是Tap,Tap,界面简洁美观没有广告,只需开启Tap,Tap无障碍服务,并且允许Tap,Tap自启动和后台活动就能稳定使用相关功能。

    91495506030bf388f7cf516d49c45475.png

    Tap,Tap可以实现快速敲击手机背面两次后运行你指定的第一个动作,包括使用系统界面截图、启动应用、打开手电筒、展开通知面板、锁屏、返回、分屏、播放/暂停等诸多操作。该功能借助了手机内置的陀螺仪加速度传感器的配合,判断用户的敲击动作从而做出相应操作。

    4474f10836ff1b80c67f93dab76cb46e.png

    想要调整动作顺序,只需长按动作卡片右边的“=”就可以拖动改变顺序。

    3f0f7d1870c971c8012310056f69eedc.png

    如果敲击功能不太稳定,或者过于灵敏,可以在手势选项中更换设备模型,如果仍旧不能解决,建议重启Tap,Tap无障碍服务,并检查是否授予Tap,Tap自启动后台活动权限。

    93d03ac2a48e8117131c368d61af5baa.png

    门槛选项可以设置在特定情景下禁用手势功能,禁用情景包括屏幕关闭时、通话时、充电时、在指定的应用界面时、打开相机时等。

    3ed89a141168bf911da10ed8e4d70b06.png

    反馈选项可以设置识别到敲击手势时是否震动或者唤醒屏幕

    3de9e0e738bceaaaacd1c2d5a7aa7c78.png

    其实早期的Android 11已经实现了背部敲击功能,谷歌在今年上半年对Pixel3 XL,Pixel4Pixel4 XL等设备都进行了相关功能的测试,并且比iOS14更早,不过最后这个功能由于某些原因没有被披露。而Tap,Tap这款软件就是基于Android 11前期相关功能的代码,由GitHub开发者Kieron Quinn移植,从而让安卓用户只需下载软件就能使用该功能。

    ae205b72e79646bd5e279bd1773c8a6e.gif

    af8c3aebd3be0831c5fc8c9afc32b51d.png

    你可以在酷安下载该软件,在酷安搜索双击背部,就能找到这款APP. 今后小浦将会分享更多的实用APP及其他资讯,感谢大家的支持!

    END

    精彩推荐

    手机必备APP推荐,款款黑科技zhuanlan.zhihu.com
    b80aa70b1312d64990256c0f26a48333.png
    【移动端】这五款黑科技APP,每一款都是宝藏!mp.weixin.qq.com
    22f8d3bff834c04f5a73683d1038a32b.png
    安卓桌面拯救计划:各式精美图标包任君挑选mp.weixin.qq.com
    3186d06695adced55c3de8275400b2bb.png

    ce14ae8a08cc8b1b135d3887096e7d63.png
    展开全文
  • AVD的全称为:Android Virtual Device,就是Android运行的虚拟设备,建立的Android要运行,必须创建AVD,每个AVD上可以配置很多的运行项目。...虚拟机和本机时间不同:则通过“设置”–日期和时间–关闭“使用网络

    AVD的全称为:Android Virtual Device,就是Android运行的虚拟设备,Android项目在电脑上成功运行模拟器必需要创建AVD。每个AVD上可以配置很多的运行项目。
    模拟器的相关设置:

    1. 系统语言设置:在虚拟机中,与手机操作流程大致相同,找到“设置”,添加语言“简体中文”。
    2. 设置中文输入法:设置–语言–屏幕键盘–Gboard 多语言输入–语言–添加中文(简体)拼音
    3. 系统时间设置:
      虚拟机和本机时间不同:则通过“设置”–日期和时间–关闭“使用网络提供的时区”–手动选择时区为上海,显示为中国标准时间。
      时间格式也可以在本页面修改:关闭“使用默认语言区域”,打开“使用24小时制”
      这样电脑和虚拟机的时间就一致了。
      在这里插入图片描述
    展开全文
  • 本文将了解 如何通过将设置屏幕添加到应用来自定义 应用中所显示的地震列表。用户可以选择应显示地震的最小震级 并可以更改是 按震级还是按时间来显示地震。要将此 功能添加到应用,需要添加新设置活动,然后使用 ...

    概述

    本文将了解 如何通过将设置屏幕添加到应用来自定义 应用中所显示的地震列表。用户可以选择应显示地震的最小震级 并可以更改是 按震级还是按时间来显示地震。要将此 功能添加到应用,需要添加新设置活动,然后使用 用户的偏好来更改用于 查询地震的 URL。

    追求“惊艳”是 Android 的基本原则之一。 这通常意味着每个用户都需要 适合自己和满足自身偏好的略微不同的体验。因此,我们需要 通过一种方法使用户能够调整应用中的偏好,并且使系统记住 用户选定的偏好。例如,你询问用户感兴趣的 最小震级,而用户回答为 “5”。则每次获取该用户的地震信息时, 即使用户关闭应用又重新将其打开. 仍然只需获取震级高于 5 的地震。即便用户关闭 手机,随后又再次开机依然如此!

    在用户设备上存储数据(通常指数据持久化) 是一个庞大的主题,同时也将成为整个 下一学习阶段的主题。

    但目前,Android 的设计者希望存储少量数据 以追踪客户偏好, 因此通过 Android 组件来完成此功能。

    SharedPreferences

    偏好其实就是与简单类型、字符串或字符串集 相关联的字符串键。即使应用已关闭,或者电话已关机, Android 也会保留该数据。 Android 提供 SharedPreferences 类用于直接获取和 设置偏好。SharedPreferences 可以处理 将偏好数据读写到 设备上持久化存储(文件)的所有详细信息。

    除了存储偏好,还需要提供一种方法以使 用户通过用户界面来编辑应用中的偏好。 对于数字偏好,需要允许用户键入 数字。对于应从列表中选择的偏好,则需要 显示选项列表,并允许用户从中选择一个选项等。

    虽然我们自己可以设置此类活动,但是 Android 提供 名为 PreferenceFragment 的类,该类可以显示 UI 小工具 (Preference 对象)的列表,用于轻松编辑各种 偏好。

    为防止你错过这些内容,术语 Fragment 是最新的。让我们来谈谈它 的含义吧。

    因为很多 Android 活动可以从 嵌入偏好编辑小工具集获益,所以 Android 构架团队要尽可能简化此任务。

    想象一下如果能够通过可置于活动布局中的 假定“PreferencesView”来完成此操作。 但是,我们需要通过一种方法使“PreferencesView”比简单视图更为智能, 而同时又不希望将其变成完全成熟的 活动。它只需作为活动的一小部分,例如, 活动的 Fragment。

    Fragment 的行为很像相应活动中的 微型活动。通过引入 Fragment 可以实现适用于 大屏幕平板电脑和其他 Android 设备的 更加灵活的布局。

    Fragment 可以在多个活动内重用,且一个活动 可以使用多个 Fragment。对于平板电脑 UI, 常用的模式是同时使用两个 Fragment。

    现在,无需了解更多关于 Fragment 的内容, 在本中,不会讲述与多个 Fragment 相关的复杂内容。 我们将要做的是 在 SettingsActivity 内使用 PreferenceFragment 来显示用户可以编辑的 偏好列表。

    有关 Fragment 的更多高级内容,请参阅创建单窗格和多窗格布局以及 构建灵活的 UI

    构建偏好屏幕

    添加 SettingsActivity 并将其启动,然后将菜单 添加到 EarthquakeActivity!

    第一步,向 res/values/strings.xml 文件添加一些字符串。

    在 strings.xml 中:

    <!-- Settings Menu Item [CHAR LIMIT=NONE] -->
    <string name="settings_menu_item">Settings</string>
    <!-- Settings Activity Title [CHAR LIMIT=NONE] -->
    <string name="settings_title">Earthquake Settings</string>
    

    下一步,将创建 SettingsActivity 类。

    在 SettingsActivity.java 中:

    package com.example.quakereport;
    
    import android.os.Bundle;
    import android.preference.PreferenceFragment;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    public class SettingsActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_settings);
        }
    
        public static class EarthquakePreferenceFragment extends PreferenceFragment {
    
        }
    }
    

    在 res/layout/settings_activity.xml 中定义设置活动的布局:

    在 settings_activity.xml 中:

    <fragment
        android:name="com.example.android.quakereport.SettingsActivity$EarthquakePreferenceFragment"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.quakereport.SettingsActivity">
    </fragment>
    

    当然,需要 在标签内的 AndroidManifest.xml 中声明新活动:

    在 AndroidManifest.xml 中:

    <activity
        android:name=".SettingsActivity"
        android:label="@string/settings_title">
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.example.quakereport.EarthquakeActivity"/>
    </activity>
    

    菜单

    如果将一个较大的 SETTINGS 按钮放置在地震列表上方或下方, 则会使 EarthquakeActivity 显得非常杂乱。将该按钮放置在 位于 EarthquakeActivity 顶部的应用栏内更为合适。

    活动可以使用菜单资源文件,并在 应用栏中显示菜单。因此,接下来将在新菜单资源文件中 定义菜单项:

    在 res/menu/main.xml 中:

         <menu xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:app="http://schemas.android.com/apk/res-auto"
             xmlns:tools="http://schemas.android.com/tools"
             tools:context="com.example.android.quakereport.EarthquakeActivity">
             <item
                 android:id="@+id/action_settings"
                 android:title="@string/settings_menu_item" 
                 android:icon="@drawable/ic_filter"
                 android:orderInCategory="1"
                 app:showAsAction="ifRoom" />
         </menu>
    

    覆盖 EarthquakeActivity.java 中的一些方法以使用 菜单,然后在用户单击菜单项时作出响应:

    在 EarthquakeActivity.java 中:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            Intent settingsIntent = new Intent(this, SettingsActivity.class);
            startActivity(settingsIntent);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    

    现在,我们已经拥有了菜单,其中“Settings”项可以打开(现在是空白的) SettingsActivity!

    更改完成前后的差异

    最小震级偏好

    启动并运行 SettingsActivity 后,将添加 可以编辑的偏好!

    目前,我们已经创建应用,仅显示 震级等于或高于 6.0 的 10 个最近地震( 通过硬编码 HTTP 请求以从 URL http://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&eventtype=earthquake&orderby=time&minmag=6&limit=10 获取数据)。 这看起来有些任意,因为应用的其余部分 可以在技术上处理任何地震列表的显示。因此, 将允许用户修改应用 将显示的最小震级。

    首先,将向资源文件再添加几个字符串。

    在 strings.xml 中:

      <!-- Strings For Minimum Magnitude Preference [CHAR LIMIT=30] -->
    <string name="settings_min_magnitude_label">Minimum Magnitude</string>
    <string name="settings_min_magnitude_key" translatable="false">min_magnitude</string>
    <string name="settings_min_magnitude_default" translatable="false">6</string>
    

    下一步,需要创建资源,该资源可以定义 屏幕应该显示的偏好编辑小工具的类型。在 res/xml 目录中创建 settings_main.xml 文件,该文件 内容如下:

    在 res/xml/settings_main.xml 中:

    <PreferenceScreen
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:title="@string/settings_title">
    
        <EditTextPreference
            android:defaultValue="@string/settings_min_magnitude_default"
            android:inputType="numberDecimal"
            android:key="@string/settings_min_magnitude_key"
            android:selectAllOnFocus="true"
            android:title="@string/settings_min_magnitude_label" />
    
    </PreferenceScreen>
    

    最后,在 SettingsActivity 中,覆盖 EarthquakePreferenceFragment 内部类中的 onCreate() 方法,以使用以前定义的 settings_main XML 资源。

    在 SettingsActivity.java 中:

     package com.example.android.quakereport;
    
     import android.os.Bundle;
     import android.preference.PreferenceFragment;
     import android.support.v7.app.AppCompatActivity;
    
     public class SettingsActivity extends AppCompatActivity {
    
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.settings_activity);
         }
    
         public static class EarthquakePreferenceFragment extends PreferenceFragment {
    
             @Override
             public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 addPreferencesFromResource(R.xml.settings_main);
             }
         }
     }
    

    现在,Settings UI 应该包含用于设置 最小震级的单个偏好(代码更改前后对比):

    根据用户偏好构造 URL

    目前,已经使用硬编码固定 URL 请求地震。 但是,我们需要将最小震级偏好作为查询参数插入到 URL 中。虽然可以通过 一些复杂的字符串串联来实现该功能,但是使用 Uri.Builder 类是一种更好的方法。

    等一下,再问一次什么是 URI?URI 即统一资源标识符,是 更常用的 URL。URL 常常指向计算机网络 上的资源,而 URI 可以识别 范围更大的事物(从文件和邮箱到物理 对象,如书)。

    由于 URL 是 URI 的子集,因此 Android 提供 方法来操纵 URI 是非常有意义的,因为这些 URI 将 同样适用于 URL。

    首先,将 EarthquakeActivity 类中 USGS_REQUEST_URL 常量的值修改为 基准 URI。然后,使用 UriBuilder.appendQueryParameter() 方法将其他参数添加到 URI(例如,JSON 响应格式、已请求 10 个地震、 最小震级值以及排序顺序)。

    在 EarthquakeActivity.java 中:

     private static final String USGS_REQUEST_URL = "http://earthquake.usgs.gov/fdsnws/event/1/query";
    

    然后替换 onCreateLoader() 方法的主体以读取 最小震级的用户最新偏好并使用其偏好构造 相应 URI,然后针对 该 URI 创建新 Loader。

    在 EarthquakeActivity.java 中:

     @Override
     public Loader<List<Earthquake>> onCreateLoader(int i, Bundle bundle) {
    
         SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
         String minMagnitude = sharedPrefs.getString(
                     getString(R.string.settings_min_magnitude_key),
                     getString(R.string.settings_min_magnitude_default));
         Uri baseUri = Uri.parse(USGS_REQUEST_URL);
         Uri.Builder uriBuilder = baseUri.buildUpon();
    
         uriBuilder.appendQueryParameter("format", "geojson");
         uriBuilder.appendQueryParameter("limit", "10");
         uriBuilder.appendQueryParameter("minmag", minMagnitude);
         uriBuilder.appendQueryParameter("orderby", "time");
    
         return new EarthquakeLoader(this, uriBuilder.toString());
     }
    

    现在已经将最小震级偏好插入到查询 URL 中! 从 UI 的 SettingsActivity 中,将最小震级 设置为较小的值,然后查看 世界范围内发生的所有小地震。

    更改完成前后的差异。

    偏好摘要

    对于用户而言,通过单击 最小震级偏好来查看其当前设置 并不是一种美妙的体验。

    更好的方法是打开 Setting Activity 即可 查看偏好名称下方的偏好值, 如果对其进行更改,可以看到摘要将立即更新。

    这对于偏好更改后应用能够立即知晓非常有用, 特别是偏好更改应对 UI 产生某些可见影响。

    要实现该功能,当偏好发生更改时,PreferenceFragment 可以实现 OnPreferenceChangeListener 接口 以获取通知。然后,当用户更改单个偏好 并进行保存时,将使用已更改偏好的关键字来调用 onPreferenceChange() 方法。请注意,此方法 将返回布尔值,可防止通过返回 false 来 更改建议的偏好设置。

    首先声明 EarthquakePreferenceFragment 类应 实现 OnPreferenceChangeListener 接口,然后覆盖 onPreferenceChange() 方法。此方法中的代码 会在偏好更改后更新已显示的偏好摘要。

    在 SettingsActivity 中,在 EarthquakePreferenceFragment 类中:

      public static class EarthquakePreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener {
    
             @Override
             public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 addPreferencesFromResource(R.xml.settings_main);
             }
    
             @Override
             public boolean onPreferenceChange(Preference preference, Object value) {
                 String stringValue = value.toString();
                 preference.setSummary(stringValue);
                 return true;
             }
         }
    

    但是,在启动设置活动后, 仍需要更新偏好摘要。如果给定偏好的键,可以 使用 PreferenceFragment 的 findPreference() 方法来获取偏好 对象,然后使用 bindPreferenceSummaryToValue() 帮助程序方法来设置偏好。

    在 EarthquakePreferenceFragment 中:

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.settings_main);
    
         Preference minMagnitude = findPreference(getString(R.string.settings_min_magnitude_key));
         bindPreferenceSummaryToValue(minMagnitude);
     }
    

    现在需要定义 bindPreferenceSummaryToValue() 帮助程序方法 来设置当前 EarhtquakePreferenceFragment 实例作为 每个偏好上的侦听程序。还将读取 设备上 SharedPreferences 中存储的偏好当前值,然后在 偏好摘要中进行显示(以便用户能够查看 偏好的当前值)。

    在 EarthquakePreferenceFragment 中:

     private void bindPreferenceSummaryToValue(Preference preference) {
         preference.setOnPreferenceChangeListener(this);
         SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(preference.getContext());
         String preferenceString = preferences.getString(preference.getKey(), "");
         onPreferenceChange(preference, preferenceString);
     }
    

    更改后,整个 SettingsActivity 文件 将如下所示:

    在 SettingsActivity.java 中:

     package com.example.android.quakereport;
    
     import android.content.SharedPreferences;
     import android.os.Bundle;
     import android.preference.Preference;
     import android.preference.PreferenceFragment;
     import android.preference.PreferenceManager;
     import android.support.v7.app.AppCompatActivity;
    
     public class SettingsActivity extends AppCompatActivity {
    
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.settings_activity);
         }
    
         public static class EarthquakePreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener {
    
             @Override
             public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 addPreferencesFromResource(R.xml.settings_main);
    
                 Preference minMagnitude = findPreference(getString(R.string.settings_min_magnitude_key));
                 bindPreferenceSummaryToValue(minMagnitude);
             }
    
             @Override
             public boolean onPreferenceChange(Preference preference, Object value) {
                 String stringValue = value.toString();
                 preference.setSummary(stringValue);
                 return true;
             }
    
             private void bindPreferenceSummaryToValue(Preference preference) {
                 preference.setOnPreferenceChangeListener(this);
                 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(preference.getContext());
                 String preferenceString = preferences.getString(preference.getKey(), "");
                 onPreferenceChange(preference, preferenceString);
             }
         }
     }
    

    更改完成前后的差异

    下面是运行截图:

    地震列表的排序偏好

    我们将再添加一个偏好选项。有时,用户要了解 震级最大的地震,而有时用户却要 了解最近发生的地震。我们可以 使用 ListPreference 轻松实现用户的要求。首先,在字符串资源文件中定义 更多字符串。

    在 strings.xml 中:

     <!-- Strings For Order-By Preference [CHAR LIMIT=30] -->
     <string name="settings_order_by_label">Order By</string>
     <string name="settings_order_by_key" translatable="false">order_by</string>
     <string name="settings_order_by_default" translatable="false">@string/settings_order_by_magnitude_value</string>
    
     <!-- Label for order-by magnitude option [CHAR LIMIT=20] -->
     <string name="settings_order_by_magnitude_label">Magnitude</string>
     <string name="settings_order_by_magnitude_value" translatable="false">magnitude</string>
    
     <!-- Label for order-by most recent option [CHAR LIMIT=20] -->
     <string name="settings_order_by_most_recent_label">Most Recent</string>
     <string name="settings_order_by_most_recent_value" translatable="false">time</string>
    

    下一步,我们将通过创建 new res/values/arrays.xml 文件将这些字符串打包到字符串数组中。

    在 res/values/arrays.xml 中:

     <?xml version="1.0" encoding="utf-8"?>
     <resources>
         <string-array name="settings_order_by_labels">
             <item>@string/settings_order_by_magnitude_label</item>
             <item>@string/settings_order_by_most_recent_label</item>
         </string-array>
    
         <string-array name="settings_order_by_values">
             <item>@string/settings_order_by_magnitude_value</item>
             <item>@string/settings_order_by_most_recent_value</item>
         </string-array>
     </resources>
    

    然后将 ListPreference 添加到 res/xml/settings_main.xml 文件中。整个 XML 文件应包含以下内容:

    在 res/xml/settings_main.xml 中:

     <?xml version="1.0" encoding="utf-8"?>
     <PreferenceScreen
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:title="@string/settings_title">
    
         <ListPreference
             android:defaultValue="@string/settings_order_by_default"
             android:entries="@array/settings_order_by_labels"
             android:entryValues="@array/settings_order_by_values"
             android:key="@string/settings_order_by_key"
             android:title="@string/settings_order_by_label" />
    
         <EditTextPreference
             android:defaultValue="@string/settings_min_magnitude_default"
             android:inputType="numberDecimal"
             android:key="@string/settings_min_magnitude_key"
             android:selectAllOnFocus="true"
             android:title="@string/settings_min_magnitude_label" />
    
     </PreferenceScreen>
    

    然后,构建用于创建 HTTP 请求的 URI 时,需要查找用户首选的排序顺序。从 SharedPreferences 进行读取, 然后查看与键相关的值: getString(R.string.settings_order_by_key)。构建 URI 和 附加查询参数时,将使用用户的偏好 (存储在 orderBy 变量中), 而非将“orderby”参数硬编码为“time”。

    在 EarthquakeActivity.java 中:

         @Override
         public Loader<List<Earthquake>> onCreateLoader(int i, Bundle bundle) {
    
             SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
             String minMagnitude = sharedPrefs.getString(
                     getString(R.string.settings_min_magnitude_key),
                     getString(R.string.settings_min_magnitude_default));
    
             String orderBy = sharedPrefs.getString(
                     getString(R.string.settings_order_by_key),
                     getString(R.string.settings_order_by_default)
             );
    
             Uri baseUri = Uri.parse(USGS_REQUEST_URL);
             Uri.Builder uriBuilder = baseUri.buildUpon();
    
             uriBuilder.appendQueryParameter("format", "geojson");
             uriBuilder.appendQueryParameter("limit", "10");
             uriBuilder.appendQueryParameter("minmag", minMagnitude);
             uriBuilder.appendQueryParameter("orderby", orderBy);
    
             return new EarthquakeLoader(this, uriBuilder.toString());
         }
    

    最后,我们将在 EarthquakePreferenceFragment 中添加其他逻辑,以使其能够识别新的 ListPreference,该操作类似针对 EditTextPreference 的操作。在 Fragment 的 onCreate() 方法中,根据偏好对象的键来查找“order by”偏好 对象。然后调用此偏好对象的 bindPreferenceSummaryToValue() 帮助程序方法, 该方法可将此 Fragment 设置为 OnPreferenceChangeListener 并 更新摘要,以使其显示 SharedPreferences 中存储的当前值。

    在 SettingsActivity.java 中,在 EarthquakePreferenceFragment 类中:

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         addPreferencesFromResource(R.xml.settings_main);
    
          Preference minMagnitude = findPreference(getString(R.string.settings_min_magnitude_key));
          bindPreferenceSummaryToValue(minMagnitude);
    
          Preference orderBy = findPreference(getString(R.string.settings_order_by_key));
          bindPreferenceSummaryToValue(orderBy);
     }
    

    由于这是 EarthquakePreferenceFragment 遇到的第一个 first ListPreference, 请更新 EarthquakePreferenceFragment 中的 toonPreferenceChange() 方法,以 正确更新 ListPreference 的摘要(使用标记, 而非键)。

    在 SettingsActivity.java 中,在 EarthquakePreferenceFragment 类中:

     @Override
     public boolean onPreferenceChange(Preference preference, Object value) {
         String stringValue = value.toString();
         if (preference instanceof ListPreference) {
             ListPreference listPreference = (ListPreference) preference;
             int prefIndex = listPreference.findIndexOfValue(stringValue);
             if (prefIndex >= 0) {
                 CharSequence[] labels = listPreference.getEntries();
                 preference.setSummary(labels[prefIndex]);
             }
         } else {
             preference.setSummary(stringValue);
         }
         return true;
     }
    

    我们已完成一个简单的设置活动!代码如下 所示:

    在 SettingsActivity.java 中:

     package com.example.android.quakereport;
    
     import android.content.SharedPreferences;
     import android.os.Bundle;
     import android.preference.ListPreference;
     import android.preference.Preference;
     import android.preference.PreferenceFragment;
     import android.preference.PreferenceManager;
     import android.support.v7.app.AppCompatActivity;
    
     public class SettingsActivity extends AppCompatActivity {
    
         @Override
         protected void onCreate(Bundle savedInstanceState) {
             super.onCreate(savedInstanceState);
             setContentView(R.layout.settings_activity);
         }
    
         public static class EarthquakePreferenceFragment extends PreferenceFragment implements Preference.OnPreferenceChangeListener {
    
             @Override
             public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 addPreferencesFromResource(R.xml.settings_main);
    
                 Preference minMagnitude = findPreference(getString(R.string.settings_min_magnitude_key));
                 bindPreferenceSummaryToValue(minMagnitude);
    
                 Preference orderBy = findPreference(getString(R.string.settings_order_by_key));
                 bindPreferenceSummaryToValue(orderBy);
             }
    
             @Override
             public boolean onPreferenceChange(Preference preference, Object value) {
                 String stringValue = value.toString();
                 if (preference instanceof ListPreference) {
                     ListPreference listPreference = (ListPreference) preference;
                     int prefIndex = listPreference.findIndexOfValue(stringValue);
                     if (prefIndex >= 0) {
                         CharSequence[] labels = listPreference.getEntries();
                         preference.setSummary(labels[prefIndex]);
                     }
                 } else {
                     preference.setSummary(stringValue);
                 }
                 return true;
             }
    
             private void bindPreferenceSummaryToValue(Preference preference) {
                 preference.setOnPreferenceChangeListener(this);
                 SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(preference.getContext());
                 String preferenceString = preferences.getString(preference.getKey(), "");
                 onPreferenceChange(preference, preferenceString);
             }
         }
     }
    

    运行应用时,请转至设置,然后基于 震级或时间修改排序顺序,然后查看地震列表的变化!

    练习完成前后的差异

    录屏演示:

    https://www.bilibili.com/video/BV1Ky4y1p71z?p=3

    QuakeReport — 应用测试

    参考

    有关偏好的 材料设计指南

    Using Shared Preferences

    Save key-value data | Android Developers

    SharedPreferences | Android Developers

    PreferenceFragment | Android Developers

    Settings with PreferenceFragment | CodePath Android Cliffnotes

    Using PreferenceFragmentCompat to Store User Preferences

    Preference Fragment · Developing for Android

    展开全文
  • Android串口调试助手 1. 自动搜索本机设备。 2. 最高支持4串口同时收发,有定时自动发送功能,收发模式可选Txt或Hex模式...6. 在设置菜单中可选串口显示数量以适应小屏幕 7.如果碰到权限问题,最好先ROOT系统后再使用
  • ApkIDE——安卓反编译

    2014-10-19 10:52:47
    注:如果使用自己的keystore,请在设置窗口点“验证”按钮确保能显示为“验证成功”的方能使用,否则如果配置不正确编译成的apk是没有签名的(即apk中没有META-INF文件夹),且这个过程中不会有错误提示造成无法排查...
  • 安卓app—LED跑马灯

    千次阅读 2018-10-27 18:51:11
    我开始构思的是将屏幕设置成横屏,然后用TextView循环滑动达到,但是我发现这个方法BUG较多,也不太好用,我查看了一下别人的方法,决定还是使用自定义控件,控件我直接使用了第三方的,在app的gradle里导入就好了 ...
  • 安卓手机做为智能手机,消耗电池的能力是无容质疑的,所以,我们找到二十种省电方法推荐给大家,希望可以让大家尽可能的延长充电后的一次使用时间。  1、降低屏幕亮度。通过 设置->声音和显示设置->亮度 调整...
  • 使用这个API你可以接管手机的应用权限,对手机做出很多大胆的操作,比如锁屏、恢复出厂设置、设置密码、强制清除密码,修改密码、设置屏幕灯光渐暗时间间隔等操作。 二:设备管理器创建 1.要调用DevicePolicyManager...
  • 沉浸式状态栏用了一段时间了,一直没发现安卓在这方面的坑。最近在集成环信自定义UI的过程中,发现将环信界面设置为沉浸式之后最底部的消息输入框不随键盘弹起而变化了,一直显示在屏幕最下方,体验非常差。 后来...
  • 偶然间在网上看到 AIDA 64 可以通过 LCD 将电脑监控状态信息投射到手机屏幕上,而且可以自己设置监控的内容,显示效果也可以自定义,前段时间闲着没事做了一个皮肤,这里分享一下。下面是显示效果:简单介绍一下使用...
  • |--文件使用时间排序 |--文件复制粘贴 |--文件路径之通过uri获取 |--时间java常用应用 |--时间之handle记时器 |--时间之time的用法得到特定时间的long值 |--时间之之定时任务TimerTask |--时间之倒计时...
  • 使用过安卓手机的用户都会发现一个通病,在玩大型游戏或...调解屏幕使用时间 我们都知道手机屏幕亮度使用时间过长不但会导致电量流失,同时还会让手机自动运行一些硬件产生一定的热量。所以在不使用的情况下,尽量将...
  • 见过安卓手机给 APP 加密码锁的,很少 iPhone 用户给知道如何给 APP 加密码锁,今天给大家分享不越狱的情况下如何给自己的 iPhone ...APP 加锁教程 我们打开「设置」--「屏幕使用时间」界面,在点击「更改屏幕使用时...
  • 短期用户刚从有实体按键的手机过渡到没有实体按键的用户,这样的用户会在一开始设置手机的时候选择虚拟按键的,但是使用时间不长!他们只是为了适应下全面屏手机!这类人基本都是年亲人!长期用...
  • [PConline资讯]众所周知,安卓手机基本都有软件锁...那么现在就来教大家巧妙的使用屏幕使用时间功能设置应用锁:首先打开手机设置——屏幕使用时间——打开屏幕使用时间——选择这是我的iPhone。然后选择为屏幕使用...
  • 这是一个跨平台的Flutter应用程序,它为罗森海姆应用科技大学的学生显示可自定义的时间表以及食堂信息。 屏幕截图 显示的数据不正确,仅用于演示目的。 暗模式 灯光模式 安装 由于这是一个非官方的应用程序,很遗憾...
  • 支持全屏幕和窗户化游戏 目前功能较单一,后期可能会添加其他功能 尝试自动续表,设置最大游戏次数 尝试兼容安卓系统 尝试句柄操作 更新记录 2019.9.27:更新了窗口模式,这下可以边刷Kirara Fantasia边补番力! ...
  • 众所周知,在安卓系统中,想要给 App 加密码锁会显得很简单,因为它们很多都自带了这个功能,只需在设置里打开并...操作步骤这个功能其实就藏在「屏幕使用时间」里,首先,打开手机设置进入屏幕使用时间,然后点击...
  • 关于ios自动播放音频的问题

    千次阅读 2019-01-28 15:23:01
    什么先让它播放暂停,设置播放时间为0,什么使用微信官方的插件,不都管用,最后还是需要用户手动触发,只得分别做处理了,安卓手机直接进入页面获取数据通过play()方法让其自动播放,而ios的则通过用户触摸屏幕的主动...
  • Android Money测试基础一

    千次阅读 2017-11-26 19:51:54
    Monkey是一个命令行工具,使用安卓调试桥ADB()来运行它,模拟用户触摸屏幕、滑动Trackball、按键等随机事件流来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,可以根据获取的log信息进行修复。...
  • 2.电池组单体电压检测,电压检测范围1-5v(低于1v和高于5v无法检测),高精度,综合误差小于5mv,适用于所有电压在此范围内的电池组使用,过冲保护,过放保护电压可以在此范围内任意设置。 3.采用受控的均衡方式,...
  • 它代表着一种全新的教学方式,利用一套软件,在现有的电脑网络设备上,实现教师机对学生机的广播、监控、屏幕录制、屏幕回放、语音教学等操作来统一地进行管理与监控,辅助学生完成电脑软件的学习、使用。...
  • 它代表着一种全新的教学方式,利用一套软件,在现有的电脑网络设备上,实现教师机对学生机的广播、监控、屏幕录制、屏幕回放、语音教学等操作来统一地进行管理与监控,辅助学生完成电脑软件的学习、使用。...
  • 1、定时关机(设置时间) 2、取消定时(输入定时的准确时间才能取消) 2、注销、重启、关机、取消关机 功能四:鼠标操作 1、鼠标左键 2、鼠标右键 3、双击左键 4、移动鼠标(将鼠标移动到指定坐标 鼠标X坐标/鼠标Y...
  • 微信多功能营销

    2014-05-20 13:50:38
    一:我们的信天游微信系统基于BlueStacks安卓模拟器研发,软件运行顺畅,稳定! 二:全自动操作,解放双手,不控制鼠标,不锁定屏幕,不影响其他工作。可以自动设定软件运行时间与效率,同类产品与之无法比拟! 三...
  • 安卓上用于加载的Webview视图窗口只是作为类浏览器而存在,在安卓上更是只能同时运行一个Webview。(2)跨域数据交互问题。不同的Webview之间无法共享数据。(3)页面自适应问题。页面难以兼容适应不同分辨率的设备...
  • 采集数据端口,支持串口端口+网络端口,串口支持自由设置串口号+波特率,网络支持自由设置IP地址+通讯端口,每个端口支持采集周期,默认1秒钟一个地址,支持设置通讯超时次数,默认3次,支持最大重连时间,用于重新...
  • 27、屏幕显示相关 28、双击识别器 29、编码解码相关 30、加密解密相关 31、文件的IO流相关 32、针对Android 7版本以上 FileProvider做适配 33、文件操作相关 34、闪光灯相关 35、Fragment相关 36、Gson转换相关 37、...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

安卓设置屏幕使用时间