안 드 로 이 드 개발 모방 IOS 슬라이딩 스위치 구현 코드
안 드 로 이 드 는 iOS 에 비해 ios 의 많은 컨트롤 이 자체 적 으로 가지 고 있 으 며,안 드 로 이 드 는 사용자 정의 로 이 루어 져 야 합 니 다.오늘 말 한 것 은 ios 의 미끄럼 스위치 입 니 다.우리 층 에 서 는 많은 블 로그 들 이 사용자 정의 Toggle Button 을 통 해 이 루어 지 는 것 을 보 았 습 니 다.여기 서 나 는 사용자 정의 view 를 통 해 그의 효 과 를 실현 한다.
우선 onsizechange 에서 반원 2 개 와 사각형 하 나 를 그립 니 다.
width = w;
height = h;
left = top = 0;
right = width;
bottom = height * 0.8f;
cx = (right + left) / 2;
cy = (bottom + top) / 2;
RectF rectF = new RectF(left, top, bottom, bottom);
path.arcTo(rectF, 90, 180);
rectF.left = right - bottom;
rectF.right = right;
path.arcTo(rectF, 270, 180);
path.close();
circle_left = 0;
circle_right = bottom;
circle_width = circle_right - circle_left;
float circle_height = (bottom - top) / 2;
radius = circle_height * 0.9f;
borderwidth = (int) (2 * (circle_height - radius));
circle_cx = width - circle_height;
나머지 는 ondraw 방법 으로 색상 을 그리고 전환 하 는 효과 입 니 다.
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setStyle(Style.FILL);
paint.setAntiAlias(true);
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG));
if (isChoose) {
paint.setColor(onColor);
} else {
paint.setColor(offColor);
}
canvas.drawPath(path, paint);
isAnimation = isAnimation - 0.1f > 0 ? isAnimation - 0.1f : 0;
// isAnimation
final float scale = 0.98f * (isChoose ? isAnimation : 1 - isAnimation);
// canvas
canvas.save();
canvas.scale(scale, scale, circle_cx, cy);
paint.setColor(offColor);
canvas.drawPath(path, paint);
canvas.restore();
paint.reset();
float bTranslateX = width - circle_width;
final float translate = bTranslateX * (isChoose ? 1 - isAnimation : isAnimation);
canvas.translate(translate, 0);
if (isAnimation > 0) {
invalidate();
}
canvas.save();
paint.setStyle(Style.FILL);
paint.setColor(offColor);
canvas.drawCircle(circle_width / 2, circle_width / 2, radius, paint); //
paint.setStyle(Style.STROKE);
paint.setColor(borderColor);
paint.setStrokeWidth(borderwidth);
canvas.drawCircle(circle_width / 2, circle_width / 2, radius, paint); //
canvas.restore();
}
마지막 으로 우 리 는 ontouch 안에서 그의 상 태 를 바 꾸 었 다.
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
return true;
case MotionEvent.ACTION_CANCEL:
return true;
case MotionEvent.ACTION_UP:
isAnimation = 1;
isChoose = !isChoose;
listener.onStateChanged(isChoose);
invalidate();
break;
}
return super.onTouchEvent(event);
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.