画个钟,用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:layout_weight属性详解
  2. android 拍照 onCreate() 调用两次的问题
  3. android 圆角和阴影效果
  4. 【AAC 系列一】Android(安卓)应用架构新
  5. Android(安卓)NestedScrolling解决滑动冲
  6. Android(安卓)学习系列 - 线程模型
  7. Android的raw下视频文件的读写-日记
  8. 第一次使用Android(安卓)Studio时你应该
  9. 关于安卓屏幕切换的过程
  10. Android基本界面控件