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 extends View> 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()