Blackberry 6,7 java环境下开发页面之Field 图片按钮

来源:互联网 发布:刀剑神域源码记录下载 编辑:程序博客网 时间:2024/04/30 23:28
经过一年的黑莓开发,总结一些东西,记录遇到过的一些问题。  
这里主要记录跟页面排版有关的问题:  
图片的组合,有时我们需要把两个图片组合到一起,如文字与背景图片组成一个图片按钮 或者是 文字图片与背景图片组合而成的图片按钮 ,以及选中按钮时背景图片切换为选中状态。 这些都用到了Field这个类,这个类是BB6,7页面排盘中非常重要的,你可以重写Field来实现你想要的排版.  

以图片按钮为例: 

import net.rim.device.api.system.Bitmap;import net.rim.device.api.system.Characters;import net.rim.device.api.ui.Field;import net.rim.device.api.ui.Graphics;/* * Image combination switch focus *  * */public class BitmapButtonField2 extends Field{private Bitmap _pic;//文字图片private Bitmap _picback;//背景图片private Bitmap _picbackselected;//选中时的背景图片private int _width;//要显示的宽度private int _height;//要显示的高度/* * pic  Main Image * picback   Background image * picbackselected  Select the picture you want to switch when *  * */public BitmapButtonField2(Bitmap pic,Bitmap picback,Bitmap picbackselected  ,int width,int height){this(pic,picback,picbackselected,width,height,0);}public BitmapButtonField2(Bitmap pic,Bitmap picback,Bitmap picbackselected,int width,int height,long style){super(Field.FOCUSABLE|style);this._pic=pic;this._picback=picback;this._picbackselected=picbackselected;this._width=width;this._height=height;}protected void layout(int width, int height) {setExtent(_width, _height);}protected void paint(Graphics graphics) {if(isFocus()&&_picbackselected!=null){//判断当前是否为选中状态//这里除2 计算横向画此图片时的起始位置 以保证图片居中显示int x1=(_width-_picbackselected.getWidth())/2;//这里除2 计算纵向画此图片时的起始位置 以保证图片居中显示int y1=(_height-_picbackselected.getHeight())/2;//首先画的是选中时背景图片graphics.drawBitmap(x1, y1, _picbackselected.getWidth(), _picbackselected.getHeight(), _picbackselected, 0, 0);int x2=(_width-_pic.getWidth())/2;int y2=(_height-_pic.getHeight())/2;                        //在背景图片上画文字图片graphics.drawBitmap(x2, y2, _pic.getWidth(), _pic.getHeight(), _pic, 0, 0);}else {//When not selectedint x1=(_width-_picback.getWidth())/2;int y1=(_height-_picback.getHeight())/2;//首先画的是未选中时背景图片graphics.drawBitmap(x1, y1, _picback.getWidth(), _picback.getHeight(), _picback, 0, 0);int x2=(_width-_pic.getWidth())/2;int y2=(_height-_pic.getHeight())/2;//在背景图片上画文字图片graphics.drawBitmap(x2, y2, _pic.getWidth(), _pic.getHeight(), _pic, 0, 0);}}protected boolean keyChar(char character, int status, int time) {if(character == Characters.ENTER){clickButton();return true;}return super.keyChar(character, status, time);}protected boolean navigationClick(int status, int time) {clickButton();return true;}protected boolean trackwheelClick(int status, int time) {clickButton();return true;}protected boolean invokeAction(int action) {switch (action){case ACTION_INVOKE:{clickButton();return true;}}return super.invokeAction(action);}public void clickButton(){fieldChangeNotify(0);}}


文字与图片组合可以将上面的

graphics.drawBitmap(x2, y2, _pic.getWidth(), _pic.getHeight(), _pic, 0, 0); 

改成graphics.drawText(_title,x2, y2);

以上是自己开发是遇到的一些问题,自己总结的,若有什么不对的地方 还请大家提出,



0 0
原创粉丝点击