From c8a96b3c813fb3fccbdfbb7207dba56b6d3bd4c7 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Thu, 18 Oct 2018 13:39:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20fab=E6=8E=A7=E4=BB=B6?= =?UTF-8?q?=E5=8F=8A=E5=85=B6=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/assets/sample/复杂界面/待办事项.js | 115 ++++++++++++++++++ .../assets/sample/界面控件/卡片布局列表.js | 46 ------- .../core/ui/attribute/FabViewAttributes.java | 32 +++++ .../ui/attribute/ViewAttributesFactory.java | 2 + .../autojs/core/ui/xml/XmlConverter.java | 2 + 5 files changed, 151 insertions(+), 46 deletions(-) create mode 100644 app/src/main/assets/sample/复杂界面/待办事项.js delete mode 100644 app/src/main/assets/sample/界面控件/卡片布局列表.js create mode 100644 autojs/src/main/java/com/stardust/autojs/core/ui/attribute/FabViewAttributes.java diff --git a/app/src/main/assets/sample/复杂界面/待办事项.js b/app/src/main/assets/sample/复杂界面/待办事项.js new file mode 100644 index 00000000..6f08f2e3 --- /dev/null +++ b/app/src/main/assets/sample/复杂界面/待办事项.js @@ -0,0 +1,115 @@ +"ui"; + +importClass(android.graphics.Paint); + +ui.layout( + + + + + + + + + + + + + + + + + + + + + +); + +var materialColors = ["#e91e63", "#ab47bc", "#5c6bc0", "#7e57c2", "##2196f3", "#00bcd4", + "#26a69a", "#4caf50", "#8bc34a", "#ffeb3b", "#ffa726", "#78909c", "#8d6e63"]; + +var storage = storages.create("todoList"); +//从storage获取todo列表 +var todoList = storage.get("items", [ + { + title: "写操作系统作业", + summary: "明天第1~2节", + color: "#f44336", + done: false + }, + { + title: "给ui模式增加若干Bug", + summary: "无限期", + color: "#ff5722", + done: false + }, + { + title: "发布Auto.js 5.0.0正式版", + summary: "2019年1月", + color: "#4caf50", + done: false + }, + { + title: "完成毕业设计和论文", + summary: "2019年4月", + color: "#2196f3", + done: false + } +]);; + +ui.todoList.setDataSource(todoList); + +ui.todoList.on("item_bind", function (itemView, itemHolder) { + //绑定勾选框事件 + itemView.done.on("check", function (checked) { + let item = itemHolder.item; + item.done = checked; + let paint = itemView.title.paint; + //设置或取消中划线效果 + if (checked) { + paint.flags |= Paint.STRIKE_THRU_TEXT_FLAG; + } else { + paint.flags &= ~Paint.STRIKE_THRU_TEXT_FLAG; + } + itemView.title.invalidate(); + }); +}); + +ui.todoList.on("item_click", function (item, i, itemView, listView) { + itemView.done.checked = !itemView.done.checked; +}); + +ui.todoList.on("item_long_click", function (e, item, i, itemView, listView) { + confirm("确定要删除" + item.title + "吗?") + .then(ok => { + if (ok) { + todoList.splice(i, 1); + } + }); + e.consumed = true; +}); + +//当离开本界面时保存todoList +ui.emitter.on("pause", () => { + storage.put("items", todoList); +}); + +ui.add.on("click", () => { + dialogs.rawInput("请输入标题") + .then(title => { + if (!title) { + return; + } + dialogs.rawInput("请输入期限", "明天") + .then(summary => { + todoList.push({ + title: title, + summary: summary, + color: materialColors[random(0, materialColors.length - 1)] + }); + }); + }) +}); diff --git a/app/src/main/assets/sample/界面控件/卡片布局列表.js b/app/src/main/assets/sample/界面控件/卡片布局列表.js deleted file mode 100644 index e588ecba..00000000 --- a/app/src/main/assets/sample/界面控件/卡片布局列表.js +++ /dev/null @@ -1,46 +0,0 @@ -"ui"; - -ui.layout( - - - - - - - - - - - - - - - - -); - -var todos = [ - { - title: "", - summary: "", - color: "" - }, - { - title: "", - summary: "", - color: "" - }, - { - title: "", - summary: "", - color: "" - }, - { - title: "", - summary: "", - color: "" - } -]; - -ui.todos.setDataSource(todos); diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/FabViewAttributes.java b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/FabViewAttributes.java new file mode 100644 index 00000000..5f1786ea --- /dev/null +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/FabViewAttributes.java @@ -0,0 +1,32 @@ +package com.stardust.autojs.core.ui.attribute; + +import android.graphics.Color; +import android.support.design.widget.FloatingActionButton; +import android.view.View; +import android.widget.ImageView; + +import com.stardust.autojs.core.ui.inflater.ResourceParser; + +public class FabViewAttributes extends ImageViewAttributes { + + public FabViewAttributes(ResourceParser resourceParser, View view) { + super(resourceParser, view); + } + + @Override + protected void onRegisterAttrs() { + super.onRegisterAttrs(); + registerPixelAttr("elevation", getView()::setCompatElevation); + registerIntPixelAttr("fabCustomSize", getView()::setCustomSize); + registerIntPixelAttr("fabSize", getView()::setSize); + registerAttr("rippleColor", Color::parseColor, getView()::setRippleColor); + registerBooleanAttr("useCompatPadding", getView()::setUseCompatPadding); + } + + @Override + public FloatingActionButton getView() { + return (FloatingActionButton) super.getView(); + } + + +} diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributesFactory.java b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributesFactory.java index 036cf55d..25657256 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributesFactory.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/attribute/ViewAttributesFactory.java @@ -1,6 +1,7 @@ package com.stardust.autojs.core.ui.attribute; import android.support.design.widget.AppBarLayout; +import android.support.design.widget.FloatingActionButton; import android.support.v7.widget.CardView; import android.view.View; import android.widget.ImageView; @@ -24,6 +25,7 @@ public class ViewAttributesFactory { sViewAttributesCreators.put(AppBarLayout.class, AppbarAttributes::new); sViewAttributesCreators.put(TextView.class, TextViewAttributes::new); sViewAttributesCreators.put(CardView.class, CardAttributes::new); + sViewAttributesCreators.put(FloatingActionButton.class, FabViewAttributes::new); } public static void put(Class clazz, ViewAttributesCreator creator) { diff --git a/autojs/src/main/java/com/stardust/autojs/core/ui/xml/XmlConverter.java b/autojs/src/main/java/com/stardust/autojs/core/ui/xml/XmlConverter.java index 58262dfd..7b4f2efd 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/ui/xml/XmlConverter.java +++ b/autojs/src/main/java/com/stardust/autojs/core/ui/xml/XmlConverter.java @@ -1,6 +1,7 @@ package com.stardust.autojs.core.ui.xml; import android.support.design.widget.AppBarLayout; +import android.support.design.widget.FloatingActionButton; import android.support.design.widget.TabLayout; import android.support.v4.widget.DrawerLayout; import android.support.v7.widget.CardView; @@ -84,6 +85,7 @@ public class XmlConverter { .map("tabs", JsTabLayout.class.getName()) .map("viewpager", JsViewPager.class.getName()) .map("card", CardView.class.getName()) + .map("fab", FloatingActionButton.class.getName()) ); private static final AttributeHandler ATTRIBUTE_HANDLER = new AttributeHandler.AttrNameRouter()