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 @@