在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):chibatching/Kotpref开源软件地址(OpenSource Url):https://github.com/chibatching/Kotpref开源编程语言(OpenSource Language):Kotlin 100.0%开源软件介绍(OpenSource Introduction):KotprefAndroid SharedPreference delegation for Kotlin. Installrepositories {
mavenCentral()
}
dependencies {
// core
implementation 'com.chibatching.kotpref:kotpref:2.13.1'
// optional, auto initialization module
implementation 'com.chibatching.kotpref:initializer:2.13.1'
// optional, support saving enum value and ordinal
implementation 'com.chibatching.kotpref:enum-support:2.13.1'
// optional, support saving json string through Gson
implementation 'com.chibatching.kotpref:gson-support:2.13.1'
implementation 'com.google.code.gson:gson:2.8.6'
// optional, support LiveData observable preference
implementation 'com.chibatching.kotpref:livedata-support:2.13.1'
implementation 'androidx.lifecycle:lifecycle-livedata:2.2.0'
// experimental, preference screen build dsl
implementation 'com.chibatching.kotpref:preference-screen-dsl:2.13.1'
} How to useDeclare preference modelobject UserInfo : KotprefModel() {
var name by stringPref()
var code by nullableStringPref()
var age by intPref(default = 14)
var highScore by longPref()
var rate by floatPref()
val prizes by stringSetPref {
val set = TreeSet<String>()
set.add("Beginner")
return@stringSetPref set
}
}
enum class GameLevel {
EASY,
NORMAL,
HARD
} Set upPass the application context to Kotpref Kotpref.init(context) or use auto initializer module. Injectable ContextIf you don't want to use singleton context because of unit test or etc.., you can use secondary constructor of KotprefModel to inject context. class InjectableContextSamplePref(context: Context) : KotprefModel(context) {
var sampleData by stringPref()
} If you set context to all your model, you don't need call Read and WriteUserInfo.gameLevel = GameLevel.HARD
UserInfo.name = "chibatching"
UserInfo.code = "DAEF2599-7FC9-49C5-9A11-3C12B14A6898"
UserInfo.age = 30
UserInfo.highScore = 49219902
UserInfo.rate = 49.21F
UserInfo.prizes.add("Bronze")
UserInfo.prizes.add("Silver")
UserInfo.prizes.add("Gold")
Log.d(TAG, "Game level: ${UserInfo.gameLevel}")
Log.d(TAG, "User name: ${UserInfo.name}")
Log.d(TAG, "User code: ${UserInfo.code}")
Log.d(TAG, "User age: ${UserInfo.age}")
Log.d(TAG, "User high score: ${UserInfo.highScore}")
Log.d(TAG, "User rate: ${UserInfo.rate}")
UserInfo.prizes.forEachIndexed { i, s -> Log.d(TAG, "prize[$i]: $s") } Bulk editUserInfo.bulk {
gameLevel = GameLevel.EASY
name = "chibatching Jr"
code = "451B65F6-EF95-4C2C-AE76-D34535F51B3B"
age = 2
highScore = 3901
rate = 0.4F
prizes.clear()
prizes.add("New Born")
}
// Bulk edit uses Editor#apply() method internally.
// If you want to apply immediately, you can use blockingBulk instead.
UserInfo.blockingBulk {
gameLevel = GameLevel.EASY
} Result shared preference xmlXML file name equals model class name. If model class named <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<long name="highScore" value="49219902" />
<set name="prizes">
<string>Beginner</string>
<string>Bronze</string>
<string>Gold</string>
<string>Silver</string>
</set>
<string name="name">chibatching</string>
<string name="code">DAEF2599-7FC9-49C5-9A11-3C12B14A6898</string>
<int name="age" value="30" />
<float name="rate" value="49.21" />
</map> OptionsChange default valuevar age: Int by intPref(18) or var age: Int by intPref(default = 18) Change preference keyYou can custom preference key or use from string resources. var useFunc1: Boolean by booleanPref(key = "use_func1")
var mode: Int by intPref(default = 1, key = R.string.pref_mode) Change default save modeKotpref save all preference property by var age: Int by intPref(default = 18, commitByDefault = true) Or change default for each KotprefModel.
Change XML file nameOverride object UserInfo : KotprefModel() {
override val kotprefName: String = "user_info" Change SharedPreference modeOverride object UserInfo : KotprefModel() {
override val kotprefMode: Int = Context.MODE_MULTI_PROCESS API Docshttps://chibatching.github.io/Kotpref/docs/api/-modules.html License
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论