帮酷LOGO
  • 显示原文与译文双语对照的内容
文章标签:SHA  Shared  分享  
A SharedPreference "injection" library for Android

  • 源代码名称:preferencebinder
  • 源代码网址:http://www.github.com/denley/preferencebinder
  • preferencebinder源代码文档
  • preferencebinder源代码下载
  • Git URL:
    git://www.github.com/denley/preferencebinder.git
  • Git Clone代码到本地:
    git clone http://www.github.com/denley/preferencebinder
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/denley/preferencebinder
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • Android Arsenal

    PreferenceBinder

    用于Android的SharedPreferences绑定库。 使用注释处理,该库使加载SharedPreferences值和侦听更改变得容易。

    :如何使用

    基本用法

    使用 @BindPref 注释来检索。初始化和侦听("绑定") 首选项值中的更改。

    publicclassMainActivityextendsActivity {
     @BindPref("my_preference_key") String valueOfPreference;
     @BindPref("my_preference_key") voidinitializeForPreferenceValue(StringvalueOfPreference) {
     // do something with the value... }
     @OverridepublicvoidonCreate(BundleinState) {
     PreferenceBinder.bind(this);
     }
     @OverridepublicvoidonDestroy() {
     PreferenceBinder.unbind(this);
     }
    }

    调用 PreferenceBinder.bind() 后,首选项值从默认SharedPreferences文件加载并分配给带注释的字段,并作为参数传递给带注释的方法。 每当首选项值改变时,就会分配注释字段,并使用新的首选项值再次调用带注释的方法。

    确保 MATCH 类型和方法参数类型的类型与首选项键存储的值类型相同。 在编译时不检查,可能会导致运行时异常。

    要使用非缺省 SharedPreferences 文件,可以指定文件的NAME,如下所示:

    PreferenceBinder.bind(this, "prefs_file_name");
    高级用法

    使用 @BindPref 注释方法时,可以指定多个首选项键。 在这种情况下,当任何指定键的值更改时,将调用该方法。 例如:

    @BindPref({"show_full_names", "use_small_icons"})void refreshList() {
     adapter.notifyDataSetChanged();
    }

    具有多个首选项键的方法绑定不提供首选项的新值。 但如果与字段绑定一起使用,则将始终在新的首选项值被分配给任何注释字段之后调用。

    如果只希望初始化首选项值( 而且不用监听改变),则可以使用 listen 标志进行。 Altenatively,你可以使用 init 标志禁用初始化。

    @BindPref(value="use_small_icons", listen=false)void initUseSmallIcons(boolean useSmallIcons) {
     // Do something with the value//.. .}@BindPref(value="show_full_names", init=false)void onShowFullNamesChanged(boolean showFullNames) {
     // Do something with the value//.. .}
    默认值

    要为首选项指定默认值,请在包含默认值的static 字段中使用 @PreferenceDefault 注释,如下所示:

    @PreferenceDefault("my_preference_key") publicstaticStringMY_PREFERENCE_DEFAULT="Unknown";@BindPref("my_preference_key") void updateForValue(String valueOfPreference) {
     // do something with the value//.. .}

    在上面的示例中,PreferenceBinder 将调用 updateForValue(MY_PREFERENCE_DEFAULT) 如果初始化时没有为 "my_preference_key" 设置值,或者者如果给定键的值被删除( 带"侦听"已经启用) 。

    默认值应用于整个应用程序,因此不需要在每个类中指定它们。 你可能会发现将它们全部分配给一个单独的实用程序类是很方便的。

    小部件绑定

    首选项值也可以直接绑定到一些标准的Android小部件中。

    例如以下代码将自动加载键"灵敏度"的首选项值,并通过它的setProgress 方法将它的应用到 SeekBar

    @BindPref(value="sensitivity", bindTo=WidgetBindingType.SEEKBAR_PROGRESS)SeekBar sensitivity;

    除了将首选值载入小部件之外,PreferenceBinder 还将监听对值( 从用户输入)的SeekBar 进度的更改,并将新的值保存回你的SharedPreferences文件中,以获得给定的首选 !

    下表概述了当前支持的小部件绑定类型。 如果你想看到这里库中包含的绑定类型,请发布该特性请求的问题。

    "bindTo"类型的小部件类型方法保存用户更改?
    指定( 默认)-=不是
    已经激活视图setActivated不是
    已经启用视图setEnabled不是
    选定视图宋体不是
    可视性视图setVisibility ( 视图,可见或者 View.GONE )不是
    已经检查CompoundButtonsetChecked是的
    文本TextViewsetText不是
    SEEKBAR_PROGRESSSeekBarsetProgress是的
    进度ProgressBarsetProgress不是
    MAX_PROGRESSProgressBarsetMax不是

    插件生成配置

    将以下行添加到模块的gradle依赖项。

    compile 'me.denley.preferenceinjector:PreferenceInjector:3.0.2'

    如果你在应用程序中使用任何其他注释处理器( 比如 。 匕首,ButterKnife,等等 ) 然后你还需要将下面的内容添加到你的模块 file:的build.gradle 中

    android {
     packagingOptions {
     exclude 'META-INF/services/javax.annotation.processing.Processor' }
    }

    混淆器

    在使用混淆器时,需要指定应该保留生成的类,并且不应重命名带注释的字段和方法。 要实现这些标准,可以将以下几行添加到你的混淆器配置中:

    -keep class me.denley.preferencebinder.** { *; }
    -dontwarn me.denley.preferencebinder.internal.**
    -keep class **$$SharedPreferenceBinder { *; }
    -keepclasseswithmembernames class * {
     @me.denley.preferencebinder.* <fields>;
    }
    -keepclasseswithmembernames class * {
     @me.denley.preferencebinder.* <methods>;
    }

    许可证

    Copyright 2015 Denley Bihari
    Licensed under the Apache License, Version 2.0 (the"License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
     http://www.apache.org/licenses/LICENSE-2.0
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an"AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

    注解处理器结构适用于黄油刀



    文章标签:SHA  分享  Shared  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语