UmlMaker——移动的UML设计工具

UmlMaker——移动的UML设计工具

前言

常常想要做一些软件设计,但是苦于没有PC时时在手,没有办法将自己的一些软件设计的想法及时记录下来。一直使用plantUml做软件图的绘制,就希望可以找到一款移动软件可以替代电脑,方便平时做图。我在华为和苹果的应用商城都找了下,没有找到称心的UML软件。

于是萌生了自己做一个的想法,这就是UmlMaker诞生的背景。

周六就开始自己在家做了起来,本来以为会很简单的,结果还是遇到了一些没有想到困难。

UmlMaker

我准备将代码开源到码云上UmlMaker,下面是软件的设计。

查看实际效果:

开发笔记

下面是软件开发过程中的一些笔记:

如何加载网络图片?

我找了几种方法,都试了下,这耗费了我不少时间,最后还是选择了使用ImageLoader插件的方式,成功的加载出了图片。

下载了jar包,再进一步导入到工程里。

下面是一个简单使用的案例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void config() {
// Create default imageLoader configuration parameters
ImageLoaderConfiguration configuration = ImageLoaderConfiguration
.createDefault(this);
//Initialize ImageLoader with configuration.
ImageLoader.getInstance().init(configuration);
}

public void loadPic(String url) {
ImageLoader.getInstance().loadImage(url, new SimpleImageLoadingListener(){
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
imageView.setImageBitmap(loadedImage);
}
});
}

在java中调用JS代码

网上对此有相关的介绍和学习案例JS in Android (Google V8)

我选择使用了J2V8的方式。

添加依赖项implementation 'com.eclipsesource.j2v8:j2v8:5.0.103@aar',再sync一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public void testJsInJava(String str) {
V8 runtime = V8.createV8Runtime();
runtime.executeVoidScript(""
+ "var s = '"+ str +"';\n"
+ "s = unescape(encodeURIComponent(s));\n"
+ "var arr = [];\n"
+ "for (var i = 0; i < s.length; i++) {\n"
+ "arr.push(s.charCodeAt(i));\n"
+ "}\n"
// + "var compressor = new Zopfli.RawDeflate(arr);\n"
// + "var compressed = compressor.compress();\n"
);

V8Object person = runtime.getObject("arr");
Log.d(TAG, "result"+ person.toString());
}

Zopfli算法

Zopfli压缩算法是google开源的一个用C语言编程的压缩库,可以进行非常好但很慢的deflate或zlib压缩。

压缩数据的基本功能是zopfli.h中的ZopfliCompress。使用ZopfliOptions对象来设置影响速度和压缩的参数。使用ZopfliInitOptions函数将默认值先放在ZopfliOptions中。

用这个算法主要是需要将plantuml文本数据提交前要先做压缩。

Android Studio基本设置

build.gradle远端仓库设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
buildscript {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
google()
jcenter()

}
……
}
allprojects {
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
google()
jcenter()
}
}

gradle.properties设置

1
2
3
4
5
6
7
systemProp.socks.proxyHost=127.0.0.1
systemProp.http.proxyHost=mirrors.opencas.cn
systemProp.https.proxyPort=80
org.gradle.jvmargs=-DsocksProxyHost\=127.0.0.1 -DsocksProxyPort\=1080
systemProp.https.proxyHost=mirrors.opencas.cn
systemProp.socks.proxyPort=1080
systemProp.http.proxyPort=80


关注博客或微信搜索公众号多媒体与图形,获取更多内容,欢迎在公众号留言交流!
扫一扫关注公众号
作者

占航

发布于

2021-04-24

更新于

2023-10-04

许可协议

评论