已上传源码到GitHub <https://github.com/RogerYoungh/App-Inventor-Extensions>,可能有所改变。
国内可以访问Gitee <https://gitee.com/aiw_prton/App-Inventor-Extensions>,来自开学后虚脱的我。。。
已上传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开始的。
主题具体的我也不是很懂,从这里 <https://blog.csdn.net/wjc295/article/details/54347807>现学现卖。
为了这么一个小功能再写一个插件不合算,就集成在Util.java
<https://github.com/RogerYoungh/App-Inventor-Extensions/blob/master/cn/roger/Util/Util.java>
里。
@SimpleFunction(description = "start") public void setTheme(int themeId) {
container.$form().setTheme(themeId); }
这个themeId找起来比较麻烦,我专门写了一个表格 <https://www.showdoc.cc/web/#/133680866739480>
,大家可以从其中挑选自己喜爱的Id。
比如我用Theme_Material,16974372

效果,仔细看能够看到按钮上的水波纹

对于自定义的shape,需要用RippleUtil来设置水波纹。
这里的shape已经和前面的有很大的差别了,是为了迎合接下来的动态添加组件ViewUtil。

效果,这个水波纹应该是很明显了

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信