355 lines
12 KiB
Kotlin
355 lines
12 KiB
Kotlin
package com.keyboard.journey
|
|
|
|
import android.content.BroadcastReceiver
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.content.IntentFilter
|
|
import android.graphics.Color
|
|
import android.graphics.drawable.ColorDrawable
|
|
import android.net.Uri
|
|
import android.os.Bundle
|
|
import android.provider.Settings
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.inputmethod.InputMethodManager
|
|
import android.widget.ImageView
|
|
import android.widget.LinearLayout
|
|
import android.widget.TextView
|
|
import android.widget.Toast
|
|
import androidx.appcompat.app.AlertDialog
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.core.view.GravityCompat
|
|
import androidx.drawerlayout.widget.DrawerLayout
|
|
import androidx.fragment.app.Fragment
|
|
import androidx.fragment.app.FragmentTransaction
|
|
import com.bumptech.glide.Glide
|
|
import com.gyf.immersionbar.ktx.immersionBar
|
|
import com.keyboard.journey.bean.ItemDataBean
|
|
import com.keyboard.journey.databinding.ActivityMainBinding
|
|
import com.keyboard.journey.topon.AdManager
|
|
import com.keyboard.journey.util.isMyInputMethodDefault
|
|
import com.keyboard.journey.util.isMyInputMethodEnabled
|
|
import com.keyboard.journey.util.openGooglePlayForReview
|
|
import com.keyboard.journey.util.shareAppInfo
|
|
|
|
|
|
class MainActivity : AppCompatActivity() {
|
|
private lateinit var binding: ActivityMainBinding
|
|
private var backPressedOnce = false
|
|
private lateinit var bannerStr0: String
|
|
private lateinit var bannerStr1: String
|
|
|
|
private val mFragments: MutableList<Fragment> = ArrayList()
|
|
private var currentIndex: Int = 0
|
|
private var mCurrentFragment: Fragment? = null
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
binding = ActivityMainBinding.inflate(layoutInflater)
|
|
setContentView(binding.root)
|
|
bannerStr0 = getString(R.string.recommend)
|
|
bannerStr1 = getString(R.string.cool)
|
|
initBar()
|
|
initView()
|
|
registerReceiver()
|
|
AdManager.loadAllAd()
|
|
}
|
|
|
|
private fun initFragment() {
|
|
mFragments.clear()
|
|
mFragments.add(HomeFragment())
|
|
mFragments.add(LikeFragment())
|
|
changeFragment(0)
|
|
updateBtnState(0)
|
|
}
|
|
|
|
private fun changeFragment(index: Int) {
|
|
currentIndex = index
|
|
val ft: FragmentTransaction = supportFragmentManager.beginTransaction()
|
|
if (null != mCurrentFragment) {
|
|
ft.hide(mCurrentFragment!!)
|
|
}
|
|
var fragment = supportFragmentManager.findFragmentByTag(
|
|
mFragments[currentIndex].javaClass.name
|
|
)
|
|
if (null == fragment) {
|
|
fragment = mFragments[index]
|
|
}
|
|
mCurrentFragment = fragment
|
|
|
|
if (!fragment.isAdded) {
|
|
ft.add(R.id.frame_layout, fragment, fragment.javaClass.name)
|
|
} else {
|
|
ft.show(fragment)
|
|
}
|
|
ft.commit()
|
|
}
|
|
|
|
private fun updateBtnState(index: Int) {
|
|
binding.apply {
|
|
homeImg.setImageResource(
|
|
when (index) {
|
|
0 -> {
|
|
binding.topLayout.visibility = View.VISIBLE
|
|
R.drawable.kj_home_select_icon
|
|
}
|
|
|
|
else -> R.drawable.kj_home_unselect_icon
|
|
}
|
|
)
|
|
likeImg.setImageResource(
|
|
when (index) {
|
|
1 -> {
|
|
binding.topLayout.visibility = View.GONE
|
|
R.drawable.kj_like_select_icon
|
|
}
|
|
|
|
else -> R.drawable.kj_like_unselect_icon
|
|
}
|
|
)
|
|
}
|
|
}
|
|
|
|
override fun onResume() {
|
|
super.onResume()
|
|
updateSetMyInputMethod()
|
|
updateSetMyInputMethodHome()
|
|
}
|
|
|
|
private fun initBar() {
|
|
immersionBar {
|
|
statusBarDarkFont(true)
|
|
statusBarView(binding.view)
|
|
}
|
|
}
|
|
|
|
private fun setupDrawerListener() {
|
|
binding.drawer.addDrawerListener(object : DrawerLayout.DrawerListener {
|
|
override fun onDrawerSlide(drawerView: View, slideOffset: Float) {}
|
|
|
|
override fun onDrawerOpened(drawerView: View) {
|
|
drawerView.isClickable = true
|
|
}
|
|
|
|
override fun onDrawerClosed(drawerView: View) {}
|
|
|
|
override fun onDrawerStateChanged(newState: Int) {}
|
|
})
|
|
}
|
|
|
|
private fun initClick() {
|
|
binding.menuBtn.setOnClickListener {
|
|
if (binding.drawer.isDrawerOpen(GravityCompat.START)) {
|
|
binding.drawer.closeDrawer(GravityCompat.START)
|
|
} else {
|
|
binding.drawer.openDrawer(GravityCompat.START)
|
|
}
|
|
}
|
|
|
|
binding.homeBtn.setOnClickListener {
|
|
changeFragment(0)
|
|
updateBtnState(0)
|
|
}
|
|
binding.likeBtn.setOnClickListener {
|
|
changeFragment(1)
|
|
updateBtnState(1)
|
|
}
|
|
binding.applyKeyboardBtn.setOnClickListener {
|
|
val enabled = isMyInputMethodEnabled(this)
|
|
val default = isMyInputMethodDefault(this)
|
|
if (enabled && default) {
|
|
binding.dialogStepLayout.visibility = View.GONE
|
|
|
|
Toast.makeText(
|
|
this, "The keyboard has been set up successfully!", Toast.LENGTH_SHORT
|
|
).show()
|
|
} else {
|
|
binding.dialogStepLayout.visibility = View.VISIBLE
|
|
updateSetMyInputMethod()
|
|
}
|
|
}
|
|
binding.step1Btn.setOnClickListener {
|
|
val intent = Intent(Settings.ACTION_INPUT_METHOD_SETTINGS)
|
|
startActivity(intent)
|
|
}
|
|
|
|
binding.step2Btn.setOnClickListener {
|
|
val imeManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
|
|
imeManager.showInputMethodPicker()
|
|
}
|
|
|
|
binding.step1HomeBtn.setOnClickListener {
|
|
val intent = Intent(Settings.ACTION_INPUT_METHOD_SETTINGS)
|
|
startActivity(intent)
|
|
}
|
|
|
|
binding.step2HomeBtn.setOnClickListener {
|
|
val imeManager = getSystemService(INPUT_METHOD_SERVICE) as InputMethodManager
|
|
imeManager.showInputMethodPicker()
|
|
}
|
|
|
|
binding.dialogStepLayout.setOnClickListener {
|
|
binding.dialogStepLayout.visibility = View.GONE
|
|
}
|
|
|
|
binding.dialogHomeStepLayout.setOnClickListener {
|
|
binding.dialogHomeStepLayout.visibility = View.GONE
|
|
}
|
|
|
|
binding.privacyBtn.setOnClickListener {
|
|
val privacyPolicyUrl = "https://sites.google.com/view/privacy-policy-html-app"
|
|
val intent = Intent(Intent.ACTION_VIEW)
|
|
intent.data = Uri.parse(privacyPolicyUrl)
|
|
startActivity(intent)
|
|
}
|
|
binding.shareBtn.setOnClickListener {
|
|
shareAppInfo(this)
|
|
}
|
|
binding.rateBtn.setOnClickListener {
|
|
openGooglePlayForReview(this)
|
|
}
|
|
}
|
|
|
|
override fun onBackPressed() {
|
|
if (binding.drawer.isDrawerOpen(GravityCompat.START)) {
|
|
binding.drawer.closeDrawer(GravityCompat.START);
|
|
} else {
|
|
if (backPressedOnce) {
|
|
super.onBackPressed()
|
|
return
|
|
}
|
|
|
|
backPressedOnce = true
|
|
Toast.makeText(this, "Press again to exit!", Toast.LENGTH_SHORT).show()
|
|
// 两秒钟内再次按返回键取消退出操作
|
|
val handler = android.os.Handler()
|
|
handler.postDelayed({ backPressedOnce = false }, 2000)
|
|
}
|
|
}
|
|
|
|
private fun initView() {
|
|
val enabled = isMyInputMethodEnabled(this)
|
|
val default = isMyInputMethodDefault(this)
|
|
if (!enabled || !default) {
|
|
binding.dialogHomeStepLayout.visibility = View.VISIBLE
|
|
updateSetMyInputMethodHome()
|
|
}
|
|
|
|
initFragment()
|
|
setupDrawerListener()
|
|
initClick()
|
|
}
|
|
|
|
private fun updateSetMyInputMethod() {
|
|
val enabled = isMyInputMethodEnabled(this)
|
|
val default = isMyInputMethodDefault(this)
|
|
if (enabled) {
|
|
binding.step1Btn.background = getDrawable(R.drawable.drw_gray_select_bg)
|
|
binding.step1Btn.text = "Step 1:Enabled"
|
|
binding.step1Btn.setTextColor(Color.parseColor("#999999"))
|
|
} else {
|
|
binding.step1Btn.background = getDrawable(R.mipmap.activate_btn_bg)
|
|
binding.step1Btn.text = "Step 1:Select"
|
|
binding.step1Btn.setTextColor(Color.parseColor("#000000"))
|
|
}
|
|
if (default) {
|
|
binding.step2Btn.background = getDrawable(R.drawable.drw_gray_select_bg)
|
|
binding.step2Btn.text = "Step 2:Enabled"
|
|
binding.step1Btn.setTextColor(Color.parseColor("#999999"))
|
|
} else {
|
|
binding.step2Btn.background = getDrawable(R.mipmap.activate_btn_bg)
|
|
binding.step2Btn.text = "Step 2:Select"
|
|
binding.step1Btn.setTextColor(Color.parseColor("#000000"))
|
|
}
|
|
}
|
|
|
|
private fun updateSetMyInputMethodHome() {
|
|
val enabled = isMyInputMethodEnabled(this)
|
|
val default = isMyInputMethodDefault(this)
|
|
if (enabled) {
|
|
binding.step1HomeBtn.background = getDrawable(R.drawable.drw_gray_select_bg)
|
|
binding.step1HomeBtn.text = "Step 1:Enabled"
|
|
binding.step1HomeBtn.setTextColor(Color.parseColor("#999999"))
|
|
} else {
|
|
binding.step1HomeBtn.background = getDrawable(R.mipmap.activate_btn_bg)
|
|
binding.step1HomeBtn.text = "Step 1:Select"
|
|
binding.step1HomeBtn.setTextColor(Color.parseColor("#000000"))
|
|
}
|
|
if (default) {
|
|
binding.step2HomeBtn.background = getDrawable(R.drawable.drw_gray_select_bg)
|
|
binding.step2HomeBtn.text = "Step 2:Enabled"
|
|
binding.step1HomeBtn.setTextColor(Color.parseColor("#999999"))
|
|
} else {
|
|
binding.step2HomeBtn.background = getDrawable(R.mipmap.activate_btn_bg)
|
|
binding.step2HomeBtn.text = "Step 2:Select"
|
|
binding.step1HomeBtn.setTextColor(Color.parseColor("#000000"))
|
|
}
|
|
}
|
|
|
|
|
|
private fun showDialogRecommend() {
|
|
val bean = ItemDataBean(
|
|
isLiked = false,
|
|
key = "225e68e251874193a884d7dd4b718586",
|
|
title = "AIGC Pretty Heart Girl",
|
|
type = 6,
|
|
thumbUrl = "https://cdn.kikakeyboard.com/picture/wallpaper/1705373685197_keyboard_preview_604*444.jpg.webp",
|
|
thumbUrlGif = ""
|
|
)
|
|
|
|
val inflater = LayoutInflater.from(this)
|
|
val dialogView = inflater.inflate(R.layout.dialog_recommend, null)
|
|
val okBtn = dialogView.findViewById<ImageView>(R.id.go_btn)
|
|
val cancelBtn = dialogView.findViewById<LinearLayout>(R.id.cha_btn)
|
|
val img = dialogView.findViewById<ImageView>(R.id.img)
|
|
Glide.with(this)
|
|
.load(bean.thumbUrl)
|
|
.into(img)
|
|
val dialogBuilder = AlertDialog.Builder(this).setView(dialogView)
|
|
val dialog = dialogBuilder.create()
|
|
dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
|
dialog.show()
|
|
okBtn.setOnClickListener {
|
|
dialog.dismiss()
|
|
val intent = Intent(this, JourneyDetailsActivity::class.java)
|
|
intent.putExtra(JourneyDetailsActivity.KEY_JOURNEY_DETAILS_BEAN, bean)
|
|
startActivity(intent)
|
|
}
|
|
cancelBtn.setOnClickListener {
|
|
dialog.dismiss()
|
|
}
|
|
}
|
|
|
|
private var receiver: BroadcastReceiver? = null
|
|
private fun registerReceiver() {
|
|
val filter = IntentFilter(Intent.ACTION_INPUT_METHOD_CHANGED)
|
|
receiver = object : BroadcastReceiver() {
|
|
override fun onReceive(context: Context, intent: Intent) {
|
|
updateSetMyInputMethodHome()
|
|
val enabled = isMyInputMethodEnabled(this@MainActivity)
|
|
val default = isMyInputMethodDefault(this@MainActivity)
|
|
if (enabled && default) {
|
|
binding.dialogHomeStepLayout.visibility = View.GONE
|
|
if (!isFinishing && !isDestroyed) {
|
|
showDialogRecommend()
|
|
}
|
|
} else {
|
|
binding.dialogHomeStepLayout.visibility = View.VISIBLE
|
|
}
|
|
}
|
|
}
|
|
registerReceiver(receiver, filter)
|
|
}
|
|
|
|
private fun unregisterReceiver() {
|
|
if (receiver != null) {
|
|
unregisterReceiver(receiver)
|
|
}
|
|
}
|
|
|
|
override fun onDestroy() {
|
|
super.onDestroy()
|
|
unregisterReceiver()
|
|
}
|
|
|
|
} |