auto.js之界面ui

前言: auto.js的ui可以在将代码打包的时候方便用户的操作,可以设计一个舒服的界面来执行手机脚本。

知识梳理篇:

ui的按钮shi

// 开头必须要加,否则脚本不会以ui模式运行

"ui";


// 这里是用xml来编写的界面

ui.layout(

    // vertical 表示的是垂直布局

    <vertical>

        <button text="第一个按钮"/>

        <button text="第二个按钮"/>

    </vertical>

);

// 开头必须要加,否则脚本不会以ui模式运行

"ui";


// 这里是用xml来编写的界面

ui.layout(

    // horizontal 表示的是布局

    <horizontal>

        <button text="第一个按钮"/>

        <button text="第二个按钮"/>

    </horizontal>

);
// 开头必须要加,否则脚本不会以ui模式运行

"ui";


// 这里是用xml来编写的界面

ui.layout(

    // bg可以表示界面的背景

    <vertical bg="#ff0000">

        // textSize可以表示字体的大小

        <button text="第一个按钮" textSize="20sp"/>

        <button text="第二个按钮"/>

    </vertical>

);


 

控件和布局都属于视图

w是width的缩写,*表示尽量填满父布局,auto表示根据View的内容自动调整

"ui";

ui.layout(

    <horizontal>

        <button w="auto" text="自适应宽度"/>

        <button w="*" text="填满父布局"/>

    </horizontal>

);
"ui";


ui.layout(

    <horizontal>

        <button w="200" text="宽度200dp"/>

        <button w="100" text="宽度100dp"/>

    </horizontal>

);

 

h为height的缩写,使用情形和w一样

获取简单的属性,并且调用

"ui";

ui.layout(

    <frame>

        <button id="ok" text="哇哈哈"/>

    </frame>

);

// 通过ui.ok获取到按钮的控件

toast(ui.ok.getText());

 

gravity表示额的是"重力",用于决定View的内容相对View的位置(ravity="right|bottom"的View他的内容会在右下角)

可以设置为

  • left 靠左
  • right 靠右
  • top 靠顶部
  • bottom 靠底部
  • center 居中
  • center_vertical 垂直居中
  • center_horizontal 水平居中
"ui";


ui.layout(

    <frame>

        <button gravity="right" w="*" h="auto" text="你看我的文字是靠哪儿的"/>

    </frame>

);

"ui";

ui.layout(

    <frame w="*" h="*">

        <button layout_gravity="center" w="auto" h="auto" text="居中的按钮"/>

        <button layout_gravity="right|bottom" w="auto" h="auto" text="右下角的按钮"/>

    </frame>

);

 

margin方法:

  • margin为View和其他View的间距,他包括四个值:
  • marginLeft 左外边距
  • marginRight 右外边距
  • marginTop 上外边距
  • marginBottom 下外边距

margin="marginAll" 指定各个外边距都是该值。例如margin="10"表示左右上下边距都是10dp。

margin="marginLeft marginTop marginRight marginBottom" 分别指定各个外边距。例如margin="10 20 30 40"表示左边距为10dp, 上边距为20dp, 右边距为30dp, 下边距为40dp

margin="marginHorizontal marginVertical" 指定水平外边距和垂直外边距。例如margin="10 20"表示左右边距为10dp, 上下边距为20dp。


"ui";

ui.layout(

    <horizontal>

        <button margin="30" text="距离四周30"/>

        <button text="普通的按钮"/>

    </horizontal>

);
"ui";

ui.layout(

    <horizontal>

        <button marginLeft="50" text="我是特殊的按钮"/>

        <button text="普通的按钮"/>

    </horizontal>

);

bg表示背景:

  • bg="#00ff00"设置背景为绿色(RGB格式颜色),bg="file:///sdcard/1.png"设置背景为图片
  • alpha表示的View的透明度,foreground表示的是View的前景,minHeigh表示的是View的最小高度
  • visbility表示的是View的可见性,决定View是否可以显示出来。
  • rotation,View的旋转角度

文本控件的一些属性:

  • text文本控件,例如:text="一段文字"
  • textColor,例如:<text text="红色字体" textColor="red"/>
  • textSize,设置字体的大小,<text text="超大字体" textSize="40sp"/>
  • textStyle,可以设置字体的样式,bold 加粗字体,italic 斜体,normal 正常字体(可以使用|将他们结合)

 

设置文本控件的行数:

"ui";

ui.layout(

    <vertical>

        <text id="myText" line="3"/>

    </vertical>

);


// 通过\n进行换行

ui.myText.setText("第一行\n第二行\n第三行\n第四行");

 

按钮控件button:

  • Widget.AppCompat.Button.Colored 带颜色的按钮
  • Widget.AppCompat.Button.Borderless 无边框按钮
  • Widget.AppCompat.Button.Borderless.Colored 带颜色的无边框按钮
"ui";

ui.layout(

    <vertical>

        <button style="Widget.AppCompat.Button.Colored" text="我是漂亮的按钮"/>

    </vertical>

);

输入控件:input(有下面这个例子就差不多足够了)

"ui";

ui.layout(

    <vertical padding="16">

        <text textSize="16sp" textColor="red" text="请输入使用者姓名"/>

        <input id="name"/>

        <button id="ok" text="确定"/>

    </vertical>

);


// 点击确定按钮以后要执行的动作

ui.ok.click(function(){

    // 通过getText()获取输入的内容

    var name = ui.name.getText();

    toast(name + "您好,欢迎使用本软件");

})
// hint为提示效果

"ui";

ui.layout(

    <vertical>

        <input hint="请输入您的姓名"/>

    </vertical>

);

ps:textColorHint指定输入提示的字体颜色。textSizeHint指定输入提示的字体大小。
 

指定输入框可以输入的文本类型。可选的值为以下值及其用"|"的组合:

  • date 用于输入日期。
  • datetime 用于输入日期和时间。
  • none 没有内容类型。此输入框不可编辑。
  • number 仅可输入数字。
  • numberDecimal 可以与number和它的其他选项组合,以允许输入十进制数(包括小数)。
  • numberPassword 仅可输入数字密码。
  • numberSigned 可以与number和它的其他选项组合,以允许输入有符号的数。
  • phone 用于输入一个电话号码。
  • text 只是普通文本。
  • textAutoComplete 可以与text和它的其他选项结合, 以指定此字段将做自己的自动完成, 并适当地与输入法交互。
  • textAutoCorrect 可以与text和它的其他选项结合, 以请求自动文本输入纠错。
  • textCapCharacters 可以与text和它的其他选项结合, 以请求大写所有字符。
  • textCapSentences 可以与text和它的其他选项结合, 以请求大写每个句子里面的第一个字符。
  • textCapWords 可以与text和它的其他选项结合, 以请求大写每个单词里面的第一个字符。
  • textEmailAddress 用于输入一个电子邮件地址。
  • textEmailSubject 用于输入电子邮件的主题。
  • textImeMultiLine 可以与text和它的其他选项结合,以指示虽然常规文本视图不应为多行, 但如果可以, 则IME应提供多行支持。
  • textLongMessage 用于输入长消息的内容。
  • textMultiLine 可以与text和它的其他选项结合, 以便在该字段中允许多行文本。如果未设置此标志, 则文本字段将被限制为单行。
  • textNoSuggestions 可以与text及它的其他选项结合, 以指示输入法不应显示任何基于字典的单词建议。
  • textPassword 用于输入密码。
  • textPersonName 用于输入人名。
  • textPhonetic 用于输入拼音发音的文本, 如联系人条目中的拼音名称字段。
  • textPostalAddress 用于输入邮寄地址。
  • textShortMessage 用于输入短的消息内容。
  • textUri 用于输入一个URI。
  • textVisiblePassword 用于输入可见的密码。
  • textWebEditText 用于输入在web表单中的文本。
  • textWebEmailAddress 用于在web表单里输入一个电子邮件地址。
  • textWebPassword 用于在web表单里输入一个密码。
  • time 用于输入时间。

例如:

<input inputType="number|numberDeciml"/>

输入密码的提示框例如:

<input password="true"/>

 

图片控件:img

可以是本地的,也可以是网络的(网络的可能会存在一些bug,这里我测试的几个网络图片,有一些使不可以用的)。

"ui";

ui.layout(

    <frame>

        <img src="file:///sdcard/黑软/美图保存/1.png"/>

    </frame>

);

 

控件高度(可以控制控件的高度,详情可以看auto.js的文档)

"ui";

ui.layout(

    <vertical h="100dp" weightSum="5">

        <text layout_weight="1" text="控件1" bg="#ff0000"/>

        <text layout_weight="2" text="控件2" bg="#00ff00"/>

        <text layout_weight="1" text="控件3" bg="#0000ff"/>

    </vertical>

);

 

当涉及到在Vue项目中使用Element UI进行图片上传,并使用JSON Server和Node.js将图片存放在指定位置时,你可以按照以下步骤进行操作: 1. 在Vue项目中安装Element UI和Axios依赖: ```bash npm install element-ui axios ``` 2. 创建一个Vue组件,用于处理图片上传。在该组件的模板中,使用`el-upload`组件来处理图片上传。示例代码如下: ```vue <template> <div> <el-upload class="upload-demo" action="/api/upload" :on-success="handleUploadSuccess" :before-upload="beforeUpload" :auto-upload="false" > <el-button slot="trigger" size="small" type="primary">选择图片</el-button> </el-upload> <el-button @click="upload">上传图片</el-button> </div> </template> <script> import axios from 'axios'; export default { methods: { handleUploadSuccess(response) { // 上传成功后的回调函数 console.log(response); }, beforeUpload(file) { // 上传前的处理函数,可在此处进行文件类型、大小等验证 console.log(file); return true; }, upload() { // 手动触发上传 this.$refs.upload.submit(); }, }, }; </script> ``` 在上述代码中,我们使用了`el-upload`组件来实现图片上传,并将上传的请求发送到`/api/upload`接口。你可以根据实际情况进行样式和其他参数的配置。 3. 在Vue项目的主入口文件中,引入Element UI和axios,并将其配置为Vue的全局组件和原型方法: ```javascript import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; import App from './App.vue'; import axios from 'axios'; Vue.use(ElementUI); Vue.prototype.$http = axios; new Vue({ render: (h) => h(App), }).$mount('#app'); ``` 4. 在Node.js服务器中,使用`express`和`multer`来处理文件上传。示例代码如下: ```javascript const express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/api/upload', upload.single('file'), (req, res) => { // 处理文件上传逻辑 console.log(req.file); res.json({ success: true }); }); app.listen(3000, () => { console.log('Server is running on http://localhost:3000'); }); ``` 在上述代码中,我们使用了`multer`中间件来处理文件上传,并将上传的文件存储在`uploads/`目录下。你可以根据需要更改存储位置和其他配置。 5. 在服务器端的命令行中,进入你的项目文件夹,并运行以下命令来安装所需的依赖: ```bash npm install express multer ``` 6. 在服务器端的命令行中,进入你的项目文件夹,并运行以下命令来启动Node.js服务器: ```bash node server.js ``` 确保服务器和Vue项目都在运行状态后,你就可以在Vue项目中进行图片上传了。选择图片后,点击"上传图片"按钮即可手动触发上传。上传成功后,服务器端会将图片存储在指定的位置,并返回成功的响应。 请注意,上述示例中的代码只是为了演示概念,并不包含完整的错误处理和安全性措施。在实际项目中,你需要根据需求进行适当的优化和改进。 希望以上步骤能帮助你在Vue项目中实现图片上传并存放在指定位置!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值