From 6ead14e65b0a7e8376b044498a3a5541e0f97497 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Wed, 11 Jun 2025 12:39:05 +0800 Subject: [PATCH] refactor: migration layout to Hikage --- .../sweet-dependency-config.yaml | 11 + samples/demo-app/build.gradle.kts | 6 + .../yukihookapi/demo_app/ui/MainActivity.kt | 100 ++++++-- .../src/main/res/layout/activity_main.xml | 132 ----------- samples/demo-module/build.gradle.kts | 5 + .../demo_module/ui/MainActivity.kt | 187 +++++++++++---- .../src/main/res/layout/activity_main.xml | 213 ------------------ 7 files changed, 250 insertions(+), 404 deletions(-) delete mode 100644 samples/demo-app/src/main/res/layout/activity_main.xml delete mode 100644 samples/demo-module/src/main/res/layout/activity_main.xml diff --git a/gradle/sweet-dependency/sweet-dependency-config.yaml b/gradle/sweet-dependency/sweet-dependency-config.yaml index 9c8cdf60..05a3fae8 100644 --- a/gradle/sweet-dependency/sweet-dependency-config.yaml +++ b/gradle/sweet-dependency/sweet-dependency-config.yaml @@ -56,6 +56,17 @@ libraries: dev.zacsweers.autoservice: auto-service-ksp: version: 1.2.0 + com.highcapable.hikage: + hikage-core: + version: 1.0.1 + hikage-compiler: + version: 1.0.0 + hikage-extension: + version: 1.0.0 + hikage-widget-androidx: + version: 1.0.0 + hikage-widget-material: + version: 1.0.0 androidx.annotation: annotation: version: 1.9.1 diff --git a/samples/demo-app/build.gradle.kts b/samples/demo-app/build.gradle.kts index ec946e5b..ec610393 100644 --- a/samples/demo-app/build.gradle.kts +++ b/samples/demo-app/build.gradle.kts @@ -1,6 +1,7 @@ plugins { autowire(libs.plugins.android.application) autowire(libs.plugins.kotlin.android) + autowire(libs.plugins.kotlin.ksp) } android { @@ -41,6 +42,11 @@ android { } dependencies { + ksp(com.highcapable.hikage.hikage.compiler) + implementation(com.highcapable.hikage.hikage.core) + implementation(com.highcapable.hikage.hikage.extension) + implementation(com.highcapable.hikage.hikage.widget.androidx) + implementation(com.highcapable.hikage.hikage.widget.material) implementation(androidx.core.core.ktx) implementation(androidx.appcompat.appcompat) implementation(androidx.lifecycle.lifecycle.viewmodel.ktx) diff --git a/samples/demo-app/src/main/java/com/highcapable/yukihookapi/demo_app/ui/MainActivity.kt b/samples/demo-app/src/main/java/com/highcapable/yukihookapi/demo_app/ui/MainActivity.kt index 03d1f0ff..a8db362a 100644 --- a/samples/demo-app/src/main/java/com/highcapable/yukihookapi/demo_app/ui/MainActivity.kt +++ b/samples/demo-app/src/main/java/com/highcapable/yukihookapi/demo_app/ui/MainActivity.kt @@ -19,35 +19,99 @@ * * This file is created by fankes on 2022/2/9. */ -@file:Suppress("SameParameterValue", "UsePropertyAccessSyntax") +@file:Suppress("SetTextI18n", "SameParameterValue", "UsePropertyAccessSyntax") package com.highcapable.yukihookapi.demo_app.ui import android.os.Bundle -import android.widget.Toast +import android.view.Gravity +import android.widget.LinearLayout +import android.widget.TextView import androidx.appcompat.app.AppCompatActivity -import com.highcapable.yukihookapi.demo_app.databinding.ActivityMainBinding +import com.highcapable.betterandroid.ui.extension.view.toast +import com.highcapable.betterandroid.ui.extension.view.updateMargins +import com.highcapable.hikage.extension.setContentView +import com.highcapable.hikage.widget.android.widget.Button +import com.highcapable.hikage.widget.android.widget.ImageView +import com.highcapable.hikage.widget.android.widget.LinearLayout +import com.highcapable.hikage.widget.android.widget.TextView +import com.highcapable.hikage.widget.androidx.core.widget.NestedScrollView +import com.highcapable.yukihookapi.demo_app.R import com.highcapable.yukihookapi.demo_app.test.Main +import android.R as Android_R class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - ActivityMainBinding.inflate(layoutInflater).apply { - setContentView(root) - appDemoFirstText.text = getFirstText() - appDemoSecondText.text = secondText - appDemoThirdText.text = Main("Feel real").getString() - appDemoFourthText.text = getRegularText("Have fun day") - appDemoFifthText.text = getDataText() - appDemoSixthText.text = getArray(arrayOf("apple", "banana")).let { "${it[0]}, ${it[1]}" } - appDemoSeventhText.text = Main().getTestResultFirst() - appDemoEighthText.text = Main().getTestResultFirst("Find something interesting") - appDemoNinthText.text = Main().getTestResultLast() - appDemoTenthText.text = Main().getTestResultLast("This is the last sentence") - appDemoEleventhText.text = Main().getSuperString() - appDemoButton.setOnClickListener { toast() } + val hikage = setContentView { + NestedScrollView( + lparams = LayoutParams(matchParent = true), + init = { + isFillViewport = true + isVerticalScrollBarEnabled = false + } + ) { + LinearLayout( + lparams = LayoutParams(widthMatchParent = true) { + updateMargins(vertical = 20.dp) + }, + init = { + orientation = LinearLayout.VERTICAL + gravity = Gravity.CENTER + } + ) { + ImageView( + lparams = LayoutParams(50.dp, 50.dp) { + bottomMargin = 15.dp + } + ) { + setImageResource(R.mipmap.ic_face_unhappy) + } + TextView( + lparams = LayoutParams { + bottomMargin = 25.dp + } + ) { + text = stringResource(R.string.test_string) + textSize = 17.5f + } + repeat(11) { + TextView( + id = "sample_text_$it", + lparams = LayoutParams { + bottomMargin = 15.dp + } + ) { + text = stringResource(R.string.test_string) + textSize = 17.5f + } + } + ImageView( + lparams = LayoutParams(30.dp, 30.dp) { + bottomMargin = 15.dp + } + ) { + setImageResource(Android_R.mipmap.sym_def_app_icon) + } + Button { + text = "Click Me!" + setOnClickListener { toast() } + } + } + } } + hikage.get("sample_text_0").text = getFirstText() + hikage.get("sample_text_1").text = secondText + hikage.get("sample_text_2").text = Main("Feel real").getString() + hikage.get("sample_text_3").text = getRegularText("Have fun day") + hikage.get("sample_text_4").text = getDataText() + hikage.get("sample_text_5").text = getArray(arrayOf("apple", "banana")).let { "${it[0]}, ${it[1]}" } + hikage.get("sample_text_6").text = Main().getTestResultFirst() + hikage.get("sample_text_7").text = Main().getTestResultFirst("Find something interesting") + hikage.get("sample_text_8").text = Main().getTestResultLast() + hikage.get("sample_text_9").text = Main().getTestResultLast("This is the last sentence") + hikage.get("sample_text_10").text = Main().getSuperString() } private val secondText = "This is a miracle" @@ -60,5 +124,5 @@ class MainActivity : AppCompatActivity() { private fun getDataText() = "No data found" - private fun toast() = Toast.makeText(this, "Nothing to show", Toast.LENGTH_SHORT).show() + private fun toast() = toast("Nothing to show") } \ No newline at end of file diff --git a/samples/demo-app/src/main/res/layout/activity_main.xml b/samples/demo-app/src/main/res/layout/activity_main.xml deleted file mode 100644 index a8ca5610..00000000 --- a/samples/demo-app/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,132 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -