Android實現(xiàn)模擬時鐘_第1頁
Android實現(xiàn)模擬時鐘_第2頁
Android實現(xiàn)模擬時鐘_第3頁
Android實現(xiàn)模擬時鐘_第4頁
Android實現(xiàn)模擬時鐘_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Android 實現(xiàn)模擬時鐘 (簡單 漂亮 )、八 、-前言 前不久在網(wǎng)上看見 Android 實現(xiàn)的 模擬時鐘,感覺十分有意思,這里是地址: id=58324 可惜的是這種方式?jīng)]有秒表。筆者突然對其有了興趣,也想去實 現(xiàn)以下自己的模擬時鐘。折騰了一陣子總算是弄出來了現(xiàn)在將實現(xiàn)方式共享出來,大家一些交 流。不多說,先上效果圖:準(zhǔn)備工作首先我們應(yīng)該準(zhǔn)備相關(guān)的素材:時鐘 盤、時針、分針、秒針圖片 .時鐘盤:時針:分針: 秒針:源碼部分配置文件,比較簡單: <LinearLayout xmlns:android= xmlns:tools= android:layout_width=fill_p

2、arent android:layout_height=fill_parent android:orientation=vertical tools:context=.MainActivity android:background=color/bg><com.kiritor.mymodelclock.MyQAnalogClock android:layout_width=wrap_content android:layout_height=wrap_content android:layout_gravity=center/> </LinearLayout>MyQ

3、AnalogClock 代碼:用于構(gòu)造時鐘 view 以及其刷新顯示: package com.kiritor.mymodelclock; import android.util.AttributeSet; import com.kiritor.mymodelclock.R; import android.content.Context; import android.graphics.*;import android.graphics.drawable.BitmapDrawable;import android.os.Handler;import android.view.View;impo

4、rt java.util.Calendar;import java.util.TimeZone;/* Created by Kiritor on 13-5-30.*/public class MyQAnalogClock extends View /時鐘盤,分針、秒針、時針對象 Bitmap mBmpDial;Bitmap mBmpHour;Bitmap mBmpMinute;Bitmap mBmpSecond;BitmapDrawable bmdHour;BitmapDrawable bmdMinute;BitmapDrawable bmdSecond;BitmapDrawable bmdD

5、ial;Paint mPaint;Handler tickHandler;int mWidth;int mHeigh;int mTempWidth = bmdSecond.getIntrinsicWidth();int mTempHeigh;int centerX;int centerY;int availableWidth = 100;int availableHeight = 100; private String sTimeZoneString;public MyQAnalogClock(Context context,AttributeSet attr) this(context,GM

6、T 8 : 00);public MyQAnalogClock(Context context, String sTime_Zone) super(context); sTimeZoneString = sTime_Zone;mBmpHour = BitmapFactory.decodeResource(getResources(), R.drawable.shizhen);bmdHour = new BitmapDrawable(mBmpHour);mBmpMinute =BitmapFactory.decodeResource(getResources(), R.drawable.fenz

7、hen);bmdMinute = new BitmapDrawable(mBmpMinute); mBmpSecond =BitmapFactory.decodeResource(getResources(),R.drawable.miaozhen);bmdSecond = new BitmapDrawable(mBmpSecond); mBmpDial = BitmapFactory.decodeResource(getResources(), R.drawable.android_clock_dial);bmdDial = new BitmapDrawable(mBmpDial);mWid

8、th = mBmpDial.getWidth();mHeigh = mBmpDial.getHeight();centerX = availableWidth / 2;centerY = availableHeight / 2;mPaint = new Paint();mPaint.setColor(Color.BLUE);run();public void run() tickHandler = new Handler(); tickHandler.post(tickRunnable);private Runnable tickRunnable = new Runnable() public

9、 void run() postInvalidate();tickHandler.postDelayed(tickRunnable, 1000); ; protected void onDraw(Canvas canvas) super.onDraw(canvas);Calendar cal = Calendar.getInstance(TimeZone .getTimeZone(sTimeZoneString);int hour = cal.get(Calendar.HOUR);int minute = cal.get(Calendar.MINUTE);int second = cal.ge

10、t(Calendar.SECOND);float hourRotate = hour * 30.0f minute / 60.0f * 30.0f; float minuteRotate = minute * 6.0f;float secondRotate = second * 6.0f; boolean scaled = false;if (availableWidth < mWidth | availableHeight < mHeigh) scaled = true;float scale = Math.min(float) availableWidth / (float)

11、mWidth, (float) availableHeight / (float) mHeigh);canvas.save(); canvas.scale(scale, scale, centerX, centerY);bmdDial.setBounds(centerX - (mWidth / 2), centerY - (mHeigh / 2),centerX (mWidth / 2), centerY (mHeigh / 2); bmdDial.draw(canvas);mTempWidth = bmdHour.getIntrinsicWidth(); mTempHeigh = bmdHo

12、ur.getIntrinsicHeight(); canvas.save();canvas.rotate(hourRotate, centerX, centerY); bmdHour.setBounds(centerX - (mTempWidth / 2), centerY- (mTempHeigh / 2), centerX (mTempWidth / 2), centerY (mTempHeigh / 2);bmdHour.draw(canvas); canvas.restore();mTempWidth = bmdMinute.getIntrinsicWidth(); mTempHeig

13、h = bmdMinute.getIntrinsicHeight();canvas.save(); canvas.rotate(minuteRotate, centerX, centerY); bmdMinute.setBounds(centerX - (mTempWidth / 2), centerY - (mTempHeigh / 2), centerX (mTempWidth / 2), centerY (mTempHeigh / 2);bmdMinute.draw(canvas); canvas.restore();mTempWidth = bmdSecond.getIntrinsic

14、Width(); mTempHeigh = bmdSecond.getIntrinsicHeight(); canvas.rotate(secondRotate, centerX, centerY); bmdSecond.setBounds(centerX - (mTempWidth / 2), centerY - (mTempHeigh / 2), centerX (mTempWidth / 2), centerY (mTempHeigh / 2);bmdSecond.draw(canvas); if (scaled) canvas.restore(); 主 Activity :package com.kiritor.mymodelclock;import android.app.Activity; import android.os.Bundle;* Created by Kiritor on 13-5-30.*/public class MainActivity extends Activity public void onCreate(Bundle savedInstanceSta

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論