編輯:關於Android編程
上一篇學習了基本用法,今天學一下稍微復雜一點的,先看一下效果圖
為了完成上面的效果還是要用到上一期開頭的四步<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+PGJyPgo8L3A+CjxwPjGjrMr00NTTprjD0qrT0NHVyaujrNKq09DL2bbIPC9wPgo8cD48cHJlIGNsYXNzPQ=="brush:java;">
2, 在構造方法中獲得這些屬性
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ViewCircle, defStyle, 0); int n = a.getIndexCount(); for (int i = 0; i < n; i++) { int attr = a.getIndex(i); switch (attr) { case R.styleable.ViewCircle_speed: mSpeed = a.getInteger(attr, 300); break; case R.styleable.ViewCircle_circleColor: mColor = a.getColor(attr, Color.GREEN); break; } } a.recycle();
4,重寫onDraw
protected void onDraw(Canvas canvas) { // 居中 canvas.translate(getWidth() / 2, getHeight() / 2); // 畫出三個圓 canvas.drawCircle(0, 0, 200, mCircle); canvas.drawCircle(0, 0, 180, mCentreCircle); canvas.drawCircle(0, 0, 160, mNexCircle); //進度 RectF rectF = new RectF(-180, -180, 180, 180); canvas.drawArc(rectF, -90, mProgress, true, mTimer); //算出字體所占大小,使其居中 mLinePaint.getTextBounds(String.valueOf(mProgress), 0, String.valueOf(mProgress).length(), rect); canvas.drawText(String.valueOf(mProgress), -rect.width() / 2, 0, mLinePaint); //總進度為六十 int count = 60; //刻度從190--200 int y = 190; Rect rect = new Rect(); mLinePaint.getTextBounds("00", 0, "00".length(), rect); //當i%10==0時畫一道刻度線 for (int i = 0; i < count; i++) { if (i % 10 == 0) { canvas.drawLine(0, y, 0, 200, mLinePaint); canvas.drawText(String.valueOf(i / 10) + "0", -rect.width() / 2, 220, mLinePaint); } canvas.rotate(360 / count, 0, 0); } }我們注意一下canvas.drawArc(rectF, -90, mProgress, true, mTimer);
我們傳進去的為true效果就是
如果我們傳進去false
可以明顯的看到差別,沒事也可以試試我們這個demo傳進去false會是什麼效果。
接下來為了讓這個進度動起來我們就要用到線程來刷新ui
new Thread() { public void run() { while (true) { mProgress++; if (mProgress == 360) { mProgress = 0; } postInvalidate(); try { Thread.sleep(mSpeed); } catch (InterruptedException e) { e.printStackTrace(); } } }; }.start();
源碼
ContentProvider,從字面意義上理解,內容提供者,這個類目的就是一個橋梁的作用,讓一個應用的數據(SQLiteDatabase, SharedPreferen
年底了,手上的活不是很多,就想著將平時記錄的筆記總結一下。准備總結一下平時常常使用的設計模式。本篇就是比較常用的單例(Singleton)模式。不管是Android開發還
Android中屏蔽電源鍵長按、Home鍵、Home鍵長按 這幾個“按鈕”的觸發,都會產生一個Action == Intent.ACTION_CLOSE_SYSTE
原理最近用socket寫了一個消息推送的demo,在這裡和大家分享一下。主要實現了:一台手機向另外一台手機發送消息,這兩台手機可以隨時自由發送文本消息進行通信,類似我們常