使用java实现类似QQ的震动效果
思路是使用setLocation()方法来改变其位置
位置的移动范围,使用的是随机数生成
使用Timer 来实现启动震动效果
java 代码如下
public class ShakeDialog {
private JDialog dialog=null;
private Timer startTimer=null;
private Point start=null;
public ShakeDialog(JDialog dialog)
{
this.dialog=dialog;
}
//开启计时器
public void statTime()
{
final long startTime=System.currentTimeMillis();
start=dialog.getLocation();
startTimer=new Timer(10,new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
long elapsed=System.currentTimeMillis()-startTime;
//产生随机数
Random random=new Random(elapsed);//使用时间作为随机种子
int move=random.nextInt(50);
dialog.setLocation(start.x+move, start.y+move);
if(elapsed>1000)
{
stopTimer();
}
}
});
startTimer.start();
}
//关闭计时器
public void stopTimer()
{
startTimer.stop();
dialog.setLocation(start);
dialog.repaint();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
JOptionPane pane=new JOptionPane("震动提醒", JOptionPane.INFORMATION_MESSAGE);
JDialog dialog=pane.createDialog("震动效果提示对话框");
ShakeDialog shake=new ShakeDialog(dialog);
dialog.pack();//调整此窗口的大小,以适合其子组件的首选大小和布局。
dialog.setModal(false);//关闭模态
dialog.setVisible(true);
shake.statTime();
}
}