Android自动生成Shape资源文件,迈出可视化脚手架第一步(上)

简介: 这章我们就进入到了撸码时刻,逐步来开发出一个一个应对我们Android场景的功能,这章对应的功能是,Shape的自动生成

系列文章Github开源地址(源码及各项资料不间断进行更新):

https://github.com/AbnerMing888/AndroidShortcutTools


Hello,各位铁铁,经过前三章的讲述,前置开发的准备都已完成,下面就是针对各个功能的开发。还是前边所说的,可视化脚手架的开发使用的是,web语言,也就是,Html,Css以及JavaScript,对web不是很了解的老铁,可以在不忙的时候,学一学,相对于Android开发而言,还是比较简单的;没有时间学的老铁,也没关系,回头去改我的模板也行,但是,建议还是学学比较好。


这章我们就进入到了撸码时刻,逐步来开发出一个一个应对我们Android场景的功能,这章对应的功能是,Shape的自动生成,我们先一起看下效果:



目前Shape自动生成,主要完成的功能有,自动生成实心,空心,多角度,渐变等功能,可以在选择项目的情况下,自动生成到对应的drawable文件下,而且还贴心的给出了全局的dp和color前缀配置,可以灵活的满足我们实际开发中的要求,点两下,就可以根据UI样式生成我们想要的效果,大家可以下载源码,体验一下


这样的一个简单功能我们该如何实现呢?其实也非常简单,就是几个简单的html页面,加上一些js交互方法,对实现方式感兴趣的老铁,可以继续往下浏览,不太关注实现方式的,可以直接下源码,运行看效果哦~


准备好了吗?我们开始发车!


由于内容有点多,我们分为上下两部分,今天我们先讲述上半部分。


一、文件及Dialog环境配置


通过上边的gif效果图我们可以发现,我们需要选择电脑的路径,以及对文件的查询,创建,写入等功能,弹出dialog选择目录,在electron里我们需要引入一个模块remote,remote 模块提供了一种在渲染进程和主进程之间进行进程间通讯的简便途径,使用 remote 模块,可以调用主进程对象的方法,而无需显式地发送进程间消息,这类似于 Java 的 RMI,虽然说13版本之后禁用了Remote模块,但是也提供了使用一个新的包 @electron/remote 来替代。

安装@electron/remote,进入到你的工程目录下,执行下面的命令:


npm i -D @electron/remote


如下图所示:



执行完成之后,在node_modules目录下,就会生成一个@electron目录,如下图:



接着我们在index.js文件里,进行如下初始化:



contextIsolation为fasle时可以渲染器过程中使用 require()。


文件操作


文件的操作,至关重要,毕竟我们所有的功能都需要进行创建文件以及存储到相关目录中,对于这块的知识点,老铁们,可以关注一下;文件的增删改查,在electron里,某个页面如果用到了和文件交互的功能,我们就可以引入fs模块,如下图:



下面我们针对其中的功能点,一一做的简单的概述,当然了,不是很全,大家想了解的更多的话,可以去网上搜一搜。


1、新建目录


fs.mkdir(“路径”, function(err){
if (err) {
console.log('mkdir err:'+err)
    }
console.log('New Directory Created')
})


2、读取目录信息


使用fs.readdir()或同步的fs.readdirSync()方法能够读取目录的信息。调用的结果是一个当前目录下文件和子目录的字符串数组。


fs.readdir(“路径”, function(err, files){
if (err) {
console.log(‘readdirerr:'+err)return    }
console.log(files)
})


3、删除目录


使用fs.rmdir()或同步的fs.rmdirSync()方法能够删除目录,并且不会返回信息:


fs.rmdir(myDir, function(err){
if (err) {
console.log('rmdir err:'+err)
return    }
console.log('deleted the directory')
})


4、写文件


fs.writeFile方法可以对文件进行写操作,如果没有则会创建,有的话,内容则会覆盖。


fs.writeFile(“文件的名字”, content, function (err) {
if (err) {
console.log("An error occurred creating the file "+err.message)
    } else {
console.log("The file has been successfully saved")
    }
})


5、读文件


fs.readFile读取用户本地文件有两种方式:读取完整文件和读取文件的一部分,读取完整文件是最常用的操作。基本用法如下:


fs.readFile(filepath, 'utf-8', function (err, data) {
if (err) {
alert("An error occurred reading the file :"+err.message)
return    }
//Display the file contentsconsole.log("The file content is : "+data)
})


6、删除文件


fs.unlink()方法能够删除用户电脑上的文件。由于这个操作基于标准POSIX方法(Portable Operating System Interface of UNIX,用于操作文件和目录的标准命令集),所以删除方法叫做unlink。可以使用fs.existsSync()测试文件是否还存在:


if (fs.existsSync(filePath)) {
fs.unlink(filepath, function (err) {
if (err) {
console.log("An error ocurred updating the file"+err.message)
return        }
console.log("File succesfully deleted")
    })
}


7、获取文件信息


通过fs.stats方法可以获取文件信息。这个方法可以确定是文件还是一个目录。如下代码段进入某个目录,然后输出了文件信息:


fs.stat(filePath, function (err, stats) {
if (err) {
returnconsole.error(err)
   }
console.log(stats)
console.log("Got file info successfully!")
// Check file typeconsole.log("isFile ? "+stats.isFile())
console.log("isDirectory ? "+stats.isDirectory())
})


以上就是fs中提供的几个操作文件的方法,各位老铁可以简单的了解一下。


这里简单的说一个注意点,如果你是用iframe引入的网页,那么在引入模块的时候,需要在前边增加parent。



二、基础信息配置页


基础信息的配置,是一个全局的配置项,比如统一的路径,dp,color的前缀,以及后面的对象继承,头参数的设置等等。



这个页面备注的信息,已经描述的很清楚了,这里再啰嗦一下。


选择项目生成路径,大家尽量要选择一个Android项目,因为后面所有的功能,都是和这个路径相关的,我会把一些功能,直接生成到对应的目录下,比如,shape文件,我就会直接生成到res下的drawable文件下;当然了,你也可以不选择,这个随你心意。


dp前缀和color前缀,以你的项目为标准,来设置相关的前缀,一般都是统一的,比如我们公司,dp前缀是@dimen/common_dp_,后面是不同的大小,这样在生成的时候,大小设置相关的,都会以此前缀+大小为标准,省的再修改了,所以啊,老铁们,前缀很有必要的,这个功能一定要用起来。例如下面使用了前缀的代码:



代码就不全贴了,大家看github源码即可,贴几个主要的方法,讲述一下:


给出提示弹框,我们可以使用下面,这是一个info类型的,当然了还有其他的类型,大家可以根据自己的实际业务进行选择,目前提供的有"none", "info", "error", "question" or "warning"。


functionshowSuccess(msg) {
constrequire=parent.window.require;
constdialog=require('@electron/remote').dialog;
dialog.showMessageBox({
type: 'info', //弹出框类型message: msg    });
}


选择文件路径,也就是,打开系统的选择路径窗口,前提需要进行引入dialog模块


constdialog=require('@electron/remote').dialog;


dialog.showOpenDialog({
properties: ['openDirectory']
}).then(result=> {
constpath=result.filePaths;
if (path!=null&&path!="") {
//选择后回显$(".config_file_input").val(path);
//进行保存路径localStorage.setItem("select_path", path)
    }
});


基础信息配置没有什么好说的啊,页面的绘制,大家看config.html文件,都是一些标签语言,这个没什么好说的,config.js文件,最主要的方法,就是上边的路径选择,然后保存,和回显,用到了localStorage来进行存和取。


Js用到的是Jquery开发,说到这,有一个需要注意的,在electron里直接引入Jquery会报错,需要按照如下方式进行引入:


<script>if (typeofmodule==='object') {
window.module=module;
module=undefined;
}</script><scriptsrc="../jquery-2.2.0.min.js"></script>


后续针对开发中的问题,我会进行梳理总结,给到大家。


好了老铁们,这章就到这里,我们下半部分继续。

相关文章
|
9月前
|
IDE 数据可视化 Java
Android自动生成代码,可视化脚手架之基础信息配置
今天的内容比较简单,大致过一下Electron一些基本用法,虽然说这些比较简单,但又是不得不去了解的,正如做Android的我们,也不是一上来就会的,需要一个循序渐进的过程,下一章,我们再去实际的开发功能。
135 0
|
8月前
|
XML Android开发 数据格式
Android中利用shape属性自定义设置Button按钮
Android中利用shape属性自定义设置Button按钮
137 0
|
4月前
|
Android开发
[Android]Shape Drawable
[Android]Shape Drawable
42 0
|
8月前
|
Android开发
Android Shape 详细使用
Android Shape 详细使用
59 0
|
9月前
|
数据可视化 Java Android开发
一个便捷操作的Android可视化规范检查
目前工具有九个功能,包含了,注释,类,方法,变量等基本的规范验证,如下图所示,当然也都是一些常见的规范功能检查,后续的话也会进行拓展,虽然此规范是按照我公司的标准去执行的,其实,Android嘛,大差不差,就那些规范,基本百变不离其宗,如果有不是很符合的,大家也可以在源码中进行更正为自己需要的就可以了。
|
9月前
|
数据可视化 Android开发
Android自动生成Shape资源文件(下)
这个Shape,在正常的开发中,无非就是,实心的,空心的,渐变的,左上右下带角度的,那么针对常见的几种方式,我们做好模板,然后根据你在可视化工具的选择,动态的进行改变即可。
Android自动生成Shape资源文件(下)
|
6天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
28天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
14 0
|
3天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
20天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。