




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 26.1.2反比例函數(shù)的圖象和性質(zhì) 教學(xué)設(shè)計2024-2025學(xué)年人教版數(shù)學(xué)九年級下冊
- 2025年轉(zhuǎn)子式海流計合作協(xié)議書
- 第1課 文明的產(chǎn)生與早期發(fā)展 教學(xué)設(shè)計-2023-2024學(xué)年高一統(tǒng)編版2019必修中外歷史綱要下冊
- 2024年四川南充臨江產(chǎn)業(yè)發(fā)展集團有限責(zé)任公司招聘22人筆試參考題庫附帶答案詳解
- Unit6 Pronunciation-2a-2f 教學(xué)設(shè)計 2024-2025學(xué)年人教版英語七年級上冊
- 2024年甘肅省高等職業(yè)教育分類考試招生中職升學(xué)考試公共基礎(chǔ)試題數(shù)學(xué)試題
- 2024年12月2025年上海對外經(jīng)貿(mào)大學(xué)輔導(dǎo)員公開招聘筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 中學(xué)聯(lián)盟浙江省紹興縣楊汛橋鎮(zhèn)中學(xué)人教版八年級(歷史與社會)上冊教學(xué)設(shè)計 2-2 阿拉伯帝國與伊斯蘭文明
- 第二單元第6課《互聯(lián)網(wǎng)應(yīng)用中的數(shù)據(jù)》-教學(xué)設(shè)計 2023-2024學(xué)年浙教版(2023)初中信息技術(shù)八年級上冊
- 第二單元第7課一、《放大鏡效果》教學(xué)設(shè)計 2023-2024學(xué)年人教版初中信息技術(shù)七年級下冊
- 人教部編道德與法治五年級下冊單元計劃
- 天津武清區(qū)事業(yè)單位考試真題2022
- 鐵路營業(yè)線施工安全管理培訓(xùn)課件
- 旅行社運營實務(wù)電子課件 1.2 了解旅行社核心業(yè)務(wù)部門
- 部編版五年級語文下冊課文四字詞總結(jié)
- 綜合交通運輸體系認知
- GM/T 0115-2021信息系統(tǒng)密碼應(yīng)用測評要求
- YY 0670-2008無創(chuàng)自動測量血壓計
- JJF 1458-2014磁軛式磁粉探傷機校準(zhǔn)規(guī)范
- GB/T 39935-2021塑料制品薄膜和片材抗粘連性的測定
- GB/T 324-2008焊縫符號表示法
評論
0/150
提交評論