Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
Fizzzzer committed May 14, 2024
2 parents 19a1119 + 01db4fc commit dbc22a2
Show file tree
Hide file tree
Showing 15 changed files with 463 additions and 29 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.fizzer.base.lib.common

import android.text.InputFilter
import android.text.Spanned

/**
*
* @Author:Fizzer
* @Email:fizzer503@gmail.com
* @CreateDate:2024/4/9
* @Desc:中文过滤器,限制用户的中文输入
* 版本:1.0
* 修订历史:
* 使用方法: editText.filters = arrayOf(NoChineseInputFilter())
*/
class NoChineseInputFilter : InputFilter {
override fun filter(
source: CharSequence?, start: Int, end: Int,
dest: Spanned?, dstart: Int, dend: Int
): CharSequence? {
if (source == null){
return null
}

for (index in start until end){
if(Character.UnicodeBlock.of(source[index]) == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS){
return ""
}
}
return null
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ import java.io.Serializable
*/
interface ISharedPreferences {

fun file(fileName: String?): ISharedPreferences

fun putString(key: String, value: String)

fun getString(key: String, defaultValue: String): String
Expand Down
10 changes: 5 additions & 5 deletions FizzerBaseLib/src/main/java/com/fizzer/base/lib/sp/MMKVImpl.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.fizzer.base.lib.sp

import android.content.Context
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.tencent.mmkv.MMKV
Expand All @@ -11,18 +12,17 @@ import java.io.Serializable
* @Date: 2022/9/13
* @Description: MMKV实现类
*/
internal class MMKVImpl : ISharedPreferences {
internal class MMKVImpl(private var context: Context, fileName: String?) : ISharedPreferences {

private var kv = MMKV.defaultMMKV()


override fun file(fileName: String?): ISharedPreferences {
if (fileName?.isNotEmpty() == true) {
init {
if(fileName?.isNotEmpty() == true){
kv = MMKV.mmkvWithID(fileName)
}
return this
}


override fun putString(key: String, value: String) {
kv.encode(key, value)
}
Expand Down
7 changes: 0 additions & 7 deletions FizzerBaseLib/src/main/java/com/fizzer/base/lib/sp/SPImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,6 @@ internal class SPImpl(context: Context, private var defaultFileName: String) : I
mEditor = mSP?.edit()
}

override fun file(fileName: String?): ISharedPreferences {
val tmpFile = fileName.isNullOrEmpty().yes { defaultFileName }.otherwise { fileName }
mSP = mContext.getSharedPreferences(tmpFile, Context.MODE_PRIVATE)
mEditor = mSP?.edit()
return this
}

override fun putString(key: String, value: String) {
mEditor?.let {
mEditor?.putString(key, value)
Expand Down
67 changes: 58 additions & 9 deletions FizzerBaseLib/src/main/java/com/fizzer/base/lib/sp/SpFactory.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.fizzer.base.lib.sp

import android.content.Context
import com.fizzer.base.lib.android.application.App
import com.tencent.mmkv.MMKV

/**
Expand All @@ -13,7 +14,16 @@ object SpFactory {

const val SP_TYPE_SP = "SP"
const val SP_TYPE_MMKV = "MMKV"
private var _mSp: ISharedPreferences? = null

//用来缓存当前的SP文件
private var mSPMap = mutableMapOf<String, ISharedPreferences>()

//默认的文件名称,在init的时候,进行指定,可以设置为全局的
private var mDefaultFileName: String = "default"

//指定的SP类型,默认是系统类型
private var mSpType:String = SP_TYPE_SP


/**
* 初始化
Expand All @@ -22,23 +32,62 @@ object SpFactory {
* 最好在Application里面进行初始化
*/
fun init(context: Context, type: String = SP_TYPE_SP, fileName: String) {
mDefaultFileName = fileName
mSpType = type

var mSp: ISharedPreferences? = null
//这里做一下初始化操作
when (type) {
SP_TYPE_MMKV -> {
MMKV.initialize(context)
_mSp = MMKVImpl()
}
}

SP_TYPE_SP -> {
_mSp = SPImpl(context, fileName)
}
//实例化sp对象
mSp = instanceSp(context,type,fileName)

//加入到缓存列表中
mSPMap[fileName] = mSp
}

fun getSp(fileName: String? = mDefaultFileName): ISharedPreferences {

//防止传入的fileName为null的情况
var mFileName = fileName
if(fileName.isNullOrEmpty()){
mFileName = mDefaultFileName
}
//先冲缓存里面拿取对应的值
var mSp = mSPMap[mFileName]

//如果缓存里面拿取的为空,那么根据key值,重新实例化,并缓存到map中
if(mSp == null){
mSp = instanceSp(App.getApplication(), mSpType,mFileName!!)
mSPMap[mFileName] = mSp
}

//返回对应的sp对象
return mSp
}

fun getSp(fileName: String?): ISharedPreferences {
if (_mSp == null) {
throw RuntimeException("Please invoke init method first!!!")
/**
* 获取实例化的ISharePreferences
*/
private fun instanceSp(context: Context, type: String, fileName: String): ISharedPreferences {
return when (type) {
SP_TYPE_MMKV -> {
MMKVImpl(context, fileName)

}

SP_TYPE_SP -> {
SPImpl(context, fileName)
}

else -> {
SPImpl(context, fileName)
}
}
return _mSp!!.file(fileName)
}


Expand Down
Loading

0 comments on commit dbc22a2

Please sign in to comment.