diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 60eddaa..15cefa2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -28,9 +28,11 @@
-
+
-
+
> queryAll();
+ @Query("select * from keyboard order by RANDOM() LIMIT 1")
+ BackgroundEntity queryRandomItem();
+
@Query("select * from keyboard where categoryId = :cateId")
LiveData> queryCateId(long cateId);
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/service/KeyboardService.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/service/KeyboardService.kt
index 380750d..ef95297 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/service/KeyboardService.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/service/KeyboardService.kt
@@ -4,12 +4,16 @@ import android.inputmethodservice.InputMethodService
import android.inputmethodservice.Keyboard
import android.inputmethodservice.KeyboardView
import android.os.SystemClock
+import android.text.InputType
+import android.util.Log
import android.view.View
import android.view.inputmethod.EditorInfo
import android.view.inputmethod.InputMethodManager
+import com.sunny.app.soft.timberkeyboardnew.App
import com.sunny.app.soft.timberkeyboardnew.R
import com.sunny.app.soft.timberkeyboardnew.databinding.ViewInputBinding
import com.sunny.app.soft.timberkeyboardnew.tools.AppConstant
+import com.sunny.app.soft.timberkeyboardnew.tools.ZipTools
class KeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionListener {
@@ -20,6 +24,10 @@ class KeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionListe
private var mouble = false
private var laTime = -3L
+ private var curImeAction = EditorInfo.IME_ACTION_UNSPECIFIED
+
+ private var imm: InputMethodManager? = null
+
private fun keyCase(toBig: Boolean, keyboard: Keyboard) {
for (key in keyboard.keys) {
if (!key.label.isNullOrEmpty()) {
@@ -68,15 +76,28 @@ class KeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionListe
keyboard = Keyboard(this@KeyboardService, views[0])
isEnabled = true
}
+ imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
return binding.root
}
override fun onWindowShown() {
super.onWindowShown()
- binding.myCustomInput.upUi(this@KeyboardService)
+
+
+
+ curImeAction = ZipTools.getTextForImeAction(currentInputEditorInfo.imeOptions)
+
+
+
+
+ Log.d(App.TAG, "=======${curImeAction}")
+
+
+ binding.myCustomInput.upUi(this@KeyboardService, curImeAction)
}
+
override fun onPress(primaryCode: Int) {
mouble = false
if (primaryCode == Keyboard.KEYCODE_SHIFT) {
@@ -87,6 +108,7 @@ class KeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionListe
}
}
+
override fun onRelease(primaryCode: Int) {
}
@@ -126,12 +148,31 @@ class KeyboardService : InputMethodService(), KeyboardView.OnKeyboardActionListe
}
}
- // 点击完成
+ // 点击完成/回车/搜索
Keyboard.KEYCODE_DONE -> {
-// currentInputConnection.performEditorAction(EditorInfo.IME_ACTION_SEARCH)
- currentInputConnection.performEditorAction(EditorInfo.IME_ACTION_SEARCH)
- val imm = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
- imm.hideSoftInputFromWindow(binding.myCustomInput.windowToken, 0)
+
+ currentInputConnection.performEditorAction(curImeAction)
+ when (curImeAction) {
+ EditorInfo.IME_ACTION_NONE -> null
+ EditorInfo.IME_ACTION_GO -> "go"
+ EditorInfo.IME_ACTION_SEARCH -> {
+// Log.d(App.TAG, "=======IME_ACTION_SEARCH")
+
+ }
+ EditorInfo.IME_ACTION_SEND -> "send"
+ EditorInfo.IME_ACTION_NEXT -> "next"
+ EditorInfo.IME_ACTION_DONE -> {
+// Log.d(App.TAG, "=======IME_ACTION_DONE")
+
+ }
+ EditorInfo.IME_ACTION_PREVIOUS -> "previous"
+ else -> {
+// Log.d(App.TAG, "=======IME_ACTION_DONE")
+
+ }
+
+ }
+
}
Keyboard.KEYCODE_MODE_CHANGE -> {
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/AppConstant.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/AppConstant.kt
index 5ede48b..6e5c80b 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/AppConstant.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/AppConstant.kt
@@ -9,7 +9,11 @@ object AppConstant {
const val SHARE_NAME = "sp_name"
const val SHIFT_NUMBER = -300
const val SHIFT_SYMBOL = -301
- const val KEY_CODE_SPACE=32
+
+ //空格键
+ const val KEY_CODE_SPACE = 32
+
+
const val KEY_CUR_Skin_Number = "cur_skin_number"
const val KEY_CUR_STYLE = "cur_style"
const val KEY_CUR_Bg = "cur_bg"
@@ -48,10 +52,15 @@ object AppConstant {
fun getCapsenable(id: String) = String.format(App.appContext.getString(R.string.caps_res), id)
fun getCaps(id: String) = String.format(App.appContext.getString(R.string.caps_no_res), id)
- fun getnormalBg(id: String,style:Int=1) = String.format(App.appContext.getString(R.string.normal_res), id,style)
+ fun getnormalBg(id: String, style: Int = 1) =
+ String.format(App.appContext.getString(R.string.normal_res), id, style)
//skin_8001_space_arrows_shadows.9
fun getSpaceBg(id: String) = String.format(App.appContext.getString(R.string.space_res), id)
- fun getTextColor(id: String,style:Int=1) = String.format(App.appContext.getString(R.string.correct_text_color), id,style)
+
+ fun getEnterIcon(id: String) = String.format(App.appContext.getString(R.string.enter_res), id)
+
+ fun getTextColor(id: String, style: Int = 1) =
+ String.format(App.appContext.getString(R.string.correct_text_color), id, style)
}
\ No newline at end of file
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/DialogRecommend.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/DialogRecommend.kt
new file mode 100644
index 0000000..25b5942
--- /dev/null
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/DialogRecommend.kt
@@ -0,0 +1,122 @@
+package com.sunny.app.soft.timberkeyboardnew.tools
+
+import android.app.Activity
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.DialogInterface
+import android.content.Intent
+import android.content.IntentFilter
+import android.os.Bundle
+import android.provider.Settings
+import android.util.Log
+import android.view.Gravity
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.Window
+import android.view.WindowManager
+import android.view.inputmethod.InputMethodManager
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.isVisible
+import androidx.fragment.app.DialogFragment
+import com.anythink.debug.util.a
+import com.bumptech.glide.Glide
+import com.bumptech.glide.load.engine.DiskCacheStrategy
+import com.sunny.app.soft.timberkeyboardnew.App
+import com.sunny.app.soft.timberkeyboardnew.R
+import com.sunny.app.soft.timberkeyboardnew.data.entity.BackgroundEntity
+import com.sunny.app.soft.timberkeyboardnew.databinding.DialogRecommendBinding
+
+import com.sunny.app.soft.timberkeyboardnew.databinding.DialogStepBinding
+import com.sunny.app.soft.timberkeyboardnew.room.MyDatabase
+import com.sunny.app.soft.timberkeyboardnew.ui.activity.DownloadActivity
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
+
+
+class DialogRecommend(var activity: Activity, var onClose: () -> Unit) : DialogFragment() {
+
+
+ private lateinit var dialogVb: DialogRecommendBinding
+
+
+ private var inputManager: InputMethodManager? = null
+
+ private var data: BackgroundEntity? = null
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ dialogVb = DialogRecommendBinding.inflate(inflater, container, false)
+ init()
+ return dialogVb.root
+ }
+
+
+ private fun init() {
+ isCancelable = false
+ val window = dialog!!.window
+ window!!.setBackgroundDrawableResource(R.color.transparent)
+ window.decorView.setPadding(0, 0, 0, 0)
+
+ initBar(window)
+
+ val wlp = window.attributes
+ wlp.gravity = Gravity.CENTER
+ wlp.width = WindowManager.LayoutParams.WRAP_CONTENT
+ wlp.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window.attributes = wlp
+
+ dialogVb.close.setOnClickListener {
+ dismiss()
+
+ }
+ dialogVb.imageview.setOnClickListener {
+
+ }
+
+ CoroutineScope(Dispatchers.IO).launch {
+ data = MyDatabase.myDatabase.BackgroundEntityDao().queryRandomItem()
+ withContext(Dispatchers.Main) {
+ data?.let { backEntity ->
+ Glide
+ .with(App.appContext)
+ .load(backEntity.coverPath)
+ .thumbnail(0.5f)
+ .diskCacheStrategy(DiskCacheStrategy.ALL)
+ .into(dialogVb.imageview)
+
+ dialogVb.tvApply.setOnClickListener {
+ val intent = Intent(activity, DownloadActivity::class.java)
+ intent.putExtra(AppConstant.KEY_EXTRA, backEntity)
+ startActivity(intent)
+ dismiss()
+ }
+ }
+
+ }
+ }
+
+ }
+
+
+ override fun onDismiss(dialog: DialogInterface) {
+ super.onDismiss(dialog)
+ onClose.invoke()
+ }
+
+
+ private fun initBar(window: Window) {
+ window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
+ window.decorView.systemUiVisibility =
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
+ }
+
+ companion object {
+ @JvmStatic
+ fun newInstance(activity: Activity, onClose: () -> Unit) =
+ DialogRecommend(activity, onClose)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/DialogStep.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/DialogStep.kt
new file mode 100644
index 0000000..436db79
--- /dev/null
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/DialogStep.kt
@@ -0,0 +1,135 @@
+package com.sunny.app.soft.timberkeyboardnew.tools
+
+import android.app.Activity
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.DialogInterface
+import android.content.Intent
+import android.content.IntentFilter
+import android.os.Bundle
+import android.provider.Settings
+import android.util.Log
+import android.view.Gravity
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.Window
+import android.view.WindowManager
+import android.view.inputmethod.InputMethodManager
+import androidx.appcompat.app.AppCompatActivity
+import androidx.core.view.isVisible
+import androidx.fragment.app.DialogFragment
+import com.sunny.app.soft.timberkeyboardnew.App
+import com.sunny.app.soft.timberkeyboardnew.R
+
+import com.sunny.app.soft.timberkeyboardnew.databinding.DialogStepBinding
+
+
+class DialogStep(var activity: Activity,var onClose:()->Unit) : DialogFragment() {
+
+
+
+ private lateinit var dialogVb: DialogStepBinding
+
+
+
+ private var inputManager: InputMethodManager? = null
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ dialogVb = DialogStepBinding.inflate(inflater, container, false)
+ init()
+ return dialogVb.root
+ }
+
+
+ private fun choseKeyboard() {
+ if (inputManager == null)
+ inputManager = activity.getSystemService(AppCompatActivity.INPUT_METHOD_SERVICE) as InputMethodManager
+ inputManager?.showInputMethodPicker()
+ }
+
+ private fun EnableKeyboard() {
+ val intent = Intent(Settings.ACTION_INPUT_METHOD_SETTINGS)
+ startActivity(intent)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ updateUi()
+ }
+ private fun init() {
+ isCancelable = false
+ val window = dialog!!.window
+ window!!.setBackgroundDrawableResource(R.color.transparent)
+ window.decorView.setPadding(0, 0, 0, 0)
+
+ initBar(window)
+
+ val wlp = window.attributes
+ wlp.gravity = Gravity.BOTTOM
+ wlp.width = WindowManager.LayoutParams.MATCH_PARENT
+ wlp.height = WindowManager.LayoutParams.WRAP_CONTENT
+ window.attributes = wlp
+
+ dialogVb.close.setOnClickListener {
+ dismiss()
+
+ }
+ dialogVb.setKeyboardSteps1.setOnClickListener {
+ EnableKeyboard()
+ }
+ dialogVb.setKeyboardSteps2.setOnClickListener {
+
+ choseKeyboard()
+ }
+ activity.registerReceiver(
+ StepperReceiver(),
+ IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED)
+ )
+
+ }
+
+ inner class StepperReceiver : BroadcastReceiver() {
+ override fun onReceive(context: Context?, intent: Intent?) {
+ updateUi()
+ }
+
+ }
+
+ override fun onDismiss(dialog: DialogInterface) {
+ super.onDismiss(dialog)
+ onClose.invoke()
+ }
+
+ private fun updateUi() {
+ KeyboardManager.isEnable().let {
+ dialogVb.setKeyboardSteps1.isSelected = it
+ dialogVb.tvSteps1.isSelected = it
+ dialogVb.imOkSteps1.isVisible = it
+ }
+
+ KeyboardManager.isChoose().let {
+ dialogVb.setKeyboardSteps2.isSelected = it
+ dialogVb.tvSteps2.isSelected = it
+ dialogVb.imOkSteps2.isVisible = it
+ }
+ if(KeyboardManager.isChoose()&&KeyboardManager.isEnable()){
+ dismiss()
+ }
+
+
+ }
+
+ private fun initBar(window: Window) {
+ window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
+ window.decorView.systemUiVisibility =
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
+ }
+
+ companion object {
+ @JvmStatic
+ fun newInstance(activity: Activity,onClose:()->Unit) = DialogStep(activity,onClose)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/ZipTools.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/ZipTools.kt
index 9e285fa..56dec97 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/ZipTools.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/tools/ZipTools.kt
@@ -1,16 +1,19 @@
package com.sunny.app.soft.timberkeyboardnew.tools
+import android.graphics.drawable.Drawable
import android.util.Log
+import android.view.inputmethod.EditorInfo
import com.sunny.app.soft.timberkeyboardnew.App
-import com.sunny.app.soft.timberkeyboardnew.data.entity.BackgroundEntity
import com.sunny.app.soft.timberkeyboardnew.ui.listener.ApplyListener
import java.io.BufferedOutputStream
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException
+import java.io.InputStream
import java.util.zip.ZipInputStream
+
object ZipTools {
fun unzip(zipFilePath: String?, destDirectory: String, listener: ApplyListener) {
var destDir = File(destDirectory)
@@ -57,4 +60,30 @@ object ZipTools {
}
+ fun loadDrawableFromAsset(fileName: String): Drawable? {
+ val assetManager = App.appContext.assets
+ var input: InputStream? = null
+ return try {
+ input = assetManager.open(fileName)
+ Drawable.createFromStream(input, null)
+ } catch (e: IOException) {
+ Log.e("AssetHelper", "Could not load drawable from asset: $fileName")
+ null
+ } finally {
+ if (input!= null) {
+ try {
+ input.close()
+ } catch (e: IOException) {
+ Log.e(
+ "AssetHelper",
+ "Could not close input stream for asset: $fileName"
+ )
+ }
+ }
+ }
+ }
+ fun getTextForImeAction(imeOptions: Int): Int {
+ return imeOptions and EditorInfo.IME_MASK_ACTION
+ }
+
}
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/DisplayActivity.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/DisplayActivity.kt
new file mode 100644
index 0000000..238c771
--- /dev/null
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/DisplayActivity.kt
@@ -0,0 +1,42 @@
+package com.sunny.app.soft.timberkeyboardnew.ui.activity
+
+import android.view.View
+import android.view.inputmethod.InputMethodManager
+import com.sunny.app.soft.timberkeyboardnew.databinding.ActivityDisplayBinding
+
+
+class DisplayActivity : BaseActivity() {
+ private lateinit var binding: ActivityDisplayBinding
+ override fun loadAd(): Boolean = true
+
+ private var inputMethod: InputMethodManager? = null
+
+ private var showInput = false
+
+ override fun setRootView(): View {
+ binding = ActivityDisplayBinding.inflate(layoutInflater)
+ init()
+ return binding.root
+ }
+
+ private fun init() {
+ binding.back.setOnClickListener {
+ finish()
+ }
+ binding.et.requestFocus()
+
+ inputMethod = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
+ showInput = true
+ }
+
+ override fun onResume() {
+ super.onResume()
+
+ if (showInput) {
+ showInput = false
+ inputMethod?.showSoftInput(binding.et, InputMethodManager.SHOW_IMPLICIT)
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/DownloadActivity.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/DownloadActivity.kt
index ce8bd81..b59d2ca 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/DownloadActivity.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/DownloadActivity.kt
@@ -19,6 +19,7 @@ import com.sunny.app.soft.timberkeyboardnew.data.entity.BackgroundEntity
import com.sunny.app.soft.timberkeyboardnew.databinding.ActivityDownloadBinding
import com.sunny.app.soft.timberkeyboardnew.room.MyDatabase
import com.sunny.app.soft.timberkeyboardnew.tools.AppConstant
+import com.sunny.app.soft.timberkeyboardnew.tools.DialogStep
import com.sunny.app.soft.timberkeyboardnew.tools.KeyboardManager
import com.sunny.app.soft.timberkeyboardnew.tools.ZipTools
import com.sunny.app.soft.timberkeyboardnew.topon.AdManager
@@ -46,7 +47,15 @@ class DownloadActivity :
private lateinit var sp: SharedPreferences
+ private var stepDialog: DialogStep? = null
+
private var selectedStyle = 1
+
+ private var appliedSkinNumber: String = ""
+
+ private var appliedSkinStyle: Int = -1
+
+ private var defaultStyle = 0
override fun loadAd(): Boolean = true
override fun setRootView(): View {
binding = ActivityDownloadBinding.inflate(layoutInflater)
@@ -58,6 +67,9 @@ class DownloadActivity :
binding.downloadProgress.visibility = View.VISIBLE
backgroundEntity = intent.getSerializableExtra(AppConstant.KEY_EXTRA) as BackgroundEntity
sp = getSharedPreferences(AppConstant.SHARE_NAME, Context.MODE_PRIVATE)
+// sp.registerOnSharedPreferenceChangeListener { sharedPreferences, key ->
+//
+// }
initImg()
// unzipPath = /data/user/0/com.sunny.tools.app.soft.test/cache/skin_9
@@ -76,7 +88,6 @@ class DownloadActivity :
val zipFile = File(unzipPath)
if (!zipFile.exists()) {
getZipData(
- backgroundEntity.skinNumber,
backgroundEntity.contentPath,
this@DownloadActivity,
this
@@ -99,8 +110,11 @@ class DownloadActivity :
}
}
Log.d(App.TAG, "-------initList=${listOf.size}")
- val keyAdapter = KeyAdapter(this, listOf) {
+ val keyAdapter = KeyAdapter(this, defaultStyle, listOf) {
selectedStyle = it + 1
+ if (appliedSkinNumber == backgroundEntity.skinNumber.toString()) {
+ updateBtn(appliedSkinStyle == selectedStyle)
+ }
}
binding.listRecycler.run {
adapter = keyAdapter
@@ -125,7 +139,28 @@ class DownloadActivity :
binding.imLike.setOnClickListener(this)
}
+ /**
+ * isApplied 是否已经apply
+ */
+ private fun updateBtn(isApplied: Boolean) {
+ binding.btnDownload.isSelected = isApplied
+ binding.btnDownload.isEnabled = !isApplied
+ if (isApplied) {
+ binding.btnDownload.text = getString(R.string.applied)
+ } else {
+ binding.btnDownload.text = getString(R.string.apply)
+ }
+
+ }
+
private fun initImg() {
+ appliedSkinNumber = sp.getString(AppConstant.KEY_CUR_Skin_Number, "") ?: run { "-1" }
+ appliedSkinStyle = sp.getInt(AppConstant.KEY_CUR_STYLE, -1)
+ if (appliedSkinNumber == backgroundEntity.skinNumber.toString()) {
+ updateBtn(appliedSkinStyle == selectedStyle)
+ }else{
+ updateBtn(false)
+ }
binding.imLike.isSelected = backgroundEntity.like
try {
Glide
@@ -161,15 +196,20 @@ class DownloadActivity :
MyDatabase.myDatabase.BackgroundEntityDao().updateCollect(backgroundEntity.apply {
like = binding.imLike.isSelected
})
- Log.d(App.TAG, "-------updateCollect= ${backgroundEntity.skinNumber} ${binding.imLike.isSelected}")
+
}
}
private fun applySkin() {
if (!KeyboardManager.isChoose() || !KeyboardManager.isEnable()) {
- Toast.makeText(this, getString(R.string.unEnable), Toast.LENGTH_SHORT).show()
- val intent = Intent(this, SetKeyboardActivity::class.java)
- startActivity(intent)
+ if (stepDialog == null) {
+ stepDialog = DialogStep.newInstance(this@DownloadActivity) {
+ if (KeyboardManager.isChoose() && KeyboardManager.isEnable()) {
+ onShowAd()
+ }
+ }
+ }
+ stepDialog?.show(supportFragmentManager, "")
return
}
onShowAd()
@@ -188,16 +228,19 @@ class DownloadActivity :
edit.run {
putString(AppConstant.KEY_CUR_Skin_Number, backgroundEntity.skinNumber.toString())
putInt(AppConstant.KEY_CUR_STYLE, selectedStyle)
- putString(AppConstant.KEY_CUR_Bg,backgroundEntity.coverPath)
+ putString(AppConstant.KEY_CUR_Bg, backgroundEntity.coverPath)
apply()
+ Log.d(App.TAG, "------putConfig ----skin_Number = ${ backgroundEntity.skinNumber} style=${selectedStyle} ")
}
+
binding.downloadProgress.visibility = View.GONE
Toast.makeText(this, getString(R.string.succ_apply), Toast.LENGTH_LONG).show()
+ startActivity(Intent(this@DownloadActivity, DisplayActivity::class.java))
finish()
+
}
private fun getZipData(
- skinNumber: Int,
contentPath: String,
context: Context,
listener: ApplyListener
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/SelectActivity.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/ListActivity.kt
similarity index 91%
rename from app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/SelectActivity.kt
rename to app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/ListActivity.kt
index 4570227..1d759ef 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/SelectActivity.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/ListActivity.kt
@@ -13,7 +13,7 @@ import com.sunny.app.soft.timberkeyboardnew.tools.AppConstant
import com.sunny.app.soft.timberkeyboardnew.ui.adapter.SelectAdapter
import com.sunny.app.soft.timberkeyboardnew.ui.listener.OnBgItemClickListener
-class SelectActivity : BaseActivity(), View.OnClickListener {
+class ListActivity : BaseActivity(), View.OnClickListener {
private lateinit var binding: ActivitySelectBinding
private lateinit var categoryEntity: CategoryEntity
@@ -34,7 +34,7 @@ class SelectActivity : BaseActivity(), View.OnClickListener {
val selectAdapter =
SelectAdapter(this, object : OnBgItemClickListener {
override fun onItemClick(position: Int, backgroundEntity: BackgroundEntity) {
- val intent = Intent(this@SelectActivity, DownloadActivity::class.java)
+ val intent = Intent(this@ListActivity, DownloadActivity::class.java)
intent.putExtra(AppConstant.KEY_EXTRA, backgroundEntity)
startActivity(intent)
Log.e("TAG", "onItemClick: $backgroundEntity")
@@ -47,7 +47,7 @@ class SelectActivity : BaseActivity(), View.OnClickListener {
}
binding.selectRecyclerView.apply {
- layoutManager = GridLayoutManager(this@SelectActivity, 1)
+ layoutManager = GridLayoutManager(this@ListActivity, 1)
adapter = selectAdapter
}
}
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/MainActivity.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/MainActivity.kt
index 1dd152d..c78a5ff 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/MainActivity.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/MainActivity.kt
@@ -1,10 +1,16 @@
package com.sunny.app.soft.timberkeyboardnew.ui.activity
+import android.content.Intent
+import android.provider.Settings
import android.view.View
+import android.view.inputmethod.InputMethodManager
import androidx.fragment.app.Fragment
import androidx.viewpager.widget.ViewPager
import com.sunny.app.soft.timberkeyboardnew.R
import com.sunny.app.soft.timberkeyboardnew.databinding.ActivityMainBinding
+import com.sunny.app.soft.timberkeyboardnew.tools.DialogRecommend
+import com.sunny.app.soft.timberkeyboardnew.tools.DialogStep
+import com.sunny.app.soft.timberkeyboardnew.tools.KeyboardManager
import com.sunny.app.soft.timberkeyboardnew.topon.AdManager
import com.sunny.app.soft.timberkeyboardnew.ui.adapter.MainViewPagerAdapter
import com.sunny.app.soft.timberkeyboardnew.ui.fragment.CollectFragment
@@ -18,6 +24,11 @@ class MainActivity :
private lateinit var binding: ActivityMainBinding
private lateinit var fragmentList: MutableList
+
+
+ private var stepDialog: DialogStep? = null
+
+ private var recommendDialog: DialogRecommend? = null
override fun loadAd(): Boolean = true
override fun setRootView(): View {
@@ -29,6 +40,7 @@ class MainActivity :
super.initView()
initViewPager()
initTabButton()
+ checkStep()
}
private fun initTabButton() {
@@ -37,6 +49,31 @@ class MainActivity :
binding.mainTabCollect.setOnClickListener(this)
}
+
+ private fun checkStep() {
+ if (!KeyboardManager.isEnable() || !KeyboardManager.isChoose()) {
+ if (stepDialog == null) {
+ stepDialog = DialogStep.newInstance(this@MainActivity) {
+ showRecommend()
+ }
+ }
+ stepDialog?.show(supportFragmentManager, "")
+ } else {
+ showRecommend()
+ }
+
+ }
+
+ private fun showRecommend() {
+ if (recommendDialog == null) {
+ recommendDialog = DialogRecommend.newInstance(this@MainActivity) {
+
+ }
+ }
+ recommendDialog?.show(supportFragmentManager, "")
+ }
+
+
private fun initViewPager() {
fragmentList = mutableListOf()
fragmentList.add(HomeFragment())
@@ -80,9 +117,11 @@ class MainActivity :
binding.mainTabHome -> {
setTabSelect(0)
}
+
binding.mainTabCollect -> {
setTabSelect(1)
}
+
binding.mainTabSet -> {
setTabSelect(2)
}
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/SetKeyboardActivity.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/SetKeyboardActivity.kt
index 7289010..bf9de63 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/SetKeyboardActivity.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/activity/SetKeyboardActivity.kt
@@ -52,19 +52,19 @@ class SetKeyboardActivity :
}
private fun updateUi() {
- if (KeyboardManager.isEnable()) {
- binding.setKeyboardSteps1.setBackgroundResource(R.drawable.shape_r24_grey)
- } else {
- binding.setKeyboardSteps1.setBackgroundResource(R.drawable.shape_r24_orange)
- }
- if (KeyboardManager.isChoose()) {
- binding.setKeyboardSteps2.setBackgroundResource(R.drawable.shape_r24_grey)
- } else {
- binding.setKeyboardSteps2.setBackgroundResource(R.drawable.shape_r24_orange)
- }
- if (KeyboardManager.isChoose() && KeyboardManager.isEnable()) {
- showInfoDialog()
- }
+// if (KeyboardManager.isEnable()) {
+// binding.setKeyboardSteps1.setBackgroundResource(R.drawable.shape_r24_grey)
+// } else {
+// binding.setKeyboardSteps1.setBackgroundResource(R.drawable.shape_r24_orange)
+// }
+// if (KeyboardManager.isChoose()) {
+// binding.setKeyboardSteps2.setBackgroundResource(R.drawable.shape_r24_grey)
+// } else {
+// binding.setKeyboardSteps2.setBackgroundResource(R.drawable.shape_r24_orange)
+// }
+// if (KeyboardManager.isChoose() && KeyboardManager.isEnable()) {
+// showInfoDialog()
+// }
}
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/adapter/KeyAdapter.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/adapter/KeyAdapter.kt
index 433b683..9c28437 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/adapter/KeyAdapter.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/adapter/KeyAdapter.kt
@@ -21,11 +21,13 @@ import com.sunny.app.soft.timberkeyboardnew.R
class KeyAdapter(
private val context: Context,
+ private var selectedPos: Int = 0,
private val modelList: List,
private val listener: (Int) -> Unit
) : RecyclerView.Adapter() {
- private var selectedPos: Int = 0
+
+
inner class ItemViewHolder(view: View) : RecyclerView.ViewHolder(view) {
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/CollectFragment.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/CollectFragment.kt
index ec80a23..456e2bd 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/CollectFragment.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/CollectFragment.kt
@@ -6,21 +6,16 @@ import android.view.View
import androidx.core.view.isVisible
import androidx.recyclerview.widget.LinearLayoutManager
import com.sunny.app.soft.timberkeyboardnew.App
-import com.sunny.app.soft.timberkeyboardnew.R
-import com.sunny.app.soft.timberkeyboardnew.data.DataManager
import com.sunny.app.soft.timberkeyboardnew.data.entity.BackgroundEntity
import com.sunny.app.soft.timberkeyboardnew.data.entity.CategoryEntity
import com.sunny.app.soft.timberkeyboardnew.databinding.FragmentCollectBinding
-import com.sunny.app.soft.timberkeyboardnew.databinding.FragmentHomeBinding
import com.sunny.app.soft.timberkeyboardnew.room.MyDatabase
import com.sunny.app.soft.timberkeyboardnew.tools.AppConstant
import com.sunny.app.soft.timberkeyboardnew.topon.AdManager
import com.sunny.app.soft.timberkeyboardnew.ui.activity.DownloadActivity
-import com.sunny.app.soft.timberkeyboardnew.ui.activity.SelectActivity
-import com.sunny.app.soft.timberkeyboardnew.ui.adapter.HomeViewAdapter
+import com.sunny.app.soft.timberkeyboardnew.ui.activity.ListActivity
import com.sunny.app.soft.timberkeyboardnew.ui.adapter.SelectAdapter
import com.sunny.app.soft.timberkeyboardnew.ui.listener.OnBgItemClickListener
-import com.sunny.app.soft.timberkeyboardnew.ui.listener.OnItemClickListener
class CollectFragment :
BaseFragment() {
@@ -70,7 +65,7 @@ class CollectFragment :
}
private fun enterList() {
- val intent = Intent(requireContext(), SelectActivity::class.java)
+ val intent = Intent(requireContext(), ListActivity::class.java)
intent.putExtra(AppConstant.KEY_EXTRA, data)
startActivity(intent)
}
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/HomeFragment.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/HomeFragment.kt
index ba2bbd8..31955e7 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/HomeFragment.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/HomeFragment.kt
@@ -6,13 +6,12 @@ import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import com.sunny.app.soft.timberkeyboardnew.App
import com.sunny.app.soft.timberkeyboardnew.R
-import com.sunny.app.soft.timberkeyboardnew.data.DataManager
import com.sunny.app.soft.timberkeyboardnew.data.entity.CategoryEntity
import com.sunny.app.soft.timberkeyboardnew.databinding.FragmentHomeBinding
import com.sunny.app.soft.timberkeyboardnew.room.MyDatabase
import com.sunny.app.soft.timberkeyboardnew.tools.AppConstant
import com.sunny.app.soft.timberkeyboardnew.topon.AdManager
-import com.sunny.app.soft.timberkeyboardnew.ui.activity.SelectActivity
+import com.sunny.app.soft.timberkeyboardnew.ui.activity.ListActivity
import com.sunny.app.soft.timberkeyboardnew.ui.adapter.HomeViewAdapter
import com.sunny.app.soft.timberkeyboardnew.ui.listener.OnItemClickListener
@@ -58,7 +57,7 @@ class HomeFragment :
}
private fun enterList() {
- val intent = Intent(requireContext(), SelectActivity::class.java)
+ val intent = Intent(requireContext(), ListActivity::class.java)
intent.putExtra(AppConstant.KEY_EXTRA, data)
startActivity(intent)
}
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/SettingFragment.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/SettingFragment.kt
index 6cf70ce..9664616 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/SettingFragment.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/fragment/SettingFragment.kt
@@ -41,11 +41,7 @@ class SettingFragment : BaseFragment(), View.OnClickListener {
}
binding.settingLayoutSetKeyboard -> {
- val intent = Intent(
- requireContext(),
- SetKeyboardActivity::class.java
- )
- startActivity(intent)
+
}
}
}
diff --git a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/view/MyKeyboardView.kt b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/view/MyKeyboardView.kt
index c3d9420..07b1823 100644
--- a/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/view/MyKeyboardView.kt
+++ b/app/src/main/java/com/sunny/app/soft/timberkeyboardnew/ui/view/MyKeyboardView.kt
@@ -15,12 +15,8 @@ import android.inputmethodservice.Keyboard
import android.inputmethodservice.KeyboardView
import android.util.AttributeSet
import android.util.Log
+import android.view.inputmethod.EditorInfo
import androidx.core.content.ContextCompat
-import com.bumptech.glide.Glide
-import com.bumptech.glide.load.DataSource
-import com.bumptech.glide.load.engine.GlideException
-import com.bumptech.glide.request.RequestListener
-import com.bumptech.glide.request.target.Target
import com.sunny.app.soft.timberkeyboardnew.App
import com.sunny.app.soft.timberkeyboardnew.R
import com.sunny.app.soft.timberkeyboardnew.tools.AppConstant
@@ -35,6 +31,9 @@ class MyKeyboardView @JvmOverloads constructor(
style: Int = 0
) : KeyboardView(myContext, attributeSet, style) {
+ private var curimeAction = EditorInfo.IME_ACTION_UNSPECIFIED
+
+
inner class MyConfig {
lateinit var functionBackgroundDraw: Drawable
lateinit var spBackgroundDraw: Drawable
@@ -50,6 +49,12 @@ class MyKeyboardView @JvmOverloads constructor(
var icSshift: Drawable? =
ContextCompat.getDrawable(context, R.drawable.svg_shift)
+ var icEnter: Drawable? =
+ ContextCompat.getDrawable(context, R.drawable.key_ic_enter)
+
+ var icSearch: Drawable? =
+ ContextCompat.getDrawable(context, R.drawable.key_ic_search)
+
var keycolor: Int = context.resources.getColor(R.color.white33, null)
private val sp: SharedPreferences = context.getSharedPreferences(
@@ -73,7 +78,7 @@ class MyKeyboardView @JvmOverloads constructor(
private fun gettextcolornew(filePath: String) {
- if(File(filePath).exists()){
+ if (File(filePath).exists()) {
val decodeFile = BitmapFactory.decodeFile(filePath)
val pixelColor: Int = decodeFile.getPixel(0, 0)
val red = Color.red(pixelColor)
@@ -84,6 +89,7 @@ class MyKeyboardView @JvmOverloads constructor(
}
}
+
init {
val default =
ContextCompat.getDrawable(context, R.drawable.png_keybg)
@@ -103,60 +109,43 @@ class MyKeyboardView @JvmOverloads constructor(
fun updateConfig(con: Context) {
sp.getString(AppConstant.KEY_CUR_Skin_Number, "")?.let { skin_Number ->
- val unzipPath = ZipTools.getUnzipPath(skin_Number)+"/"
+ val unzipPath = ZipTools.getUnzipPath(skin_Number) + "/"
val style = sp.getInt(AppConstant.KEY_CUR_STYLE, 1)
- Log.d(App.TAG,"------update="+ unzipPath.plus(AppConstant.getnormalBg(skin_Number,style)))
+ Log.d(App.TAG, "------updateConfig----skin_Number = $skin_Number style=${style} ")
- gettextcolornew(unzipPath.plus(AppConstant.getTextColor(skin_Number,style)))
+ gettextcolornew(unzipPath.plus(AppConstant.getTextColor(skin_Number, style)))
getbgic(
con,
- unzipPath.plus(AppConstant.getnormalBg(skin_Number,style))
+ unzipPath.plus(AppConstant.getnormalBg(skin_Number, style))
)?.let { drawBG ->
- normalBackgroundDraw = getStatus(drawBG, drawBG)
+ normalBackgroundDraw = getStatus(drawBG, drawBG)
}
getbgic(con, unzipPath.plus(AppConstant.getSpaceBg(skin_Number)))?.let { drawBG ->
- spBackgroundDraw = getStatus(drawBG, drawBG)
+ spBackgroundDraw = getStatus(drawBG, drawBG)
}
sp.getString(AppConstant.KEY_CUR_Bg, "")?.run {
- Glide.with(App.appContext).asDrawable().load(this).listener(object :RequestListener{
- override fun onLoadFailed(
- e: GlideException?,
- model: Any?,
- target: Target,
- isFirstResource: Boolean
- ): Boolean {
- return false
- }
-
- override fun onResourceReady(
- resource: Drawable,
- model: Any,
- target: Target?,
- dataSource: DataSource,
- isFirstResource: Boolean
- ): Boolean {
- allBg = resource
- return false
- }
-
- }).preload()
-
+ //file:///android_asset/Abstract/photo_24055_89_44_1654593252.png
+ val replace = this.replace("file:///android_asset/", "")
+ val loadDrawableFromAsset = ZipTools.loadDrawableFromAsset(replace)
+ loadDrawableFromAsset?.let {
+ allBg = it
+ Log.d(App.TAG, "------updateConfig----allBg ")
+ }
}
// ok
getbgic(
con,
- unzipPath.plus(AppConstant.getnormalBg(skin_Number,style))
+ unzipPath.plus(AppConstant.getnormalBg(skin_Number, style))
)?.let { drawBG ->
- functionBackgroundDraw = getStatus(drawBG, drawBG)
+ functionBackgroundDraw = getStatus(drawBG, drawBG)
}
-
// ok
getbgic(con, unzipPath.plus(AppConstant.getCaps(skin_Number)))?.let {
icSshift = it
@@ -176,6 +165,10 @@ class MyKeyboardView @JvmOverloads constructor(
icShittLock = it
}
+ getbgic(con, unzipPath.plus(AppConstant.getEnterIcon(skin_Number)))?.let {
+ icEnter = it
+ }
+
}
}
}
@@ -196,6 +189,7 @@ class MyKeyboardView @JvmOverloads constructor(
myKey: Keyboard.Key,
keyBG: Drawable,
icon: Drawable?,
+ customerLabel: String? = null,
canvas: Canvas,
) {
myKey.run {
@@ -250,12 +244,20 @@ class MyKeyboardView @JvmOverloads constructor(
}
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)
+
+ 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)))
+ customerLabel?.let {
+ myPaint.textSize = myContext.resources.displayMetrics.scaledDensity * 13f
+ canvas.drawText(it, x1, y1, myPaint)
+ }.run {
+ if (!label.isNullOrEmpty()) {
+ myPaint.textSize = myContext.resources.displayMetrics.scaledDensity * 16f
+ canvas.drawText(label.toString(), x1, y1, myPaint)
+ }
}
+
}
}
@@ -270,6 +272,7 @@ class MyKeyboardView @JvmOverloads constructor(
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
+
keyboard.keys.forEach {
when (it.codes[0]) {
Keyboard.KEYCODE_SHIFT -> {
@@ -277,45 +280,86 @@ class MyKeyboardView @JvmOverloads constructor(
it,
config.functionBackgroundDraw,
getCurIc(),
+ null,
canvas
)
}
AppConstant.SHIFT_NUMBER, AppConstant.SHIFT_SYMBOL -> {
- andDraw(it, config.functionBackgroundDraw, null, canvas)
+ andDraw(it, config.functionBackgroundDraw, null,null, canvas)
}
Keyboard.KEYCODE_DELETE -> {
andDraw(
it,
config.functionBackgroundDraw,
- config.icDel,
+ config.icDel,null,
canvas
)
}
- Keyboard.KEYCODE_MODE_CHANGE, Keyboard.KEYCODE_DONE -> {
+ Keyboard.KEYCODE_MODE_CHANGE -> {
andDraw(
it,
config.functionBackgroundDraw,
- null,
+ null,null,
canvas
)
}
- AppConstant.KEY_CODE_SPACE-> {
- andDraw(it, config.spBackgroundDraw, null, canvas)
+ AppConstant.KEY_CODE_SPACE -> {
+ andDraw(it, config.spBackgroundDraw, null,null, canvas)
+ }
+
+ Keyboard.KEYCODE_DONE -> {
+ when (curimeAction) {
+// EditorInfo.IME_ACTION_NONE -> {
+// Log.d(App.TAG, "=======NONE")
+// andDraw(it, config.functionBackgroundDraw, config.icEnter,null, canvas)
+// }
+// EditorInfo.IME_ACTION_GO -> {
+//
+// Log.d(App.TAG, "=======go")
+// andDraw(it, config.functionBackgroundDraw,null,"Go", canvas)
+// }
+ EditorInfo.IME_ACTION_SEARCH -> {
+ Log.d(App.TAG, "=======SEARCH")
+ andDraw(it, config.functionBackgroundDraw, null,"Search", canvas)
+ }
+// EditorInfo.IME_ACTION_SEND -> {
+// Log.d(App.TAG, "=======SEND")
+// andDraw(it, config.functionBackgroundDraw,null,"Send", canvas)
+// }
+// EditorInfo.IME_ACTION_NEXT -> {
+// Log.d(App.TAG, "=======NEXT")
+// andDraw(it, config.functionBackgroundDraw,null,"Next", canvas)
+// }
+// EditorInfo.IME_ACTION_DONE -> {
+// Log.d(App.TAG, "=======DONE")
+// andDraw(it, config.functionBackgroundDraw,null,"Done", canvas)
+// }
+// EditorInfo.IME_ACTION_PREVIOUS -> {
+// Log.d(App.TAG, "=======PREVIOUS")
+// andDraw(it, config.functionBackgroundDraw,null,"Previous", canvas)
+// }
+ else -> {
+ Log.d(App.TAG, "=======else")
+ andDraw(it, config.functionBackgroundDraw,null,"Done", canvas)
+ }
+ }
+
}
else -> {
- andDraw(it, config.normalBackgroundDraw, null, canvas)
+ andDraw(it, config.normalBackgroundDraw, null, null,canvas)
}
}
}
}
- fun upUi(con: Context) {
+ fun upUi(con: Context, ime: Int) {
+ curimeAction = ime
config.updateConfig(con)
background = config.allBg
invalidate()
diff --git a/app/src/main/res/color/step_text_color.xml b/app/src/main/res/color/step_text_color.xml
new file mode 100644
index 0000000..915ff68
--- /dev/null
+++ b/app/src/main/res/color/step_text_color.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_edittext.xml b/app/src/main/res/drawable/bg_edittext.xml
new file mode 100644
index 0000000..e82551b
--- /dev/null
+++ b/app/src/main/res/drawable/bg_edittext.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/dialog_close.xml b/app/src/main/res/drawable/dialog_close.xml
new file mode 100644
index 0000000..3077880
--- /dev/null
+++ b/app/src/main/res/drawable/dialog_close.xml
@@ -0,0 +1,14 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/key_ic_enter.xml b/app/src/main/res/drawable/key_ic_enter.xml
new file mode 100644
index 0000000..d663b5d
--- /dev/null
+++ b/app/src/main/res/drawable/key_ic_enter.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/key_ic_search.xml b/app/src/main/res/drawable/key_ic_search.xml
new file mode 100644
index 0000000..ed94257
--- /dev/null
+++ b/app/src/main/res/drawable/key_ic_search.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/selector_step.xml b/app/src/main/res/drawable/selector_step.xml
new file mode 100644
index 0000000..961ee78
--- /dev/null
+++ b/app/src/main/res/drawable/selector_step.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_12dp_step.xml b/app/src/main/res/drawable/shape_12dp_step.xml
new file mode 100644
index 0000000..8e15441
--- /dev/null
+++ b/app/src/main/res/drawable/shape_12dp_step.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_r24_grey.xml b/app/src/main/res/drawable/shape_12dp_step_true.xml
similarity index 63%
rename from app/src/main/res/drawable/shape_r24_grey.xml
rename to app/src/main/res/drawable/shape_12dp_step_true.xml
index 1b094f3..1a7569b 100644
--- a/app/src/main/res/drawable/shape_r24_grey.xml
+++ b/app/src/main/res/drawable/shape_12dp_step_true.xml
@@ -1,7 +1,7 @@
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_r20_white.xml b/app/src/main/res/drawable/shape_r20_white.xml
deleted file mode 100644
index 7a9040e..0000000
--- a/app/src/main/res/drawable/shape_r20_white.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/shape_r24_orange.xml b/app/src/main/res/drawable/shape_r24_orange.xml
deleted file mode 100644
index b79cdba..0000000
--- a/app/src/main/res/drawable/shape_r24_orange.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/drawable/step_ok.xml b/app/src/main/res/drawable/step_ok.xml
new file mode 100644
index 0000000..2c81666
--- /dev/null
+++ b/app/src/main/res/drawable/step_ok.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_display.xml b/app/src/main/res/layout/activity_display.xml
new file mode 100644
index 0000000..c5790ee
--- /dev/null
+++ b/app/src/main/res/layout/activity_display.xml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_download.xml b/app/src/main/res/layout/activity_download.xml
index ae56434..b47dbb4 100644
--- a/app/src/main/res/layout/activity_download.xml
+++ b/app/src/main/res/layout/activity_download.xml
@@ -11,7 +11,7 @@
android:layout_height="match_parent"
android:background="@color/white"
android:orientation="vertical"
- tools:context=".ui.activity.SelectActivity">
+ tools:context=".ui.activity.ListActivity">
+ android:text="@string/apply"
+ android:textColor="@color/step_text_color"
+ android:textSize="19sp" />
diff --git a/app/src/main/res/layout/activity_enable.xml b/app/src/main/res/layout/activity_enable.xml
index 76f6d15..686cab5 100644
--- a/app/src/main/res/layout/activity_enable.xml
+++ b/app/src/main/res/layout/activity_enable.xml
@@ -63,11 +63,11 @@
+ tools:context=".ui.activity.ListActivity">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_step.xml b/app/src/main/res/layout/dialog_step.xml
new file mode 100644
index 0000000..60364b3
--- /dev/null
+++ b/app/src/main/res/layout/dialog_step.xml
@@ -0,0 +1,114 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_display.png b/app/src/main/res/mipmap-xxxhdpi/bg_display.png
new file mode 100644
index 0000000..e7927d3
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/bg_display.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_recommend.png b/app/src/main/res/mipmap-xxxhdpi/bg_recommend.png
new file mode 100644
index 0000000..62746ae
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/bg_recommend.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bg_recommend_btn.png b/app/src/main/res/mipmap-xxxhdpi/bg_recommend_btn.png
new file mode 100644
index 0000000..6349c3e
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/bg_recommend_btn.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/dialog_bg.png b/app/src/main/res/mipmap-xxxhdpi/dialog_bg.png
new file mode 100644
index 0000000..c9cf383
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/dialog_bg.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/im_bell.png b/app/src/main/res/mipmap-xxxhdpi/im_bell.png
new file mode 100644
index 0000000..e3b6648
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/im_bell.png differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index bc78ee9..ba2b4e6 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -11,4 +11,10 @@
#80FFFFFF
#00FFFFFF
#000000
+ #333333
+ #FFAE65
+ #FC6409
+ #F7F9FC
+ #FFF3E3
+ #F7931A
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 99b9e5d..9684b6b 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,6 +1,6 @@
Custom Keyboard
-
+ Activate Custom Keyboard
Home
Setting
Collection
@@ -10,20 +10,25 @@
https://play.google.com/store/apps/details?id=
Enable Keyboard
Please follow the steps below to enable the keyboard theme of your choice!
- Step 1: Select Keyboard
- Step 2: Enable Keyboard
- Download and Setting
+ Step 1: Select
+ Step 2: Enable
+ Apply
+ Applied
+ Apply Now
Set this skin
If the keyboard is not enabled, please set it in the settings
Application successful
Application failed, please try again
Download failed, please re-enter this page
Please select the following button background
+ Display
+ Enter text to see the effect
skin_%s_delete_emoji.png
skin_%s_caps_enabled.png
skin_%s_caps_disabled.png
skin_%s_style_%s_btn.9.png
+ skin_%s_enter_ic.png
skin_%s_space_arrows_shadows.9.png
skin_%s_style_%s_autocorrect_text_color.png
No data yet. Come add your favorite keyboard skins.
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 358d65a..46e25d6 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -2,7 +2,8 @@
diff --git a/app/src/main/res/xml/keyboard_letter.xml b/app/src/main/res/xml/keyboard_letter.xml
index b37a2bf..e66f25f 100644
--- a/app/src/main/res/xml/keyboard_letter.xml
+++ b/app/src/main/res/xml/keyboard_letter.xml
@@ -144,8 +144,7 @@
+ android:keyEdgeFlags="right" />
\ 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
index 609ef3e..3c2e7e6 100644
--- a/app/src/main/res/xml/keyboard_number.xml
+++ b/app/src/main/res/xml/keyboard_number.xml
@@ -141,7 +141,7 @@
diff --git a/app/src/main/res/xml/keyboard_symbol.xml b/app/src/main/res/xml/keyboard_symbol.xml
index fd6bc11..7da3321 100644
--- a/app/src/main/res/xml/keyboard_symbol.xml
+++ b/app/src/main/res/xml/keyboard_symbol.xml
@@ -149,7 +149,7 @@