仿抖音效果的數字時鐘羅盤

2021-09-19 06:52:38 字數 3866 閱讀 5593

最近抖音上的時鐘羅盤桌布可謂是非常的火爆,今天就用自定義控制項來實現這個功能。

效果圖:

軟體詳情:

時鐘羅盤是動態的桌布,隨著時間而跳轉的時鐘,中間去除了月份和星期,並加入了炫彩文字,使總體看起來不這麼單調。

**實現:

寫乙個類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 ...