안 드 로 이 드 사용자 정의 컨트롤 반짝반짝 글꼴 만 들 기
샤 오미 의 부팅 애니메이션 과 환영 인터페이스 에서 우 리 는 이런 반 짝 이 는 유광 글씨 체 를 자주 볼 수 있다.시 크 해 보이 지만 실현 원 리 는 상당히 간단 합 니 다.저 희 는 사용자 정의 컨트롤 을 써 서 TextView 를 계승 한 다음 에 렌 더러 Gradient 를 사용 하여 색상 그 라 데 이 션 과 Paint 의 setShadow Layer 방법 으로 음영 을 설정 한 다음 에 계속 새로 고침 하여 위 치 를 바 꾸 면 됩 니 다.
이루어지다
먼저 shineTextView 클래스 를 써 서 TextView 에서 계승 합 니 다.
public class ShineTextView extends TextView
{
//
private LinearGradient mLinearGradient;
//
private RadialGradient mRadialGradient;
//
private Matrix mGradientMatrix;
//
private Paint mPaint;
private int mViewWidth = 0;
//
private int mTranslate = 0;
public ShineTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
이 코드 에서 우 리 는 두 개의 색상 렌 더러 를 정의 했다.
//
private LinearGradient mLinearGradient;
//
private RadialGradient mRadialGradient;
Linear Gradient 는 선형 그 라 데 이 션 렌 더 링 으로 색상 의 그 라 데 이 션 이 직선 방향 으로 변화 하 는 것 을 나타 낸다.우 리 는 LinearGradient 를 사용 하여 위의 두 번 째 그림 의 효 과 를 실현 할 수 있다.
Radial Gradient 는 링 그 라 데 이 션 렌 더 링 으로 색상 의 그 라 데 이 션 이 원 링 으로 변 하 는 것 을 대표 합 니 다.
우 리 는 Radial Gradient 를 사용 하여 위의 첫 번 째 그림 중 소 미터 작 동 애니메이션 의 효 과 를 실현 할 수 있다.
우 리 는 mTranslate 의 밝기 변위 거 리 를 제어 함으로써 색 을 동적 으로 변화 시 키 는 효 과 를 낸다.
OnSizeChanged
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
super.onSizeChanged(w, h, oldw, oldh);
if (mViewWidth == 0 || mViewHeight==0)
{
mViewWidth = getMeasuredWidth();
mViewHeight=getMeasuredHeight();
if (mViewWidth > 0 || mViewHeight>0 )
{
mPaint = getPaint();
// RadialGradient
// ,
//
// , ,
mRadialGradient = new RadialGradient(50, 50,30, new int[] {
0x11FEB726, 0xffFEB726, 0x33FEB726 }, new float[] { 0,
0.5f, 1 }, Shader.TileMode.CLAMP);
// LinearGradient
// (-mViewWidth, 0) (0,0)
// ,
// ,
//
// , , 0-1
// , , 。
//
// CLAMP
// MIRROR
// REPEAT
mLinearGradient = new LinearGradient(-mViewWidth, 0, 0, 0,
new int[] { 0x33ffffff, 0xffffffff, 0x33ffffff },
new float[] { 0, 0.5f, 1 }, Shader.TileMode.CLAMP);
mPaint.setShader(mRadialGradient);
mPaint.setColor(Color.parseColor("#ffffffff"));
//
//
// X
// Y
mPaint.setShadowLayer(3, 2, 2, 0xFFFF00FF);
mGradientMatrix = new Matrix();
}
}
}
OnSizeChange 방법 에서 저 희 는 컨트롤 의 너비 가 높 고 색상 렌 더러 를 초기 화하 고 글꼴 그림자 효 과 를 설정 하 는 등 초기 화 작업 을 수행 합 니 다.onDraw
다음 마지막 단 계 는 onDraw 방법 에서 효 과 를 그리고 Matrix 행렬 을 통 해 그 라 데 이 션 효 과 를 변위 시 키 면 됩 니 다.
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
if ( mGradientMatrix != null)
{
mTranslateX += mViewWidth / 10;
mTranslateY += mViewHeight / 10;
if (mTranslateX > 2 * mViewWidth || mTranslateY >2*mViewHeight)
{
mTranslateX = -mViewWidth;
mTranslateY = -mViewHeight;
}
mGradientMatrix.setTranslate(mTranslateX, mTranslateY);
// mLinearGradient.setLocalMatrix(mGradientMatrix);
mRadialGradient.setLocalMatrix(mGradientMatrix);
postInvalidateDelayed(50);
}
}
원본 다운로드:http://xiazai.jb51.net/201701/yuanma/AndroidShineText(jb51.net).rar이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.