前言
常常想要做一些软件设计,但是苦于没有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() { ImageLoaderConfiguration configuration = ImageLoaderConfiguration .createDefault(this); 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" );
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
|