안드로이드 플래시 페이지 원형 카운트다운 진행률 게이지 구현
현재 우리의 앱에는 기본적으로 플래시 페이지가 있는데 플래시 페이지에는 대부분 광고 정보나 우리 자신의 로고 등 홍보 사진의 전시를 넣는다. 이와 비슷한 효과는 다음과 같다.
사고의 방향
사용자 정의 View를 사용하면 View의 다시 그리기 방법
Invalidate()
을 통해onDraw()
에서 서로 다른 호도의 호를 계속 그려서 표시 진도를 바꾸는 것이 간단하지 않습니까?구체적인 실현을 보도록 하겠습니다.onDraw()
에서 View의 넓이를 가져와 사각형을 우리의 그리는 범위로 정의한다: int width = this.getWidth();
int height = this.getHeight();
if (width != height) {
int min = Math.min(width, height);
width = min;
height = min;
}
// mStrokeWidth
// /2 , , ,
mRectF.left = mStrokeWidth / 2;
mRectF.top = mStrokeWidth / 2;
mRectF.right = width - mStrokeWidth / 2;
mRectF.bottom = height - mStrokeWidth / 2;
//
canvas.drawColor(Color.TRANSPARENT);
//
mPaint.setColor(Color.parseColor("#33000000"));
//
mPaint.setStyle(Paint.Style.FILL);
//
canvas.drawOval(mRectF, mPaint);
//
mPaint.setAntiAlias(true); //
mPaint.setColor(paintColor); //
mPaint.setStyle(Paint.Style.STROKE); //
mPaint.setStrokeWidth(mStrokeWidth); //
// , ,
//
// ,
// ,true false
// mProgress ,-
canvas.drawArc(mRectF, -90, -(mProgress / mMaxProgress) * 360, false, mPaint);
postInvalidate()
방법을 사용해야 리셋할 수 있습니다./**
*
*
* @param time
*/
public void startDownTime(final long time) {
//
mMaxProgress = 100;
//
new Thread(new Runnable() {
@Override
public void run() {
for (int i = (int) mMaxProgress; i >= 0; i--) {
try {
Thread.sleep((long) (time / mMaxProgress));
} catch (InterruptedException e) {
e.printStackTrace();
}
mProgress = (float) i;
// invalidate() ui
ProgressView.this.postInvalidate();
}
}
}).start();
}
총결산
마지막 단계 집합의 스트리밍 방법을 바꾸어 진도표를 그리는 방식을 바꿀 수 있고, 그릴 때의 각도의 양과 음으로 방향을 제어할 수 있다.원본 데모는 여기에서 다운로드할 수 있습니다: Github로 이동하려면 누르십시오
질문과 건의가 있으면 댓글로 알려주세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.