画个钟,用Android

package net.tianyu.android.clock;import java.util.Calendar;import java.util.TimeZone;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.os.Handler;import android.view.View;import android.widget.RelativeLayout;public class AndroidClock extends Activity {private HourView hourView;private Handler hourHandler;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);RelativeLayout absLayout = new RelativeLayout(this);hourView = new HourView(this);hourHandler = new Handler();hourHandler.post(updateHour);absLayout.addView(hourView, new RelativeLayout.LayoutParams(416, 416));setContentView(absLayout);}private Runnable updateHour = new Runnable() {public void run() {hourView.update();hourHandler.postDelayed(updateHour, 1000);}};class HourView extends View {Matrix mHourMatrix = new Matrix();Matrix mMinuteMatrix = new Matrix();Bitmap mBmpHour;Bitmap mBmpMinute;Bitmap mBmpBackground;int mWidth = 173;int mHeight = mWidth;int centerX = 145;int centerY = 200;public HourView(Context context) {super(context);mBmpHour = BitmapFactory.decodeResource(getResources(), R.drawable.hour);mBmpMinute = BitmapFactory.decodeResource(getResources(), R.drawable.minute);mBmpBackground = BitmapFactory.decodeResource(getResources(), R.drawable.background);}public void update() {postInvalidate();}protected void onDraw(Canvas canvas) {super.onDraw(canvas);Paint p = new Paint();p.setColor(Color.RED);Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+9:00"));int hour = cal.get(Calendar.HOUR);int minute = cal.get(Calendar.MINUTE);float hourRotate = 270.0f + hour * 30.0f + minute / 60.0f * 30.0f;float minuteRotate = 270.0f + minute * 6.0f;canvas.drawBitmap(mBmpBackground, 0, 0, p);mHourMatrix.postRotate(hourRotate, 17, 7);mMinuteMatrix.postRotate(minuteRotate, 17, 7);mHourMatrix.postTranslate(centerX, centerY);mMinuteMatrix.postTranslate(centerX, centerY);canvas.drawBitmap(mBmpHour, mHourMatrix, p);canvas.drawBitmap(mBmpMinute, mMinuteMatrix, p);mHourMatrix.postTranslate(-1 * centerX, -1 * centerY);mMinuteMatrix.postTranslate(-1 * centerX, -1 * centerY);mHourMatrix.postRotate(-1.0f * hourRotate, 17, 7);mMinuteMatrix.postRotate(-1.0f * minuteRotate, 17, 7);}}}

更多相关文章

  1. 代码中设置drawableleft
  2. android 3.0 隐藏 系统标题栏
  3. Android开发中activity切换动画的实现
  4. Android(安卓)学习 笔记_05. 文件下载
  5. Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
  6. 技术博客汇总
  7. android 2.3 wifi (一)
  8. AndRoid Notification的清空和修改
  9. Android中的Chronometer

随机推荐

  1. Android开发教程 如何优化andriod布局
  2. android 判断是否有可用网络
  3. Create Native iOS, Android, Mac and Wi
  4. Android(安卓)Thread线程
  5. 获取Android系统信息
  6. android sqlite 图片保存和读出
  7. android SQLite数据库基本操作示例
  8. android使用GPS
  9. android 虚拟摇杆绘制
  10. Android 加载服务器上的图片