mirror of
https://github.com/BetterAndroid/Hikage.git
synced 2025-09-09 12:04:21 +08:00
Bump hikage-core, hikage-extension, hikage-extension-betterandroid, hikage-extension-compose, hikage-compiler, hikage-widget-androidx, hikage-widget-material version to 1.0.0
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
package com.highcapable.hikage
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ExampleInstrumentedTest {
|
||||
|
||||
@Test
|
||||
fun useAppContext() {
|
||||
// Context of the app under test.
|
||||
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
assertEquals("com.highcapable.hikage.test", appContext.packageName)
|
||||
}
|
||||
}
|
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest />
|
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Hikage - An Android responsive UI building tool.
|
||||
* Copyright (C) 2019 HighCapable
|
||||
* https://github.com/BetterAndroid/Hikage
|
||||
*
|
||||
* Apache License Version 2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* This file is created by fankes on 2025/3/10.
|
||||
*/
|
||||
@file:Suppress("LocalVariableName")
|
||||
@file:JvmName("CommonAdapterBuilderUtils")
|
||||
|
||||
package com.highcapable.hikage.extension.betterandroid.ui.component.adapter
|
||||
|
||||
import android.view.ViewGroup
|
||||
import com.highcapable.betterandroid.ui.component.adapter.CommonAdapterBuilder
|
||||
import com.highcapable.hikage.core.Hikage
|
||||
import com.highcapable.hikage.core.base.HikagePerformer
|
||||
import com.highcapable.hikage.core.base.Hikageable
|
||||
import com.highcapable.hikage.extension.betterandroid.ui.component.adapter.viewholder.HikageHolderDelegate
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate].
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* ```kotlin
|
||||
* onBindItemView(
|
||||
* Hikageable = {
|
||||
* TextView(
|
||||
* id = "text",
|
||||
* lparams = LayoutParams(widthMatchParent = true)
|
||||
* ) {
|
||||
* text = "Item"
|
||||
* textSize = 20f
|
||||
* }
|
||||
* }
|
||||
* ) { hikage, entity, position ->
|
||||
* hikage.get<TextView>("text").text = "Item ${entity.name} of ${position + 1}"
|
||||
* }
|
||||
* ```
|
||||
* @see CommonAdapterBuilder.onBindItemView
|
||||
* @receiver [CommonAdapterBuilder]<[E]>
|
||||
* @param Hikageable the performer body.
|
||||
* @return [CommonAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> CommonAdapterBuilder<E>.onBindItemView(
|
||||
Hikageable: HikagePerformer<ViewGroup.LayoutParams>,
|
||||
viewHolder: (hikage: Hikage, entity: E, position: Int) -> Unit = { _, _, _ -> }
|
||||
) = onBindItemView(Hikageable(performer = Hikageable), viewHolder)
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate].
|
||||
* @see CommonAdapterBuilder.onBindItemView
|
||||
* @receiver [CommonAdapterBuilder]<[E]>
|
||||
* @param delegate the delegate.
|
||||
* @return [CommonAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> CommonAdapterBuilder<E>.onBindItemView(
|
||||
delegate: Hikage.Delegate<*>,
|
||||
viewHolder: (hikage: Hikage, entity: E, position: Int) -> Unit = { _, _, _ -> }
|
||||
) = onBindItemView(HikageHolderDelegate(delegate), viewHolder)
|
@@ -0,0 +1,87 @@
|
||||
/*
|
||||
* Hikage - An Android responsive UI building tool.
|
||||
* Copyright (C) 2019 HighCapable
|
||||
* https://github.com/BetterAndroid/Hikage
|
||||
*
|
||||
* Apache License Version 2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* This file is created by fankes on 2025/3/10.
|
||||
*/
|
||||
@file:Suppress("LocalVariableName")
|
||||
@file:JvmName("PagerAdapterBuilderUtils")
|
||||
|
||||
package com.highcapable.hikage.extension.betterandroid.ui.component.adapter
|
||||
|
||||
import android.view.ViewGroup
|
||||
import com.highcapable.betterandroid.ui.component.adapter.PagerAdapterBuilder
|
||||
import com.highcapable.hikage.core.Hikage
|
||||
import com.highcapable.hikage.core.base.HikagePerformer
|
||||
import com.highcapable.hikage.core.base.Hikageable
|
||||
import com.highcapable.hikage.extension.betterandroid.ui.component.adapter.viewholder.HikageHolderDelegate
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate].
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* ```kotlin
|
||||
* onBindPageView(
|
||||
* Hikageable = {
|
||||
* LinearLayout(
|
||||
* id = "container",
|
||||
* lparams = LayoutParams(matchParent = true),
|
||||
* init = {
|
||||
* orientation = LinearLayout.VERTICAL
|
||||
* gravity = Gravity.CENTER
|
||||
* }
|
||||
* ) {
|
||||
* TextView(
|
||||
* id = "text",
|
||||
* lparams = LayoutParams {
|
||||
* gravity = Gravity.CENTER
|
||||
* }
|
||||
* ) {
|
||||
* text = "Page"
|
||||
* textSize = 20f
|
||||
* }
|
||||
* }
|
||||
* }
|
||||
* ) { hikage, entity, position ->
|
||||
* hikage.get<TextView>("text").text = "Page ${entity.name} of ${position + 1}"
|
||||
* }
|
||||
* ```
|
||||
* @see PagerAdapterBuilder.onBindPageView
|
||||
* @receiver [PagerAdapterBuilder]<[E]>
|
||||
* @param Hikageable the performer body.
|
||||
* @return [PagerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> PagerAdapterBuilder<E>.onBindPageView(
|
||||
Hikageable: HikagePerformer<ViewGroup.LayoutParams>,
|
||||
viewHolder: (hikage: Hikage, entity: E, position: Int) -> Unit = { _, _, _ -> }
|
||||
) = onBindPageView(Hikageable(performer = Hikageable), viewHolder)
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate].
|
||||
* @see PagerAdapterBuilder.onBindPageView
|
||||
* @receiver [PagerAdapterBuilder]<[E]>
|
||||
* @param delegate the delegate.
|
||||
* @return [PagerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> PagerAdapterBuilder<E>.onBindPageView(
|
||||
delegate: Hikage.Delegate<*>,
|
||||
viewHolder: (hikage: Hikage, entity: E, position: Int) -> Unit = { _, _, _ -> }
|
||||
) = onBindPageView(HikageHolderDelegate(delegate), viewHolder)
|
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
* Hikage - An Android responsive UI building tool.
|
||||
* Copyright (C) 2019 HighCapable
|
||||
* https://github.com/BetterAndroid/Hikage
|
||||
*
|
||||
* Apache License Version 2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* This file is created by fankes on 2025/3/10.
|
||||
*/
|
||||
@file:Suppress("LocalVariableName")
|
||||
@file:JvmName("RecyclerAdapterBuilderUtils")
|
||||
|
||||
package com.highcapable.hikage.extension.betterandroid.ui.component.adapter
|
||||
|
||||
import android.view.ViewGroup
|
||||
import com.highcapable.betterandroid.ui.component.adapter.RecyclerAdapterBuilder
|
||||
import com.highcapable.betterandroid.ui.component.adapter.entity.AdapterPosition
|
||||
import com.highcapable.hikage.core.Hikage
|
||||
import com.highcapable.hikage.core.base.HikagePerformer
|
||||
import com.highcapable.hikage.core.base.Hikageable
|
||||
import com.highcapable.hikage.extension.betterandroid.ui.component.adapter.viewholder.HikageHolderDelegate
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate] for a header view.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* ```kotlin
|
||||
* onBindHeaderView(
|
||||
* Hikageable = {
|
||||
* TextView(
|
||||
* id = "text",
|
||||
* lparams = LayoutParams(widthMatchParent = true)
|
||||
* ) {
|
||||
* text = "Header"
|
||||
* textSize = 20f
|
||||
* }
|
||||
* }
|
||||
* ) { hikage ->
|
||||
* hikage.get<TextView>("text").text = "Header with redefined text"
|
||||
* }
|
||||
* ```
|
||||
* @see RecyclerAdapterBuilder.onBindHeaderView
|
||||
* @param Hikageable the performer body.
|
||||
* @return [RecyclerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> RecyclerAdapterBuilder<E>.onBindHeaderView(
|
||||
Hikageable: HikagePerformer<ViewGroup.LayoutParams>,
|
||||
viewHolder: (hikage: Hikage) -> Unit = {}
|
||||
) = onBindHeaderView(Hikageable(performer = Hikageable), viewHolder)
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate] for a header view.
|
||||
* @see RecyclerAdapterBuilder.onBindHeaderView
|
||||
* @param delegate the delegate.
|
||||
* @return [RecyclerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> RecyclerAdapterBuilder<E>.onBindHeaderView(
|
||||
delegate: Hikage.Delegate<*>,
|
||||
viewHolder: (hikage: Hikage) -> Unit = {}
|
||||
) = onBindHeaderView(HikageHolderDelegate(delegate), viewHolder)
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate] for a footer view.
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* ```kotlin
|
||||
* onBindFooterView(
|
||||
* Hikageable = {
|
||||
* TextView(
|
||||
* id = "text",
|
||||
* lparams = LayoutParams(widthMatchParent = true)
|
||||
* ) {
|
||||
* text = "Footer"
|
||||
* textSize = 20f
|
||||
* }
|
||||
* }
|
||||
* ) { hikage ->
|
||||
* hikage.get<TextView>("text").text = "Footer with redefined text"
|
||||
* }
|
||||
* ```
|
||||
* @see RecyclerAdapterBuilder.onBindFooterView
|
||||
* @param Hikageable the performer body.
|
||||
* @return [RecyclerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> RecyclerAdapterBuilder<E>.onBindFooterView(
|
||||
Hikageable: HikagePerformer<ViewGroup.LayoutParams>,
|
||||
viewHolder: (hikage: Hikage) -> Unit = {}
|
||||
) = onBindFooterView(Hikageable(performer = Hikageable), viewHolder)
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate] for a footer view.
|
||||
* @see RecyclerAdapterBuilder.onBindFooterView
|
||||
* @param delegate the delegate.
|
||||
* @return [RecyclerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> RecyclerAdapterBuilder<E>.onBindFooterView(
|
||||
delegate: Hikage.Delegate<*>,
|
||||
viewHolder: (hikage: Hikage) -> Unit = {}
|
||||
) = onBindFooterView(HikageHolderDelegate(delegate), viewHolder)
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate].
|
||||
*
|
||||
* Usage:
|
||||
*
|
||||
* ```kotlin
|
||||
* onBindItemView(
|
||||
* Hikageable = {
|
||||
* TextView(
|
||||
* id = "text",
|
||||
* lparams = LayoutParams(widthMatchParent = true)
|
||||
* ) {
|
||||
* text = "Item"
|
||||
* textSize = 20f
|
||||
* }
|
||||
* }
|
||||
* ) { hikage, entity, position ->
|
||||
* hikage.get<TextView>("text").text = "Item ${entity.name} of ${position.value + 1}"
|
||||
* }
|
||||
* ```
|
||||
* @see RecyclerAdapterBuilder.onBindItemView
|
||||
* @receiver [RecyclerAdapterBuilder]<[E]>
|
||||
* @param Hikageable the performer body.
|
||||
* @return [RecyclerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> RecyclerAdapterBuilder<E>.onBindItemView(
|
||||
Hikageable: HikagePerformer<ViewGroup.LayoutParams>,
|
||||
viewType: Int = RecyclerAdapterBuilder.DEFAULT_VIEW_TYPE,
|
||||
viewHolder: (hikage: Hikage, entity: E, position: AdapterPosition) -> Unit = { _, _, _ -> }
|
||||
) = onBindItemView(Hikageable(performer = Hikageable), viewType, viewHolder)
|
||||
|
||||
/**
|
||||
* Create and add view holder from [Hikage.Delegate].
|
||||
* @see RecyclerAdapterBuilder.onBindItemView
|
||||
* @receiver [RecyclerAdapterBuilder]<[E]>
|
||||
* @param delegate the delegate.
|
||||
* @return [RecyclerAdapterBuilder]<[E]>
|
||||
*/
|
||||
@JvmOverloads
|
||||
fun <E> RecyclerAdapterBuilder<E>.onBindItemView(
|
||||
delegate: Hikage.Delegate<*>,
|
||||
viewType: Int = RecyclerAdapterBuilder.DEFAULT_VIEW_TYPE,
|
||||
viewHolder: (hikage: Hikage, entity: E, position: AdapterPosition) -> Unit = { _, _, _ -> }
|
||||
) = onBindItemView(HikageHolderDelegate(delegate), viewType, viewHolder)
|
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Hikage - An Android responsive UI building tool.
|
||||
* Copyright (C) 2019 HighCapable
|
||||
* https://github.com/BetterAndroid/Hikage
|
||||
*
|
||||
* Apache License Version 2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*
|
||||
* This file is created by fankes on 2025/3/10.
|
||||
*/
|
||||
package com.highcapable.hikage.extension.betterandroid.ui.component.adapter.viewholder
|
||||
|
||||
import android.content.Context
|
||||
import android.view.ViewGroup
|
||||
import com.highcapable.betterandroid.ui.component.adapter.viewholder.delegate.base.ViewHolderDelegate
|
||||
import com.highcapable.hikage.core.Hikage
|
||||
|
||||
/**
|
||||
* [Hikage.Delegate] type view holder delegate.
|
||||
* @param delegate the [Hikage.Delegate] instance.
|
||||
*/
|
||||
class HikageHolderDelegate internal constructor(private val delegate: Hikage.Delegate<*>) : ViewHolderDelegate<Hikage>() {
|
||||
|
||||
override fun create(context: Context, parent: ViewGroup?) = delegate.create(context, parent, attachToParent = false)
|
||||
override fun getView(instance: Hikage) = instance.root
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.highcapable.hikage
|
||||
|
||||
import org.junit.Test
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
/**
|
||||
* Example local unit test, which will execute on the development machine (host).
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
class ExampleUnitTest {
|
||||
|
||||
@Test
|
||||
fun addition_isCorrect() {
|
||||
assertEquals(4, 2 + 2)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user