Android 调用12306接口,GitHub - AndroidyxChen/loading-12306: 仿PC端12306的刷新loading的自定义view...
loading-12306
仿PC端12306的刷新loading的自定義view
效果圖:
核心代碼及實現邏輯如下:
mPaint.setColor(mColor);
mPaint.setTextSize(50);
//1、動畫開啟前,theCircle的初始值為-1,所以初始化時只走canvas.drawCircle()方法,即所有位置均為藍色
//2、動畫開啟后,theCircle=0時不改變顏色,即所有位置均為藍色
//3、繼續,theCircle=1、i=2時,第一個位置依舊為藍色,第二個及剩余其他位置為灰色
//4、繼續,theCircle=2,i=3時,第一、二個位置依舊為藍色,第三個及剩余其他位置為灰色
//5、......
//6、theCircle=11,i=12時,第一到十一個位置全部為藍色,剩余的第十二個為灰色
//7、直到,theCircle=0,循環繼續
//注:思路重點為,Paint使用的是同一個,所以在重新setColor()前的顏色是一樣的,setColor()后的顏色是另一樣的
for (int i = 1; i <= 12; i++) {
if (theCircle + 1 == i && theCircle != 0) {
mPaint.setColor(getResources().getColor(R.color.colorPassGray));
}
canvas.drawCircle(width / 2 + (float) Math.sin(Math.PI * (i - 1) / 6) * mHLength,
height / 2 - (float) Math.cos(Math.PI * (i - 1) / 6) * mHLength, mRadius, mPaint);
//Math.PI即為π,等于180度
}
---------------------------------------------------------------------------------------------------------
animator = ValueAnimator.ofInt(0, 12);
animator.setDuration(2000);//動畫時長
animator.setRepeatMode(ValueAnimator.RESTART);//動畫的重復次數
animator.setRepeatCount(ValueAnimator.INFINITE);//動畫的重復模式
animator.setInterpolator(new LinearInterpolator());//線性插值器:勻速動畫
//監聽動畫過程
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//獲取當前動畫的進度值,此處的theCircle值為(0、1、2...11、0)
theCircle = ((int) animation.getAnimatedValue() % 12);
invalidate();
}
});
本demo已發表在本人的CSDN上,詳細內容可到CSDN查看
作者:不二程序員
來源:CSDN
總結
以上是生活随笔為你收集整理的Android 调用12306接口,GitHub - AndroidyxChen/loading-12306: 仿PC端12306的刷新loading的自定义view...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RJ45接口是什么
- 下一篇: android java 面试题,And