mirror of
https://github.com/BetterAndroid/Hikage.git
synced 2025-09-08 19:44:07 +08:00
Deploy to GitHub pages
This commit is contained in:
1
assets/404.html-6Yl8cQE3.js
Normal file
1
assets/404.html-6Yl8cQE3.js
Normal file
@@ -0,0 +1 @@
|
||||
const t=JSON.parse('{"key":"v-3706649a","path":"/404.html","title":"","lang":"en-US","frontmatter":{"layout":"NotFound"},"headers":[],"git":{},"filePathRelative":null}');export{t as data};
|
1
assets/404.html-wbLsHMMI.js
Normal file
1
assets/404.html-wbLsHMMI.js
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as e,o as c,c as t}from"./app-ZnF1aHNS.js";const _={};function o(r,n){return c(),t("div")}const a=e(_,[["render",o],["__file","404.html.vue"]]);export{a as default};
|
1
assets/about.html--JeJn6VX.js
Normal file
1
assets/about.html--JeJn6VX.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-7a15fe3b","path":"/en/about/about.html","title":"About This Document","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"License","slug":"license","link":"#license","children":[]}],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"en/about/about.md"}');export{e as data};
|
16
assets/about.html-XwS73ZCx.js
Normal file
16
assets/about.html-XwS73ZCx.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import{_ as o,r as t,o as c,c as l,b as e,d as a,a as n,e as p}from"./app-ZnF1aHNS.js";const i={},r=e("h1",{id:"about-this-document",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#about-this-document","aria-hidden":"true"},"#"),a(" About This Document")],-1),d={href:"https://v2.vuepress.vuejs.org/en",target:"_blank",rel:"noopener noreferrer"},h=e("h2",{id:"license",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#license","aria-hidden":"true"},"#"),a(" License")],-1),b={href:"https://github.com/BetterAndroid/Hikage/blob/main/LICENSE",target:"_blank",rel:"noopener noreferrer"},u=p(`<div class="language-text" data-ext="text"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#adbac7;">Apache License Version 2.0</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;">Copyright (C) 2019 HighCapable</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;">Licensed under the Apache License, Version 2.0 (the "License");</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">you may not use this file except in compliance with the License.</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">You may obtain a copy of the License at</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;"> https://www.apache.org/licenses/LICENSE-2.0</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;">Unless required by applicable law or agreed to in writing, software</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">distributed under the License is distributed on an "AS IS" BASIS,</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">See the License for the specific language governing permissions and</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">limitations under the License.</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span></code></pre></div><p>Copyright © 2019 HighCapable</p>`,2);function _(y,m){const s=t("ExternalLinkIcon");return c(),l("div",null,[r,e("blockquote",null,[e("p",null,[a("This document is powered by "),e("a",d,[a("VuePress"),n(s)]),a(".")])]),h,e("p",null,[e("a",b,[a("Apache-2.0"),n(s)])]),u])}const f=o(i,[["render",_],["__file","about.html.vue"]]);export{f as default};
|
1
assets/about.html-aNmPduyK.js
Normal file
1
assets/about.html-aNmPduyK.js
Normal file
@@ -0,0 +1 @@
|
||||
const t=JSON.parse('{"key":"v-41967128","path":"/zh-cn/about/about.html","title":"关于此文档","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"许可证","slug":"许可证","link":"#许可证","children":[]}],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"zh-cn/about/about.md"}');export{t as data};
|
16
assets/about.html-ndlgo2Ul.js
Normal file
16
assets/about.html-ndlgo2Ul.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import{_ as o,r as t,o as c,c as l,b as a,d as e,a as n,e as p}from"./app-ZnF1aHNS.js";const r={},i=a("h1",{id:"关于此文档",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#关于此文档","aria-hidden":"true"},"#"),e(" 关于此文档")],-1),d={href:"https://v2.vuepress.vuejs.org/zh",target:"_blank",rel:"noopener noreferrer"},h=a("h2",{id:"许可证",tabindex:"-1"},[a("a",{class:"header-anchor",href:"#许可证","aria-hidden":"true"},"#"),e(" 许可证")],-1),b={href:"https://github.com/BetterAndroid/Hikage/blob/main/LICENSE",target:"_blank",rel:"noopener noreferrer"},u=p(`<div class="language-text" data-ext="text"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#adbac7;">Apache License Version 2.0</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;">Copyright (C) 2019 HighCapable</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;">Licensed under the Apache License, Version 2.0 (the "License");</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">you may not use this file except in compliance with the License.</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">You may obtain a copy of the License at</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;"> https://www.apache.org/licenses/LICENSE-2.0</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span>
|
||||
<span class="line"><span style="color:#adbac7;">Unless required by applicable law or agreed to in writing, software</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">distributed under the License is distributed on an "AS IS" BASIS,</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">See the License for the specific language governing permissions and</span></span>
|
||||
<span class="line"><span style="color:#adbac7;">limitations under the License.</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span></code></pre></div><p>版权所有 © 2019 HighCapable</p>`,2);function _(y,g){const s=t("ExternalLinkIcon");return c(),l("div",null,[i,a("blockquote",null,[a("p",null,[e("此文档由 "),a("a",d,[e("VuePress"),n(s)]),e(" 强力驱动。")])]),h,a("p",null,[a("a",b,[e("Apache-2.0"),n(s)])]),u])}const m=o(r,[["render",_],["__file","about.html.vue"]]);export{m as default};
|
16
assets/app-ZnF1aHNS.js
Normal file
16
assets/app-ZnF1aHNS.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/changelog.html-4cKSC36e.js
Normal file
1
assets/changelog.html-4cKSC36e.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/changelog.html-TDQcoCY9.js
Normal file
1
assets/changelog.html-TDQcoCY9.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-0e6c3476","path":"/zh-cn/about/changelog.html","title":"更新日志","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"hikage-core","slug":"hikage-core","link":"#hikage-core","children":[{"level":3,"title":"1.0.2 | 2025.08.24","slug":"_1-0-2-2025-08-24","link":"#_1-0-2-2025-08-24","children":[]},{"level":3,"title":"1.0.1 | 2025.05.06","slug":"_1-0-1-2025-05-06","link":"#_1-0-1-2025-05-06","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20","link":"#_1-0-0-2025-04-20","children":[]}]},{"level":2,"title":"hikage-compiler","slug":"hikage-compiler","link":"#hikage-compiler","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24","link":"#_1-0-1-2025-08-24","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-1","link":"#_1-0-0-2025-04-20-1","children":[]}]},{"level":2,"title":"hikage-extension","slug":"hikage-extension","link":"#hikage-extension","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-1","link":"#_1-0-1-2025-08-24-1","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-2","link":"#_1-0-0-2025-04-20-2","children":[]}]},{"level":2,"title":"hikage-extension-betterandroid","slug":"hikage-extension-betterandroid","link":"#hikage-extension-betterandroid","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-2","link":"#_1-0-1-2025-08-24-2","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-3","link":"#_1-0-0-2025-04-20-3","children":[]}]},{"level":2,"title":"hikage-extension-compose","slug":"hikage-extension-compose","link":"#hikage-extension-compose","children":[{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-4","link":"#_1-0-0-2025-04-20-4","children":[]}]},{"level":2,"title":"hikage-widget-androidx","slug":"hikage-widget-androidx","link":"#hikage-widget-androidx","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-3","link":"#_1-0-1-2025-08-24-3","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-5","link":"#_1-0-0-2025-04-20-5","children":[]}]},{"level":2,"title":"hikage-widget-material","slug":"hikage-widget-material","link":"#hikage-widget-material","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-4","link":"#_1-0-1-2025-08-24-4","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-6","link":"#_1-0-0-2025-04-20-6","children":[]}]}],"git":{"updatedTime":1755974345000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":3}]},"filePathRelative":"zh-cn/about/changelog.md"}');export{e as data};
|
1
assets/changelog.html-XGYIsSRg.js
Normal file
1
assets/changelog.html-XGYIsSRg.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-3f851d14","path":"/en/about/changelog.html","title":"Changelog","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"hikage-core","slug":"hikage-core","link":"#hikage-core","children":[{"level":3,"title":"1.0.2 | 2025.08.24","slug":"_1-0-2-2025-08-24","link":"#_1-0-2-2025-08-24","children":[]},{"level":3,"title":"1.0.1 | 2025.05.06","slug":"_1-0-1-2025-05-06","link":"#_1-0-1-2025-05-06","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20","link":"#_1-0-0-2025-04-20","children":[]}]},{"level":2,"title":"hikage-compiler","slug":"hikage-compiler","link":"#hikage-compiler","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24","link":"#_1-0-1-2025-08-24","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-1","link":"#_1-0-0-2025-04-20-1","children":[]}]},{"level":2,"title":"hikage-extension","slug":"hikage-extension","link":"#hikage-extension","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-1","link":"#_1-0-1-2025-08-24-1","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-2","link":"#_1-0-0-2025-04-20-2","children":[]}]},{"level":2,"title":"hikage-extension-betterandroid","slug":"hikage-extension-betterandroid","link":"#hikage-extension-betterandroid","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-2","link":"#_1-0-1-2025-08-24-2","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-3","link":"#_1-0-0-2025-04-20-3","children":[]}]},{"level":2,"title":"hikage-extension-compose","slug":"hikage-extension-compose","link":"#hikage-extension-compose","children":[{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-4","link":"#_1-0-0-2025-04-20-4","children":[]}]},{"level":2,"title":"hikage-widget-androidx","slug":"hikage-widget-androidx","link":"#hikage-widget-androidx","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-3","link":"#_1-0-1-2025-08-24-3","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-5","link":"#_1-0-0-2025-04-20-5","children":[]}]},{"level":2,"title":"hikage-widget-material","slug":"hikage-widget-material","link":"#hikage-widget-material","children":[{"level":3,"title":"1.0.1 | 2025.08.24","slug":"_1-0-1-2025-08-24-4","link":"#_1-0-1-2025-08-24-4","children":[]},{"level":3,"title":"1.0.0 | 2025.04.20","slug":"_1-0-0-2025-04-20-6","link":"#_1-0-0-2025-04-20-6","children":[]}]}],"git":{"updatedTime":1755974345000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/about/changelog.md"}');export{e as data};
|
1
assets/changelog.html-m9YESbx7.js
Normal file
1
assets/changelog.html-m9YESbx7.js
Normal file
File diff suppressed because one or more lines are too long
1
assets/contacts.html-ORTLlJQ8.js
Normal file
1
assets/contacts.html-ORTLlJQ8.js
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as a,r,o as s,c,b as e,d as n,a as o}from"./app-ZnF1aHNS.js";const l={},i=e("h1",{id:"contact-us",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#contact-us","aria-hidden":"true"},"#"),n(" Contact Us")],-1),u=e("blockquote",null,[e("p",null,"If you have any questions during usage, or have any constructive suggestions, you can contact us.")],-1),h=e("p",null,"Join our developers group.",-1),d={href:"https://t.me/BetterAndroid",target:"_blank",rel:"noopener noreferrer"},_={href:"https://t.me/HighCapable_Dev",target:"_blank",rel:"noopener noreferrer"},p=e("strong",null,"Twitter",-1),f={href:"https://twitter.com/fankesyooni",target:"_blank",rel:"noopener noreferrer"},g=e("h2",{id:"help-with-maintenance",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#help-with-maintenance","aria-hidden":"true"},"#"),n(" Help with Maintenance")],-1),m=e("p",null,[n("Thank you for choosing and using "),e("code",null,"Hikage"),n(".")],-1),k=e("p",null,"If you have code-related suggestions and requests, you can submit a Pull Request on GitHub.",-1);function b(v,y){const t=r("ExternalLinkIcon");return s(),c("div",null,[i,u,h,e("ul",null,[e("li",null,[e("a",d,[n("Click to join Telegram group"),o(t)])]),e("li",null,[e("a",_,[n("Click to join Telegram group (Developer)"),o(t)])])]),e("p",null,[n("Find me on "),p,n(),e("a",f,[n("@fankesyooni"),o(t)]),n(".")]),g,m,k])}const w=a(l,[["render",b],["__file","contacts.html.vue"]]);export{w as default};
|
1
assets/contacts.html-X7jZzc8H.js
Normal file
1
assets/contacts.html-X7jZzc8H.js
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as o,r as l,o as a,c as s,b as e,d as t,a as r}from"./app-ZnF1aHNS.js";const c={},_=e("h1",{id:"联系我们",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#联系我们","aria-hidden":"true"},"#"),t(" 联系我们")],-1),i=e("blockquote",null,[e("p",null,"如在使用中有任何问题,或有任何建设性的建议,都可以联系我们。")],-1),h=e("p",null,"加入我们的开发者群组。",-1),d={href:"https://t.me/BetterAndroid",target:"_blank",rel:"noopener noreferrer"},u={href:"https://t.me/HighCapable_Dev",target:"_blank",rel:"noopener noreferrer"},p={href:"https://qm.qq.com/cgi-bin/qm/qr?k=Pnsc5RY6N2mBKFjOLPiYldbAbprAU3V7&jump_from=webapi&authKey=X5EsOVzLXt1dRunge8ryTxDRrh9/IiW1Pua75eDLh9RE3KXE+bwXIYF5cWri/9lf",target:"_blank",rel:"noopener noreferrer"},f=e("strong",null,"酷安",-1),m={href:"http://www.coolapk.com/u/876977",target:"_blank",rel:"noopener noreferrer"},b=e("h2",{id:"助力维护",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#助力维护","aria-hidden":"true"},"#"),t(" 助力维护")],-1),k=e("p",null,[t("感谢您选择并使用 "),e("code",null,"Hikage"),t(",如有代码相关的建议和请求,可在 GitHub 提交 Pull Request。")],-1);function g(x,q){const n=l("ExternalLinkIcon");return a(),s("div",null,[_,i,h,e("ul",null,[e("li",null,[e("a",d,[t("点击加入 Telegram 群组"),r(n)])]),e("li",null,[e("a",u,[t("点击加入 Telegram 群组 (开发者)"),r(n)])]),e("li",null,[e("a",p,[t("点击加入 QQ 群 (开发者)"),r(n)])])]),e("p",null,[t("在 "),f,t(" 找到我 "),e("a",m,[t("@星夜不荟"),r(n)]),t("。")]),b,k])}const w=o(c,[["render",g],["__file","contacts.html.vue"]]);export{w as default};
|
1
assets/contacts.html-e3ZRLGK_.js
Normal file
1
assets/contacts.html-e3ZRLGK_.js
Normal file
@@ -0,0 +1 @@
|
||||
const t=JSON.parse('{"key":"v-6cf86266","path":"/zh-cn/about/contacts.html","title":"联系我们","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"助力维护","slug":"助力维护","link":"#助力维护","children":[]}],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"zh-cn/about/contacts.md"}');export{t as data};
|
1
assets/contacts.html-uhRwpcjF.js
Normal file
1
assets/contacts.html-uhRwpcjF.js
Normal file
@@ -0,0 +1 @@
|
||||
const t=JSON.parse('{"key":"v-193cf592","path":"/en/about/contacts.html","title":"Contact Us","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Help with Maintenance","slug":"help-with-maintenance","link":"#help-with-maintenance","children":[]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":2}]},"filePathRelative":"en/about/contacts.md"}');export{t as data};
|
47
assets/future.html-BXK9B2jz.js
Normal file
47
assets/future.html-BXK9B2jz.js
Normal file
@@ -0,0 +1,47 @@
|
||||
import{_ as s,o as n,c as a,e as l}from"./app-ZnF1aHNS.js";const e={},o=l(`<h1 id="展望未来" tabindex="-1"><a class="header-anchor" href="#展望未来" aria-hidden="true">#</a> 展望未来</h1><blockquote><p>未来是美好的,也是不确定的,让我们共同期待 <code>Hikage</code> 在未来的发展空间。</p></blockquote><h2 id="未来的计划" tabindex="-1"><a class="header-anchor" href="#未来的计划" aria-hidden="true">#</a> 未来的计划</h2><blockquote><p>这里收录了 <code>Hikage</code> 可能会在后期添加的功能。</p></blockquote><h3 id="处理-attrtibuteset" tabindex="-1"><a class="header-anchor" href="#处理-attrtibuteset" aria-hidden="true">#</a> 处理 AttrtibuteSet</h3><p><code>Hikage</code> 未来将会支持处理 <code>AttributeSet</code> 来对接 XML 原始的属性以实现接管一些并未在代码中对布局属性开放自定义的第三方组件。</p><p><code>Hikage</code> 目前已经支持自动化创建 <code>XmlBlock</code>,但尚未支持直接处理自定义的 <code>AttributeSet</code>,因为其历史遗留问题和处理难度较高,可能会折中考虑后期是否要继续完善此功能。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 通过 AttributeSet 传入的属性</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> attrs </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">namespace</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"android"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">set</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"text"</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">set</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"textSize"</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">"16sp"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">set</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"gravity"</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">"center"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 通过代码传入的属性</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="生成组件-id" tabindex="-1"><a class="header-anchor" href="#生成组件-id" aria-hidden="true">#</a> 生成组件 ID</h3><p><code>Hikage</code> 未来可能会根据需求支持生成使用字符串自定义的组件 ID 的直接调用功能。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">object</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayout</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">HikageBuilder</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;">(context) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"lin_layout"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 创建 TypedHikage</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MyLayout.</span><span style="color:#DCBDFB;">asTyped</span><span style="color:#ADBAC7;">().</span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">().</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 或者,使用懒加载</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> context.</span><span style="color:#DCBDFB;">lazyTypedHikage</span><span style="color:#ADBAC7;">(MyLayout)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 直接调用根据字符串生成的 ID</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> linLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.linLayout</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.textView</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 获取根布局,即 LinearLayout</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.root</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,13),p=[o];function t(c,i){return n(),a("div",null,p)}const y=s(e,[["render",t],["__file","future.html.vue"]]);export{y as default};
|
1
assets/future.html-Oos9rVeC.js
Normal file
1
assets/future.html-Oos9rVeC.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-ae7b83f2","path":"/en/about/future.html","title":"Looking Toward the Future","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Future Plans","slug":"future-plans","link":"#future-plans","children":[{"level":3,"title":"Process AttributeSet","slug":"process-attributeset","link":"#process-attributeset","children":[]},{"level":3,"title":"Generate Components ID","slug":"generate-components-id","link":"#generate-components-id","children":[]}]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":2}]},"filePathRelative":"en/about/future.md"}');export{e as data};
|
1
assets/future.html-REnhLrdo.js
Normal file
1
assets/future.html-REnhLrdo.js
Normal file
@@ -0,0 +1 @@
|
||||
const t=JSON.parse('{"key":"v-3106ca14","path":"/zh-cn/about/future.html","title":"展望未来","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"未来的计划","slug":"未来的计划","link":"#未来的计划","children":[{"level":3,"title":"处理 AttrtibuteSet","slug":"处理-attrtibuteset","link":"#处理-attrtibuteset","children":[]},{"level":3,"title":"生成组件 ID","slug":"生成组件-id","link":"#生成组件-id","children":[]}]}],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"zh-cn/about/future.md"}');export{t as data};
|
47
assets/future.html-jTN_NVVj.js
Normal file
47
assets/future.html-jTN_NVVj.js
Normal file
@@ -0,0 +1,47 @@
|
||||
import{_ as s,o as n,c as a,e as l}from"./app-ZnF1aHNS.js";const e={},o=l(`<h1 id="looking-toward-the-future" tabindex="-1"><a class="header-anchor" href="#looking-toward-the-future" aria-hidden="true">#</a> Looking Toward the Future</h1><blockquote><p>The future is bright and uncertain, let us look forward to the future development space of <code>Hikage</code>.</p></blockquote><h2 id="future-plans" tabindex="-1"><a class="header-anchor" href="#future-plans" aria-hidden="true">#</a> Future Plans</h2><blockquote><p>Features that <code>Hikage</code> may add later are included here.</p></blockquote><h3 id="process-attributeset" tabindex="-1"><a class="header-anchor" href="#process-attributeset" aria-hidden="true">#</a> Process AttributeSet</h3><p><code>Hikage</code> will support processing <code>AttributeSet</code> in the future to interface with the original XML properties to implement the takeover of some third-party components that are not open to customization of layout properties in the code.</p><p><code>Hikage</code> currently supports automated creation of <code>XmlBlock</code>, but does not support the direct processing of customized <code>AttributeSet</code>. Because of its historical problems and high processing difficulty, it may be considered whether to continue to improve this function in later stages.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Attributes passed through AttributeSet.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> attrs </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">namespace</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"android"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">set</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"text"</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">set</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"textSize"</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">"16sp"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">set</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"gravity"</span><span style="color:#ADBAC7;">, </span><span style="color:#96D0FF;">"center"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Attributes passed through code.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="generate-components-id" tabindex="-1"><a class="header-anchor" href="#generate-components-id" aria-hidden="true">#</a> Generate Components ID</h3><p><code>Hikage</code> may support the direct call function to generate component IDs customized with strings as required in the future.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">object</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayout</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">HikageBuilder</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;">(context) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"lin_layout"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Create TypedHikage.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MyLayout.</span><span style="color:#DCBDFB;">asTyped</span><span style="color:#ADBAC7;">().</span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">().</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Or, use lazy init.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> context.</span><span style="color:#DCBDFB;">lazyTypedHikage</span><span style="color:#ADBAC7;">(MyLayout)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Directly call the ID generated from the string.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> linLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.linLayout</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.textView</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Get the root layout, i.e. LinearLayout.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.root</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,13),p=[o];function t(r,c){return n(),a("div",null,p)}const d=s(e,[["render",t],["__file","future.html.vue"]]);export{d as default};
|
79
assets/hikage-compiler.html-1bP0HyAG.js
Normal file
79
assets/hikage-compiler.html-1bP0HyAG.js
Normal file
@@ -0,0 +1,79 @@
|
||||
import{_ as l,r as o,o as p,c as i,b as s,d as a,a as c,e}from"./app-ZnF1aHNS.js";const r={},d=e('<h1 id="hikage-compiler" tabindex="-1"><a class="header-anchor" href="#hikage-compiler" aria-hidden="true">#</a> hikage-compiler</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-compiler?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-compiler%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>这是 Hikage 的自动化编译模块。</p><h2 id="配置依赖" tabindex="-1"><a class="header-anchor" href="#配置依赖" aria-hidden="true">#</a> 配置依赖</h2><p>你可以使用如下方式将此模块添加到你的项目中。</p>',5),t={class:"custom-container warning"},u=s("p",{class:"custom-container-title"},"注意",-1),v={href:"https://github.com/google/ksp/releases",target:"_blank",rel:"noopener noreferrer"},y=e(`<h3 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h3><p>在你的项目 <code>SweetDependency</code> 配置文件中添加依赖。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">plugins</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.google.devtools.ksp</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-compiler</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的根项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">autowire</span><span style="color:#ADBAC7;">(libs.plugins.com.google.devtools.ksp) apply </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">autowire</span><span style="color:#ADBAC7;">(libs.plugins.com.google.devtools.ksp)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.compiler)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>在你的项目 <code>gradle/libs.versions.toml</code> 中添加依赖。</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">ksp = </span><span style="color:#96D0FF;">"<ksp-version>"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-compiler = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">plugins</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">ksp = { id = </span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"ksp"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-compiler = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-compiler"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-compiler"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的根项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">alias</span><span style="color:#ADBAC7;">(libs.plugins.ksp) apply </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">alias</span><span style="color:#ADBAC7;">(libs.plugins.ksp)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(libs.hikage.compiler)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本,并将 <code><ksp-version></code> 修改为你项目当前使用的 Kotlin 版本对应的 KSP 版本。</p><h3 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h3><p>在你的根项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">id</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">) version </span><span style="color:#96D0FF;">"<ksp-version>"</span><span style="color:#ADBAC7;"> apply </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">id</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-compiler:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本,并将 <code><ksp-version></code> 修改为你项目当前使用的 Kotlin 版本对应的 KSP 版本。</p><h2 id="功能介绍" tabindex="-1"><a class="header-anchor" href="#功能介绍" aria-hidden="true">#</a> 功能介绍</h2><p>Hikage 的编译模块将在运行时自动生成代码,在更新后,请重新运行 <code>assembleDebug</code> 或 <code>assembleRelease</code> Task 以生成最新的代码。</p><h3 id="生成布局组件" tabindex="-1"><a class="header-anchor" href="#生成布局组件" aria-hidden="true">#</a> 生成布局组件</h3><p>Hikage 可以在编译时为指定的布局组件自动生成布局组件对应的 <code>Hikageable</code> 函数。</p><h4 id="自定义-view" tabindex="-1"><a class="header-anchor" href="#自定义-view" aria-hidden="true">#</a> 自定义 View</h4><p>你可以在你的自定义 <code>View</code> 上加入 <code>HikageView</code> 注解,以标记它生成为 Hikage 布局组件。</p><table><thead><tr><th>参数名称</th><th>描述</th></tr></thead><tbody><tr><td><code>lparams</code></td><td>布局参数 <code>ViewGroup.LayoutParams</code> Class 对象,如果你的自定义 <code>View</code> 是 <code>ViewGroup</code> 的子类,则可以声明或留空使用默认值</td></tr><tr><td><code>alias</code></td><td>布局组件的别名,即要生成的函数名称,默认获取当前 Class 的名称</td></tr><tr><td><code>requireInit</code></td><td>是否要求填写布局的初始化方法块,默认为可省略的参数</td></tr><tr><td><code>requirePerformer</code></td><td>是否要求填写布局的 <code>performer</code> 方法块,默认为可省略的参数,仅在你的自定义 <code>View</code> 是 <code>ViewGroup</code> 的子类时生效</td></tr><tr><td><code>final</code></td><td>是否将布局声明为 “最终布局”,默认否,即此布局是否是 <code>ViewGroup</code> 还是从其继承都将不会生成 <code>performer</code> 方法块,设置为 <code>true</code> 之后,<code>lparams</code> 和 <code>requirePerformer</code> 将不再有效。</td></tr></tbody></table><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F69D50;">@HikageView</span><span style="color:#ADBAC7;">(lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.LayoutParams::</span><span style="color:#DCBDFB;">class</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayout</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>编译后,你就可以在 Hikage 布局中使用 <code>MyLayout</code> 作为布局组件了。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">MyLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="第三方组件" tabindex="-1"><a class="header-anchor" href="#第三方组件" aria-hidden="true">#</a> 第三方组件</h4><p>Hikage 同样可以为第三方提供的 <code>View</code> 组件自动生成布局组件函数,你可以使用 <code>HikageViewDeclaration</code> 注解来完成。</p><table><thead><tr><th>参数名称</th><th>描述</th></tr></thead><tbody><tr><td><code>view</code></td><td>需要声明的布局组件的 Class 对象</td></tr><tr><td><code>lparams</code></td><td>布局参数 <code>ViewGroup.LayoutParams</code> Class 对象,如果你的自定义 <code>View</code> 是 <code>ViewGroup</code> 的子类,则可以声明或留空使用默认值</td></tr><tr><td><code>alias</code></td><td>布局组件的别名,即要生成的函数名称,默认获取 <code>view</code> Class 的名称</td></tr><tr><td><code>requireInit</code></td><td>是否要求填写布局的初始化方法块,默认为可省略的参数</td></tr><tr><td><code>requirePerformer</code></td><td>是否要求填写布局的 <code>performer</code> 方法块,默认为可省略的参数,仅在你的自定义 <code>View</code> 是 <code>ViewGroup</code> 的子类时生效</td></tr><tr><td><code>final</code></td><td>是否将布局声明为 “最终布局”,默认否,即此布局是否是 <code>ViewGroup</code> 还是从其继承都将不会生成 <code>performer</code> 方法块,设置为 <code>true</code> 之后,<code>lparams</code> 和 <code>requirePerformer</code> 将不再有效。</td></tr></tbody></table><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F69D50;">@HikageViewDeclaration</span><span style="color:#ADBAC7;">(ThirdPartyView::</span><span style="color:#DCBDFB;">class</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#F47067;">object</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">ThirdPartyViewDeclaration</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>这个注解可以声明到任意一个 <code>object</code> 类上,仅作为注解扫描器需要自动纳入的类来使用,你可以将可见性设为 <code>private</code>,但要确保被注解的类一定是使用 <code>object</code> 修饰的。</p><p>同样地,编译后,你就可以在 Hikage 布局中使用 <code>ThirdPartyView</code> 作为布局组件了。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ThirdPartyView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">小提示</p><p>Hikage 生成布局组件的函数包名路径为 <code>com.highcapable.hikage.widget</code> + 你的 <code>View</code> 或第三方 <code>View</code> 组件的完整包名。</p></div>`,43);function A(m,D){const n=o("ExternalLinkIcon");return p(),i("div",null,[d,s("div",t,[u,s("p",null,[a("你需要在你的项目中集成适合于你项目当前 Kotlin 版本的 "),s("a",v,[a("Google KSP"),c(n)]),a(" 插件。")])]),y])}const B=l(r,[["render",A],["__file","hikage-compiler.html.vue"]]);export{B as default};
|
79
assets/hikage-compiler.html-4m7cGYK8.js
Normal file
79
assets/hikage-compiler.html-4m7cGYK8.js
Normal file
@@ -0,0 +1,79 @@
|
||||
import{_ as l,r as o,o as t,c as i,b as s,d as e,a as p,e as a}from"./app-ZnF1aHNS.js";const c={},r=a('<h1 id="hikage-compiler" tabindex="-1"><a class="header-anchor" href="#hikage-compiler" aria-hidden="true">#</a> hikage-compiler</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-compiler?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-compiler%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>This is a Hikage automatic compilation module.</p><h2 id="configure-dependency" tabindex="-1"><a class="header-anchor" href="#configure-dependency" aria-hidden="true">#</a> Configure Dependency</h2><p>You can add this module to your project using the following method.</p>',5),d={class:"custom-container warning"},u=s("p",{class:"custom-container-title"},"Notice",-1),y={href:"https://github.com/google/ksp/releases",target:"_blank",rel:"noopener noreferrer"},m=a(`<h3 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h3><p>Add dependency in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">plugins</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.google.devtools.ksp</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-compiler</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your root project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">autowire</span><span style="color:#ADBAC7;">(libs.plugins.com.google.devtools.ksp) apply </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">autowire</span><span style="color:#ADBAC7;">(libs.plugins.com.google.devtools.ksp)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.compiler)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">ksp = </span><span style="color:#96D0FF;">"<ksp-version>"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-compiler = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">plugins</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">ksp = { id = </span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"ksp"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-compiler = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-compiler"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-compiler"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your root project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">alias</span><span style="color:#ADBAC7;">(libs.plugins.ksp) apply </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">alias</span><span style="color:#ADBAC7;">(libs.plugins.ksp)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(libs.hikage.compiler)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document, and change <code><ksp-version></code> to the KSP version corresponding to the Kotlin version currently used by your project.</p><h3 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h3><p>Configure dependency in your root project <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">id</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">) version </span><span style="color:#96D0FF;">"<ksp-version>"</span><span style="color:#ADBAC7;"> apply </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">plugins</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">id</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.google.devtools.ksp"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">dependencies</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ksp</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-compiler:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document, and change <code><ksp-version></code> to the KSP version corresponding to the Kotlin version currently used by your project.</p><h2 id="function-introduction" tabindex="-1"><a class="header-anchor" href="#function-introduction" aria-hidden="true">#</a> Function Introduction</h2><p>Hikage's compilation module will automatically generate code at runtime. After update, please re-run the <code>assembleDebug</code> or <code>assembleRelease</code> task to generate the latest code.</p><h3 id="generate-layout-components" tabindex="-1"><a class="header-anchor" href="#generate-layout-components" aria-hidden="true">#</a> Generate Layout Components</h3><p>Hikage can automatically generate the <code>Hikageable</code> function corresponding to the layout component for the specified layout component at compile time.</p><h4 id="custom-view" tabindex="-1"><a class="header-anchor" href="#custom-view" aria-hidden="true">#</a> Custom View</h4><p>You can add the <code>HikageView</code> annotation on your custom <code>View</code> to mark it as a Hikage layout component.</p><table><thead><tr><th>Parameter Name</th><th>Description</th></tr></thead><tbody><tr><td><code>lparams</code></td><td>LayoutParams <code>Class</code> object, if your custom <code>View</code> is a subclass of <code>ViewGroup</code>, you can declare or leave it blank to use the default value</td></tr><tr><td><code>alias</code></td><td>The alias of the layout component, that is, the function name to be generated, gets the name of the current Class by default</td></tr><tr><td><code>requireInit</code></td><td>Whether to fill in the initialization method block of the layout, the default is the omitted parameters</td></tr><tr><td><code>requirePerformer</code></td><td>Whether to fill in the <code>performer</code> method block of the layout, the default is an omitted parameter, which only takes effect when your custom <code>View</code> is a subclass of <code>ViewGroup</code></td></tr><tr><td><code>final</code></td><td>Whether to declare the layout as "final layout", the default is false, that is, whether this layout is <code>ViewGroup</code> or its subclasses will not generate the <code>performer</code> method block. After set to <code>true</code>, <code>lparams</code> and <code>requirePerformer</code> will no longer be valid.</td></tr></tbody></table><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F69D50;">@HikageView</span><span style="color:#ADBAC7;">(lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.LayoutParams::</span><span style="color:#DCBDFB;">class</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayout</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Once compiled, you can use <code>MyLayout</code> as the layout component in the Hikage layout.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">MyLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="third-party-components" tabindex="-1"><a class="header-anchor" href="#third-party-components" aria-hidden="true">#</a> Third-party Components</h4><p>Hikage can also automatically generate layout component functions for the <code>View</code> component provided by third parties, and you can use the <code>HikageViewDeclaration</code> annotation to complete it.</p><table><thead><tr><th>Parameter Name</th><th>Description</th></tr></thead><tbody><tr><td><code>view</code></td><td>Class object of layout component that needs to be declared</td></tr><tr><td><code>lparams</code></td><td>LayoutParams <code>Class</code> object, if your custom <code>View</code> is a subclass of <code>ViewGroup</code>, you can declare or leave it blank to use the default value</td></tr><tr><td><code>alias</code></td><td>The alias of the layout component, that is, the name of the function to be generated, obtains the name of the <code>view</code> Class by default</td></tr><tr><td><code>requireInit</code></td><td>Whether to fill in the initialization method block of the layout, the default is the omitted parameters</td></tr><tr><td><code>requirePerformer</code></td><td>Whether to fill in the <code>performer</code> method block of the layout, the default is an omitted parameter, which only takes effect when your custom <code>View</code> is a subclass of <code>ViewGroup</code></td></tr><tr><td><code>final</code></td><td>Whether to declare the layout as "final layout", the default is false, that is, whether this layout is <code>ViewGroup</code> or its subclasses will not generate the <code>performer</code> method block. After set to <code>true</code>, <code>lparams</code> and <code>requirePerformer</code> will no longer be valid.</td></tr></tbody></table><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F69D50;">@HikageViewDeclaration</span><span style="color:#ADBAC7;">(ThirdPartyView::</span><span style="color:#DCBDFB;">class</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#F47067;">object</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">ThirdPartyViewDeclaration</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div></div></div><p>This annotation can be declared on any <code>object</code> class and is only used as a class that needs to be automatically included by the annotation scanner. You can set visibility to <code>private</code>, but make sure that the annotated class must be modified with <code>object</code>.</p><p>Similarly, after compilation, you can use <code>ThirdPartyView</code> as the layout component in the Hikage layout.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ThirdPartyView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">Tips</p><p>Hikage The function package name path for generating layout components is <code>com.highcapable.hikage.widget</code> + the full package name of your <code>View</code> or third-party <code>View</code> component.</p></div>`,43);function h(v,A){const n=o("ExternalLinkIcon");return t(),i("div",null,[r,s("div",d,[u,s("p",null,[e("You need to integrate the "),s("a",y,[e("Google KSP"),p(n)]),e(" plugin in your project that is suitable for the current Kotlin version of your project.")])]),m])}const D=l(c,[["render",h],["__file","hikage-compiler.html.vue"]]);export{D as default};
|
1
assets/hikage-compiler.html-OOEYxzA1.js
Normal file
1
assets/hikage-compiler.html-OOEYxzA1.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-24443363","path":"/en/library/hikage-compiler.html","title":"hikage-compiler","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Configure Dependency","slug":"configure-dependency","link":"#configure-dependency","children":[{"level":3,"title":"SweetDependency (Recommended)","slug":"sweetdependency-recommended","link":"#sweetdependency-recommended","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"Traditional Method","slug":"traditional-method","link":"#traditional-method","children":[]}]},{"level":2,"title":"Function Introduction","slug":"function-introduction","link":"#function-introduction","children":[{"level":3,"title":"Generate Layout Components","slug":"generate-layout-components","link":"#generate-layout-components","children":[]}]}],"git":{"updatedTime":1755959975000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"en/library/hikage-compiler.md"}');export{e as data};
|
1
assets/hikage-compiler.html-_B_hgKuq.js
Normal file
1
assets/hikage-compiler.html-_B_hgKuq.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-5391bb14","path":"/zh-cn/library/hikage-compiler.html","title":"hikage-compiler","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"配置依赖","slug":"配置依赖","link":"#配置依赖","children":[{"level":3,"title":"SweetDependency (推荐)","slug":"sweetdependency-推荐","link":"#sweetdependency-推荐","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"传统方式","slug":"传统方式","link":"#传统方式","children":[]}]},{"level":2,"title":"功能介绍","slug":"功能介绍","link":"#功能介绍","children":[{"level":3,"title":"生成布局组件","slug":"生成布局组件","link":"#生成布局组件","children":[]}]}],"git":{"updatedTime":1755959975000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"zh-cn/library/hikage-compiler.md"}');export{e as data};
|
281
assets/hikage-core.html--xfNkeP6.js
Normal file
281
assets/hikage-core.html--xfNkeP6.js
Normal file
@@ -0,0 +1,281 @@
|
||||
import{_ as i,r as p,o as t,c as r,b as a,d as s,a as n,w as o,e as l}from"./app-ZnF1aHNS.js";const d={},y=l(`<h1 id="hikage-core" tabindex="-1"><a class="header-anchor" href="#hikage-core" aria-hidden="true">#</a> hikage-core</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-core?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-core%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>这是 Hikage 的核心依赖,你需要引入此模块才能使用 Hikage 的基本功能。</p><h2 id="配置依赖" tabindex="-1"><a class="header-anchor" href="#配置依赖" aria-hidden="true">#</a> 配置依赖</h2><p>你可以使用如下方式将此模块添加到你的项目中。</p><h3 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h3><p>在你的项目 <code>SweetDependency</code> 配置文件中添加依赖。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-core</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.core)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>在你的项目 <code>gradle/libs.versions.toml</code> 中添加依赖。</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-core = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-core = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-core"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-core"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.core)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h3 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h3><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-core:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h2 id="功能介绍" tabindex="-1"><a class="header-anchor" href="#功能介绍" aria-hidden="true">#</a> 功能介绍</h2>`,21),A={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-core",target:"_blank",rel:"noopener noreferrer"},v=l(`<h3 id="基本用法" tabindex="-1"><a class="header-anchor" href="#基本用法" aria-hidden="true">#</a> 基本用法</h3><p>使用下方的代码创建你的第一个 Hikage 布局。</p><p>首先,使用 <code>Hikageable</code> 创建一个 <code>Hikage.Delegate</code> 对象。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后,将其设置到你想要显示的父布局或根布局上。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这就是你的 Activity</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> activity: </span><span style="color:#F69D50;">Activity</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 实例化 Hikage 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(activity)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 得到根布局</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage.root</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 设置为 Activity 的内容视图</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">activity.</span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;">(root)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>这样我们就完成了一个简单的布局创建与设置。</p><h3 id="布局约定" tabindex="-1"><a class="header-anchor" href="#布局约定" aria-hidden="true">#</a> 布局约定</h3><p>Hikage 的布局基本元素基于 Android 原生的 <code>View</code> 组件,所有的布局元素都可以直接使用 Android 原生的 <code>View</code> 组件进行创建。</p><p>所有布局的创建过程都会被限定在指定的作用域 <code>Hikage.Performer</code> 中,它被称为布局的 “演奏者”,即饰演布局的角色对象,这个对象可以通过以下几种方式创建并维护。</p><h4 id="hikageable" tabindex="-1"><a class="header-anchor" href="#hikageable" aria-hidden="true">#</a> Hikageable</h4><p>正如 <a href="#%E5%9F%BA%E6%9C%AC%E7%94%A8%E6%B3%95">基本用法</a> 所示,<code>Hikageable</code> 可以直接创建一个 <code>Hikage.Delegate</code> 或 <code>Hikage</code> 对象,在 DSL 中,你可以得到 <code>Hikage.Performer</code> 对象对布局内容进行创建。</p><p>第一种方案,在任意地方创建。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// myLayout 是 Hikage.Delegate 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 假设这就是你的 Context</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 在需要 Context 的地方实例化 Hikage 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>第二种方案,在存在 <code>Context</code> 的地方直接创建。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这就是你的 Context</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 创建布局,myLayout 是 Hikage 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;">(context) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="hikagebuilder" tabindex="-1"><a class="header-anchor" href="#hikagebuilder" aria-hidden="true">#</a> HikageBuilder</h4><p>除了上述的方式以外,你还可以维护一个 <code>HikageBuilder</code> 对象来预创建布局。</p><p>首先,我们需要创建一个 <code>HikageBuilder</code> 对象并定义为单例。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">object</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayout</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">HikageBuilder</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后,在需要的地方使用它,可以有如下两种方案。</p><p>第一种方案,直接使用 <code>build</code> 创建 <code>Hikage.Delegate</code> 对象。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// myLayout 是 Hikage.Delegate 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MyLayout.</span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 假设这就是你的 Context</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 在需要 Context 的地方实例化 Hikage 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>第二种方案,使用 <code>Context.lazyHikage</code> 创建 <code>Hikage</code> 委托对象。</p><p>例如,我们可以在 <code>Activity</code> 中像 <code>ViewBinding</code> 一样使用它。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyActivity</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">AppCompatActivity</span><span style="color:#ADBAC7;">() {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">private</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">lazyHikage</span><span style="color:#ADBAC7;">(MyLayout)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState: </span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">?) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">super</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 得到根布局</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.root</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 设置为 Activity 的内容视图</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;">(root)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="基本布局组件" tabindex="-1"><a class="header-anchor" href="#基本布局组件" aria-hidden="true">#</a> 基本布局组件</h3><p>Hikage 采用与 Jetpack Compose 一致的函数式创建组件方案,它的布局使用两种基础组件完成,<code>View</code> 和 <code>ViewGroup</code> 函数, 它们分别对应于 Android 原生基于 <code>View</code> 和 <code>ViewGroup</code> 的组件。</p><h4 id="view" tabindex="-1"><a class="header-anchor" href="#view" aria-hidden="true">#</a> View</h4><p><code>View</code> 函数的基础参数为以下三个,使用泛型定义创建的 <code>View</code> 对象类型。</p><p>如果不声明泛型类型,默认使用 <code>android.view.View</code> 作为创建的对象类型。</p><table><thead><tr><th>参数名称</th><th>描述</th></tr></thead><tbody><tr><td><code>lparams</code></td><td>布局参数,即 <code>ViewGroup.LayoutParams</code>,使用 <code>LayoutParams</code> 进行创建</td></tr><tr><td><code>id</code></td><td>用于查找已创建对象的 ID,使用字符串定义</td></tr><tr><td><code>init</code></td><td><code>View</code> 的初始化方法体,作为最后一位 DSL 参数传入</td></tr></tbody></table><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_text_view"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="viewgroup" tabindex="-1"><a class="header-anchor" href="#viewgroup" aria-hidden="true">#</a> ViewGroup</h4><p><code>ViewGroup</code> 函数的基础参数为四个,比较于 <code>View</code> 函数多了一个 <code>performer</code> 参数。</p><p>它必须声明一个泛型类型,因为 <code>ViewGroup</code> 是抽象类,需要一个具体的实现类。</p><p><code>ViewGroup</code> 额外提供一个基于 <code>ViewGroup.LayoutParams</code> 的泛型参数,用于为子布局提供布局参数,不声明时默认使用 <code>ViewGroup.LayoutParams</code>。</p><table><thead><tr><th>参数名称</th><th>描述</th></tr></thead><tbody><tr><td><code>lparams</code></td><td>布局参数,即 <code>ViewGroup.LayoutParams</code>,使用 <code>LayoutParams</code> 进行创建</td></tr><tr><td><code>id</code></td><td>用于查找已创建对象的 ID,使用字符串定义</td></tr><tr><td><code>init</code></td><td><code>ViewGroup</code> 的初始化方法体,作为 DSL 参数传入</td></tr><tr><td><code>performer</code></td><td><code>Hikage.Performer</code> 对象,作为最后一位 DSL 参数传入</td></tr></tbody></table><p><code>performer</code> 参数的作用是向下传递新的 <code>Hikage.Performer</code> 对象,作为子布局的创建者。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">ViewGroup</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">>(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_linear_layout"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 初始化方法体将在这里使用 \`init\` 体现</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 可在这里继续创建子布局</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="layoutparams" tabindex="-1"><a class="header-anchor" href="#layoutparams" aria-hidden="true">#</a> LayoutParams</h4><p>Hikage 中的布局均可使用 <code>LayoutParams</code> 函数设置布局参数,你可以使用以下参数创建它。</p><table><thead><tr><th>参数名称</th><th>描述</th></tr></thead><tbody><tr><td><code>width</code></td><td>手动指定布局宽度</td></tr><tr><td><code>height</code></td><td>手动指定布局高度</td></tr><tr><td><code>matchParent</code></td><td>是否使用 <code>MATCH_PARENT</code> 作为布局宽度和高度</td></tr><tr><td><code>wrapContent</code></td><td>是否使用 <code>WRAP_CONTENT</code> 作为布局宽度和高度</td></tr><tr><td><code>widthMatchParent</code></td><td>仅设置宽度为 <code>MATCH_PARENT</code></td></tr><tr><td><code>heightMatchParent</code></td><td>仅设置高度为 <code>MATCH_PARENT</code></td></tr><tr><td><code>body</code></td><td>布局参数的初始化方法体,作为最后一位 DSL 参数传入</td></tr></tbody></table><p>在你不设置 <code>LayoutParams</code> 对象或不指定 <code>width</code> 和 <code>height</code> 时,Hikage 会自动使用 <code>WRAP_CONTENT</code> 作为布局参数。</p><p><code>body</code> 方法体的类型来源于上层 <a href="#viewgroup">ViewGroup</a> 提供的第二位泛型参数。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 假设上层提供的布局参数类型为 LinearLayout.LayoutParams</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(width </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">100</span><span style="color:#ADBAC7;">.dp) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">20</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>如果你只需要一个横向填充的布局,可以直接使用 <code>widthMatchParent = true</code>。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(widthMatchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="layout" tabindex="-1"><a class="header-anchor" href="#layout" aria-hidden="true">#</a> Layout</h4><p>Hikage 支持引用第三方布局,你可以传入 XML 布局资源 ID、其它 Hikage 对象以及 <code>View</code> 对象,甚至是 <code>ViewBinding</code>。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">ViewGroup</span><span style="color:#ADBAC7;"><...> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 引用 XML 布局资源 ID</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;">(R.layout.my_layout)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 引用 ViewBinding</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyLayoutBinding</span><span style="color:#ADBAC7;">>()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 引用另一个 Hikage 或 Hikage.Delegate 对象</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;">(myLayout)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="定位布局组件" tabindex="-1"><a class="header-anchor" href="#定位布局组件" aria-hidden="true">#</a> 定位布局组件</h3><p>Hikage 支持使用 <code>id</code> 定位组件,在上面的示例中,我们使用了 <code>id</code> 参数设置了组件的 ID。</p><p>在设置 ID 后,你可以使用 <code>Hikage.get</code> 方法获取它们。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 假设这就是你的 Context</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 在需要 Context 的地方实例化 Hikage 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 获取指定的组件,返回 View 类型</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage[</span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 获取指定的组件并声明组件类型</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage.</span><span style="color:#DCBDFB;">get</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 如果不确定 ID 是否存在,可以使用 \`getOrNull\` 方法</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage.</span><span style="color:#DCBDFB;">getOrNull</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="自定义布局组件" tabindex="-1"><a class="header-anchor" href="#自定义布局组件" aria-hidden="true">#</a> 自定义布局组件</h3>`,69),u=l(`<blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_linear_layout"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_text_view"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>初始化后的 <code>View</code> 或 <code>ViewGroup</code> 对象会返回其自身对象类型的实例,你可以在接下来的布局中使用它们。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">Button</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Click Me!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setOnClickListener</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 直接使用 textView 对象</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textView.text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Clicked!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>如果提供的组件不满足你的需求,你可以手动创建自己的组件。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设你已经定义好了你的自定义组件</span></span>
|
||||
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyCustomView</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">View</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#768390;">// 下面,创建组件对应的函数</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 自定义组件必须声明此注解</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 声明组件的注解具有传染性,在每个用于构建布局的作用域中,都需要存在此注解</span></span>
|
||||
<span class="line"><span style="color:#F69D50;">@Hikageable</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 函数的命名可以随意,但是建议使用大驼峰命名</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 函数的签名部分需要固定声明为 \`inline fun <reified LP : ViewGroup.LayoutParams> Hikage.Performer<LP>\`</span></span>
|
||||
<span class="line"><span style="color:#F47067;">inline</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> <</span><span style="color:#F69D50;">reified</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">LP</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">ViewGroup</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">> </span><span style="color:#F69D50;">Hikage</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">Performer</span><span style="color:#F47067;"><</span><span style="color:#ADBAC7;">LP</span><span style="color:#F47067;">></span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">MyCustomView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams: </span><span style="color:#F69D50;">Hikage</span><span style="color:#ADBAC7;">.LayoutParams? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id: </span><span style="color:#F69D50;">String</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init: </span><span style="color:#F69D50;">HikageView</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyCustomView</span><span style="color:#ADBAC7;">> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {},</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 如果此组件是容器,可以声明一个 \`performer\` 参数</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// performer: HikagePerformer<LP> = {}</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyCustomView</span><span style="color:#ADBAC7;">>(lparams, id, init)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,8),D=l(`<h3 id="组合与拆分布局" tabindex="-1"><a class="header-anchor" href="#组合与拆分布局" aria-hidden="true">#</a> 组合与拆分布局</h3><p>在搭建 UI 时,我们通常会将可复用的布局作为组件来使用,如果你不想每一个部分都使用原生的自定义 <code>View</code> 将其分别定制,你可以直接将布局逻辑部分进行拆分。</p><p>Hikage 支持将布局拆分为多个部分进行组合,你可以在任何地方使用 <code>Hikageable</code> 函数创建一个新的 <code>Hikage.Delegate</code> 对象。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这是你的主布局</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> mainLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 组合子布局</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;">(subLayout)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 假设这是你的布局子模块</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 由于上层布局使用了 LinearLayout,所以你可以为子布局声明 LinearLayout.LayoutParams</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> subLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, Sub World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="状态管理" tabindex="-1"><a class="header-anchor" href="#状态管理" aria-hidden="true">#</a> 状态管理</h3><p>Hikage 拥有与 Jetpack Compose 类似的状态管理解决方法,它可以轻松地设置布局组件的状态监听。</p><p>Hikage 提供了两种状态,<code>NonNullState</code> 和 <code>NullableState</code>,分为持有非空和可空两种状态。</p><p>不同于 Jetpack Compose 的重组 (Recompose),Hikage 不会重组,状态通过监听与回调生效。</p><p>你可以在如下场景中使用这两种状态。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 声明一个非空可变状态</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> mTextState </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mutableStateOf</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 声明一个可空可变状态</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> mDrawState </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mutableStateOfNull</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">Drawable</span><span style="color:#ADBAC7;">>()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 你可以将状态委托给一个变量</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">var</span><span style="color:#ADBAC7;"> mText </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> mTextState</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">var</span><span style="color:#ADBAC7;"> mDraw </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> mDrawState</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 设置 (绑定) 状态到文本</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setState</span><span style="color:#ADBAC7;">(mTextState) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> it</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ImageView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 设置 (绑定) 状态到 Drawable</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setState</span><span style="color:#ADBAC7;">(mDrawState) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setImageDrawable</span><span style="color:#ADBAC7;">(it)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Button</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Click Me!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setOnClickListener</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 修改非空状态的值</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> mText </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, Hikage!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 修改可空状态的值</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> mDraw </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">drawableResource</span><span style="color:#ADBAC7;">(R.drawable.ic_my_drawable)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在上面的示例中,我们使用 <code>mutableStateOf</code> 声明了一个非空状态 <code>mTextState</code>,它的初始值为 <code>"Hello, World!"</code>, 然后继续使用 <code>mutableStateOfNull</code> 声明了一个可空状态 <code>mDrawState</code>,它的初始值为 <code>null</code>。</p><p>在点击按钮时,我们修改 <code>mTextState</code> 的值为 <code>"Hello, Hikage!"</code>,<code>mDrawState</code> 的值为属性资源 <code>R.drawable.ic_my_drawable</code>, 这时 <code>TextView</code> 和 <code>ImageView</code> 的文本和图片将会自动更新。</p><h3 id="自定义布局装载器" tabindex="-1"><a class="header-anchor" href="#自定义布局装载器" aria-hidden="true">#</a> 自定义布局装载器</h3><p>Hikage 支持自定义布局装载器并同时兼容 <code>LayoutInflater.Factory2</code>,你可以通过以下方式自定义在 Hikage 布局装载过程中的事件和监听。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> factory </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">HikageFactory</span><span style="color:#ADBAC7;"> { parent, base, context, params </span><span style="color:#F47067;">-></span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 你可以在这里自定义布局装载器的行为</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 例如,使用你自己的方式创建一个新的 View 对象</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// \`parent\` 为当前组件要添加到的 ViewGroup 对象,如果没有则为 \`null\`</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// \`base\` 为上一个 HikageFactory 创建的 View 对象,如果没有则为 \`null\`</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// \`params\` 对象中包含了组件 ID、AttributeSet 以及 View 的 Class 对象</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> view </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MyLayoutFactory.</span><span style="color:#DCBDFB;">createView</span><span style="color:#ADBAC7;">(context, params)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 你还可以在这里对创建的 View 对象进行初始化和设置</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> view.</span><span style="color:#DCBDFB;">setBackgroundColor</span><span style="color:#ADBAC7;">(Color.RED)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 返回创建的 View 对象</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 返回 \`null\` 将会使用默认的组件装载方式</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> view</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>你还可以直接传入 <code>LayoutInflater</code> 对象以自动装载并使用其中的 <code>LayoutInflater.Factory2</code>。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这就是你的 LayoutInflater 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> layoutInflater: </span><span style="color:#F69D50;">LayoutInflater</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 通过 LayoutInflater 创建 HikageFactory 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> factory </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">HikageFactory</span><span style="color:#ADBAC7;">(layoutInflater)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后使用以下方式将其设置到你需要装载的 Hikage 布局上。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这就是你的 Context</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 创建 Hikage 对象</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> context </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> context,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> factory </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 添加自定义的 HikageFactory 对象</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">add</span><span style="color:#ADBAC7;">(factory)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 直接添加</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">add</span><span style="color:#ADBAC7;"> { parent, base, context, params </span><span style="color:#F47067;">-></span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 连续添加多个</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">addAll</span><span style="color:#ADBAC7;">(factories)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">小提示</p><p>Hikage 在默认装载时将会根据传入 <code>Context</code> 对象的 <code>LayoutInflater.Factory2</code> 对布局进行装载,如果你正在使用 <code>AppCompatActivity</code>, 布局中的组件将会自动被替换为对应的 Compat 组件或 Material 组件,与 XML 布局的特性保持一致。</p><p>如果你不需要默认生效此特性,可以使用以下方式全局关闭。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">Hikage.isAutoProcessWithFactory2 </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></div><h3 id="预览布局" tabindex="-1"><a class="header-anchor" href="#预览布局" aria-hidden="true">#</a> 预览布局</h3><p>Hikage 支持在 Android Studio 中预览布局,借助于 Android Studio 自带的自定义 <code>View</code> 预览插件,你可以使用以下方式预览布局。</p><p>你只需要定义一个预览布局的自定义 <code>View</code> 并继承于 <code>HikagePreview</code>。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayoutPreview</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">?) : </span><span style="color:#F69D50;">HikagePreview</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>然后在你当前的窗口右侧应该会出现预览窗格,打开后点击 “Build & Refresh”,等待编译完成后将会自动显示预览。</p><div class="custom-container tip"><p class="custom-container-title">小提示</p><p><code>HikagePreview</code> 实现了 <code>HikageBuilder</code> 接口,你可以在 <code>build</code> 方法中返回任意的 Hikage 布局以进行预览。</p></div><div class="custom-container danger"><p class="custom-container-title">特别注意</p><p><code>HikagePreview</code> 仅支持在 Android Studio 中预览布局,请勿在运行时使用它或将其添加到任何 XML 布局中。</p></div>`,33);function B(C,m){const c=p("ExternalLinkIcon"),e=p("RouterLink");return t(),r("div",null,[y,a("p",null,[s("你可以 "),a("a",A,[s("点击这里"),n(c)]),s(" 查看 KDoc。")]),v,a("p",null,[s("Hikage 为 Android 基础的布局组件提供了组件类名对应的函数,你可以直接使用这些函数创建组件,而无需再使用泛型声明它们,如果你需要 Jetpack 或者 Material 提供的组件, 可以引入 "),n(e,{to:"/zh-cn/library/hikage-widget-androidx.html"},{default:o(()=>[s("hikage-widget-androidx")]),_:1}),s(" 或 "),n(e,{to:"/zh-cn/library/hikage-widget-material.html"},{default:o(()=>[s("hikage-widget-material")]),_:1}),s(" 模块。")]),u,a("p",null,[s("每次都手动实现这样复杂的函数看起来会很繁琐,如果你希望能够自动生成组件函数,可以引入并参考 "),n(e,{to:"/zh-cn/library/hikage-compiler.html"},{default:o(()=>[s("hikage-compiler")]),_:1}),s(" 模块。")]),D])}const F=i(d,[["render",B],["__file","hikage-core.html.vue"]]);export{F as default};
|
285
assets/hikage-core.html-2POUBcJE.js
Normal file
285
assets/hikage-core.html-2POUBcJE.js
Normal file
@@ -0,0 +1,285 @@
|
||||
import{_ as i,r as p,o as c,c as r,b as a,d as s,a as n,w as o,e}from"./app-ZnF1aHNS.js";const d={},y=e(`<h1 id="hikage-core" tabindex="-1"><a class="header-anchor" href="#hikage-core" aria-hidden="true">#</a> hikage-core</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-core?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-core%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>This is the core dependency of Hikage, and you need to introduce this module to use the basic features of Hikage.</p><h2 id="configure-dependency" tabindex="-1"><a class="header-anchor" href="#configure-dependency" aria-hidden="true">#</a> Configure Dependency</h2><p>You can add this module to your project using the following method.</p><h3 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h3><p>Add dependency in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-core</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.core)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-core = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-core = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-core"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-core"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.core)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h3 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h3><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-core:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h2 id="function-introduction" tabindex="-1"><a class="header-anchor" href="#function-introduction" aria-hidden="true">#</a> Function Introduction</h2>`,21),u={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-core",target:"_blank",rel:"noopener noreferrer"},A=e(`<h3 id="basic-usage" tabindex="-1"><a class="header-anchor" href="#basic-usage" aria-hidden="true">#</a> Basic Usage</h3><p>Use the code below to create your first Hikage layout.</p><p>First, use <code>Hikageable</code> to create a <code>Hikage.Delegate</code> object.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then, set it to the parent or root layout you want to display.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume that's your Activity.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> activity: </span><span style="color:#F69D50;">Activity</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Instantiate the Hikage object.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(activity)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Get the root layout.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage.root</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Content view set to Activity.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">activity.</span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;">(root)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>In this way, we can complete a simple layout creation and configuration.</p><h3 id="layout-agreement" tabindex="-1"><a class="header-anchor" href="#layout-agreement" aria-hidden="true">#</a> Layout Agreement</h3><p>The basic layout elements of Hikage are based on the Android native <code>View</code> component.</p><p>All layout elements can be created directly using the Android native <code>View</code> component.</p><p>The creation process of all layouts will be limited to the specified scope <code>Hikage.Performer</code>, which is called the "player" of the layout, that is, the role object that plays the layout.</p><p>This object can be created and maintained in the following ways.</p><h4 id="hikageable" tabindex="-1"><a class="header-anchor" href="#hikageable" aria-hidden="true">#</a> Hikageable</h4><p>As shown in <a href="#basic-usage">Basic Usage</a>, <code>Hikageable</code> can directly create a <code>Hikage.Delegate</code> or <code>Hikage</code> object.</p><p>In DSL, you can get the <code>Hikage.Performer</code> object to create the layout content.</p><p>The first solution is created anywhere.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// myLayout is a Hikage.Delegate object.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Assume that's your Context.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Instantiate the Hikage object where the Context is needed.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The second solution is created directly where <code>Context</code> exists.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume that's your Context.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Create a layout, myLayout is a Hikage object.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;">(context) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="hikagebuilder" tabindex="-1"><a class="header-anchor" href="#hikagebuilder" aria-hidden="true">#</a> HikageBuilder</h4><p>In addition to the above methods, you can also maintain a <code>HikageBuilder</code> object to pre-create the layout.</p><p>First, we need to create a <code>HikageBuilder</code> object and define it as a singleton.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">object</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayout</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">HikageBuilder</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then, use it where needed, there are two options as follows.</p><p>The first solution is to create a <code>Hikage.Delegate</code> object directly using <code>build</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// myLayout is a Hikage.Delegate object.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MyLayout.</span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Assume that's your Context.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Instantiate the Hikage object where the Context is needed.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The second solution is to create the <code>Hikage</code> delegate object using <code>Context.lazyHikage</code>.</p><p>For example, we can use it like <code>ViewBinding</code> in <code>Activity</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyActivity</span><span style="color:#ADBAC7;">: </span><span style="color:#F69D50;">AppCompatActivity</span><span style="color:#ADBAC7;">() {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">private</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">lazyHikage</span><span style="color:#ADBAC7;">(MyLayout)</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState: </span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">?) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">super</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Get the root layout.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.root</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Content view set to Activity.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;">(root)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="basic-layout-components" tabindex="-1"><a class="header-anchor" href="#basic-layout-components" aria-hidden="true">#</a> Basic Layout Components</h3><p>Hikage uses a functional component creation scheme consistent with Jetpack Compose.</p><p>Its layout is done using two basic components, the <code>View</code> and <code>ViewGroup</code> functions. They correspond to Android native components based on <code>View</code> and <code>ViewGroup</code>, respectively.</p><h4 id="view" tabindex="-1"><a class="header-anchor" href="#view" aria-hidden="true">#</a> View</h4><p>The basic parameters of the <code>View</code> function are the following three, and the <code>View</code> object type created using generic definitions.</p><p>If the generic type is not declared, the default is to use <code>android.view.View</code> as the object type created.</p><table><thead><tr><th>Parameter Name</th><th>Description</th></tr></thead><tbody><tr><td><code>lparams</code></td><td>Layout parameter, i.e. <code>ViewGroup.LayoutParams</code>, created using <code>LayoutParams</code></td></tr><tr><td><code>id</code></td><td>Used to find the ID of the created object, defined using a string</td></tr><tr><td><code>init</code></td><td>The initialization method body of <code>View</code>, passed as the last DSL parameter</td></tr></tbody></table><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_text_view"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="viewgroup" tabindex="-1"><a class="header-anchor" href="#viewgroup" aria-hidden="true">#</a> ViewGroup</h4><p>The basic parameters of the <code>ViewGroup</code> function are four, and compared with the <code>View</code> function, there is one more <code>performer</code> parameter.</p><p>It must declare a generic type because <code>ViewGroup</code> is an abstract class and requires a concrete implementation class.</p><p><code>ViewGroup</code> provides an additional generic parameter based on <code>ViewGroup.LayoutParams</code> to provide layout parameters for sub-layouts.</p><p><code>ViewGroup.LayoutParams</code> is used by default when not declared.</p><table><thead><tr><th>Parameter Name</th><th>Description</th></tr></thead><tbody><tr><td><code>lparams</code></td><td>Layout parameter, i.e. <code>ViewGroup.LayoutParams</code>, created using <code>LayoutParams</code></td></tr><tr><td><code>id</code></td><td>Used to find the ID of the created object, defined using a string</td></tr><tr><td><code>init</code></td><td>The initialization method body of <code>ViewGroup</code>, passed in as DSL parameter</td></tr><tr><td><code>performer</code></td><td><code>Hikage.Performer</code> object, passed as the last DSL parameter</td></tr></tbody></table><p>The function of the <code>performer</code> parameter is to pass a new <code>Hikage.Performer</code> object downward as the creator of the sub-layout.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">ViewGroup</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">>(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_linear_layout"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Initialization method body will be reflected here using \`init\`.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can continue to create sub-layouts here.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="layoutparams" tabindex="-1"><a class="header-anchor" href="#layoutparams" aria-hidden="true">#</a> LayoutParams</h4><p>Layouts in Hikage can be set using the <code>LayoutParams</code> function, you can create it using the following parameters.</p><table><thead><tr><th>Parameter Name</th><th>Description</th></tr></thead><tbody><tr><td><code>width</code></td><td>Manually specify layout width</td></tr><tr><td><code>height</code></td><td>Manually specify layout height</td></tr><tr><td><code>matchParent</code></td><td>Whether to use <code>MATCH_PARENT</code> as layout width and height</td></tr><tr><td><code>wrapContent</code></td><td>Whether to use <code>WRAP_CONTENT</code> as layout width and height</td></tr><tr><td><code>widthMatchParent</code></td><td>Set width to <code>MATCH_PARENT</code> only</td></tr><tr><td><code>heightMatchParent</code></td><td>Set the height to <code>MATCH_PARENT</code> only</td></tr><tr><td><code>body</code></td><td>The initialization method body of the layout parameter, passed into as the last DSL parameter</td></tr></tbody></table><p>When you do not set the <code>LayoutParams</code> object or specify <code>width</code> and <code>height</code>, Hikage will automatically use <code>WRAP_CONTENT</code> as layout parameters.</p><p>The type of the <code>body</code> method body comes from the second generic parameter provided by the upper layer <a href="#viewgroup">ViewGroup</a>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Assume that the layout parameter type provided by the upper layer is LinearLayout.LayoutParams.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(width </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">100</span><span style="color:#ADBAC7;">.dp) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">20</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If you only need a horizontally filled layout, you can use <code>widthMatchParent = true</code> directly.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(widthMatchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="layout" tabindex="-1"><a class="header-anchor" href="#layout" aria-hidden="true">#</a> Layout</h4><p>Hikage supports references to third-party layouts, you can pass in XML layout resource IDs, other Hikage objects, and <code>View</code> objects, and even <code>ViewBinding</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">ViewGroup</span><span style="color:#ADBAC7;"><...> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Quote XML layout resource ID.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;">(R.layout.my_layout)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Quote ViewBinding.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyLayoutBinding</span><span style="color:#ADBAC7;">>()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Reference another Hikage or Hikage.Delegate object.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;">(myLayout)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="positioning-layout-components" tabindex="-1"><a class="header-anchor" href="#positioning-layout-components" aria-hidden="true">#</a> Positioning Layout Components</h3><p>Hikage supports locating components using <code>id</code>. In the example above, we used the <code>id</code> parameter to set the component's ID.</p><p>After setting the ID, you can use the <code>Hikage.get</code> method to get them.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Assume that's your Context.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Instantiate the Hikage object where the Context is needed.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> myLayout.</span><span style="color:#DCBDFB;">create</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Get the specified component and return the View type.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage[</span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Get the specified component and declare the component type.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage.</span><span style="color:#DCBDFB;">get</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#768390;">// If you are not sure whether the ID exists, you can use the \`getOrNull\` method.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> hikage.</span><span style="color:#DCBDFB;">getOrNull</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span><span style="color:#96D0FF;">"my_text_view"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="custom-layout-components" tabindex="-1"><a class="header-anchor" href="#custom-layout-components" aria-hidden="true">#</a> Custom Layout Components</h3><p>Hikage provides functions corresponding to component class names for Android basic layout components.</p>`,75),v=e(`<blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_linear_layout"</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"my_text_view"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>The initialized <code>View</code> or <code>ViewGroup</code> objects return instances of their own object type, which you can use in the following layout.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> textView </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#DCBDFB;">Button</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Click Me!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setOnClickListener</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Use the textView object directly.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textView.text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Clicked!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>If the provided components do not meet your needs, you can create your own components manually.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Suppose you have defined your custom components.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyCustomView</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">View</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#768390;">// Below, create the function corresponding to the component.</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Custom components must declare this annotation.</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Declaring the annotation of the component is contagious,</span></span>
|
||||
<span class="line"><span style="color:#768390;">// and this annotation is required in every scope used to build the layout.</span></span>
|
||||
<span class="line"><span style="color:#F69D50;">@Hikageable</span></span>
|
||||
<span class="line"><span style="color:#768390;">// The naming of functions can be done at will, but it is recommended to use a big camel name.</span></span>
|
||||
<span class="line"><span style="color:#768390;">// The signature part of the function needs to be fixedly</span></span>
|
||||
<span class="line"><span style="color:#768390;">// declared as \`inline fun <reified LP : ViewGroup.LayoutParams> Hikage.Performer<LP>\`.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">inline</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> <</span><span style="color:#F69D50;">reified</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">LP</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">ViewGroup</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">> </span><span style="color:#F69D50;">Hikage</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">Performer</span><span style="color:#F47067;"><</span><span style="color:#ADBAC7;">LP</span><span style="color:#F47067;">></span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">MyCustomView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams: </span><span style="color:#F69D50;">Hikage</span><span style="color:#ADBAC7;">.LayoutParams? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> id: </span><span style="color:#F69D50;">String</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init: </span><span style="color:#F69D50;">HikageView</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyCustomView</span><span style="color:#ADBAC7;">> </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {},</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// If this component is a container, you can declare a \`performer\` parameter.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// performer: HikagePerformer<LP> = {}</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">View</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyCustomView</span><span style="color:#ADBAC7;">>(lparams, id, init)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,8),m=e(`<h3 id="combination-and-disassembly-layout" tabindex="-1"><a class="header-anchor" href="#combination-and-disassembly-layout" aria-hidden="true">#</a> Combination and Disassembly Layout</h3><p>When building a UI, we usually use reusable layouts as components.</p><p>If you don't want each part to be customized separately using a native custom <code>View</code>, you can split the layout logic parts directly.</p><p>Hikage supports splitting layouts into multiple parts and combining them, you can use the <code>Hikageable</code> function anywhere to create a new <code>Hikage.Delegate</code> object.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume this is your main layout.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> mainLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Combination sublayout.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Layout</span><span style="color:#ADBAC7;">(subLayout)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Assume this is your layout submodule.</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Since the upper layout uses LinearLayout,</span></span>
|
||||
<span class="line"><span style="color:#768390;">// you can declare LinearLayout.LayoutParams for the sublayout.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> subLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">LinearLayout</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, Sub World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="state-management" tabindex="-1"><a class="header-anchor" href="#state-management" aria-hidden="true">#</a> State Management</h3><p>Hikage has a similar state management workaround to Jetpack Compose, which makes it easy to set up state listening for layout components.</p><p>Hikage provides two states, <code>NonNullState</code> and <code>NullableState</code>, which are divided into two states: holding non-null and nullable.</p><p>Unlike the recompose of Jetpack Compose, Hikage will not be recomposed, and the states takes effect through listening and callbacks.</p><p>You can use both states in the following scenarios.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> myLayout </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Declare a non-null variable state.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> mTextState </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mutableStateOf</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Declare a nullable and variable state.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> mDrawState </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mutableStateOfNull</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">Drawable</span><span style="color:#ADBAC7;">>()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can delegate the state to a variable.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">var</span><span style="color:#ADBAC7;"> mText </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> mTextState</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">var</span><span style="color:#ADBAC7;"> mDraw </span><span style="color:#F47067;">by</span><span style="color:#ADBAC7;"> mDrawState</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">),</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set (binding) state to text.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setState</span><span style="color:#ADBAC7;">(mTextState) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> it</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ImageView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Set (binding) state to Drawable.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setState</span><span style="color:#ADBAC7;">(mDrawState) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setImageDrawable</span><span style="color:#ADBAC7;">(it)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Button</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Click Me!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setOnClickListener</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Modify the value of non-null state.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> mText </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, Hikage!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Modify the value of the nullable state.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> mDraw </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">drawableResource</span><span style="color:#ADBAC7;">(R.drawable.ic_my_drawable)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>In the example above, we declare a non-null state <code>mTextState</code> with <code>"Hello, World!"</code> with <code>mutableStateOf</code> Then continue to declare a nullable state <code>mDrawState</code> with <code>null</code> using <code>mutableStateOfNull</code>.</p><p>When clicking the button, we modify the value of <code>mTextState</code> to <code>"Hello, Hikage!"</code> and the value of <code>mDrawState</code> is the property resource <code>R.drawable.ic_my_drawable</code>. At this time, the text and images of <code>TextView</code> and <code>ImageView</code> will be automatically updated.</p><h3 id="custom-layout-factory" tabindex="-1"><a class="header-anchor" href="#custom-layout-factory" aria-hidden="true">#</a> Custom Layout Factory</h3><p>Hikage supports custom layout factories and is compatible with <code>LayoutInflater.Factory2</code>. You can customize events and listening during the Hikage layout inflating process in the following ways.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> factory </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">HikageFactory</span><span style="color:#ADBAC7;"> { parent, base, context, params </span><span style="color:#F47067;">-></span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can customize the behavior of the layout factory here.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// For example, create a new View object in your own way.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// \`parent\` is the ViewGroup object to which the current component is to be added,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// and if not, it is \`null\`.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// \`base\` is the View object created for the previous HikageFactory, if not, it is \`null\`.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// \`params\` object contains the component ID, AttributeSet and Class objects of View.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> view </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> MyLayoutFactory.</span><span style="color:#DCBDFB;">createView</span><span style="color:#ADBAC7;">(context, params)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// You can also initialize and set the created View object here.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> view.</span><span style="color:#DCBDFB;">setBackgroundColor</span><span style="color:#ADBAC7;">(Color.RED)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Return the created View object.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Return \`null\` will use the default component inflating method.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> view</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>You can also pass in the <code>LayoutInflater</code> object directly to automatically inflate and use the <code>LayoutInflater.Factory2</code> in it.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume that this is your LayoutInflater object.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> layoutInflater: </span><span style="color:#F69D50;">LayoutInflater</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Create HikageFactory object through LayoutInflater.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> factory </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">HikageFactory</span><span style="color:#ADBAC7;">(layoutInflater)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then set it to the Hikage layout you need to inflate.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume that's your Context.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Create Hikage object.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> hikage </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> context </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> context,</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> factory </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Add a custom HikageFactory object.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">add</span><span style="color:#ADBAC7;">(factory)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Add directly.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">add</span><span style="color:#ADBAC7;"> { parent, base, context, params </span><span style="color:#F47067;">-></span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// ...</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// Add multiple consecutively.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">addAll</span><span style="color:#ADBAC7;">(factories)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container tip"><p class="custom-container-title">Tips</p><p>Hikage will inflate the layout according to the <code>LayoutInflater.Factory2</code> of the <code>Context</code> object, if you are using <code>AppCompatActivity</code>, Components in the layout will be automatically replaced with the corresponding Compat component or Material component, which is consistent with the characteristics of the XML layout.</p><p>If you do not need this feature to be effective by default, you can turn it off globally using the following method.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">Hikage.isAutoProcessWithFactory2 </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">false</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div></div><h3 id="preview-layout" tabindex="-1"><a class="header-anchor" href="#preview-layout" aria-hidden="true">#</a> Preview Layout</h3><p>Hikage supports previewing layouts in Android Studio.</p><p>With the help of the custom <code>View</code> preview plugin that comes with Android Studio, you can preview the layout using the following methods.</p><p>You just need to define a custom <code>View</code> for the preview layout and inherit from <code>HikagePreview</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MyLayoutPreview</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">?) : </span><span style="color:#F69D50;">HikagePreview</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">build</span><span style="color:#ADBAC7;">() </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Then the preview pane should appear on the right side of your current window. After opening, click "Build & Refresh". The preview will be automatically displayed after the compilation is completed.</p><div class="custom-container tip"><p class="custom-container-title">Tips</p><p><code>HikagePreview</code> implements the <code>HikageBuilder</code> interface, you can return any Hikage layout in the <code>build</code> method for preview.</p></div><div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p><code>HikagePreview</code> supports previewing layouts in Android Studio only, do not use it at runtime or add it to any XML layout.</p></div>`,35);function D(b,B){const t=p("ExternalLinkIcon"),l=p("RouterLink");return c(),r("div",null,[y,a("p",null,[s("You can view the KDoc "),a("a",u,[s("click here"),n(t)]),s(".")]),A,a("p",null,[s("You can directly use these functions to create components without using generics to declare them. If you need components provided by Jetpack or Material, the "),n(l,{to:"/en/library/hikage-widget-androidx.html"},{default:o(()=>[s("hikage-widget-androidx")]),_:1}),s(" or "),n(l,{to:"/en/library/hikage-widget-material.html"},{default:o(()=>[s("hikage-widget-material")]),_:1}),s(" modules can be introduced.")]),v,a("p",null,[s("It would seem tedious to implement such complex functions manually every time. If you want to be able to automatically generate component functions, you can introduce and refer to the "),n(l,{to:"/en/library/hikage-compiler.html"},{default:o(()=>[s("hikage-compiler")]),_:1}),s(" module.")]),m])}const h=i(d,[["render",D],["__file","hikage-core.html.vue"]]);export{h as default};
|
1
assets/hikage-core.html-6tGPbRmk.js
Normal file
1
assets/hikage-core.html-6tGPbRmk.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-12b2c63a","path":"/en/library/hikage-core.html","title":"hikage-core","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Configure Dependency","slug":"configure-dependency","link":"#configure-dependency","children":[{"level":3,"title":"SweetDependency (Recommended)","slug":"sweetdependency-recommended","link":"#sweetdependency-recommended","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"Traditional Method","slug":"traditional-method","link":"#traditional-method","children":[]}]},{"level":2,"title":"Function Introduction","slug":"function-introduction","link":"#function-introduction","children":[{"level":3,"title":"Basic Usage","slug":"basic-usage","link":"#basic-usage","children":[]},{"level":3,"title":"Layout Agreement","slug":"layout-agreement","link":"#layout-agreement","children":[]},{"level":3,"title":"Basic Layout Components","slug":"basic-layout-components","link":"#basic-layout-components","children":[]},{"level":3,"title":"Positioning Layout Components","slug":"positioning-layout-components","link":"#positioning-layout-components","children":[]},{"level":3,"title":"Custom Layout Components","slug":"custom-layout-components","link":"#custom-layout-components","children":[]},{"level":3,"title":"Combination and Disassembly Layout","slug":"combination-and-disassembly-layout","link":"#combination-and-disassembly-layout","children":[]},{"level":3,"title":"State Management","slug":"state-management","link":"#state-management","children":[]},{"level":3,"title":"Custom Layout Factory","slug":"custom-layout-factory","link":"#custom-layout-factory","children":[]},{"level":3,"title":"Preview Layout","slug":"preview-layout","link":"#preview-layout","children":[]}]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":6}]},"filePathRelative":"en/library/hikage-core.md"}');export{e as data};
|
1
assets/hikage-core.html-gVi6UZx8.js
Normal file
1
assets/hikage-core.html-gVi6UZx8.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-7a05a514","path":"/zh-cn/library/hikage-core.html","title":"hikage-core","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"配置依赖","slug":"配置依赖","link":"#配置依赖","children":[{"level":3,"title":"SweetDependency (推荐)","slug":"sweetdependency-推荐","link":"#sweetdependency-推荐","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"传统方式","slug":"传统方式","link":"#传统方式","children":[]}]},{"level":2,"title":"功能介绍","slug":"功能介绍","link":"#功能介绍","children":[{"level":3,"title":"基本用法","slug":"基本用法","link":"#基本用法","children":[]},{"level":3,"title":"布局约定","slug":"布局约定","link":"#布局约定","children":[]},{"level":3,"title":"基本布局组件","slug":"基本布局组件","link":"#基本布局组件","children":[]},{"level":3,"title":"定位布局组件","slug":"定位布局组件","link":"#定位布局组件","children":[]},{"level":3,"title":"自定义布局组件","slug":"自定义布局组件","link":"#自定义布局组件","children":[]},{"level":3,"title":"组合与拆分布局","slug":"组合与拆分布局","link":"#组合与拆分布局","children":[]},{"level":3,"title":"状态管理","slug":"状态管理","link":"#状态管理","children":[]},{"level":3,"title":"自定义布局装载器","slug":"自定义布局装载器","link":"#自定义布局装载器","children":[]},{"level":3,"title":"预览布局","slug":"预览布局","link":"#预览布局","children":[]}]}],"git":{"updatedTime":1750751435000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"zh-cn/library/hikage-core.md"}');export{e as data};
|
1
assets/hikage-extension-betterandroid.html--TiJmBKm.js
Normal file
1
assets/hikage-extension-betterandroid.html--TiJmBKm.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-74fb59c2","path":"/en/library/hikage-extension-betterandroid.html","title":"hikage-extension-betterandroid","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Configure Dependency","slug":"configure-dependency","link":"#configure-dependency","children":[{"level":3,"title":"SweetDependency (Recommended)","slug":"sweetdependency-recommended","link":"#sweetdependency-recommended","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"Traditional Method","slug":"traditional-method","link":"#traditional-method","children":[]}]},{"level":2,"title":"Function Introduction","slug":"function-introduction","link":"#function-introduction","children":[{"level":3,"title":"Adapter Extension","slug":"adapter-extension","link":"#adapter-extension","children":[]}]}],"git":{"updatedTime":1755975000000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"en/library/hikage-extension-betterandroid.md"}');export{e as data};
|
29
assets/hikage-extension-betterandroid.html-07ZHN76T.js
Normal file
29
assets/hikage-extension-betterandroid.html-07ZHN76T.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import{_ as o,r as i,o as t,c as r,b as s,d as e,a as n,e as l}from"./app-ZnF1aHNS.js";const p={},d=l('<h1 id="hikage-extension-betterandroid" tabindex="-1"><a class="header-anchor" href="#hikage-extension-betterandroid" aria-hidden="true">#</a> hikage-extension-betterandroid</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-extension-betterandroid?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-extension-betterandroid%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p>',2),c={href:"https://github.com/BetterAndroid/BetterAndroid",target:"_blank",rel:"noopener noreferrer"},h=l(`<h2 id="配置依赖" tabindex="-1"><a class="header-anchor" href="#配置依赖" aria-hidden="true">#</a> 配置依赖</h2><p>你可以使用如下方式将此模块添加到你的项目中。</p><h3 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h3><p>在你的项目 <code>SweetDependency</code> 配置文件中添加依赖。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-extension-betterandroid</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.extension.betterandroid)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>在你的项目 <code>gradle/libs.versions.toml</code> 中添加依赖。</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-betterandroid = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-betterandroid = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-betterandroid"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-extension-betterandroid"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.extension.betterandroid)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h3 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h3><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-betterandroid:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h2 id="功能介绍" tabindex="-1"><a class="header-anchor" href="#功能介绍" aria-hidden="true">#</a> 功能介绍</h2>`,18),y={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-extension-betterandroid",target:"_blank",rel:"noopener noreferrer"},m=s("h3",{id:"适配器-adapter-扩展",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#适配器-adapter-扩展","aria-hidden":"true"},"#"),e(" 适配器 (Adapter) 扩展")],-1),A={href:"https://betterandroid.github.io/BetterAndroid/zh-cn/library/ui-component-adapter",target:"_blank",rel:"noopener noreferrer"},b=l(`<p>它使用了 BetterAndroid 提供的 <code>ViewHolderDelegate</code> 来创建扩展方法。</p><p>下面提供了一个基于 <code>RecyclerView</code> 的简单示例。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这就是你需要绑定的数据集</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> listData </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ArrayList</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyEntity</span><span style="color:#ADBAC7;">>()</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 创建并绑定到自定义的 RecyclerView.Adapter</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> adapter </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> recyclerView.</span><span style="color:#DCBDFB;">bindAdapter</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyEntity</span><span style="color:#ADBAC7;">> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onBindData</span><span style="color:#ADBAC7;"> { listData }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onBindItemView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> Hikageable </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) { hikage, entity, position </span><span style="color:#F47067;">-></span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> hikage.</span><span style="color:#DCBDFB;">get</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">).text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> entity.name</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,4);function u(v,g){const a=i("ExternalLinkIcon");return t(),r("div",null,[d,s("p",null,[e("这是 Hikage 针对 "),s("a",c,[e("BetterAndroid"),n(a)]),e(" UI 组件相关功能的扩展依赖。")]),h,s("p",null,[e("你可以 "),s("a",y,[e("点击这里"),n(a)]),e(" 查看 KDoc。")]),m,s("p",null,[e("Hikage 为 BetterAndroid 提供的 "),s("a",A,[e("适配器"),n(a)]),e(" 提供了布局扩展功能,你可以直接在适配器的原始扩展方法上使用 Hikage 布局。")]),b])}const B=o(p,[["render",u],["__file","hikage-extension-betterandroid.html.vue"]]);export{B as default};
|
1
assets/hikage-extension-betterandroid.html-EgKZos03.js
Normal file
1
assets/hikage-extension-betterandroid.html-EgKZos03.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-5470534e","path":"/zh-cn/library/hikage-extension-betterandroid.html","title":"hikage-extension-betterandroid","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"配置依赖","slug":"配置依赖","link":"#配置依赖","children":[{"level":3,"title":"SweetDependency (推荐)","slug":"sweetdependency-推荐","link":"#sweetdependency-推荐","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"传统方式","slug":"传统方式","link":"#传统方式","children":[]}]},{"level":2,"title":"功能介绍","slug":"功能介绍","link":"#功能介绍","children":[{"level":3,"title":"适配器 (Adapter) 扩展","slug":"适配器-adapter-扩展","link":"#适配器-adapter-扩展","children":[]}]}],"git":{"updatedTime":1755975000000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"zh-cn/library/hikage-extension-betterandroid.md"}');export{e as data};
|
29
assets/hikage-extension-betterandroid.html-TeEkbGrP.js
Normal file
29
assets/hikage-extension-betterandroid.html-TeEkbGrP.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import{_ as l,r as t,o as i,c as r,b as n,d as e,a,e as o}from"./app-ZnF1aHNS.js";const p={},d=o('<h1 id="hikage-extension-betterandroid" tabindex="-1"><a class="header-anchor" href="#hikage-extension-betterandroid" aria-hidden="true">#</a> hikage-extension-betterandroid</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-extension-betterandroid?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-extension-betterandroid%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-release&style=flat-squares" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p>',2),c={href:"https://github.com/BetterAndroid/BetterAndroid",target:"_blank",rel:"noopener noreferrer"},h=o(`<h2 id="configure-dependency" tabindex="-1"><a class="header-anchor" href="#configure-dependency" aria-hidden="true">#</a> Configure Dependency</h2><p>You can add this module to your project using the following method.</p><h3 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h3><p>Add dependency in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-extension-betterandroid</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.extension.betterandroid)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-betterandroid = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-betterandroid = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-betterandroid"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-extension-betterandroid"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.extension.betterandroid)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h3 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h3><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-betterandroid:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h2 id="function-introduction" tabindex="-1"><a class="header-anchor" href="#function-introduction" aria-hidden="true">#</a> Function Introduction</h2>`,18),u={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-extension-betterandroid",target:"_blank",rel:"noopener noreferrer"},y=n("h3",{id:"adapter-extension",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#adapter-extension","aria-hidden":"true"},"#"),e(" Adapter Extension")],-1),m={href:"https://betterandroid.github.io/BetterAndroid/en/library/ui-component-adapter",target:"_blank",rel:"noopener noreferrer"},A=o(`<p>It uses the <code>ViewHolderDelegate</code> provided by BetterAndroid to create extension methods.</p><p>Here is a simple example based on <code>RecyclerView</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume this is the dataset you need to bind to.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> listData </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ArrayList</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyEntity</span><span style="color:#ADBAC7;">>()</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Create and bind to a custom RecyclerView.Adapter.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> adapter </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> recyclerView.</span><span style="color:#DCBDFB;">bindAdapter</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">MyEntity</span><span style="color:#ADBAC7;">> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onBindData</span><span style="color:#ADBAC7;"> { listData }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onBindItemView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> Hikageable </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(id </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) { hikage, entity, position </span><span style="color:#F47067;">-></span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> hikage.</span><span style="color:#DCBDFB;">get</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">TextView</span><span style="color:#ADBAC7;">>(</span><span style="color:#96D0FF;">"text_view"</span><span style="color:#ADBAC7;">).text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> entity.name</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,4);function b(g,v){const s=t("ExternalLinkIcon");return i(),r("div",null,[d,n("p",null,[e("This is a Hikage extension dependency for "),n("a",c,[e("BetterAndroid"),a(s)]),e(" UI component-related features.")]),h,n("p",null,[e("You can view the KDoc "),n("a",u,[e("click here"),a(s)]),e(".")]),y,n("p",null,[e("Hikage provides layout extension function for BetterAndroid's "),n("a",m,[e("Adapter"),a(s)]),e(", you can use the Hikage layout directly on the original extension method of the adapter.")]),A])}const B=l(p,[["render",b],["__file","hikage-extension-betterandroid.html.vue"]]);export{B as default};
|
32
assets/hikage-extension-compose.html-2czu0HQ5.js
Normal file
32
assets/hikage-extension-compose.html-2czu0HQ5.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import{_ as o,r as i,o as p,c,b as e,d as s,a as l,e as a}from"./app-ZnF1aHNS.js";const t={},r=a('<h1 id="hikage-extension-compose" tabindex="-1"><a class="header-anchor" href="#hikage-extension-compose" aria-hidden="true">#</a> hikage-extension-compose</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-extension-compose?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-extension-compose%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>这是 Hikage 针对 Jetpack Compose 组件相关功能的扩展依赖。</p><h2 id="配置依赖" tabindex="-1"><a class="header-anchor" href="#配置依赖" aria-hidden="true">#</a> 配置依赖</h2><p>你可以使用如下方式将此模块添加到你的项目中。</p>',5),d={class:"custom-container warning"},m=e("p",{class:"custom-container-title"},"注意",-1),h={href:"https://developer.android.com/develop/ui/compose/compiler",target:"_blank",rel:"noopener noreferrer"},u=a(`<h3 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h3><p>在你的项目 <code>SweetDependency</code> 配置文件中添加依赖。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-extension-compose</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.extension.compose)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>在你的项目 <code>gradle/libs.versions.toml</code> 中添加依赖。</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-compose = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-compose = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-compose"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-extension-compose"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.extension.compose)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h3 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h3><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-compose:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h2 id="功能介绍" tabindex="-1"><a class="header-anchor" href="#功能介绍" aria-hidden="true">#</a> 功能介绍</h2>`,16),v={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-extension-compose",target:"_blank",rel:"noopener noreferrer"},y=a(`<h3 id="在-hikage-中使用-jetpack-compose" tabindex="-1"><a class="header-anchor" href="#在-hikage-中使用-jetpack-compose" aria-hidden="true">#</a> 在 Hikage 中使用 Jetpack Compose</h3><p>你可以使用以下方式在一个 Hikage 布局中嵌入 Jetpack Compose 组件。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ComposeView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Text</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="在-jetpack-compose-中使用-hikage" tabindex="-1"><a class="header-anchor" href="#在-jetpack-compose-中使用-hikage" aria-hidden="true">#</a> 在 Jetpack Compose 中使用 Hikage</h3><p>你可以使用以下方式在一个 Jetpack Compose 布局中嵌入 Hikage 组件。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Column</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> modifier </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Modifier.</span><span style="color:#DCBDFB;">fillMaxSize</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">HikageView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">20f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,8);function A(g,b){const n=i("ExternalLinkIcon");return p(),c("div",null,[r,e("div",d,[m,e("p",null,[s("此模块依赖于 Jetpack Compose 编译插件,请确保你的项目中已经集成了 Jetpack Compose 相关依赖,详情请参考 "),e("a",h,[s("这里"),l(n)]),s("。")])]),u,e("p",null,[s("你可以 "),e("a",v,[s("点击这里"),l(n)]),s(" 查看 KDoc。")]),y])}const C=o(t,[["render",A],["__file","hikage-extension-compose.html.vue"]]);export{C as default};
|
1
assets/hikage-extension-compose.html-K6jgaZLv.js
Normal file
1
assets/hikage-extension-compose.html-K6jgaZLv.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-797f7fac","path":"/en/library/hikage-extension-compose.html","title":"hikage-extension-compose","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Configure Dependency","slug":"configure-dependency","link":"#configure-dependency","children":[{"level":3,"title":"SweetDependency (Recommended)","slug":"sweetdependency-recommended","link":"#sweetdependency-recommended","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"Traditional Method","slug":"traditional-method","link":"#traditional-method","children":[]}]},{"level":2,"title":"Function Introduction","slug":"function-introduction","link":"#function-introduction","children":[{"level":3,"title":"Use Jetpack Compose in Hikage","slug":"use-jetpack-compose-in-hikage","link":"#use-jetpack-compose-in-hikage","children":[]},{"level":3,"title":"Use Hikage in Jetpack Compose","slug":"use-hikage-in-jetpack-compose","link":"#use-hikage-in-jetpack-compose","children":[]}]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/library/hikage-extension-compose.md"}');export{e as data};
|
1
assets/hikage-extension-compose.html-RxxykmCH.js
Normal file
1
assets/hikage-extension-compose.html-RxxykmCH.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-5b7de1ca","path":"/zh-cn/library/hikage-extension-compose.html","title":"hikage-extension-compose","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"配置依赖","slug":"配置依赖","link":"#配置依赖","children":[{"level":3,"title":"SweetDependency (推荐)","slug":"sweetdependency-推荐","link":"#sweetdependency-推荐","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"传统方式","slug":"传统方式","link":"#传统方式","children":[]}]},{"level":2,"title":"功能介绍","slug":"功能介绍","link":"#功能介绍","children":[{"level":3,"title":"在 Hikage 中使用 Jetpack Compose","slug":"在-hikage-中使用-jetpack-compose","link":"#在-hikage-中使用-jetpack-compose","children":[]},{"level":3,"title":"在 Jetpack Compose 中使用 Hikage","slug":"在-jetpack-compose-中使用-hikage","link":"#在-jetpack-compose-中使用-hikage","children":[]}]}],"git":{"updatedTime":1750751435000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":3}]},"filePathRelative":"zh-cn/library/hikage-extension-compose.md"}');export{e as data};
|
32
assets/hikage-extension-compose.html-y9fgAlkJ.js
Normal file
32
assets/hikage-extension-compose.html-y9fgAlkJ.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import{_ as l,r as i,o as p,c as t,b as s,d as e,a as o,e as a}from"./app-ZnF1aHNS.js";const c={},r=a('<h1 id="hikage-extension-compose" tabindex="-1"><a class="header-anchor" href="#hikage-extension-compose" aria-hidden="true">#</a> hikage-extension-compose</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-extension-compose?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-extension-compose%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>This is a Hikage extension dependency for Jetpack Compose component-related features.</p><h2 id="configure-dependency" tabindex="-1"><a class="header-anchor" href="#configure-dependency" aria-hidden="true">#</a> Configure Dependency</h2><p>You can add this module to your project using the following method.</p>',5),d={class:"custom-container warning"},m=s("p",{class:"custom-container-title"},"Notice",-1),h={href:"https://developer.android.com/develop/ui/compose/compiler",target:"_blank",rel:"noopener noreferrer"},u=a(`<h3 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h3><p>Add dependency in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-extension-compose</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.extension.compose)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-compose = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension-compose = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-compose"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-extension-compose"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.extension.compose)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h3 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h3><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension-compose:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h2 id="function-introduction" tabindex="-1"><a class="header-anchor" href="#function-introduction" aria-hidden="true">#</a> Function Introduction</h2>`,16),y={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-extension-compose",target:"_blank",rel:"noopener noreferrer"},g=a(`<h3 id="use-jetpack-compose-in-hikage" tabindex="-1"><a class="header-anchor" href="#use-jetpack-compose-in-hikage" aria-hidden="true">#</a> Use Jetpack Compose in Hikage</h3><p>You can use the following methods to embed Jetpack Compose components in a Hikage layout.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Hikageable</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">ComposeView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">Text</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="use-hikage-in-jetpack-compose" tabindex="-1"><a class="header-anchor" href="#use-hikage-in-jetpack-compose" aria-hidden="true">#</a> Use Hikage in Jetpack Compose</h3><p>You can use the following methods to embed Hikage components in a Jetpack Compose layout.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">Column</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> modifier </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Modifier.</span><span style="color:#DCBDFB;">fillMaxSize</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">HikageView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">20f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,8);function v(A,b){const n=i("ExternalLinkIcon");return p(),t("div",null,[r,s("div",d,[m,s("p",null,[e("This module relies on the Jetpack Compose compiler plugin. Please make sure that your project has integrated Jetpack Compose-related dependencies. Please refer to "),s("a",h,[e("here"),o(n)]),e(" for details.")])]),u,s("p",null,[e("You can view the KDoc "),s("a",y,[e("click here"),o(n)]),e(".")]),g])}const C=l(c,[["render",v],["__file","hikage-extension-compose.html.vue"]]);export{C as default};
|
113
assets/hikage-extension.html-O69pNHSL.js
Normal file
113
assets/hikage-extension.html-O69pNHSL.js
Normal file
@@ -0,0 +1,113 @@
|
||||
import{_ as e,r as o,o as p,c as i,b as n,d as s,a as c,e as a}from"./app-ZnF1aHNS.js";const t={},r=a(`<h1 id="hikage-extension" tabindex="-1"><a class="header-anchor" href="#hikage-extension" aria-hidden="true">#</a> hikage-extension</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-extension?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-extension%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>这是 Hikage 针对 UI 组件相关功能的扩展依赖。</p><h2 id="配置依赖" tabindex="-1"><a class="header-anchor" href="#配置依赖" aria-hidden="true">#</a> 配置依赖</h2><p>你可以使用如下方式将此模块添加到你的项目中。</p><h3 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h3><p>在你的项目 <code>SweetDependency</code> 配置文件中添加依赖。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-extension</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.extension)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>在你的项目 <code>gradle/libs.versions.toml</code> 中添加依赖。</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-extension"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.extension)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h3 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h3><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h2 id="功能介绍" tabindex="-1"><a class="header-anchor" href="#功能介绍" aria-hidden="true">#</a> 功能介绍</h2>`,21),d={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-extension",target:"_blank",rel:"noopener noreferrer"},A=a(`<h3 id="activity" tabindex="-1"><a class="header-anchor" href="#activity" aria-hidden="true">#</a> Activity</h3><p>Hikage 为 <code>Activity</code> 提供了更好用的扩展,在 <code>Activity</code> 中创建 Hikage 将会变得更加简单。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MainActivity</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">AppCompatActivity</span><span style="color:#ADBAC7;">() {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState: </span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">?) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">super</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>借助 <code>Hikage</code> 的 <code>setContentView</code> 扩展方法,你可以像 Jetpack Compose 一样使用 <code>setContent</code> 方法来设置布局。</p><h3 id="window" tabindex="-1"><a class="header-anchor" href="#window" aria-hidden="true">#</a> Window</h3><p>在 <code>Window</code> 中使用 Hikage 创建布局与 <a href="#activity">Activity</a> 保持一致,你只需要使用 <code>setContentView</code> 方法传入一个 <code>Hikage</code> 布局即可。</p><h3 id="dialog" tabindex="-1"><a class="header-anchor" href="#dialog" aria-hidden="true">#</a> Dialog</h3><p>如果你想直接在 <code>AlertDialog</code> 中使用 Hikage 创建布局,现在你可以使用以下方案更加简单地进行。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这就是你的 Context</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 创建对话框并显示</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">AlertDialog.</span><span style="color:#DCBDFB;">Builder</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> .</span><span style="color:#DCBDFB;">setTitle</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> .</span><span style="color:#DCBDFB;">setView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> .</span><span style="color:#DCBDFB;">show</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在 <code>AlertDialog</code> 中使用 Hikage 创建布局,你只需要使用 <code>setView</code> 方法传入一个 <code>Hikage</code> 布局即可。</p><p>如果你是继承于 <code>Dialog</code> 进行自定义,那么你可以和像在 <a href="#activity">Activity</a> 一样使用 <code>setContentView</code> 方法。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">CustomDialog</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">Dialog</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState: </span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">?) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">super</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="popupwindow" tabindex="-1"><a class="header-anchor" href="#popupwindow" aria-hidden="true">#</a> PopupWindow</h3><p>你可以继承于 <code>PopupWindow</code> 进行自定义,然后使用 Hikage 创建布局,你可以和像在 <a href="#activity">Activity</a> 一样使用 <code>setContentView</code> 方法。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">CustomPopupWindow</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">PopupWindow</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">init</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;">(context) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container danger"><p class="custom-container-title">特别注意</p><p>创建 Hikage 布局的 <code>PopupWindow</code> 需要使用 <code>Context</code> 构造方法进行初始化,如果当前无法立即获取到 <code>Context</code>,请对 <code>setContentView</code> 方法传入 <code>Context</code> 实例。</p></div><h3 id="viewgroup" tabindex="-1"><a class="header-anchor" href="#viewgroup" aria-hidden="true">#</a> ViewGroup</h3><p>Hikage 对 <code>ViewGroup</code> 的 <code>addView</code> 方法进行了扩展,你可以直接使用 Hikage 布局来为当前 <code>ViewGroup</code> 快速添加新的布局。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// 假设这就是你的 ViewGroup</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root: </span><span style="color:#F69D50;">FrameLayout</span></span>
|
||||
<span class="line"><span style="color:#768390;">// 添加 Hikage 布局</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">root.</span><span style="color:#DCBDFB;">addView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>或者,在自定义 <code>View</code> 中使用。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">CustomView</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">FrameLayout</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">init</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">addView</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">FrameLayout</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,27);function y(v,D){const l=o("ExternalLinkIcon");return p(),i("div",null,[r,n("p",null,[s("你可以 "),n("a",d,[s("点击这里"),c(l)]),s(" 查看 KDoc。")]),A])}const B=e(t,[["render",y],["__file","hikage-extension.html.vue"]]);export{B as default};
|
113
assets/hikage-extension.html-Wa92SmBq.js
Normal file
113
assets/hikage-extension.html-Wa92SmBq.js
Normal file
@@ -0,0 +1,113 @@
|
||||
import{_ as l,r as o,o as p,c as i,b as n,d as s,a as t,e as a}from"./app-ZnF1aHNS.js";const c={},r=a(`<h1 id="hikage-extension" tabindex="-1"><a class="header-anchor" href="#hikage-extension" aria-hidden="true">#</a> hikage-extension</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-extension?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-extension%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>This is a Hikage extension dependency for UI component-related features.</p><h2 id="configure-dependency" tabindex="-1"><a class="header-anchor" href="#configure-dependency" aria-hidden="true">#</a> Configure Dependency</h2><p>You can add this module to your project using the following method.</p><h3 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h3><p>Add dependency in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-extension</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.extension)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-extension = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-extension"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.extension)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h3 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h3><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-extension:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h2 id="function-introduction" tabindex="-1"><a class="header-anchor" href="#function-introduction" aria-hidden="true">#</a> Function Introduction</h2>`,21),d={href:"https://betterandroid.github.io/Hikage/KDoc/hikage-extension",target:"_blank",rel:"noopener noreferrer"},y=a(`<h3 id="activity" tabindex="-1"><a class="header-anchor" href="#activity" aria-hidden="true">#</a> Activity</h3><p>Hikage provides better extensions for <code>Activity</code>, and creating a Hikage in <code>Activity</code> will be easier.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">MainActivity</span><span style="color:#ADBAC7;"> : </span><span style="color:#F69D50;">AppCompatActivity</span><span style="color:#ADBAC7;">() {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState: </span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">?) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">super</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>With the <code>setContentView</code> extension method of <code>Hikage</code>, you can set the layout using the <code>setContent</code> method like Jetpack Compose.</p><h3 id="window" tabindex="-1"><a class="header-anchor" href="#window" aria-hidden="true">#</a> Window</h3><p>Using Hikage to create a layout in Window is consistent with <a href="#activity">Activity</a>, you just need to use the <code>setContentView</code> method to pass in a <code>Hikage</code> layout.</p><h3 id="dialog" tabindex="-1"><a class="header-anchor" href="#dialog" aria-hidden="true">#</a> Dialog</h3><p>If you want to create a layout using Hikage directly in <code>AlertDialog</code>, you can now do it more simply using the following scheme.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume this is your Context.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> context: </span><span style="color:#F69D50;">Context</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Create a dialog box and display it.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">AlertDialog.</span><span style="color:#DCBDFB;">Builder</span><span style="color:#ADBAC7;">(context)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> .</span><span style="color:#DCBDFB;">setTitle</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"Hello, World!"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> .</span><span style="color:#DCBDFB;">setView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> .</span><span style="color:#DCBDFB;">show</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>To create a layout using Hikage in <code>AlertDialog</code>, you just need to use the <code>setView</code> method to pass in a <code>Hikage</code> layout.</p><p>If you inherited from <code>Dialog</code> for customization, you can use the <code>setContentView</code> method as in <a href="#activity">Activity</a>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">CustomDialog</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">Dialog</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">override</span><span style="color:#ADBAC7;"> </span><span style="color:#F47067;">fun</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState: </span><span style="color:#F69D50;">Bundle</span><span style="color:#ADBAC7;">?) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">super</span><span style="color:#ADBAC7;">.</span><span style="color:#DCBDFB;">onCreate</span><span style="color:#ADBAC7;">(savedInstanceState)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="popupwindow" tabindex="-1"><a class="header-anchor" href="#popupwindow" aria-hidden="true">#</a> PopupWindow</h3><p>You can inherit from <code>PopupWindow</code> for customization and then use Hikage to create the layout, and you can use the <code>setContentView</code> method like in <a href="#activity">Activity</a>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">CustomPopupWindow</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">PopupWindow</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">init</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">setContentView</span><span style="color:#ADBAC7;">(context) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><div class="custom-container danger"><p class="custom-container-title">Pay Attention</p><p>To create a <code>PopupWindow</code> for Hikage layout, you need to use the <code>Context</code> constructor method to initialize it. If the <code>Context</code> cannot be obtained immediately, please pass the <code>Context</code> instance to the <code>setContentView</code> method.</p></div><h3 id="viewgroup" tabindex="-1"><a class="header-anchor" href="#viewgroup" aria-hidden="true">#</a> ViewGroup</h3><p>Hikage extends the <code>addView</code> method of <code>ViewGroup</code>, and you can use the Hikage layout directly to quickly add new layouts to the current <code>ViewGroup</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#768390;">// Assume this is your ViewGroup.</span></span>
|
||||
<span class="line"><span style="color:#F47067;">val</span><span style="color:#ADBAC7;"> root: </span><span style="color:#F69D50;">FrameLayout</span></span>
|
||||
<span class="line"><span style="color:#768390;">// Add Hikage layout.</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">root.</span><span style="color:#DCBDFB;">addView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Or, use in a custom <code>View</code>.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#F47067;">class</span><span style="color:#ADBAC7;"> </span><span style="color:#F69D50;">CustomView</span><span style="color:#ADBAC7;">(context: </span><span style="color:#F69D50;">Context</span><span style="color:#ADBAC7;">, attrs: </span><span style="color:#F69D50;">AttributeSet</span><span style="color:#ADBAC7;">? </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">null</span><span style="color:#ADBAC7;">) : </span><span style="color:#F69D50;">FrameLayout</span><span style="color:#ADBAC7;">(</span><span style="color:#F69D50;">context</span><span style="color:#ADBAC7;">, </span><span style="color:#F69D50;">attrs</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">init</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">addView</span><span style="color:#ADBAC7;"><</span><span style="color:#F69D50;">FrameLayout</span><span style="color:#ADBAC7;">.</span><span style="color:#F69D50;">LayoutParams</span><span style="color:#ADBAC7;">> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,27);function A(u,v){const e=o("ExternalLinkIcon");return p(),i("div",null,[r,n("p",null,[s("You can view the KDoc "),n("a",d,[s("click here"),t(e)]),s(".")]),y])}const C=l(c,[["render",A],["__file","hikage-extension.html.vue"]]);export{C as default};
|
1
assets/hikage-extension.html-cbepB2QD.js
Normal file
1
assets/hikage-extension.html-cbepB2QD.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-532407c0","path":"/zh-cn/library/hikage-extension.html","title":"hikage-extension","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"配置依赖","slug":"配置依赖","link":"#配置依赖","children":[{"level":3,"title":"SweetDependency (推荐)","slug":"sweetdependency-推荐","link":"#sweetdependency-推荐","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"传统方式","slug":"传统方式","link":"#传统方式","children":[]}]},{"level":2,"title":"功能介绍","slug":"功能介绍","link":"#功能介绍","children":[{"level":3,"title":"Activity","slug":"activity","link":"#activity","children":[]},{"level":3,"title":"Window","slug":"window","link":"#window","children":[]},{"level":3,"title":"Dialog","slug":"dialog","link":"#dialog","children":[]},{"level":3,"title":"PopupWindow","slug":"popupwindow","link":"#popupwindow","children":[]},{"level":3,"title":"ViewGroup","slug":"viewgroup","link":"#viewgroup","children":[]}]}],"git":{"updatedTime":1755955325000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"zh-cn/library/hikage-extension.md"}');export{e as data};
|
1
assets/hikage-extension.html-lJSuuqUt.js
Normal file
1
assets/hikage-extension.html-lJSuuqUt.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-ce7ecd5e","path":"/en/library/hikage-extension.html","title":"hikage-extension","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Configure Dependency","slug":"configure-dependency","link":"#configure-dependency","children":[{"level":3,"title":"SweetDependency (Recommended)","slug":"sweetdependency-recommended","link":"#sweetdependency-recommended","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"Traditional Method","slug":"traditional-method","link":"#traditional-method","children":[]}]},{"level":2,"title":"Function Introduction","slug":"function-introduction","link":"#function-introduction","children":[{"level":3,"title":"Activity","slug":"activity","link":"#activity","children":[]},{"level":3,"title":"Window","slug":"window","link":"#window","children":[]},{"level":3,"title":"Dialog","slug":"dialog","link":"#dialog","children":[]},{"level":3,"title":"PopupWindow","slug":"popupwindow","link":"#popupwindow","children":[]},{"level":3,"title":"ViewGroup","slug":"viewgroup","link":"#viewgroup","children":[]}]}],"git":{"updatedTime":1755955325000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":5}]},"filePathRelative":"en/library/hikage-extension.md"}');export{e as data};
|
28
assets/hikage-widget-androidx.html-7nnQMKXC.js
Normal file
28
assets/hikage-widget-androidx.html-7nnQMKXC.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import{_ as a,o as s,c as e,e as n}from"./app-ZnF1aHNS.js";const l={},i=n(`<h1 id="hikage-widget-androidx" tabindex="-1"><a class="header-anchor" href="#hikage-widget-androidx" aria-hidden="true">#</a> hikage-widget-androidx</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-widget-androidx?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-widget-androidx%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>这是 Hikage 针对 Jetpack Compact 组件相关功能的扩展依赖。</p><h2 id="配置依赖" tabindex="-1"><a class="header-anchor" href="#配置依赖" aria-hidden="true">#</a> 配置依赖</h2><p>你可以使用如下方式将此模块添加到你的项目中。</p><h3 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h3><p>在你的项目 <code>SweetDependency</code> 配置文件中添加依赖。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-widget-androidx</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.widget.androidx)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>在你的项目 <code>gradle/libs.versions.toml</code> 中添加依赖。</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-androidx = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-androidx = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-androidx"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-widget-androidx"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.widget.androidx)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h3 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h3><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-androidx:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h2 id="功能介绍" tabindex="-1"><a class="header-anchor" href="#功能介绍" aria-hidden="true">#</a> 功能介绍</h2><p>这个依赖中继承了来自 Jetpack Compact 中的可用组件,你可以直接引用它们到 Hikage 中使用。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">LinearLayoutCompact</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayoutCompat.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">AppCompatTextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,24),o=[i];function p(r,d){return s(),e("div",null,o)}const c=a(l,[["render",p],["__file","hikage-widget-androidx.html.vue"]]);export{c as default};
|
1
assets/hikage-widget-androidx.html-Kk_4er0h.js
Normal file
1
assets/hikage-widget-androidx.html-Kk_4er0h.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-07a543e6","path":"/zh-cn/library/hikage-widget-androidx.html","title":"hikage-widget-androidx","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"配置依赖","slug":"配置依赖","link":"#配置依赖","children":[{"level":3,"title":"SweetDependency (推荐)","slug":"sweetdependency-推荐","link":"#sweetdependency-推荐","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"传统方式","slug":"传统方式","link":"#传统方式","children":[]}]},{"level":2,"title":"功能介绍","slug":"功能介绍","link":"#功能介绍","children":[]}],"git":{"updatedTime":1750751435000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":3}]},"filePathRelative":"zh-cn/library/hikage-widget-androidx.md"}');export{e as data};
|
28
assets/hikage-widget-androidx.html-ZxjbyKwp.js
Normal file
28
assets/hikage-widget-androidx.html-ZxjbyKwp.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import{_ as a,o as e,c as s,e as n}from"./app-ZnF1aHNS.js";const l={},i=n(`<h1 id="hikage-widget-androidx" tabindex="-1"><a class="header-anchor" href="#hikage-widget-androidx" aria-hidden="true">#</a> hikage-widget-androidx</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-widget-androidx?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-widget-androidx%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>This is a Hikage extension dependency for Jetpack Compact component-related features.</p><h2 id="configure-dependency" tabindex="-1"><a class="header-anchor" href="#configure-dependency" aria-hidden="true">#</a> Configure Dependency</h2><p>You can add this module to your project using the following method.</p><h3 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h3><p>Add dependency in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-widget-androidx</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.widget.androidx)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-androidx = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-androidx = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-androidx"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-widget-androidx"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.widget.androidx)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h3 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h3><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-androidx:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h2 id="function-introduction" tabindex="-1"><a class="header-anchor" href="#function-introduction" aria-hidden="true">#</a> Function Introduction</h2><p>This dependency inherits the available components from Jetpack Compact, which you can directly reference to use in Hikage.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">LinearLayoutCompact</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayoutCompat.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">AppCompatTextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,24),o=[i];function p(t,d){return e(),s("div",null,o)}const c=a(l,[["render",p],["__file","hikage-widget-androidx.html.vue"]]);export{c as default};
|
1
assets/hikage-widget-androidx.html-uy8ylSjq.js
Normal file
1
assets/hikage-widget-androidx.html-uy8ylSjq.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-0a7e8244","path":"/en/library/hikage-widget-androidx.html","title":"hikage-widget-androidx","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Configure Dependency","slug":"configure-dependency","link":"#configure-dependency","children":[{"level":3,"title":"SweetDependency (Recommended)","slug":"sweetdependency-recommended","link":"#sweetdependency-recommended","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"Traditional Method","slug":"traditional-method","link":"#traditional-method","children":[]}]},{"level":2,"title":"Function Introduction","slug":"function-introduction","link":"#function-introduction","children":[]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/library/hikage-widget-androidx.md"}');export{e as data};
|
44
assets/hikage-widget-material.html-OG3AXf8w.js
Normal file
44
assets/hikage-widget-material.html-OG3AXf8w.js
Normal file
@@ -0,0 +1,44 @@
|
||||
import{_ as s,o as a,c as n,e}from"./app-ZnF1aHNS.js";const l={},p=e(`<h1 id="hikage-widget-material" tabindex="-1"><a class="header-anchor" href="#hikage-widget-material" aria-hidden="true">#</a> hikage-widget-material</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-widget-material?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-widget-material%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>这是 Hikage 针对 Google Material (MDC) 组件相关功能的扩展依赖。</p><h2 id="配置依赖" tabindex="-1"><a class="header-anchor" href="#配置依赖" aria-hidden="true">#</a> 配置依赖</h2><p>你可以使用如下方式将此模块添加到你的项目中。</p><h3 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h3><p>在你的项目 <code>SweetDependency</code> 配置文件中添加依赖。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-widget-material</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.widget.material)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>在你的项目 <code>gradle/libs.versions.toml</code> 中添加依赖。</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-material = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-material = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-material"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-widget-material"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.widget.material)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h3 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h3><p>在你的项目 <code>build.gradle.kts</code> 中配置依赖。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-material:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>请将 <code><version></code> 修改为此文档顶部显示的版本。</p><h2 id="功能介绍" tabindex="-1"><a class="header-anchor" href="#功能介绍" aria-hidden="true">#</a> 功能介绍</h2><p>这个依赖中继承了来自 Google Material (MDC) 中的可用组件,你可以直接引用它们到 Hikage 中使用。</p><blockquote><p>示例如下</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">MaterialTextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">MaterialButton</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextInputLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> minWidth </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">200</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> hint </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Enter your text"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextInputEditText</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,24),i=[p];function o(t,r){return a(),n("div",null,i)}const d=s(l,[["render",o],["__file","hikage-widget-material.html.vue"]]);export{d as default};
|
1
assets/hikage-widget-material.html-SrWOBHqa.js
Normal file
1
assets/hikage-widget-material.html-SrWOBHqa.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-95deef40","path":"/en/library/hikage-widget-material.html","title":"hikage-widget-material","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Configure Dependency","slug":"configure-dependency","link":"#configure-dependency","children":[{"level":3,"title":"SweetDependency (Recommended)","slug":"sweetdependency-recommended","link":"#sweetdependency-recommended","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"Traditional Method","slug":"traditional-method","link":"#traditional-method","children":[]}]},{"level":2,"title":"Function Introduction","slug":"function-introduction","link":"#function-introduction","children":[]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":4}]},"filePathRelative":"en/library/hikage-widget-material.md"}');export{e as data};
|
1
assets/hikage-widget-material.html-Z3imNZV7.js
Normal file
1
assets/hikage-widget-material.html-Z3imNZV7.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-9305b0e2","path":"/zh-cn/library/hikage-widget-material.html","title":"hikage-widget-material","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"配置依赖","slug":"配置依赖","link":"#配置依赖","children":[{"level":3,"title":"SweetDependency (推荐)","slug":"sweetdependency-推荐","link":"#sweetdependency-推荐","children":[]},{"level":3,"title":"Version Catalog","slug":"version-catalog","link":"#version-catalog","children":[]},{"level":3,"title":"传统方式","slug":"传统方式","link":"#传统方式","children":[]}]},{"level":2,"title":"功能介绍","slug":"功能介绍","link":"#功能介绍","children":[]}],"git":{"updatedTime":1750751435000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":3}]},"filePathRelative":"zh-cn/library/hikage-widget-material.md"}');export{e as data};
|
44
assets/hikage-widget-material.html-aFxM7z7b.js
Normal file
44
assets/hikage-widget-material.html-aFxM7z7b.js
Normal file
@@ -0,0 +1,44 @@
|
||||
import{_ as s,o as a,c as n,e}from"./app-ZnF1aHNS.js";const l={},o=e(`<h1 id="hikage-widget-material" tabindex="-1"><a class="header-anchor" href="#hikage-widget-material" aria-hidden="true">#</a> hikage-widget-material</h1><p><img src="https://img.shields.io/maven-central/v/com.highcapable.hikage/hikage-widget-material?logo=apachemaven&logoColor=orange&style=flat-square" alt="Maven Central"><span style="margin-left:5px;"></span><img src="https://img.shields.io/maven-metadata/v?metadataUrl=https%3A%2F%2Fraw.githubusercontent.com%2FHighCapable%2Fmaven-repository%2Frefs%2Fheads%2Fmain%2Frepository%2Freleases%2Fcom%2Fhighcapable%2Fhikage%2Fhikage-widget-material%2Fmaven-metadata.xml&logo=apachemaven&logoColor=orange&label=highcapable-maven-releases&style=flat-square" alt="Maven metadata URL"><span style="margin-left:5px;"></span><img src="https://img.shields.io/badge/Min SDK-21-orange?logo=android&style=flat-square" alt="Android Min SDK"></p><p>This is a Hikage extension dependency for Google Material (MDC) component-related features.</p><h2 id="configure-dependency" tabindex="-1"><a class="header-anchor" href="#configure-dependency" aria-hidden="true">#</a> Configure Dependency</h2><p>You can add this module to your project using the following method.</p><h3 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h3><p>Add dependency in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">libraries</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">com.highcapable.hikage</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">hikage-widget-material</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">version</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">+</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(com.highcapable.hikage.hikage.widget.material)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><h3 id="version-catalog" tabindex="-1"><a class="header-anchor" href="#version-catalog" aria-hidden="true">#</a> Version Catalog</h3><p>Add dependency in your project's <code>gradle/libs.versions.toml</code>.</p><div class="language-toml line-numbers-mode" data-ext="toml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">versions</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-material = </span><span style="color:#96D0FF;">"<version>"</span></span>
|
||||
<span class="line"></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">[</span><span style="color:#F69D50;">libraries</span><span style="color:#ADBAC7;">]</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">hikage-widget-material = { module = </span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-material"</span><span style="color:#ADBAC7;">, version.ref = </span><span style="color:#96D0FF;">"hikage-widget-material"</span><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(libs.hikage.widget.material)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h3 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h3><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">implementation</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"com.highcapable.hikage:hikage-widget-material:<version>"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>Please change <code><version></code> to the version displayed at the top of this document.</p><h2 id="function-introduction" tabindex="-1"><a class="header-anchor" href="#function-introduction" aria-hidden="true">#</a> Function Introduction</h2><p>This dependency inherits the available components from Google Material (MDC), which you can directly reference to use in Hikage.</p><blockquote><p>The following example</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">LinearLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;">(matchParent </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">true</span><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> orientation </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> LinearLayout.VERTICAL</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">MaterialTextView</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">MaterialButton</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> text </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Hello, World!"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> textSize </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16f</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> gravity </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> Gravity.CENTER</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextInputLayout</span><span style="color:#ADBAC7;">(</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> lparams </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">LayoutParams</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> topMargin </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">16</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> },</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> init </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> minWidth </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#6CB6FF;">200</span><span style="color:#ADBAC7;">.dp</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> hint </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"Enter your text"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> ) {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">TextInputEditText</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,24),i=[o];function p(t,r){return a(),n("div",null,i)}const d=s(l,[["render",p],["__file","hikage-widget-material.html.vue"]]);export{d as default};
|
1
assets/home.html-FkAIX882.js
Normal file
1
assets/home.html-FkAIX882.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-6a609e09","path":"/zh-cn/guide/home.html","title":"介绍","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"背景","slug":"背景","link":"#背景","children":[]},{"level":2,"title":"用途","slug":"用途","link":"#用途","children":[]},{"level":2,"title":"语言要求","slug":"语言要求","link":"#语言要求","children":[]},{"level":2,"title":"功能贡献","slug":"功能贡献","link":"#功能贡献","children":[]}],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"zh-cn/guide/home.md"}');export{e as data};
|
39
assets/home.html-TsPnRHmC.js
Normal file
39
assets/home.html-TsPnRHmC.js
Normal file
@@ -0,0 +1,39 @@
|
||||
import{_ as c}from"./nagasaki_soyo-RK2z5Lcj.js";import{_ as p,r as t,o as d,c as u,b as e,d as s,a as n,w as o,e as i}from"./app-ZnF1aHNS.js";const y={},A=e("h1",{id:"introduction",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#introduction","aria-hidden":"true"},"#"),s(" Introduction")],-1),m=e("blockquote",null,[e("p",null,[e("code",null,"Hikage"),s(" (Pronunciation /ˈhɪkɑːɡeɪ/) is an Android responsive UI building tool.")])],-1),h=e("h2",{id:"background",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#background","aria-hidden":"true"},"#"),s(" Background")],-1),g=e("p",null,[s("This is an Android responsive UI build tool designed to focus on "),e("strong",null,"real-time code-based UI building"),s(".")],-1),B={href:"https://github.com/Lagrio",target:"_blank",rel:"noopener noreferrer"},C=e("strong",null,"hikage",-1),b=i('<details><summary>Why...</summary><div align="center"><img src="'+c+'" width="100" height="100" alt="LOGO"><p><strong>なんで春日影レイアウト使いの?</strong></p></div></details><p>Unlike Jetpack Compose's declarative UI, Hikage focuses on Android native platforms, and its design goal is to enable developers to quickly build UIs and directly support Android native components.</p><p><strong><u>Hikage is just a UI build tool and does not provide any UI components themselves</u></strong>.</p><p>Rejecting duplicate wheels, our solution is always compatible and efficient. Now you can abandon ViewBinding and XML, and even <code>findViewById</code>, and try using code layout directly.</p>',4),D=e("code",null,"Hikage",-1),v={href:"https://github.com/BetterAndroid/BetterAndroid",target:"_blank",rel:"noopener noreferrer"},_=e("code",null,"Hikage",-1),f=e("code",null,"BetterAndroid",-1),k=e("h2",{id:"usage",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#usage","aria-hidden":"true"},"#"),s(" Usage")],-1),F=e("p",null,"Hikage is mainly suitable for developers focusing on native Android platform development. Since Kotlin became the primary development language, there hasn't been a perfect tool to implement dynamic code layouts using DSL. Therefore, projects that do not use Jetpack Compose still need to use the original XML. Although ViewBinding provides support, it is still not very user-friendly.",-1),x={href:"https://github.com/Kotlin/anko",target:"_blank",rel:"noopener noreferrer"},w={href:"https://github.com/LouisCAD/Splitties",target:"_blank",rel:"noopener noreferrer"},I=e("blockquote",null,[e("p",null,"Comparison of various DSL layout schemes")],-1),L=e("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[e("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCBDFB"}},"LinearLayout"),e("span",{style:{color:"#ADBAC7"}},"(")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," lparams "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#DCBDFB"}},"LayoutParams"),e("span",{style:{color:"#ADBAC7"}},"(matchParent "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#6CB6FF"}},"true"),e("span",{style:{color:"#ADBAC7"}},") {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," topMargin "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#6CB6FF"}},"16"),e("span",{style:{color:"#ADBAC7"}},".dp")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," },")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," init "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," orientation "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," LinearLayout.VERTICAL")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," gravity "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," }")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}},") {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#DCBDFB"}},"TextView"),e("span",{style:{color:"#ADBAC7"}}," {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," text "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#96D0FF"}},'"Hello, World!"')]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," textSize "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#6CB6FF"}},"16f")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," gravity "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," }")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}},"}")]),s(`
|
||||
`),e("span",{class:"line"})])]),e("div",{class:"line-numbers","aria-hidden":"true"},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1),H=e("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[e("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCBDFB"}},"verticalLayout"),e("span",{style:{color:"#ADBAC7"}}," {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," gravity "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#DCBDFB"}},"textView"),e("span",{style:{color:"#ADBAC7"}},"("),e("span",{style:{color:"#96D0FF"}},'"Hello, World!"'),e("span",{style:{color:"#ADBAC7"}},") {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," textSize "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#6CB6FF"}},"16f")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," gravity "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," }")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}},"}."),e("span",{style:{color:"#DCBDFB"}},"lparams"),e("span",{style:{color:"#ADBAC7"}},"(")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," width "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," matchParent,")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," height "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," matchParent")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}},") {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," topMargin "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#DCBDFB"}},"dip"),e("span",{style:{color:"#ADBAC7"}},"("),e("span",{style:{color:"#6CB6FF"}},"16"),e("span",{style:{color:"#ADBAC7"}},")")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}},"}")]),s(`
|
||||
`),e("span",{class:"line"})])]),e("div",{class:"line-numbers","aria-hidden":"true"},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1),T=e("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[e("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[e("code",null,[e("span",{class:"line"},[e("span",{style:{color:"#DCBDFB"}},"Column"),e("span",{style:{color:"#ADBAC7"}},"(")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," modifier "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," Modifier."),e("span",{style:{color:"#DCBDFB"}},"padding"),e("span",{style:{color:"#ADBAC7"}},"(top "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#6CB6FF"}},"16"),e("span",{style:{color:"#ADBAC7"}},".dp),")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," verticalArrangement "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," Arrangement.Center,")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," horizontalAlignment "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," Alignment.CenterHorizontally")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}},") {")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#DCBDFB"}},"Text"),e("span",{style:{color:"#ADBAC7"}},"(")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," text "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#96D0FF"}},'"Hello, World!"'),e("span",{style:{color:"#ADBAC7"}},",")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," fontSize "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," "),e("span",{style:{color:"#6CB6FF"}},"16"),e("span",{style:{color:"#ADBAC7"}},".sp,")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," textAlign "),e("span",{style:{color:"#F47067"}},"="),e("span",{style:{color:"#ADBAC7"}}," TextAlign.Center")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}}," )")]),s(`
|
||||
`),e("span",{class:"line"},[e("span",{style:{color:"#ADBAC7"}},"}")]),s(`
|
||||
`),e("span",{class:"line"})])]),e("div",{class:"line-numbers","aria-hidden":"true"},[e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"}),e("div",{class:"line-number"})])],-1),E=i('<p>The basic part of Hikage <strong>does not require any external or additional compilation plugins</strong>. It can be <strong>plug-and-play</strong> and <strong>create a View object anywhere</strong> that can be set to the parent layout and <code>Window</code>.</p><p>Hikage <strong>fully supports</strong> hybrid layouts. You can embed XML (using the <code>R.layout</code> scheme to load layouts), ViewBinding, and even Jetpack Compose within Hikage.</p><h2 id="language-requirement" tabindex="-1"><a class="header-anchor" href="#language-requirement" aria-hidden="true">#</a> Language Requirement</h2><p>It is recommended to use Kotlin as the preferred development language. This project is entirely written in Kotlin, and there are no plans to support Java compatibility.</p><p>All demo examples in the documentation will be described using Kotlin. If you are not familiar with Kotlin, you may encounter difficulties in using this project effectively.</p><h2 id="contribution" tabindex="-1"><a class="header-anchor" href="#contribution" aria-hidden="true">#</a> Contribution</h2><p>The maintenance of this project is inseparable from the support and contributions of all developers.</p><p>This project is currently in its early stages, and there may still be some problems or lack of functions you need.</p>',8),G={href:"https://github.com/BetterAndroid/Hikage/issues",target:"_blank",rel:"noopener noreferrer"};function V(j,S){const l=t("ExternalLinkIcon"),a=t("CodeGroupItem"),r=t("CodeGroup");return d(),u("div",null,[A,m,h,g,e("p",null,[s("The project icon was designed by "),e("a",B,[s("MaiTungTM"),n(l)]),s(', the name is taken from the original song "Haru'),C,s(`" in "BanG Dream It's MyGO!!!!!".`)]),b,e("p",null,[D,s(" works better with another project "),e("a",v,[s("BetterAndroid"),n(l)]),s(", and "),_,s(" itself will automatically reference the "),f,s("-related dependencies as the core content.")]),k,F,e("p",null,[s("Hikage inherits the design schemes of "),e("a",x,[s("Anko"),n(l)]),s(" and "),e("a",w,[s("Splitties"),n(l)]),s(", and draws on the DSL function naming scheme of Jetpack Compose. On this basis, it has made many improvements, making it closer to native in terms of usage cost and closer to Jetpack Compose in terms of writing style.")]),I,n(r,null,{default:o(()=>[n(a,{title:"Hikage"},{default:o(()=>[L]),_:1}),n(a,{title:"Anko、Splitties"},{default:o(()=>[H]),_:1}),n(a,{title:"Jetpack Compose"},{default:o(()=>[T]),_:1})]),_:1}),E,e("p",null,[s("If possible, feel free to submit a PR to contribute features you think are needed to this project, or go to "),e("a",G,[s("GitHub Issues"),n(l)]),s(" to make suggestions to us.")])])}const R=p(y,[["render",V],["__file","home.html.vue"]]);export{R as default};
|
1
assets/home.html-hszD4rJy.js
Normal file
1
assets/home.html-hszD4rJy.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-efb45d4c","path":"/en/guide/home.html","title":"Introduction","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Background","slug":"background","link":"#background","children":[]},{"level":2,"title":"Usage","slug":"usage","link":"#usage","children":[]},{"level":2,"title":"Language Requirement","slug":"language-requirement","link":"#language-requirement","children":[]},{"level":2,"title":"Contribution","slug":"contribution","link":"#contribution","children":[]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":2}]},"filePathRelative":"en/guide/home.md"}');export{e as data};
|
39
assets/home.html-yN_Nauvl.js
Normal file
39
assets/home.html-yN_Nauvl.js
Normal file
@@ -0,0 +1,39 @@
|
||||
import{_ as c}from"./nagasaki_soyo-RK2z5Lcj.js";import{_ as p,r as t,o as d,c as A,b as s,d as e,a as l,w as o,e as r}from"./app-ZnF1aHNS.js";const y={},u=s("h1",{id:"介绍",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#介绍","aria-hidden":"true"},"#"),e(" 介绍")],-1),B=s("blockquote",null,[s("p",null,[s("code",null,"Hikage"),e(" (发音 /ˈhɪkɑːɡeɪ/) 是一个 Android 响应式 UI 构建工具。")])],-1),C=s("h2",{id:"背景",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#背景","aria-hidden":"true"},"#"),e(" 背景")],-1),D=s("p",null,[e("这是一个 Android 响应式 UI 构建工具,它的设计聚焦于 "),s("strong",null,"实时代码构建 UI"),e("。")],-1),m={href:"https://github.com/Lagrio",target:"_blank",rel:"noopener noreferrer"},h=s("strong",null,"hikage",-1),b=r('<details><summary>为什么要...</summary><div align="center"><img src="'+c+'" width="100" height="100" alt="LOGO"><p><strong>なんで春日影レイアウト使いの?</strong></p></div></details><p>不同于 Jetpack Compose 的声明式 UI,Hikage 专注于 Android 原生平台,它的设计目标是为了让开发者能够快速构建 UI 并可直接支持 Android 原生组件。</p><p><strong><u>Hikage 只是一个 UI 构建工具,自身并不提供任何 UI 组件</u></strong>。</p><p>拒绝重复造轮子,我们的方案始终是兼容与高效,现在你可以抛弃 ViewBinding 和 XML 甚至是 <code>findViewById</code>,直接来尝试使用代码布局吧。</p>',4),_=s("code",null,"Hikage",-1),g={href:"https://github.com/BetterAndroid/BetterAndroid",target:"_blank",rel:"noopener noreferrer"},v=s("code",null,"Hikage",-1),F=s("code",null,"BetterAndroid",-1),k=s("h2",{id:"用途",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#用途","aria-hidden":"true"},"#"),e(" 用途")],-1),f=s("p",null,"Hikage 主要适用于专注原生 Android 平台开发的开发者,自从 Kotlin 作为主要开发语言后,依然没有一套比较完美的工具能够使用 DSL 实现动态代码布局, 所以没有使用 Jetpack Compose 的项目依然需要使用原始的 XML,虽然有着 ViewBinding 的支持,但是依然不是很友好。",-1),x={href:"https://github.com/Kotlin/anko",target:"_blank",rel:"noopener noreferrer"},H={href:"https://github.com/LouisCAD/Splitties",target:"_blank",rel:"noopener noreferrer"},L=s("blockquote",null,[s("p",null,"各种 DSL 布局方案对比")],-1),I=s("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#DCBDFB"}},"LinearLayout"),s("span",{style:{color:"#ADBAC7"}},"(")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," lparams "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"LayoutParams"),s("span",{style:{color:"#ADBAC7"}},"(matchParent "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"true"),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," topMargin "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"16"),s("span",{style:{color:"#ADBAC7"}},".dp")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," },")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," init "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," orientation "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," LinearLayout.VERTICAL")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"TextView"),s("span",{style:{color:"#ADBAC7"}}," {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," text "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"Hello, World!"')]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," textSize "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"16f")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),w=s("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#DCBDFB"}},"verticalLayout"),s("span",{style:{color:"#ADBAC7"}}," {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"textView"),s("span",{style:{color:"#ADBAC7"}},"("),s("span",{style:{color:"#96D0FF"}},'"Hello, World!"'),s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," textSize "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"16f")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}."),s("span",{style:{color:"#DCBDFB"}},"lparams"),s("span",{style:{color:"#ADBAC7"}},"(")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," width "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," matchParent,")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," height "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," matchParent")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," topMargin "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"dip"),s("span",{style:{color:"#ADBAC7"}},"("),s("span",{style:{color:"#6CB6FF"}},"16"),s("span",{style:{color:"#ADBAC7"}},")")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),E=s("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#DCBDFB"}},"Column"),s("span",{style:{color:"#ADBAC7"}},"(")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," modifier "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Modifier."),s("span",{style:{color:"#DCBDFB"}},"padding"),s("span",{style:{color:"#ADBAC7"}},"(top "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"16"),s("span",{style:{color:"#ADBAC7"}},".dp),")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," verticalArrangement "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Arrangement.Center,")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," horizontalAlignment "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Alignment.CenterHorizontally")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},") {")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"Text"),s("span",{style:{color:"#ADBAC7"}},"(")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," text "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"Hello, World!"'),s("span",{style:{color:"#ADBAC7"}},",")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," fontSize "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"16"),s("span",{style:{color:"#ADBAC7"}},".sp,")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," textAlign "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," TextAlign.Center")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," )")]),e(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),e(`
|
||||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),G=r('<p>Hikage 的基础部分<strong>完全不需要借助外部及额外的编译插件</strong>,它能<strong>即插即用</strong>并在<strong>任何地方创建</strong>一个可被设置到父布局以及 <code>Window</code> 上的 <code>View</code> 对象。</p><p>Hikage <strong>全面兼容</strong>混合式布局,你可以在 Hikage 中嵌入 XML (使用 <code>R.layout</code> 方案装载布局)、ViewBinding 甚至是 Jetpack Compose。</p><h2 id="语言要求" tabindex="-1"><a class="header-anchor" href="#语言要求" aria-hidden="true">#</a> 语言要求</h2><p>推荐使用 Kotlin 作为首选开发语言,本项目完全使用 Kotlin 编写,且不再有计划兼容 Java。</p><p>文档全部的 Demo 示例代码都将使用 Kotlin 进行描述,如果你完全不会使用 Kotlin,那么你将有可能无法正常使用本项目。</p><h2 id="功能贡献" tabindex="-1"><a class="header-anchor" href="#功能贡献" aria-hidden="true">#</a> 功能贡献</h2>',6),V={href:"https://github.com/BetterAndroid/Hikage/issues",target:"_blank",rel:"noopener noreferrer"};function T(S,M){const n=t("ExternalLinkIcon"),a=t("CodeGroupItem"),i=t("CodeGroup");return d(),A("div",null,[u,B,C,D,s("p",null,[e("项目图标由 "),s("a",m,[e("MaiTungTM"),l(n)]),e(" 设计,名称取自 「BanG Dream It's MyGO!!!!!」 中的原创歌曲《春日影》(Haru"),h,e(")。")]),b,s("p",null,[_,e(" 配合我们的另一个项目 "),s("a",g,[e("BetterAndroid"),l(n)]),e(" 使用效果更佳,同时 "),v,e(" 自身将自动引用 "),F,e(" 相关依赖作为核心内容。")]),k,f,s("p",null,[e("Hikage 继承了 "),s("a",x,[e("Anko"),l(n)]),e("、"),s("a",H,[e("Splitties"),l(n)]),e(" 的设计方案以及借鉴了 Jetpack Compose 的 DSL 函数命名方案, 并且在此基础上进行了大量改进,使得它在使用成本上更贴近原生,写法上更贴近 Jetpack Compose。")]),L,l(i,null,{default:o(()=>[l(a,{title:"Hikage"},{default:o(()=>[I]),_:1}),l(a,{title:"Anko、Splitties"},{default:o(()=>[w]),_:1}),l(a,{title:"Jetpack Compose"},{default:o(()=>[E]),_:1})]),_:1}),G,s("p",null,[e("本项目的维护离不开各位开发者的支持和贡献,目前这个项目处于初期阶段,可能依然存在一些问题或者缺少你需要的功能, 如果可能,欢迎提交 PR 为此项目贡献你认为需要的功能或前往 "),s("a",V,[e("GitHub Issues"),l(n)]),e(" 向我们提出建议。")])])}const R=p(y,[["render",T],["__file","home.html.vue"]]);export{R as default};
|
1
assets/index.html-BxYx2COm.js
Normal file
1
assets/index.html-BxYx2COm.js
Normal file
@@ -0,0 +1 @@
|
||||
import{_ as e,o as c,c as t}from"./app-ZnF1aHNS.js";const n={};function _(o,r){return c(),t("div")}const a=e(n,[["render",_],["__file","index.html.vue"]]);export{a as default};
|
1
assets/index.html-FjffWWA4.js
Normal file
1
assets/index.html-FjffWWA4.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-c0c85b84","path":"/zh-cn/","title":"首页","lang":"zh-CN","frontmatter":{"home":true,"title":"首页","heroImage":"/images/logo.svg","actions":[{"text":"快速上手","link":"/zh-cn/guide/home","type":"primary"},{"text":"更新日志","link":"/zh-cn/about/changelog","type":"secondary"}],"features":[{"title":"原生可控","details":"使用 View 作为基础,Kotlin 作为开发语言,100% 动态代码布局,无需任何额外配置,支持自定义 View。"},{"title":"全面兼容","details":"支持 XML、ViewBinding 以及 Jetpack Compose 嵌入混合使用,并对 Material 组件及 Jetpack 提供支持。"},{"title":"快速上手","details":"简单易用,不需要繁琐的配置,不需要十足的开发经验,搭建环境集成依赖即可立即开始使用。"}],"footer":"Apache-2.0 License | Copyright (C) 2019 HighCapable"},"headers":[{"level":3,"title":"布局,就是这么灵活。","slug":"布局-就是这么灵活。","link":"#布局-就是这么灵活。","children":[]}],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"zh-cn/index.md"}');export{e as data};
|
1
assets/index.html-UG_FDMyX.js
Normal file
1
assets/index.html-UG_FDMyX.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse(`{"key":"v-2d0a870d","path":"/en/","title":"Home","lang":"en-US","frontmatter":{"home":true,"title":"Home","heroImage":"/images/logo.svg","actions":[{"text":"Get Started","link":"/en/guide/home","type":"primary"},{"text":"Changelog","link":"/en/about/changelog","type":"secondary"}],"features":[{"title":"Native Control","details":"Using View as the foundation and Kotlin as the development language, 100% dynamic code layout, no additional configuration required, supports custom Views."},{"title":"Fully Compatible","details":"Supports embedding and mixing XML, ViewBinding, and Jetpack Compose, and provides support for Material components and Jetpack."},{"title":"Quick to Start","details":"Simple and easy to use right now! No complex configuration or extensive development experience needed. Just integrate dependencies and enjoy!"}],"footer":"Apache-2.0 License | Copyright (C) 2019 HighCapable"},"headers":[{"level":3,"title":"Layout, it's that flexible.","slug":"layout-it-s-that-flexible","link":"#layout-it-s-that-flexible","children":[]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":2}]},"filePathRelative":"en/index.md"}`);export{e as data};
|
29
assets/index.html-WTe5lrNs.js
Normal file
29
assets/index.html-WTe5lrNs.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import{_ as r,r as o,o as c,c as i,a as n,w as e,b as s,d as l}from"./app-ZnF1aHNS.js";const p={},y=s("h3",{id:"layout-it-s-that-flexible",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#layout-it-s-that-flexible","aria-hidden":"true"},"#"),l(" Layout, it's that flexible.")],-1),A=s("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#DCBDFB"}},"LinearLayout"),s("span",{style:{color:"#ADBAC7"}},"(")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," lparams "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"LayoutParams"),s("span",{style:{color:"#ADBAC7"}},"(matchParent "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"true"),s("span",{style:{color:"#ADBAC7"}},"),")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," init "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," orientation "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," LinearLayout.VERTICAL")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},") {")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"TextView"),s("span",{style:{color:"#ADBAC7"}},"(id "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"text_view"'),s("span",{style:{color:"#ADBAC7"}},") {")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," text "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"Hello, World!"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," textSize "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"16f")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),l(`
|
||||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),d=s("div",{class:"language-xml line-numbers-mode","data-ext":"xml"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"<?"),s("span",{style:{color:"#8DDB8C"}},"xml"),s("span",{style:{color:"#6CB6FF"}}," version"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"1.0"'),s("span",{style:{color:"#6CB6FF"}}," encoding"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"utf-8"'),s("span",{style:{color:"#ADBAC7"}},"?>")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"<"),s("span",{style:{color:"#8DDB8C"}},"LinearLayout"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"xmlns:android"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"http://schemas.android.com/apk/res/android"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_width"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"match_parent"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_height"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"match_parent"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:orientation"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"vertical"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:gravity"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"center"'),s("span",{style:{color:"#ADBAC7"}},">")]),l(`
|
||||
`),s("span",{class:"line"}),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," <"),s("span",{style:{color:"#8DDB8C"}},"TextView")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:id"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"@+id/text_view"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_width"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"wrap_content"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_height"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"wrap_content"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:text"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"Hello, World!"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:textSize"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"16sp"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:gravity"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"center"'),s("span",{style:{color:"#ADBAC7"}}," />")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"</"),s("span",{style:{color:"#8DDB8C"}},"LinearLayout"),s("span",{style:{color:"#ADBAC7"}},">")]),l(`
|
||||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1);function C(D,B){const a=o("CodeGroupItem"),t=o("CodeGroup");return c(),i("div",null,[y,n(t,null,{default:e(()=>[n(a,{title:"Hikage (Kotlin DSL)"},{default:e(()=>[A]),_:1}),n(a,{title:"XML"},{default:e(()=>[d]),_:1})]),_:1})])}const u=r(p,[["render",C],["__file","index.html.vue"]]);export{u as default};
|
1
assets/index.html-l1SiVQn7.js
Normal file
1
assets/index.html-l1SiVQn7.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-8daa1a0e","path":"/","title":"","lang":"en-US","frontmatter":{"home":true,"navbar":false,"sidebar":false,"title":null,"heroAlt":null,"heroText":null,"tagline":"Select a language","actions":[{"text":"English","link":"/en/","type":"secondary"},{"text":"简体中文","link":"/zh-cn/","type":"secondary"}],"footer":"Apache-2.0 License | Copyright (C) 2019 HighCapable"},"headers":[],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"index.md"}');export{e as data};
|
29
assets/index.html-u51qKXKB.js
Normal file
29
assets/index.html-u51qKXKB.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import{_ as r,r as o,o as c,c as i,a as n,w as e,b as s,d as l}from"./app-ZnF1aHNS.js";const p={},y=s("h3",{id:"布局-就是这么灵活。",tabindex:"-1"},[s("a",{class:"header-anchor",href:"#布局-就是这么灵活。","aria-hidden":"true"},"#"),l(" 布局,就是这么灵活。")],-1),A=s("div",{class:"language-kotlin line-numbers-mode","data-ext":"kt"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#DCBDFB"}},"LinearLayout"),s("span",{style:{color:"#ADBAC7"}},"(")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," lparams "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"LayoutParams"),s("span",{style:{color:"#ADBAC7"}},"(matchParent "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"true"),s("span",{style:{color:"#ADBAC7"}},"),")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," init "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," {")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," orientation "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," LinearLayout.VERTICAL")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},") {")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#DCBDFB"}},"TextView"),s("span",{style:{color:"#ADBAC7"}},"(id "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"text_view"'),s("span",{style:{color:"#ADBAC7"}},") {")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," text "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#96D0FF"}},'"Hello, World!"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," textSize "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"16f")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," gravity "),s("span",{style:{color:"#F47067"}},"="),s("span",{style:{color:"#ADBAC7"}}," Gravity.CENTER")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," }")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"}")]),l(`
|
||||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1),d=s("div",{class:"language-xml line-numbers-mode","data-ext":"xml"},[s("pre",{class:"shiki github-dark-dimmed",style:{"background-color":"#22272e"},tabindex:"0"},[s("code",null,[s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"<?"),s("span",{style:{color:"#8DDB8C"}},"xml"),s("span",{style:{color:"#6CB6FF"}}," version"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"1.0"'),s("span",{style:{color:"#6CB6FF"}}," encoding"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"utf-8"'),s("span",{style:{color:"#ADBAC7"}},"?>")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"<"),s("span",{style:{color:"#8DDB8C"}},"LinearLayout"),s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"xmlns:android"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"http://schemas.android.com/apk/res/android"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_width"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"match_parent"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_height"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"match_parent"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:orientation"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"vertical"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:gravity"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"center"'),s("span",{style:{color:"#ADBAC7"}},">")]),l(`
|
||||
`),s("span",{class:"line"}),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," <"),s("span",{style:{color:"#8DDB8C"}},"TextView")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:id"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"@+id/text_view"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_width"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"wrap_content"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:layout_height"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"wrap_content"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:text"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"Hello, World!"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:textSize"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"16sp"')]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}}," "),s("span",{style:{color:"#6CB6FF"}},"android:gravity"),s("span",{style:{color:"#ADBAC7"}},"="),s("span",{style:{color:"#96D0FF"}},'"center"'),s("span",{style:{color:"#ADBAC7"}}," />")]),l(`
|
||||
`),s("span",{class:"line"},[s("span",{style:{color:"#ADBAC7"}},"</"),s("span",{style:{color:"#8DDB8C"}},"LinearLayout"),s("span",{style:{color:"#ADBAC7"}},">")]),l(`
|
||||
`),s("span",{class:"line"})])]),s("div",{class:"line-numbers","aria-hidden":"true"},[s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"}),s("div",{class:"line-number"})])],-1);function C(D,B){const a=o("CodeGroupItem"),t=o("CodeGroup");return c(),i("div",null,[y,n(t,null,{default:e(()=>[n(a,{title:"Hikage (Kotlin DSL)"},{default:e(()=>[A]),_:1}),n(a,{title:"XML"},{default:e(()=>[d]),_:1})]),_:1})])}const u=r(p,[["render",C],["__file","index.html.vue"]]);export{u as default};
|
1
assets/nagasaki_soyo-RK2z5Lcj.js
Normal file
1
assets/nagasaki_soyo-RK2z5Lcj.js
Normal file
@@ -0,0 +1 @@
|
||||
const a="/Hikage/images/nagasaki_soyo.png";export{a as _};
|
26
assets/quick-start.html-3cWmD7u6.js
Normal file
26
assets/quick-start.html-3cWmD7u6.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import{_ as r,r as i,o as p,c as d,b as e,d as n,a as s,w as o,e as t}from"./app-ZnF1aHNS.js";const c={},u=t('<h1 id="quick-start" tabindex="-1"><a class="header-anchor" href="#quick-start" aria-hidden="true">#</a> Quick Start</h1><blockquote><p>Integrate <code>Hikage</code> into your project.</p></blockquote><h2 id="project-requirements" tabindex="-1"><a class="header-anchor" href="#project-requirements" aria-hidden="true">#</a> Project Requirements</h2><p>The project needs to be created using <code>Android Studio</code> or <code>IntelliJ IDEA</code> and must be an Android or Kotlin Multiplatform project with integrated Kotlin environment dependencies.</p>',4),h={href:"https://developer.android.com/studio",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.jetbrains.com/idea",target:"_blank",rel:"noopener noreferrer"},y=e("li",null,[e("p",null,"Kotlin 1.9.0+, Gradle 8+, Java 17+, Android Gradle Plugin 8+")],-1),v=e("h3",{id:"configure-repositories",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#configure-repositories","aria-hidden":"true"},"#"),n(" Configure Repositories")],-1),b=e("p",null,[n("The dependencies of "),e("code",null,"Hikage"),n(" are published in "),e("strong",null,"Maven Central"),n(" and our public repository, you can use the following method to configure repositories.")],-1),g={href:"https://github.com/HighCapable/SweetDependency",target:"_blank",rel:"noopener noreferrer"},A=t(`<h4 id="sweetdependency-recommended" tabindex="-1"><a class="header-anchor" href="#sweetdependency-recommended" aria-hidden="true">#</a> SweetDependency (Recommended)</h4><p>Configure repositories in your project's <code>SweetDependency</code> configuration file.</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">repositories</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">google</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">maven-central</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># (Optional) You can add this URL to use our public repository</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># When Sonatype-OSS fails and cannot publish dependencies, this repository is added as a backup</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># For details, please visit: https://github.com/HighCapable/maven-repository</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">highcapable-maven-releases</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">url</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">https://raw.githubusercontent.com/HighCapable/maven-repository/main/repository/releases</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="traditional-method" tabindex="-1"><a class="header-anchor" href="#traditional-method" aria-hidden="true">#</a> Traditional Method</h4><p>Configure dependency in your project's <code>build.gradle.kts</code>.</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">repositories</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">google</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mavenCentral</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// (Optional) You can add this URL to use our public repository</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// When Sonatype-OSS fails and cannot publish dependencies, this repository is added as a backup</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// For details, please visit: https://github.com/HighCapable/maven-repository</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">maven</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"https://raw.githubusercontent.com/HighCapable/maven-repository/main/repository/releases"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="configure-java-version" tabindex="-1"><a class="header-anchor" href="#configure-java-version" aria-hidden="true">#</a> Configure Java Version</h3><p>Modify the Java version of Kotlin in your project's <code>build.gradle.kts</code> to 17 or above.</p><blockquote><p>Kotlin DSL</p></blockquote><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">compileOptions</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> sourceCompatibility </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> JavaVersion.VERSION_17</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> targetCompatibility </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> JavaVersion.VERSION_17</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">kotlinOptions</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> jvmTarget </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"17"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="functional-overview" tabindex="-1"><a class="header-anchor" href="#functional-overview" aria-hidden="true">#</a> Functional Overview</h2><p>The project is divided into multiple modules. You can choose the module you wish to include as a dependency in your project, but be sure to include the <strong>hikage-core</strong> module.</p><p>Click the corresponding module below to view detailed feature descriptions.</p>`,13),D=e("h2",{id:"demo",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#demo","aria-hidden":"true"},"#"),n(" Demo")],-1),C={href:"https://github.com/BetterAndroid/Hikage/tree/main/samples",target:"_blank",rel:"noopener noreferrer"};function B(k,f){const l=i("ExternalLinkIcon"),a=i("RouterLink");return p(),d("div",null,[u,e("ul",null,[e("li",null,[e("p",null,[n("Android Studio (It is recommended to get the latest version from "),e("a",h,[n("here"),s(l)]),n(")")])]),e("li",null,[e("p",null,[n("IntelliJ IDEA (It is recommended to get the latest version from "),e("a",m,[n("here"),s(l)]),n(")")])]),y]),v,b,e("p",null,[n("We recommend using Kotlin DSL as the Gradle build script language and "),e("a",g,[n("SweetDependency"),s(l)]),n(" to manage dependencies.")]),A,e("ul",null,[e("li",null,[s(a,{to:"/en/library/hikage-core.html"},{default:o(()=>[n("hikage-core")]),_:1})]),e("li",null,[s(a,{to:"/en/library/hikage-compiler.html"},{default:o(()=>[n("hikage-compiler")]),_:1})]),e("li",null,[s(a,{to:"/en/library/hikage-extension.html"},{default:o(()=>[n("hikage-extension")]),_:1})]),e("li",null,[s(a,{to:"/en/library/hikage-extension-betterandroid.html"},{default:o(()=>[n("hikage-extension-betterandroid")]),_:1})]),e("li",null,[s(a,{to:"/en/library/hikage-extension-compose.html"},{default:o(()=>[n("hikage-extension-compose")]),_:1})]),e("li",null,[s(a,{to:"/en/library/hikage-widget-androidx.html"},{default:o(()=>[n("hikage-widget-androidx")]),_:1})]),e("li",null,[s(a,{to:"/en/library/hikage-widget-material.html"},{default:o(()=>[n("hikage-widget-material")]),_:1})])]),D,e("p",null,[n("You can find some samples "),e("a",C,[n("here"),s(l)]),n(" to view the corresponding demo project to better understand how these functions work and quickly select the functions you need.")])])}const x=r(c,[["render",B],["__file","quick-start.html.vue"]]);export{x as default};
|
1
assets/quick-start.html-OQgpPsXK.js
Normal file
1
assets/quick-start.html-OQgpPsXK.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-72889797","path":"/en/guide/quick-start.html","title":"Quick Start","lang":"en-US","frontmatter":{},"headers":[{"level":2,"title":"Project Requirements","slug":"project-requirements","link":"#project-requirements","children":[{"level":3,"title":"Configure Repositories","slug":"configure-repositories","link":"#configure-repositories","children":[]},{"level":3,"title":"Configure Java Version","slug":"configure-java-version","link":"#configure-java-version","children":[]}]},{"level":2,"title":"Functional Overview","slug":"functional-overview","link":"#functional-overview","children":[]},{"level":2,"title":"Demo","slug":"demo","link":"#demo","children":[]}],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":2}]},"filePathRelative":"en/guide/quick-start.md"}');export{e as data};
|
1
assets/quick-start.html-duoa-o83.js
Normal file
1
assets/quick-start.html-duoa-o83.js
Normal file
@@ -0,0 +1 @@
|
||||
const e=JSON.parse('{"key":"v-24840ff0","path":"/zh-cn/guide/quick-start.html","title":"快速开始","lang":"zh-CN","frontmatter":{},"headers":[{"level":2,"title":"项目要求","slug":"项目要求","link":"#项目要求","children":[{"level":3,"title":"配置存储库","slug":"配置存储库","link":"#配置存储库","children":[]},{"level":3,"title":"配置 Java 版本","slug":"配置-java-版本","link":"#配置-java-版本","children":[]}]},{"level":2,"title":"功能一览","slug":"功能一览","link":"#功能一览","children":[]},{"level":2,"title":"Demo","slug":"demo","link":"#demo","children":[]}],"git":{"updatedTime":1754158555000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":2}]},"filePathRelative":"zh-cn/guide/quick-start.md"}');export{e as data};
|
28
assets/quick-start.html-vLMpozQe.js
Normal file
28
assets/quick-start.html-vLMpozQe.js
Normal file
@@ -0,0 +1,28 @@
|
||||
import{_ as t,r as i,o as p,c,b as n,d as s,a as e,w as l,e as r}from"./app-ZnF1aHNS.js";const d={},u=r('<h1 id="快速开始" tabindex="-1"><a class="header-anchor" href="#快速开始" aria-hidden="true">#</a> 快速开始</h1><blockquote><p>集成 <code>Hikage</code> 到你的项目中。</p></blockquote><h2 id="项目要求" tabindex="-1"><a class="header-anchor" href="#项目要求" aria-hidden="true">#</a> 项目要求</h2><p>项目需要使用 <code>Android Studio</code> 或 <code>IntelliJ IDEA</code> 创建且类型为 Android 或 Kotlin Multiplatform 项目并已集成 Kotlin 环境依赖。</p>',4),h={href:"https://developer.android.com/studio",target:"_blank",rel:"noopener noreferrer"},m={href:"https://www.jetbrains.com/idea",target:"_blank",rel:"noopener noreferrer"},y=n("li",null,[n("p",null,"Kotlin 1.9.0+、Gradle 8+、Java 17+、Android Gradle Plugin 8+")],-1),v=n("h3",{id:"配置存储库",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#配置存储库","aria-hidden":"true"},"#"),s(" 配置存储库")],-1),A=n("p",null,[n("code",null,"Hikage"),s(" 的依赖发布在 "),n("strong",null,"Maven Central"),s(" 和我们的公共存储库中,你可以使用如下方式配置存储库。")],-1),b={href:"https://github.com/HighCapable/SweetDependency",target:"_blank",rel:"noopener noreferrer"},D=r(`<h4 id="sweetdependency-推荐" tabindex="-1"><a class="header-anchor" href="#sweetdependency-推荐" aria-hidden="true">#</a> SweetDependency (推荐)</h4><p>在你的项目 <code>SweetDependency</code> 配置文件中配置存储库。</p><div class="language-yaml line-numbers-mode" data-ext="yml"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#8DDB8C;">repositories</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">google</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">maven-central</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># (可选) 你可以添加此 URL 以使用我们的公共存储库</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># 当 Sonatype-OSS 发生故障无法发布依赖时,此存储库作为备选进行添加</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># 详情请前往:https://github.com/HighCapable/maven-repository</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">highcapable-maven-releases</span><span style="color:#ADBAC7;">:</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;"># 中国大陆用户请将下方的 "raw.githubusercontent.com" 修改为 "raw.gitmirror.com"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#8DDB8C;">url</span><span style="color:#ADBAC7;">: </span><span style="color:#96D0FF;">https://raw.githubusercontent.com/HighCapable/maven-repository/main/repository/releases</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="传统方式" tabindex="-1"><a class="header-anchor" href="#传统方式" aria-hidden="true">#</a> 传统方式</h4><p>在你的项目 <code>build.gradle.kts</code> 中配置存储库。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">repositories</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">google</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">mavenCentral</span><span style="color:#ADBAC7;">()</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// (可选) 你可以添加此 URL 以使用我们的公共存储库</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 当 Sonatype-OSS 发生故障无法发布依赖时,此存储库作为备选进行添加</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 详情请前往:https://github.com/HighCapable/maven-repository</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#768390;">// 中国大陆用户请将下方的 "raw.githubusercontent.com" 修改为 "raw.gitmirror.com"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">maven</span><span style="color:#ADBAC7;">(</span><span style="color:#96D0FF;">"https://raw.githubusercontent.com/HighCapable/maven-repository/main/repository/releases"</span><span style="color:#ADBAC7;">)</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="配置-java-版本" tabindex="-1"><a class="header-anchor" href="#配置-java-版本" aria-hidden="true">#</a> 配置 Java 版本</h3><p>在你的项目 <code>build.gradle.kts</code> 中修改 Kotlin 的 Java 版本为 17 及以上。</p><div class="language-kotlin line-numbers-mode" data-ext="kt"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#DCBDFB;">android</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">compileOptions</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> sourceCompatibility </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> JavaVersion.VERSION_17</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> targetCompatibility </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> JavaVersion.VERSION_17</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> </span><span style="color:#DCBDFB;">kotlinOptions</span><span style="color:#ADBAC7;"> {</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> jvmTarget </span><span style="color:#F47067;">=</span><span style="color:#ADBAC7;"> </span><span style="color:#96D0FF;">"17"</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;"> }</span></span>
|
||||
<span class="line"><span style="color:#ADBAC7;">}</span></span>
|
||||
<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="功能一览" tabindex="-1"><a class="header-anchor" href="#功能一览" aria-hidden="true">#</a> 功能一览</h2><p>整个项目分为多个模块,你可以选择你希望引入的模块作为依赖应用到你的项目中,但一定要包含 <strong>hikage-core</strong> 模块。</p><p>你可以点击下方对应的模块前往查看详细的功能介绍。</p>`,12),g=n("h2",{id:"demo",tabindex:"-1"},[n("a",{class:"header-anchor",href:"#demo","aria-hidden":"true"},"#"),s(" Demo")],-1),B={href:"https://github.com/BetterAndroid/Hikage/tree/main/samples",target:"_blank",rel:"noopener noreferrer"};function C(_,k){const o=i("ExternalLinkIcon"),a=i("RouterLink");return p(),c("div",null,[u,n("ul",null,[n("li",null,[n("p",null,[s("Android Studio (建议从 "),n("a",h,[s("这里"),e(o)]),s(" 获取最新版本)")])]),n("li",null,[n("p",null,[s("IntelliJ IDEA (建议从 "),n("a",m,[s("这里"),e(o)]),s(" 获取最新版本)")])]),y]),v,A,n("p",null,[s("我们推荐使用 Kotlin DSL 作为 Gradle 构建脚本语言并推荐使用 "),n("a",b,[s("SweetDependency"),e(o)]),s(" 来管理依赖。")]),D,n("ul",null,[n("li",null,[e(a,{to:"/zh-cn/library/hikage-core.html"},{default:l(()=>[s("hikage-core")]),_:1})]),n("li",null,[e(a,{to:"/zh-cn/library/hikage-compiler.html"},{default:l(()=>[s("hikage-compiler")]),_:1})]),n("li",null,[e(a,{to:"/zh-cn/library/hikage-extension.html"},{default:l(()=>[s("hikage-extension")]),_:1})]),n("li",null,[e(a,{to:"/zh-cn/library/hikage-extension-betterandroid.html"},{default:l(()=>[s("hikage-extension-betterandroid")]),_:1})]),n("li",null,[e(a,{to:"/zh-cn/library/hikage-extension-compose.html"},{default:l(()=>[s("hikage-extension-compose")]),_:1})]),n("li",null,[e(a,{to:"/zh-cn/library/hikage-widget-androidx.html"},{default:l(()=>[s("hikage-widget-androidx")]),_:1})]),n("li",null,[e(a,{to:"/zh-cn/library/hikage-widget-material.html"},{default:l(()=>[s("hikage-widget-material")]),_:1})])]),g,n("p",null,[s("你可以在 "),n("a",B,[s("这里"),e(o)]),s(" 找到一些示例,查看对应的演示项目来更好地了解这些功能的运作方式,快速地挑选出你需要的功能。")])])}const x=t(d,[["render",C],["__file","quick-start.html.vue"]]);export{x as default};
|
1
assets/r8-proguard.html-QTtfAIoi.js
Normal file
1
assets/r8-proguard.html-QTtfAIoi.js
Normal file
@@ -0,0 +1 @@
|
||||
const a=JSON.parse('{"key":"v-29d6c1ba","path":"/en/config/r8-proguard.html","title":"R8 & Proguard Obfuscation","lang":"en-US","frontmatter":{},"headers":[],"git":{"updatedTime":1754157365000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":2}]},"filePathRelative":"en/config/r8-proguard.md"}');export{a as data};
|
1
assets/r8-proguard.html-_aL0ZPoj.js
Normal file
1
assets/r8-proguard.html-_aL0ZPoj.js
Normal file
@@ -0,0 +1 @@
|
||||
const t=JSON.parse('{"key":"v-154d6f69","path":"/zh-cn/config/r8-proguard.html","title":"R8 与 Proguard 混淆","lang":"zh-CN","frontmatter":{},"headers":[],"git":{"updatedTime":1745098326000,"contributors":[{"name":"fankesyooni","email":"qzmmcn@163.com","commits":1}]},"filePathRelative":"zh-cn/config/r8-proguard.md"}');export{t as data};
|
3
assets/r8-proguard.html-cESRxTSf.js
Normal file
3
assets/r8-proguard.html-cESRxTSf.js
Normal file
@@ -0,0 +1,3 @@
|
||||
import{_ as e,o as a,c as s,e as c}from"./app-ZnF1aHNS.js";const o={},d=c(`<h1 id="r8-与-proguard-混淆" tabindex="-1"><a class="header-anchor" href="#r8-与-proguard-混淆" aria-hidden="true">#</a> R8 与 Proguard 混淆</h1><blockquote><p>大部分场景下应用程序安装包可通过混淆压缩体积,这里介绍了混淆规则的配置方法。</p></blockquote><p><code>Hikage</code> 不需要额外配置混淆规则,由于 Hikage 装载的 <code>View</code> 不需要在 XML 中被定义,它们也可以同样被混淆。</p><p>你可以将你的自定义 <code>View</code>,例如 <code>com.yourpackage.YourView</code> 使用以下规则强制让它们被混淆。</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#adbac7;">-allowobfuscation class com.yourpackage.YourView</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>如果你一定要防止 <code>Hikage</code> 被混淆或者混淆后发生了问题,那么你可以使用以下规则来防止 <code>Hikage</code> 被混淆。</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#adbac7;">-keep class com.highcapable.hikage**</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,7),i=[d];function n(r,l){return a(),s("div",null,i)}const p=e(o,[["render",n],["__file","r8-proguard.html.vue"]]);export{p as default};
|
3
assets/r8-proguard.html-e_rREoAD.js
Normal file
3
assets/r8-proguard.html-e_rREoAD.js
Normal file
@@ -0,0 +1,3 @@
|
||||
import{_ as e,o,c as a,e as s}from"./app-ZnF1aHNS.js";const c={},n=s(`<h1 id="r8-proguard-obfuscation" tabindex="-1"><a class="header-anchor" href="#r8-proguard-obfuscation" aria-hidden="true">#</a> R8 & Proguard Obfuscation</h1><blockquote><p>In most scenarios, app packages can be compressed through obfuscation. Here is an introduction to how to configure obfuscation rules.</p></blockquote><p><code>Hikage</code> does not require additional configuration of obfuscation rules, since <code>View</code> objects loaded by Hikage do not need to be defined in XML, they can be equally obfuscated.</p><p>You can force them to be obfuscated with your custom <code>View</code>, such as <code>com.yourpackage.YourView</code>, using the following rules.</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#adbac7;">-allowobfuscation class com.yourpackage.YourView</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div><p>If you must prevent <code>Hikage</code> from being obfuscated or if something occurs after being obfuscated, you can use the following rules to prevent <code>Hikage</code> from being obfuscated.</p><div class="language-text line-numbers-mode" data-ext="text"><pre class="shiki github-dark-dimmed" style="background-color:#22272e;" tabindex="0"><code><span class="line"><span style="color:#adbac7;">-keep class com.highcapable.hikage**</span></span>
|
||||
<span class="line"><span style="color:#adbac7;"></span></span></code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div></div></div>`,7),i=[n];function t(d,r){return o(),a("div",null,i)}const u=e(c,[["render",t],["__file","r8-proguard.html.vue"]]);export{u as default};
|
1
assets/style-Rgr8LWAc.css
Normal file
1
assets/style-Rgr8LWAc.css
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user