代码如下,这是一个我写的一个项目里的,实现了翻页效果,没有实现拖拽翻页及事件处理的接口。
变量定义:
/** 有动画版page */
private int i_page = 0;
private boolean b_left = false;
private boolean b_right = false;
private int i_moveTemp = 40;
private int i_x = 10;
private int i_y = 10;
主方法:
/**
* 分页画九宫格动画版
* @param g 当前缓冲
* @param Image[] 图片数组
* @param horizontalNum 横向图片数量
* @param verticalNum 竖向图片数量
* @param x X起始坐标
* @param y Y起始坐标
* @param Spacing 行距
* @param Pitch 间距
* */
public void showJGG(Graphics g, Image[] im, int horizontalNum, int verticalNum, int x, int y, int Spacing, int Pitch)
{
int tempx = 0;
int tempy = 0;
for(int i=0; i<im.length; i++)
{
g.drawImage(im[i], x + Pitch * tempx, y + Spacing * tempy, 20);
if(tempx > horizontalNum - 1)
{
tempx = 0;
if(tempy < verticalNum - 1)
{
tempy++;
}
else
{
x += 240;
tempy = 0;
}
}
else
{
tempx++;
}
}
}
update 方法:
public void update()
{
movePage();
}
翻页动画实现方法:
public void movePage()
{
if(b_left)
{
i_moveTemp = 40;
i_moveTemp -= 3;
if(i_x > (240 * i_page) + 10)
{
i_x -= i_moveTemp;
}
else
{
i_x = 240 * i_page + 10;
b_left = false;
}
}
else if(b_right)
{
i_moveTemp = 40;
i_moveTemp += 3;
if(i_x < (240 * i_page) + 10)
{
i_x += i_moveTemp;
}
else
{
i_x = 240 * i_page + 10;
b_right = false;
}
}
}
按键监听方法:
public void keyPressed(int keyCode)
{
switch(keyCode)
{
case Constant.KEY_DOWN:
break;
case Constant.KEY_UP:
break;
case Constant.KEY_LEFT:
b_left = true;
i_page--;
break;
case Constant.KEY_RIGHT:
b_right = true;
i_page++;
break;
}
}
paint方法:
public void paint(Graphics g)
{
showJGG(g, im_menuArray, 3, 3, i_x, i_y, 90, 80);
}