最新消息:

App Inventor插件开发(五)更美的UI

App Inventor 少儿编程 1764浏览 0评论

已上传源码到GitHub,可能有所改变。
国内可以访问Gitee,来自开学后虚脱的我。。。
已上传aix插件,包括博客中未写出的ViewUtil。
额突然发现shape插件自己之前根本没有在博客中写到。。。

0.前言

那个公式输死我了,实在输不下去了。于是我打算再开一章。。。
ai的界面实在是丑的不要不要的,真的好嫌弃。
而且OpenGL的GLSurfaceView好像有冲突,其他的全都被盖下去了。
然后我去查了查源码,在940行左右有这么个玩意

    // Layout
    // ------frameWithTitle------
    // | [======titleBar======] |
    // | ------scaleLayout----- |
    // | | ----frameLayout--- | |
    // | | |                | | |
    // | | ------------------ | |
    // | ---------------------- |
    // --------------------------

frameLayout的特性:所有放在布局里的控件,都按照层次堆叠在屏幕的左上角。后加进来的控件覆盖前面的控件,能通过android:layout_gravity设置位置。
再看了看,里面有一个MATCH_PARENT的LinearLayout,正常添加控件是通过里面的线性布局添加的。而我直接添加是添加到frameLayout里。
怪不得我老看不见,setZ都-100了还是不行。
看来一般的方法是不行了,得用点猛招——动态添加组件。
动态添加组件的工作量是很大的,要做好心里准备。
在上正菜之前,先来一点开胃菜。

1.开胃菜

话说现在默认都是Material Design了,为什么ai还是那个丑丑的样子?
发现源码里似乎能够设置一个Dark主题了,可网页里似乎还没有。
再查一查github的记录(为什么我这么喜欢查),发现在2018.1.2上午11:32有位大神增加了这个选择,可广州的版本是2017.7.6的。。。
自己动手丰衣足食,有了插件什么不能干。
再顺着Form.java拐到他的父类AppInventorCompatActivity.java,在270行左右有个setAppInventorTheme,带着DeviceDefaul都是从API 14即Android4.0开始的。
主题具体的我也不是很懂,从这里现学现卖。
为了这么一个小功能再写一个插件不合算,就集成在Util.java里。

@SimpleFunction(description = "start")
public void setTheme(int themeId) {
    container.$form().setTheme(themeId);
}

这个themeId找起来比较麻烦,我专门写了一个表格,大家可以从其中挑选自己喜爱的Id。
比如我用Theme_Material,16974372
App Inventor插件开发(五)更美的UI
效果,仔细看能够看到按钮上的水波纹
App Inventor插件开发(五)更美的UI
对于自定义的shape,需要用RippleUtil来设置水波纹。
这里的shape已经和前面的有很大的差别了,是为了迎合接下来的动态添加组件ViewUtil。
App Inventor插件开发(五)更美的UI
效果,这个水波纹应该是很明显了
App Inventor插件开发(五)更美的UI

您必须 登录 才能发表评论!