diff --git a/app/build.gradle b/app/build.gradle index fe3f07c..ae54cb2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -47,5 +47,9 @@ dependencies { androidTestImplementation libs.androidx.junit androidTestImplementation libs.androidx.espresso.core + implementation 'com.google.code.gson:gson:2.10.1' + implementation 'com.github.bumptech.glide:glide:4.12.0' + annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0' + } \ No newline at end of file diff --git a/app/src/main/java/com/timber/soft/myemoticon/MainActivity.kt b/app/src/main/java/com/timber/soft/myemoticon/MainActivity.kt index dd7fdc8..f31c689 100644 --- a/app/src/main/java/com/timber/soft/myemoticon/MainActivity.kt +++ b/app/src/main/java/com/timber/soft/myemoticon/MainActivity.kt @@ -4,43 +4,37 @@ import android.content.Intent import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.graphics.Color -import android.net.ConnectivityManager import android.net.Uri import android.os.Build import android.os.Bundle -import android.util.Log import android.view.View -import androidx.activity.enableEdgeToEdge +import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.core.view.GravityCompat -import androidx.core.view.ViewCompat -import androidx.core.view.WindowInsetsCompat import androidx.drawerlayout.widget.DrawerLayout import androidx.fragment.app.Fragment import com.timber.soft.myemoticon.databinding.ActivityMainBinding import com.timber.soft.myemoticon.model.RootDataModel +import com.timber.soft.myemoticon.tools.AppTools import com.timber.soft.myemoticon.tools.AppTools.dpCovertPx class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding - private lateinit var fragmentList: ArrayList + private var fragmentList: ArrayList = arrayListOf() private val rootModelList: MutableList = mutableListOf() + @RequiresApi(Build.VERSION_CODES.M) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) val view = binding.root setContentView(view) - // 设置Padding上边距留出沉浸式状态栏空间 binding.root.setPadding(0, dpCovertPx(this), 0, 0) - // 设置沉浸式状态栏 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - window.decorView.systemUiVisibility = - (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE) or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR - window.statusBarColor = Color.TRANSPARENT - } + window.decorView.systemUiVisibility = + (View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE) or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR + window.statusBarColor = Color.TRANSPARENT binding.layoutShop.setOnClickListener() { val url = getString(R.string.google_play_link) + packageName @@ -66,20 +60,32 @@ class MainActivity : AppCompatActivity() { binding.drawerRoot.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) { } }) + rootModelList.addAll( + AppTools.parseJsonFile(assets.open("data.json")) + ) + rootModelList.shuffle() + for (i in rootModelList) { + binding.tabLayout.addTab( + binding.tabLayout.newTab().setCustomView(R.layout.item_custom_tab) + ) + } + } - private fun getVersionName(): String { val pInfo: PackageInfo try { diff --git a/app/src/main/java/com/timber/soft/myemoticon/tools/AppTools.kt b/app/src/main/java/com/timber/soft/myemoticon/tools/AppTools.kt index 0a470f5..b846a66 100644 --- a/app/src/main/java/com/timber/soft/myemoticon/tools/AppTools.kt +++ b/app/src/main/java/com/timber/soft/myemoticon/tools/AppTools.kt @@ -1,11 +1,10 @@ package com.timber.soft.myemoticon.tools import android.content.Context +import com.google.gson.Gson import com.timber.soft.myemoticon.model.RootDataModel -import java.io.BufferedReader -import java.io.IOException +import java.io.InputStream import java.io.InputStreamReader -import java.nio.charset.StandardCharsets object AppTools { @@ -19,24 +18,10 @@ object AppTools { return result } - fun parseJsonGsonTool(context: Context, fileName: String): List? { - var dataItems: List? = null - try { - val inputStream = context.assets.open(fileName) - val reader = BufferedReader(InputStreamReader(inputStream, StandardCharsets.UTF_8)) - val stringBuilder = StringBuilder() - var line: String? - while (reader.readLine().also { line = it } != null) { - stringBuilder.append(line) - } - inputStream.close() - reader.close() - val gson = Gson() - val dataItemArray = gson.fromJson(stringBuilder.toString(), Array::class.java) - dataItems = dataItemArray.toList() - } catch (e: IOException) { - e.printStackTrace() - } - return dataItems + fun parseJsonFile(jsonInputStream: InputStream): List { + val reader = InputStreamReader(jsonInputStream) + val jsonString = reader.readText() + return Gson().fromJson(jsonString, Array::class.java).toList() } + } \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_theme_color.xml b/app/src/main/res/drawable/shape_theme_color.xml new file mode 100644 index 0000000..bcacc99 --- /dev/null +++ b/app/src/main/res/drawable/shape_theme_color.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_custom_tab.xml b/app/src/main/res/layout/item_custom_tab.xml new file mode 100644 index 0000000..6d6d914 --- /dev/null +++ b/app/src/main/res/layout/item_custom_tab.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file