动态八卦图在手机中

Code:
  1. import javax.microedition.midlet.*;   
  2. import javax.microedition.lcdui.*;   
  3.   
  4. /**  
  5.  * @author user  
  6.  */  
  7. public class Midlet extends MIDlet {   
  8.      
  9.     private RunBagua runBagua;   
  10.     public Midlet(){   
  11.         runBagua=new RunBagua();   
  12.     }   
  13.     public void startApp() {   
  14.         Display.getDisplay(this).setCurrent(runBagua);   
  15.            
  16.     }   
  17.   
  18.     public void pauseApp() {   
  19.     }   
  20.   
  21.     public void destroyApp(boolean unconditional) {   
  22.     }   
  23. }   
  24.   
  25.   
  26.   
  27. import javax.microedition.lcdui.Canvas;   
  28. import javax.microedition.lcdui.Graphics;   
  29.   
  30. public class RunBagua extends Canvas implements Runnable {   
  31.     int[] sin = {0,   
  32.             1736,   
  33.             3420,   
  34.             4999,   
  35.             6427,   
  36.             7660,   
  37.             8660,   
  38.             9396,   
  39.             9848,   
  40.             10000,   
  41.             9848,   
  42.             9396,   
  43.             8660,   
  44.             7660,   
  45.             6427,   
  46.             4999,   
  47.             3420,   
  48.             1736,   
  49.             0,   
  50.             -1736,   
  51.             -3420,   
  52.             -4999,   
  53.             -6427,   
  54.             -7660,   
  55.             -8660,   
  56.             -9396,   
  57.             -9848,   
  58.             -10000,   
  59.             -9848,   
  60.             -9396,   
  61.             -8660,   
  62.             -7660,   
  63.             -6427,   
  64.             -5000,   
  65.             -3420,   
  66.             -1736};   
  67.     int[] cos = {10000,   
  68.             9848,   
  69.             9396,   
  70.             8660,   
  71.             7660,   
  72.             6427,   
  73.             5000,   
  74.             3420,   
  75.             1736,   
  76.             0,   
  77.             -1736,   
  78.             -3420,   
  79.             -4999,   
  80.             -6427,   
  81.             -7660,   
  82.             -8660,   
  83.             -9396,   
  84.             -9848,   
  85.             -10000,   
  86.             -9848,   
  87.             -9396,   
  88.             -8660,   
  89.             -7660,   
  90.             -6427,   
  91.             -5000,   
  92.             -3420,   
  93.             -1736,   
  94.             0,   
  95.             1736,   
  96.             3420,   
  97.             5000,   
  98.             6427,   
  99.             7660,   
  100.             8660,   
  101.             9396,   
  102.             9848};   
  103.     int width;//屏幕的宽   
  104.     int height;//屏幕的高   
  105.     int R = 40;//八卦图的半径的一半,即鱼头的半径 
  106.     int centerY;//八挂图的圆心Y坐标   
  107.     int centerX;//八挂图的圆心x坐标   
  108.     int[] cTempX = new int[36];   
  109.     int[] cTempY = new int[36];   
  110.     public RunBagua() {   
  111.         width = this.getWidth();   
  112.         height = this.getHeight();   
  113.         centerX = width / 2;   
  114.         centerY = height / 2;   
  115.         for (int i = 0; i < 36; i++) {   
  116.             cTempX[i] = centerX + R * cos[i] / 10000;   
  117.             cTempY[i] = centerY - R * sin[i] / 10000;   
  118.         }   
  119.         new Thread(this).start();   
  120.     }   
  121.     int m = 9;   
  122.     int m1 = 27;   
  123.     protected void paint(Graphics g) {   
  124.         g.setColor(255255255);   
  125.         g.fillRect(00, width, height);//刷屏   
  126.            
  127.         int xL1 = cTempX[m] - R;   
  128.         int yL1 = cTempY[m] - R;   
  129.         int xL3 = cTempX[m1] - R;   
  130.         int yL3 = cTempY[m1] - R;   
  131.         int start1 = m * 10;   
  132.         int end1 = 180;   
  133.         int start3 = m1 * 10;   
  134.         int end3 = 180;   
  135.         g.setColor(000);   
  136.         g.drawArc(centerX-2*R, centerY-2*R, 4*R, 4*R, 0360);//画边缘边界   
  137.            
  138.         g.fillArc(centerX-2*R, centerY-2*R, 4*R, 4*R, start1, end1);//画黑色半圆   
  139.         g.setColor(255255255);   
  140.         g.fillArc(centerX-2*R, centerY-2*R, 4*R, 4*R, start3, end3);//画白色半圆   
  141.         g.setColor(000);   
  142.         g.fillArc(xL3, yL3, 2 * R, 2 * R, start3, end3);//画黑色鱼头   
  143.         g.setColor(255255255);   
  144.         g.fillArc(xL1, yL1, 2 * R, 2 * R, start1, end1);//画白色鱼头   
  145.         g.fillArc(xL3+R-5, yL3+R-510100360);//画小白鱼眼   
  146.         g.setColor(000);   
  147.         g.fillArc(xL1+R-5, yL1+R-510100360);//画小黑鱼眼   
  148.            
  149.     }   
  150.     /*  
  151.      * 改变数据让八卦图动起来  
  152.      *   
  153.      */  
  154.     public void update(){   
  155.         m = ++m > 35 ? 0 : m;   
  156.         m1 = ++m1 > 35 ? 0 : m1;   
  157.     }   
  158.     public void run() {   
  159.         while (true) {   
  160.             update();   
  161.             repaint();   
  162.             try {   
  163.                 Thread.sleep(100);   
  164.             } catch (InterruptedException ex) {   
  165.                 ex.printStackTrace();   
  166.             }   
  167.         }   
  168.     }   
  169. }   

程序效果图见本人相册

 

你可能感兴趣的:(动态八卦图在手机中)