博客已迁移,请访问:http://www.huangyunkun.com/

本文使用的libgdx是0.92版本,和现在的最新版可能有一些不一样的地方。全文内容仅供参考。

TWL是一个基于OpenGL的图形化用户界面库,它提供了一套非常丰富的窗口小部件,比如标签,编辑框,表格等等。不同的布局方式配合使用可以创建出非常高级的用户界面。

TWL我原来接触过,但是觉得配置文件太难写了,今天逛论坛发现了官方出了Theme编辑器,马上来试试。

官网:http://twl.l33tlabs.org/

Editor下载地址:http://twl.l33tlabs.org/themer/themer.jnlp

双击等下就可以运行了,界面如下。

先新建一个项目。

来看看默认的项目有什么。

第一项是字体,默认字体只支持英文。

第二项是输入映射,定义了诸如全选,剪切等操作的快捷键。

第三项是一个名为-defaults的主题样式,这个样式指明了字体使用第一项声明的那个,同时规定了文字靠左。

第四项是一个名为label的主题样式。

我们先让其支持中文。我们仍然可以使用hiero制作文字(注意格式上转化),然后将做好的文件拷贝到项目文件夹中。

新建一个字体定义。

将新定义拖到最上面,改名为normal。

注意:保持修改要点右边的小勾。

label其实就是为标签设计的样式。TWL Theme Editor提供了很方便的开发环境。

选择Label,选择Theme name为label,测试效果如下:

现在来新建一个Button的样式,先建一个Image,图片用下面那张:

新建Image节点

新建一个Aera节点,命名为buttonBackground。

将no center,spilt x,spilt y选上。

图像范围的选择可以直接用鼠标,这也是我最喜欢的地方…不用自己数像素了。

新建一个样式,名为button。字体选成normal,background选成buttonBackground,测试一下。

可以看出按钮有问题,新建一个button,将L和R都设成10.

然后需要按钮有按下的效果怎么办?新建一个select节点,在其中添加两个alias节点。

其中if(pressed)的效果设置成inset 2(就是变小一点),颜色改成黄色。

将button样式的background指定成buttons。保存项目,将项目文件拷贝到android项目的资源文件夹中。

TWL Theme Editor的更多使用可以参考:http://wiki.l33tlabs.org/bin/view/TWL/Using+the+Theme+Editor

使用TWL需要gdx-twl.jar。绘制使用twlrender。

代码如下:

package com.cnblogs.htynkn.game;

import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Files.FileType; import com.badlogic.gdx.graphics.GL10; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import com.badlogic.gdx.twl.Layout; import com.badlogic.gdx.twl.TWL;

import de.matthiasmann.twl.Button;

public class TwlDemo implements ApplicationListener {

private TWL twl; private SpriteBatch batch;

    @Override public void create() {         batch = new SpriteBatch();         Button button=new Button("Button");         button.setTheme("button");         Layout layout = new Layout();         layout.add(button);         twl=new TWL(batch, "data/twldemo.xml", FileType.Internal, layout);     }

    @Override public void dispose() { // TODO Auto-generated method stub

    }

    @Override public void pause() { // TODO Auto-generated method stub

    }

    @Override public void render() {         Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);         twl.render();     }

    @Override public void resize(int width, int height) { // TODO Auto-generated method stub

    }

    @Override public void resume() { // TODO Auto-generated method stub

    }

} 

效果:

写在最后:

1.TWL真的很不错,样式的声明和CSS感觉很像,有继承有覆盖。相关工具也很完整,功能强大。

2.TWL在android使用是比较方便的,但是在libgdx的话还是有点瑕疵的,比如汉字的处理,图片大小等,使用时请注意。

android游戏开发框架libgdx的使用(十五)—TWL布局相关推荐

  1. android游戏开发框架libgdx环境搭建

    原文链接: android游戏开发框架libgdx的使用(一)--环境搭建 Libgdx是一款支持2D与3D游戏开发的游戏类库,兼容大多数微机平台(标准JavaSE实现,能运行在Mac.Linux.W ...

  2. android游戏开发框架libgdx的使用(二十四)—physics-body-editor配合Box2D加快开发

    Box2d是一个很出名的2d物理引擎,有C++.Java等等版本.libgdx对Box2D进行了很高效的封装,极大的降低了学习和使用成本. 但是我觉得和Libgdx的UI库比起来,Box2D的使用始终 ...

  3. android游戏开发框架libgdx的使用(完)—杂谈Libgdx

    写在最前面 仔细看看,上一篇博文是10月5号了,有很长的时间没有写博客了. 升入大三以后时间愈发的少了,要忙着各种事情,也在纠结该继续读书还是找工作,读书是读国内的还是读国外的- libgdx这个系列 ...

  4. android游戏开发框架libgdx的使用(四)--舞台和演员

    本文使用的libgdx是0.92版本,和现在的最新版可能有一些不一样的地方.全文内容仅供参考. 我们先看几个游戏截图再来理解何为舞台. 请仔细观察图片中的元素,有些东西是不能动,有些可以动,有些有特效 ...

  5. android游戏开发框架libgdx的使用(六)--演员和演出

    本文使用的libgdx是0.92版本,和现在的最新版可能有一些不一样的地方.全文内容仅供参考. 上一篇说到UI,然后之前说到舞台,现在我们可以很轻松的构建一出戏了. 因为actor类在绘制是以x,y值 ...

  6. 跨平台2D/3D游戏开发框架libGDX发布1.2.0更新

    摘要:基于OpenGL (ES)的跨平台2D/3D游戏开发框架libGDX不仅开源免费,而且具有极为强大的兼容性和高效性,近日,libGDX发布全新1.2.0版本,除修复Bug之外,还新增了OpenG ...

  7. Java(Android)游戏开发框架LGame-0.2.7发布

    Java(Android)游戏开发框架LGame-0.2.7发布 2010-08-19更新内容: 1.针对Android版增加了多点触摸支持. 2.增加了一组模拟按钮,以Screen实现Emulato ...

  8. android 游戏引擎libgdx demo cuboc分析

    开始学习android游戏开发也有一段时间了,挑选libgdx这个游戏引擎来进行学习和开发.Libgdx是一款支持2D与3D游戏开发的游戏类库,并且它是夸平台的.例如你可以在windos下开发,同样的 ...

  9. Android开发笔记(一百三十五)应用栏布局AppBarLayout

    应用栏布局AppBarLayout Android5.0推出工具栏Toolbar用来替代ActionBar,灵活性和易用性大大增强,有关Toolbar的详细介绍参见< Android开发笔记(一 ...

最新文章

  1. Microsoft Build 2016 有关微软公有云Azure
  2. docker一次构建,快速部署
  3. 从零入门 Serverless | 一文搞懂函数计算及其工作原理
  4. Java并发包--阻塞队列(BlockingQueue)
  5. grpc服务器和客户端互传数据
  6. linux ubuntu系统安装及卸载oracle xe11.2.0
  7. hadoop jps 没有命令_【问题解决方案】之 hadoop 用jps命令后缺少namenode的问题
  8. payload的使 常用xss_Sony某个深度子域上的XSS
  9. “error LNK2019: 无法解析的外部符号”之分析
  10. Linux3.4内核的基本配置和编译
  11. 奔腾4 2.4CPU计算机硬件能升级吗,CPU怎么升级啊
  12. Photoshop插件-创建亮调通道蒙板-脚本开发-PS插件
  13. C语言读取文件所有内容
  14. 网站加速教程--提升性能的同时节约10倍成本
  15. 基于特征子空间的波束形成算法原理介绍及MATLAB实现
  16. 钉钉考勤报表--工时统计小程序
  17. mountain乐谱-蒲公英的约定
  18. 经常写大材料的请惠存(转载)
  19. android 仿qq发动态,Android opengl 实现动态贴纸(仿QQ的拍摄)
  20. html中蝴蝶飞飞怎么制作,【幼儿园折纸蝴蝶教案】手工折纸蝴蝶教案_幼儿园手工蝴蝶教案_亲亲宝贝网...

热门文章

  1. C语言丨定积分的近似计算
  2. linux下文件的相关信息
  3. C++安全方向(二):2.5 Base58_比特币钱包地址_算法分析
  4. python中if和elif的区别_浅谈对python中if、elif、else的误解
  5. oracle表空间总结,Oracle操作用户和表空间的总结
  6. vs2012建立java,在Microsoft Visual Studio 2012中使用Java
  7. python 迭代器 生成器_python 迭代器与生成器
  8. python threading.Barrier
  9. python __iter____next__
  10. werkzeug serving.run_simple