Android培训要求
黑马程序员Android视频教程_前言
黑马程序员Android视频教程_搭建Android开发环境
黑马程序员Android视频教程_创建与启动手机模拟器和学习使用ANDROID操作系统
黑马程序员Android视频教程_开发与运行(卸载)第一个ANDROID应用
黑马程序员Android视频教程_项目的目录结构与安装及启动过程分析
黑马程序员Android视频教程_电话拔号器
黑马程序员Android视频教程_查看应用输出的错误信息与如何部署应用到真实手机
黑马程序员Android视频教程_短信发送器
黑马程序员Android视频教程_深入了解各种布局技术
黑马程序员Android视频教程_对应用进行单元测试
黑马程序员Android视频教程_查看与输出日志信息
黑马程序员Android视频教程_文件的保存与读取
黑马程序员Android视频教程_文件的操作模式
黑马程序员Android视频教程_把文件存放在SDCard
黑马程序员Android视频教程_采用Pull解析器解析和生成XML内容
黑马程序员Android视频教程_采用SharedPreferences保存用户偏好设置参数
黑马程序员Android视频教程_创建数据库与完成数据添删改查
黑马程序员Android视频教程_在SQLite中使用事务
黑马程序员Android视频教程_采用ListView实现数据列表显示
黑马程序员Android视频教程_采用ContentProvider对外共享数据
黑马程序员Android视频教程_监听ContentProvider中数据的变化
黑马程序员Android视频教程_访问通信录中的联系人和添加联系人
黑马程序员Android视频教程_网络通信之网络图片查看器
黑马程序员Android视频教程_网络通信之网页源码查看器
黑马程序员Android视频教程_网络通信之资讯客户端
黑马程序员Android视频教程_采用JSON格式返回数据给资讯客户端
黑马程序员Android视频教程_网络通信之通过GET和POST方式提交参数给web应用
黑马程序员Android视频教程_网络通信之通过HTTP协议实现文件上传
黑马程序员Android视频教程_发送xml数据和调用webservice
黑马程序员Android视频教程_多线程下载原理
黑马程序员Android视频教程_多线程断点下载器
黑马程序员Android视频教程_文件断点上传器
黑马程序员Android视频教程_为应用添加多个Activity与参数传递
黑马程序员Android视频教程_Activity的启动模式
黑马程序员Android视频教程_Intent深入解剖
黑马程序员Android视频教程_Activity生命周期
黑马程序员Android视频教程_采用广播接收者实现短信qie听器
黑马程序员Android视频教程_采用广播接收者拦截外拔电话及其特性
黑马程序员Android视频教程_采用Service实现电话qie听器
黑马程序员Android视频教程_建立能与访问者进行相互通信的本地服务
黑马程序员Android视频教程_使用AIDL实现进程通信
黑马程序员Android视频教程_服务的生命周期
黑马程序员Android视频教程_音乐播放器
黑马程序员Android视频教程_在线视频播放器
黑马程序员Android视频教程_拍照
黑马程序员Android视频教程_视频刻录
黑马程序员Android视频教程_手势识别
黑马程序员Android视频教程_实现软件国际化
黑马程序员Android视频教程_屏幕适配
黑马程序员Android视频教程_样式与主题
黑马程序员Android视频教程_编码实现软件界面
黑马程序员Android视频教程_发送状态栏通知
黑马程序员Android视频教程_采用网页设计软件界面
黑马程序员Android视频教程_tween动画
黑马程序员Android视频教程_frame动画的实现
黑马程序员Android视频教程_activity切换动画与页面切换动画
黑马程序员Android视频教程_采用方向传感器实现指南针
http://edu.csdn.net/heima/heimaline.html
package com.wiworld.thinkingjava.worldclock;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.Line2D;
import java.util.Date;
import java.util.TimeZone;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTextField;
import sun.awt.HorizBagLayout;
public class ClockFrame extends JFrame {
private static final int WIDTH = 600;
private static final int HEIGHT = 600;
final JPanel panel = new JPanel();
private static final String places[] = {"E1","E2","E3","E4","E5","E6","E7","E8","E9","E10","E11","E12",
"W12","W11","W10","W9","W8","W7","W6","W5","W4","W3","W2","W1"};
private boolean bolFirstDraw = true;
public ClockFrame() {
initData();
Container contentContainer = getContentPane();
panel.setBackground(new Color(0x909090));
contentContainer.add(panel, BorderLayout.CENTER);
JButton startButton = new JButton(" Start Draw ");
contentContainer.add(startButton, BorderLayout.SOUTH);
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
bolFirstDraw = true;
initData();
new Thread(){
public void run() {
while(true/*index<TIMES*/){
try {
Thread.sleep(1000);
bolFirstDraw = true;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
draw(panel.getGraphics());
// index++;
}
}
}.start();
}
});
setSize(WIDTH, HEIGHT+100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
private void initData(){
}
public void draw(Graphics g) {
if(g==null){
System.out.println("Panel.paint.Graphics is null ");
return;
}
// if(bolFirstDraw){
// g.clipRect(0,0,WIDTH, HEIGHT);
// g.clearRect(0,0,WIDTH,HEIGHT);
// g.setColor(new Color(0x909090));
// g.fillRect(0, 0, WIDTH, HEIGHT);
// }
//draw chess base
if(bolFirstDraw){
bolFirstDraw = false;
int startX = 50;
int startY = 50;
int clockW = 500;
int clockH = 500;
int arcAngle = 360;
int size = 24;
int startOffset = 50;
int clockOffset = -startOffset*2;
int sectionAngle = arcAngle/size;
Date today = new Date();
int hour = today.getHours();
int min = today.getMinutes();
int second = today.getSeconds();
int timeZone = today.getTimezoneOffset()/60;
int currentTimeAngle = timeZone*360/24 + hour*360/24+ min*sectionAngle/60;
//draw time zone
for(int i=0;i<size;i++){
if(i%2==0){
g.setColor(Color.black);
}else{
g.setColor(Color.white);
}
g.fillArc(startX, startY, clockW, clockH, i*sectionAngle,sectionAngle);
}
//draw world zone
for(int i=0;i<size;i++){
if(i%2==0){
g.setColor(Color.red);
}else{
g.setColor(Color.blue);
}
g.fillArc(startX+startOffset, startY+startOffset, clockW+clockOffset, clockH+clockOffset, i*sectionAngle+currentTimeAngle, sectionAngle);
}
//draw 24 time
for(int i=0;i<size;i++){
g.setColor(Color.green);
g.drawString(""+(i+1), (int) (startX+clockW/2+clockW/2*Math.sin(i*sectionAngle*Math.PI/180)), (int) (startY+clockH/2+clockH/2*Math.cos(i*sectionAngle*Math.PI/180) ));
}
//draw 24 place
for(int i=0;i<size;i++){
g.setColor(Color.pink);
g.drawString(places[i], (int) (startX+startOffset+(clockW+clockOffset)/2+(clockW+clockOffset)/2*Math.sin((i*sectionAngle+currentTimeAngle)*Math.PI/180)), (int) (startY+startOffset+(clockH+clockOffset)/2+(clockH+clockOffset)/2*Math.cos((i*sectionAngle+currentTimeAngle)*Math.PI/180) ));
}
g.setColor(Color.yellow);
// g.fillArc(startX+startOffset, startY+startOffset, clockW+clockOffset, clockH+clockOffset, second*6, 1);
g.drawLine(startX+startOffset+(clockW+clockOffset)/2,startY+startOffset+(clockH+clockOffset)/2, (int) (startX+startOffset+(clockW+clockOffset)/2+(clockW+clockOffset)/2*Math.sin((-second*6)*Math.PI/180)), (int) (startY+startOffset+(clockH+clockOffset)/2+(clockH+clockOffset)/2*Math.cos((-second*6)*Math.PI/180) ));
}
g.clipRect(0,0,WIDTH, HEIGHT);
}
private int getRandomX() {
return (int) (Math.random() * WIDTH);
}
private int getRandomY() {
return (int) (Math.random() * HEIGHT);
}
private int getRandomWidth() {
return (int) (Math.random() * (WIDTH / 7));
}
private int getRandomHeight() {
return (int) (Math.random() * (HEIGHT / 7));
}
public static void main(String[] args) {
ClockFrame client = new ClockFrame();
}
}