From a9d33c1ec35bd102716c69900e32a41eea3d025e Mon Sep 17 00:00:00 2001 From: LUX-Timber Date: Sun, 7 Apr 2024 14:05:46 +0800 Subject: [PATCH] completely --- app/src/main/AndroidManifest.xml | 13 + .../soft/newkeyboard/AppInputMethodService.kt | 150 ++++++++- .../newkeyboard/activity/ApplyActivity.kt | 2 +- .../newkeyboard/activity/DetailsActivity.kt | 96 ++++-- .../newkeyboard/listener/ApplyListener.kt | 5 + .../timber/soft/newkeyboard/tools/ImgTools.kt | 5 - .../soft/newkeyboard/view/MyKeyboardView.kt | 317 ++++++++++++++++++ app/src/main/res/drawable/png_keybg.9.png | Bin 0 -> 6989 bytes .../main/res/drawable/png_keybg_press.9.png | Bin 0 -> 6643 bytes .../res/drawable/shape_white_keyboard.xml | 16 + app/src/main/res/drawable/svg_dele.xml | 9 + app/src/main/res/drawable/svg_shift_lit.xml | 9 + app/src/main/res/layout/view_input.xml | 19 ++ app/src/main/res/mipmap-xxxhdpi/main_bg.png | Bin 0 -> 87775 bytes app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/key_view.xml | 8 + app/src/main/res/xml/keyboard_letter.xml | 151 +++++++++ app/src/main/res/xml/keyboard_number.xml | 149 ++++++++ app/src/main/res/xml/keyboard_symbol.xml | 157 +++++++++ 19 files changed, 1057 insertions(+), 50 deletions(-) create mode 100644 app/src/main/java/com/timber/soft/newkeyboard/listener/ApplyListener.kt delete mode 100644 app/src/main/java/com/timber/soft/newkeyboard/tools/ImgTools.kt create mode 100644 app/src/main/java/com/timber/soft/newkeyboard/view/MyKeyboardView.kt create mode 100644 app/src/main/res/drawable/png_keybg.9.png create mode 100644 app/src/main/res/drawable/png_keybg_press.9.png create mode 100644 app/src/main/res/drawable/shape_white_keyboard.xml create mode 100644 app/src/main/res/drawable/svg_dele.xml create mode 100644 app/src/main/res/drawable/svg_shift_lit.xml create mode 100644 app/src/main/res/layout/view_input.xml create mode 100644 app/src/main/res/mipmap-xxxhdpi/main_bg.png create mode 100644 app/src/main/res/xml/key_view.xml create mode 100644 app/src/main/res/xml/keyboard_letter.xml create mode 100644 app/src/main/res/xml/keyboard_number.xml create mode 100644 app/src/main/res/xml/keyboard_symbol.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4895369..9ff3b48 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,6 +25,19 @@ + + + + + + + + diff --git a/app/src/main/java/com/timber/soft/newkeyboard/AppInputMethodService.kt b/app/src/main/java/com/timber/soft/newkeyboard/AppInputMethodService.kt index c605886..369cfc0 100644 --- a/app/src/main/java/com/timber/soft/newkeyboard/AppInputMethodService.kt +++ b/app/src/main/java/com/timber/soft/newkeyboard/AppInputMethodService.kt @@ -1,37 +1,100 @@ package com.timber.soft.newkeyboard import android.inputmethodservice.InputMethodService +import android.inputmethodservice.Keyboard import android.inputmethodservice.KeyboardView.OnKeyboardActionListener +import android.os.Build +import android.os.SystemClock +import android.view.KeyboardShortcutGroup import android.view.View +import android.view.inputmethod.EditorInfo +import androidx.annotation.RequiresApi +import com.timber.soft.newkeyboard.databinding.ViewInputBinding +import com.timber.soft.newkeyboard.tools.AppVal class AppInputMethodService : InputMethodService(), OnKeyboardActionListener { + private lateinit var binding: ViewInputBinding + private val views = + intArrayOf(R.xml.keyboard_letter, R.xml.keyboard_number, R.xml.keyboard_symbol) + private var mouble = false + private var laTime = -3L + + private fun keyCase(toBig: Boolean, keyboard: Keyboard) { + for (key in keyboard.keys) { + if (!key.label.isNullOrEmpty()) { + if (key.label.length == 1) { + var strin: Char = if (toBig) { + key.label.toString()[0].uppercaseChar() + } else { + key.label.toString()[0].lowercaseChar() + } + key.run { + label = strin.toString() + codes[0] = strin.code + } + } + } + } + } + + private fun changeXml(mode: Int) { + binding.myCustomInput.run { + when (mode) { + 0 -> { + xmlMode = AppVal.xml0 + keyboard = Keyboard(context, views[0]) + } + + 2 -> { + xmlMode = AppVal.xml2 + keyboard = Keyboard(context, views[2]) + + } + + 1 -> { + xmlMode = AppVal.xml1 + keyboard = Keyboard(context, views[1]) + } + } + } + } /** * 构建键盘视图 */ override fun onCreateInputView(): View { - return super.onCreateInputView() - TODO("Not yet implemented") + binding = ViewInputBinding.inflate(layoutInflater, null, false) + binding.myCustomInput.setOnKeyboardActionListener(this) + binding.myCustomInput.run { + keyboard = Keyboard(this@AppInputMethodService, views[0]) + isEnabled = true + } + return binding.root } - /** * 向用户展示键盘时候调用 */ + @RequiresApi(Build.VERSION_CODES.M) override fun onWindowShown() { super.onWindowShown() - TODO("Not yet implemented") + binding.myCustomInput.upUi(this@AppInputMethodService) } - /** * Called when the user presses a key. * * 监听特定的按钮 */ override fun onPress(primaryCode: Int) { - TODO("Not yet implemented") + mouble = false + if (primaryCode == Keyboard.KEYCODE_SHIFT) { + if (300 > SystemClock.elapsedRealtime() - laTime) { + mouble = true + } + laTime = SystemClock.elapsedRealtime() + } } /** @@ -40,7 +103,80 @@ class AppInputMethodService : InputMethodService(), OnKeyboardActionListener { * 监听用户点击的键盘按键 */ override fun onKey(primaryCode: Int, keyCodes: IntArray?) { - TODO("Not yet implemented") + + when (primaryCode) { + Keyboard.KEYCODE_SHIFT -> { + binding.myCustomInput.run { + val myKeyboard = keyboard + when (shiftStatus) { + AppVal.Shift_S -> { + shiftStatus = if (mouble) { + AppVal.Shift_B_lo + } else { + AppVal.Shift_B + } + keyCase(true, myKeyboard) + keyboard = myKeyboard + } + + AppVal.Shift_B_lo -> { + shiftStatus = AppVal.Shift_S + keyCase(false, myKeyboard) + keyboard = myKeyboard + } + + AppVal.Shift_B -> { + shiftStatus = if (mouble) { + AppVal.Shift_B_lo + } else { + keyCase(false, myKeyboard) + AppVal.Shift_S + } + keyboard = myKeyboard + } + } + } + + } + + Keyboard.KEYCODE_DONE -> { + currentInputConnection.performEditorAction(EditorInfo.IME_ACTION_DONE) + } + + Keyboard.KEYCODE_MODE_CHANGE -> { + binding.myCustomInput.run { + if (xmlMode == AppVal.xml0) { + changeXml(1) + } else { + changeXml(0) + } + } + } + + AppVal.SHIFT_NUMBER -> { + changeXml(2) + } + + Keyboard.KEYCODE_DELETE -> { + currentInputConnection.deleteSurroundingText(1, 0) + } + + AppVal.SHIFT_SYMBOL -> { + changeXml(1) + } + + else -> { + currentInputConnection.commitText(primaryCode.toChar().toString(), 1) + binding.myCustomInput.keyboard = binding.myCustomInput.apply { + if (shiftStatus == AppVal.Shift_B) { + shiftStatus = AppVal.Shift_S + keyCase(false, binding.myCustomInput.keyboard) + } + }.keyboard + } + + } + } diff --git a/app/src/main/java/com/timber/soft/newkeyboard/activity/ApplyActivity.kt b/app/src/main/java/com/timber/soft/newkeyboard/activity/ApplyActivity.kt index 4689c2e..830f511 100644 --- a/app/src/main/java/com/timber/soft/newkeyboard/activity/ApplyActivity.kt +++ b/app/src/main/java/com/timber/soft/newkeyboard/activity/ApplyActivity.kt @@ -67,7 +67,7 @@ class ApplyActivity : AppCompatActivity() { private fun isChoose(): Boolean { Settings.Secure.getString(contentResolver, Settings.Secure.DEFAULT_INPUT_METHOD).let { id -> return id.startsWith(packageName) - } ?: return false + } } private fun isEnable(): Boolean { diff --git a/app/src/main/java/com/timber/soft/newkeyboard/activity/DetailsActivity.kt b/app/src/main/java/com/timber/soft/newkeyboard/activity/DetailsActivity.kt index 5b48378..fe32099 100644 --- a/app/src/main/java/com/timber/soft/newkeyboard/activity/DetailsActivity.kt +++ b/app/src/main/java/com/timber/soft/newkeyboard/activity/DetailsActivity.kt @@ -22,6 +22,7 @@ import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.target.Target import com.timber.soft.newkeyboard.R import com.timber.soft.newkeyboard.databinding.ActivityDetailsBinding +import com.timber.soft.newkeyboard.listener.ApplyListener import com.timber.soft.newkeyboard.model.DataModel import com.timber.soft.newkeyboard.tools.AppVal import com.timber.soft.newkeyboard.tools.StatusBarTools @@ -36,13 +37,14 @@ import java.io.FileOutputStream import java.io.InputStream import java.io.RandomAccessFile -class DetailsActivity : AppCompatActivity() { +class DetailsActivity : AppCompatActivity(), ApplyListener { private lateinit var binding: ActivityDetailsBinding private lateinit var inputManager: InputMethodManager private lateinit var previewUrl: String private lateinit var zipPath: String private lateinit var dataModel: DataModel + private lateinit var sp: SharedPreferences override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -117,68 +119,59 @@ class DetailsActivity : AppCompatActivity() { e.printStackTrace() } + // 初始化键值对 + sp = getSharedPreferences( + AppVal.SHARE_NAME, Context.MODE_PRIVATE + ) } private fun applyTheme() { // 检查是否启动键盘并设置 if (!isEnable() || !isChoose()) { + Toast.makeText(this, getString(R.string.text_promote), Toast.LENGTH_SHORT).show() val intent = Intent(this, ApplyActivity::class.java) startActivity(intent) return } + binding.themeProgressbar.visibility = View.VISIBLE val file = File(zipPath) // 判断缓存中是否存在文件 if (file.exists()) { val allThemePath: String = getAllThemePath(dataModel.title) val edit = sp.edit() + // 存放键值对 edit.run { putString(AppVal.KEY_ALL_PATH, allThemePath) apply() } } else { - getZipData(dataModel.title, dataModel.zipUrl, this,this::onResult) + getZipData( + dataModel.title, dataModel.zipUrl, this@DetailsActivity, this@DetailsActivity + ) } } - private fun onResult(isSuccess: Boolean, path: String) { - binding.themeProgressbar.visibility = View.GONE - if (isSuccess) { - val lastIndexOf: Int = path.lastIndexOf(AppVal.res_path) - val substring = path.subSequence(0, lastIndexOf + AppVal.res_path.length).toString() - - val edit = sp.edit() - - edit.run { - putString(AppVal.KEY_ALL_PATH, substring) - apply() - } - - edit.run { - putString(dataModel.title, substring) - apply() - } - - Toast.makeText(this, getString(R.string.succ_apply), Toast.LENGTH_LONG).show() - finish() - } else { - Toast.makeText(this, getString(R.string.fail_apply), Toast.LENGTH_LONG).show() - } - } - - interface ApplyListener { - fun applyListener(isSuccess: Boolean, str: String) - } - + /** + * 从指定的URL下载zip文件,并在下载完成后处理该文件。 + * + * @param title 下载文件的标题 + * @param url 下载文件的URL + * @param con 上下文Context + * @param listener 处理文件完成后的回调接口 + */ private fun getZipData(title: String, url: String, con: Context, listener: ApplyListener) { Glide.with(con).asFile().load(url).addListener(object : RequestListener { + //失败回调 override fun onLoadFailed( e: GlideException?, model: Any?, target: Target, isFirstResource: Boolean ): Boolean { + // 回调失败 listener.applyListener(false, "") return false } + //成功回调 override fun onResourceReady( resource: File, model: Any, @@ -186,7 +179,6 @@ class DetailsActivity : AppCompatActivity() { dataSource: DataSource, isFirstResource: Boolean ): Boolean { - val fileInputStream = FileInputStream(resource) dealFile(title, url, fileInputStream, listener) return false @@ -201,9 +193,12 @@ class DetailsActivity : AppCompatActivity() { val zipPath = "${cacheDir}/${title}_ZIP" val unPath = "${cacheDir}/${title}" + // 将下载的zip文件保存到zipPath路径 val zipBoolean = writeNewFile(input, zipPath) + // 随机读写 val randomAccessFileInStream = RandomAccessFileInStream(RandomAccessFile(File(zipPath), "r")) + val openInArchive = SevenZip.openInArchive( ArchiveFormat.SEVEN_ZIP, randomAccessFileInStream ) @@ -213,6 +208,12 @@ class DetailsActivity : AppCompatActivity() { if (zipBoolean) { try { var filePath: String = "" + + /** + * 存档文件中的每个文件项。对于每个文件项,判断是否为文件(非文件夹), + * 如果是文件,则将其解压缩到目标路径unPath下的相应位置; + * 如果是文件夹,则创建对应的文件夹。 + */ openInArchive.simpleInterface.archiveItems.forEach { item -> if (!item.isFolder) { val file = File(unPath, item.path) @@ -223,10 +224,10 @@ class DetailsActivity : AppCompatActivity() { File(unPath, item.path).mkdirs() } } + //调用接口返回成功 listener.applyListener(true, filePath) } catch (ex: Exception) { listener.applyListener(false, "") - } finally { openInArchive.close() randomAccessFileInStream.close() @@ -266,9 +267,6 @@ class DetailsActivity : AppCompatActivity() { } - private val sp: SharedPreferences = getSharedPreferences( - AppVal.SHARE_NAME, Context.MODE_PRIVATE - ) private fun getAllThemePath(zip: String): String { val result = sp.getString(zip, "") @@ -281,7 +279,7 @@ class DetailsActivity : AppCompatActivity() { private fun isChoose(): Boolean { Settings.Secure.getString(contentResolver, Settings.Secure.DEFAULT_INPUT_METHOD).let { id -> return id.startsWith(packageName) - } ?: return false + } } /** @@ -296,4 +294,28 @@ class DetailsActivity : AppCompatActivity() { return false } + /** + * 点击设置后的回调接口 + */ + override fun applyListener(isSuccess: Boolean, str: String) { + binding.themeProgressbar.visibility = View.GONE + if (isSuccess) { + val lastIndexOf: Int = str.lastIndexOf(AppVal.res_path) + val substring = str.subSequence(0, lastIndexOf + AppVal.res_path.length).toString() + val edit = sp.edit() + edit.run { + putString(AppVal.KEY_ALL_PATH, substring) + apply() + } + edit.run { + putString(dataModel.title, substring) + apply() + } + Toast.makeText(this, getString(R.string.succ_apply), Toast.LENGTH_LONG).show() + finish() + } else { + Toast.makeText(this, getString(R.string.fail_apply), Toast.LENGTH_LONG).show() + } + } + } \ No newline at end of file diff --git a/app/src/main/java/com/timber/soft/newkeyboard/listener/ApplyListener.kt b/app/src/main/java/com/timber/soft/newkeyboard/listener/ApplyListener.kt new file mode 100644 index 0000000..3a218b6 --- /dev/null +++ b/app/src/main/java/com/timber/soft/newkeyboard/listener/ApplyListener.kt @@ -0,0 +1,5 @@ +package com.timber.soft.newkeyboard.listener + +interface ApplyListener { + fun applyListener(isSuccess: Boolean, str: String) +} \ No newline at end of file diff --git a/app/src/main/java/com/timber/soft/newkeyboard/tools/ImgTools.kt b/app/src/main/java/com/timber/soft/newkeyboard/tools/ImgTools.kt deleted file mode 100644 index fe2215b..0000000 --- a/app/src/main/java/com/timber/soft/newkeyboard/tools/ImgTools.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.timber.soft.newkeyboard.tools - -object ImgTools { - -} \ No newline at end of file diff --git a/app/src/main/java/com/timber/soft/newkeyboard/view/MyKeyboardView.kt b/app/src/main/java/com/timber/soft/newkeyboard/view/MyKeyboardView.kt new file mode 100644 index 0000000..d70439c --- /dev/null +++ b/app/src/main/java/com/timber/soft/newkeyboard/view/MyKeyboardView.kt @@ -0,0 +1,317 @@ +package com.timber.soft.newkeyboard.view + +import android.annotation.SuppressLint +import android.content.Context +import android.content.SharedPreferences +import android.graphics.BitmapFactory +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.Paint +import android.graphics.Rect +import android.graphics.drawable.BitmapDrawable +import android.graphics.drawable.Drawable +import android.graphics.drawable.StateListDrawable +import android.inputmethodservice.Keyboard +import android.inputmethodservice.KeyboardView +import android.os.Build +import android.util.AttributeSet +import android.util.Xml +import androidx.annotation.RequiresApi +import androidx.core.content.ContextCompat +import com.timber.soft.newkeyboard.R +import com.timber.soft.newkeyboard.tools.AppVal +import org.xmlpull.v1.XmlPullParser +import java.io.File +import java.io.StringReader + +@Suppress("DEPRECATION") +class MyKeyboardView @JvmOverloads constructor( + var myContext: Context, + attributeSet: AttributeSet? = null, + style: Int = 0 +) : KeyboardView(myContext, attributeSet, style) { + + inner class MyConfig { + lateinit var functionBackgroundDraw: Drawable + lateinit var spBackgroundDraw: Drawable + lateinit var normalBackgroundDraw: Drawable + var icShittLock: Drawable? = + ContextCompat.getDrawable(context, R.drawable.svg_shift_lit) + var icDel: Drawable? = + ContextCompat.getDrawable(context, R.drawable.svg_dele) + var allBg: Drawable? = + ContextCompat.getDrawable(context, R.mipmap.main_bg) + var icBshift: Drawable? = + ContextCompat.getDrawable(context, R.drawable.svg_shift_lit) + var icSshift: Drawable? = + ContextCompat.getDrawable(context, R.drawable.svg_shift_lit) + + @RequiresApi(Build.VERSION_CODES.M) + var keycolor: Int = context.resources.getColor(R.color.white, null) + + private val sp: SharedPreferences = context.getSharedPreferences( + AppVal.SHARE_NAME, + Context.MODE_PRIVATE + ) + + private fun getbgic(con: Context, filePath: String): Drawable? { + if (!File(filePath).exists()) { + return null + } + return BitmapDrawable(con.resources, BitmapFactory.decodeFile(filePath)) + } + + private fun getStatus(draw: Drawable, drawPress: Drawable): StateListDrawable { + return StateListDrawable().apply { + addState(intArrayOf(android.R.attr.state_pressed), drawPress) + addState(intArrayOf(), draw) + } + } + + @RequiresApi(Build.VERSION_CODES.M) + private fun gettextcolor(colorXmlPath: String) { + val file = File(colorXmlPath) + if (!file.exists()) return + val xmlP = Xml.newPullParser() + + xmlP.setInput(StringReader(file.readText())) + xmlP.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false) + + var eventT = xmlP.eventType + while (eventT != XmlPullParser.END_DOCUMENT) { + if (eventT == XmlPullParser.START_TAG && (xmlP.name == "color" || xmlP.name == "item")) { + val value = xmlP.getAttributeValue(null, "name") + if (value != null && value == AppVal.title_color) { + keycolor = Color.parseColor(xmlP.nextText()) + } + } + eventT = xmlP.next() + } + + + } + + + init { + val default = + ContextCompat.getDrawable(context, R.drawable.png_keybg) + val press = ContextCompat.getDrawable( + context, + R.drawable.png_keybg_press + ) + if (press != null) { + if (default != null) { + val listDrawable = StateListDrawable().apply { + addState(intArrayOf(android.R.attr.state_pressed), press) + addState(intArrayOf(), default) + } + functionBackgroundDraw = listDrawable + normalBackgroundDraw = listDrawable + spBackgroundDraw = listDrawable + } + } + } + + @RequiresApi(Build.VERSION_CODES.M) + fun updateConfig(con: Context) { + sp.getString(AppVal.KEY_ALL_PATH, "")?.let { + getbgic( + con, + it.plus(AppVal.parent_path).plus(AppVal.title_nor_Bg) + )?.let { drawBG -> + getbgic( + con, + it.plus(AppVal.parent_path).plus(AppVal.title_nor_Bg_press) + )?.let { drawPressBG -> + normalBackgroundDraw = getStatus(drawBG, drawPressBG) + } + + } + gettextcolor(it.plus(AppVal.color_path)) + getbgic(con, it.plus(AppVal.parent_path).plus(AppVal.title_sp_Bg))?.let { drawBG -> + getbgic( + con, + it.plus(AppVal.parent_path).plus(AppVal.title_sp_Bg_press) + )?.let { drawPressBG -> + spBackgroundDraw = getStatus(drawBG, drawPressBG) + } + + } + getbgic(con, it.plus(AppVal.xx_path).plus(AppVal.title_bg))?.run { + allBg = this + } + + getbgic( + con, + it.plus(AppVal.parent_path).plus(AppVal.title_fun_Bg) + )?.let { drawBG -> + getbgic( + con, + it.plus(AppVal.parent_path).plus(AppVal.title_func_bg_press) + )?.let { drawPressBG -> + functionBackgroundDraw = getStatus(drawBG, drawPressBG) + } + + } + + + getbgic(con, it.plus(AppVal.parent_path).plus(AppVal.title_shitf_ic))?.let { + icSshift = it + icBshift = it + } + getbgic( + con, + it.plus(AppVal.parent_path).plus(AppVal.title_del_ic) + )?.let { drawBG -> + icDel = getStatus(drawBG, drawBG) + + + } + getbgic(con, it.plus(AppVal.parent_path).plus(AppVal.title_shitf_ic_lock))?.let { + icShittLock = it + } + + } + } + } + + var config = MyConfig() + var shiftStatus = AppVal.Shift_S + var xmlMode = AppVal.xml0 + + @RequiresApi(Build.VERSION_CODES.M) + private var myPaint: Paint = Paint().apply { + isAntiAlias = true + textAlign = Paint.Align.CENTER + textSize = myContext.resources.displayMetrics.scaledDensity * 16f + color = config.keycolor + } + + @RequiresApi(Build.VERSION_CODES.M) + @SuppressLint("SuspiciousIndentation") + private fun andDraw( + myKey: Keyboard.Key, + keyBG: Drawable, + icon: Drawable?, + canvas: Canvas, + ) { + myKey.run { + keyBG.run { + bounds = Rect( + x.plus(paddingLeft), + y.plus(paddingTop), + width.plus(x.plus(paddingLeft)), + height.plus(y.plus(paddingTop)) + ) + state = currentDrawableState + draw(canvas) + } + } + myKey.run { + icon?.apply { + myKey.icon = this + + var icon_w = myKey.icon.intrinsicWidth.toFloat() + var icon_wr = icon_w / myKey.width.toFloat() + var icon_h = myKey.icon.intrinsicHeight.toFloat() + var icon_hr = icon_h / myKey.height.toFloat() + + + var tep1 = 0f + var tep2 = 0f + if (icon_wr > icon_hr) { + tep2 = icon_wr + tep1 = icon_wr.coerceAtLeast(0.5f) + + } else { + tep2 = icon_hr + tep1 = icon_hr.coerceAtLeast(0.5f) + + } + icon_h = (icon_h / tep2) * tep1 + icon_w = (icon_w / tep2) * tep1 + myKey.icon.let { + it.bounds = Rect().apply { + + top = + (myKey.y + paddingTop + (myKey.height - icon_h) / 2f).toInt() + left = + (myKey.x + paddingLeft + (myKey.width - icon_w) / 2f).toInt() + bottom = (top + icon_h).toInt() + right = (left + icon_w).toInt() + + } + it.draw(canvas) + } + } + + myPaint.color = config.keycolor + if (!label.isNullOrEmpty()) { + val y1 = y.plus(paddingRight).plus((height.div(2f))) + .plus((myPaint.textSize.minus(myPaint.descent())).div(2f)) + val x1 = x.plus(paddingLeft).plus((width.div(2f))) + canvas.drawText(label.toString(), x1, y1, myPaint) + } + } + } + + private fun getCurIc(): Drawable? { + return when (shiftStatus) { + AppVal.Shift_B_lo -> config.icShittLock + AppVal.Shift_B -> config.icBshift + AppVal.Shift_S -> config.icSshift + else -> config.icSshift + } + } + + @RequiresApi(Build.VERSION_CODES.M) + override fun onDraw(canvas: Canvas) { + super.onDraw(canvas) + keyboard.keys.forEach { + when (it.codes[0]) { + Keyboard.KEYCODE_SHIFT -> { + andDraw( + it, + config.functionBackgroundDraw, + getCurIc(), + canvas + ) + } + + AppVal.SHIFT_NUMBER, AppVal.SHIFT_SYMBOL -> { + andDraw(it, config.functionBackgroundDraw, null, canvas) + } + + Keyboard.KEYCODE_DELETE -> { + andDraw( + it, + config.functionBackgroundDraw, + config.icDel, + canvas + ) + } + + Keyboard.KEYCODE_MODE_CHANGE, Keyboard.KEYCODE_DONE -> { + andDraw( + it, + config.functionBackgroundDraw, + null, + canvas + ) + } + + else -> { + andDraw(it, config.normalBackgroundDraw, null, canvas) + } + } + } + } + + @RequiresApi(Build.VERSION_CODES.M) + fun upUi(con: Context) { + config.updateConfig(con) + background = config.allBg + invalidate() + } + +} \ No newline at end of file diff --git a/app/src/main/res/drawable/png_keybg.9.png b/app/src/main/res/drawable/png_keybg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf5166b16bbd7bf536d78582c202f3840541de4 GIT binary patch literal 6989 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 y<+vwdljXBH;3tz>x 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 Zq+Y0Yw6_cEWd6)yu{5>8)nGkR{tu?<9wq<) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/shape_white_keyboard.xml b/app/src/main/res/drawable/shape_white_keyboard.xml new file mode 100644 index 0000000..1e7a91a --- /dev/null +++ b/app/src/main/res/drawable/shape_white_keyboard.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/svg_dele.xml b/app/src/main/res/drawable/svg_dele.xml new file mode 100644 index 0000000..1c653c8 --- /dev/null +++ b/app/src/main/res/drawable/svg_dele.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/svg_shift_lit.xml b/app/src/main/res/drawable/svg_shift_lit.xml new file mode 100644 index 0000000..858c5ef --- /dev/null +++ b/app/src/main/res/drawable/svg_shift_lit.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/view_input.xml b/app/src/main/res/layout/view_input.xml new file mode 100644 index 0000000..cbc1091 --- /dev/null +++ b/app/src/main/res/layout/view_input.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxxhdpi/main_bg.png b/app/src/main/res/mipmap-xxxhdpi/main_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..22eb3bfcf9d9311c6b206daaf2a51def0726d1ba GIT binary patch literal 87775 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

KE@#ob?8Pre5 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

u&tcxW@ry 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 2: Enable Application successful Application failed, please try again + For normal use, please enter the setting to complete the setting steps. \ No newline at end of file diff --git a/app/src/main/res/xml/key_view.xml b/app/src/main/res/xml/key_view.xml new file mode 100644 index 0000000..16a78b2 --- /dev/null +++ b/app/src/main/res/xml/key_view.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/keyboard_letter.xml b/app/src/main/res/xml/keyboard_letter.xml new file mode 100644 index 0000000..c810e6c --- /dev/null +++ b/app/src/main/res/xml/keyboard_letter.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/keyboard_number.xml b/app/src/main/res/xml/keyboard_number.xml new file mode 100644 index 0000000..23117d4 --- /dev/null +++ b/app/src/main/res/xml/keyboard_number.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/keyboard_symbol.xml b/app/src/main/res/xml/keyboard_symbol.xml new file mode 100644 index 0000000..7470b49 --- /dev/null +++ b/app/src/main/res/xml/keyboard_symbol.xml @@ -0,0 +1,157 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file