最近抖音上的時鐘羅盤桌布可謂是非常的火爆,今天就用自定義控制項來實現這個功能。
效果圖:
軟體詳情:
時鐘羅盤是動態的桌布,隨著時間而跳轉的時鐘,中間去除了月份和星期,並加入了炫彩文字,使總體看起來不這麼單調。
**實現:
寫乙個類datatimeview 繼承 view 並實現其中乙個引數和兩個引數的構造(用於**實現和布局實現)
public datetimeview(context context)
public datetimeview(context context, @nullable attributeset attributeset)
接下來我們來看看 initdata()方法(初始化資料,對應數字羅盤的時分秒的值) 和 init() 方法(建立畫筆paint並設定引數,初始化定時器)
private void initdata() ;
this.hourindex = 0;
this.hours = new string;
this.minusindex = 0;
this.minutes = new string;
this.secondindex = 0;
this.seconds = new string;
}
private void init()
datetimeview.this.postinvalidate();
}}, 0, 16, timeunit.milliseconds);
mtextpaint = new paint();//畫中間的文字
mtextpaint.setcolor(color.white);//設定畫筆的顏色
mtextpaint.setstyle(paint.style.fill_and_stroke);//描邊加填充
mtextpaint.setstrokewidth(3);//設定畫筆的寬度
mtextpaint.setantialias(true);//防鋸齒,設定為true時,會損失一定的效能,使用時視情況而定
mtextpaint.setstrokecap(paint.cap.round);//圓形 筆帽,就是畫筆畫出來的線的兩端的樣式
mtextpaint.setstrokejoin(paint.join.round);//圓角 兩線相交樣式
mtextpaint.setletterspacing(12);//設定字元間間距
mtextpaint.settextsize(dptopx(70));//設定字元大小
mtextpaint.settextalign(paint.align.center);//居中 文字對齊方式
typeface customfont = typeface.createfromasset(mcontext.getassets(), "yzqs.ttf");
mtextpaint.settypeface(customfont); //字型 typeface.create(familyname, style)//載入自定義字型
mviewwidth = dimensionutil.dptopx(70);
//實現中間文字炫彩效果
mlineargradient = new lineargradient(mviewwidth, 0, mviewwidth * 2, 0,
new int, null, shader.tilemode.clamp);
mtextpaint.setshader(mlineargradient);
mgradientmatrix = new matrix();
mtextpaint2 = new paint();//畫頂部的提示語
mtextpaint2.setantialias(true);//防鋸齒,
mtextpaint2.setcolor(color.white);//設定畫筆的顏色
mtextpaint2.setstyle(paint.style.fill_and_stroke);//描邊加填充
mtextpaint2.settypeface(customfont);
mtextpaint2.settextalign(paint.align.center);
}
資料和畫筆都初始化好了,接下來我們就開始畫出我們想要的效果吧,對應的是ondraw()方法(開始畫畫的方法)
//繪畫頂部的提示語
******dateformat formatter = new ******dateformat("hh:mm");
date curdate = new date(system.currenttimemillis());//獲取當前時間
mtextpaint2.settextsize(dptopx(25));//設定字元大小
canvas.drawtext("明明什麼都沒做", canvas2.getwidth() / 2, dptopx(40), mtextpaint2);//畫提示語
mtextpaint2.settextsize(dptopx(45));//設定字元大小
canvas.drawtext("就已經 " + formatter.format(curdate) + " 了", canvas2.getwidth() / 2, dptopx(40) * 2 + 40, mtextpaint2);//畫提示語
//畫姓氏
canvas.drawtext(mname, canvas2.getwidth() / 2, getheight() / 2 + dptopx(26), mtextpaint);//畫姓氏
//畫時分秒
string strarr = this.hours;
this.mscale = (((float) canvas2.getwidth()) / 1080.0f) * 0.5f;
float length = 360.0f / ((float) strarr.length);
float f3 = 0.0f - (((float) this.hourindex) * length);
int i4 = 0;
f = f3;
for (string str222 : strarr)
strarr = this.minutes;
length = 360.0f / ((float) strarr.length);
f3 = 0.0f - (((float) this.minusindex) * length);
f = f3;
i4 = 0;
for (string str2222 : strarr)
strarr = this.seconds;
float length3 = 360.0f / ((float) strarr.length);
length = (0.0f - (((float) this.secondindex) * length3)) - (this.seconddelta * length3);
float f5 = length;
int i5 = 0;
for (string str3 : strarr) else
canvas2.drawtext(str3, 0.0f, 0.0f, this.paint);
i5++;
}
仿抖音點贊效果
玩過抖音的人應該都知道抖音的點讚效果挺酷炫的,而作為碼農我們一定想知道它是怎麼實現的。先上效果圖 實現原理非常的簡單,直接上 created by csc on 2018 6 11.information 仿抖音點贊功能 class love context context relativelayo...
仿餘額寶的數字動畫效果
乙個簡單的自定義類 import android.animation.objectanimator import android.content.context import android.text.textutils import android.util.attributeset import...
iOS仿微信搖一搖動畫效果加震動音效例項
眾所周知,微信中的搖一搖功能 搜尋人 歌曲 電視,同樣在一些其他類app中也有乙個搖一搖簽到,搖一搖隨機選號等功能,下面以微信搖一搖功能來介紹實現原理.對於搖一搖功能,在ios中系統預設為我們提供了搖一搖的功能檢測api.ios 中既然已經提供了介面,我們直接呼叫就好了.import import ...