안 드 로 이 드 사용자 정의 화려 한 물결 효과 구현
실현 효과
아 날로 그 물결 무늬 의 효과:화면 을 클릭 하면 링 이 나타 나 고 반지름 은 작은 것 에서 큰 것 으로 투명 도 는 큰 것 에서 작은 것 으로(0 은 투명)
사고의 방향 을 실현 하 다.
1.사용자 정의 클래스 계승 View.
2.각 링 의 실체 클래스 웨 이브 를 정의 하고 링 을 그 리 는 화필 의 데 이 터 를 초기 화 합 니 다.
3.onTouchEvent 방법 을 다시 쓰 고 down 시 좌표 점 을 얻어 링 원심 으로 한다.
4.handler 정 보 를 보 내 고 데 이 터 를 수정 하여 페이지 를 새로 고침 합 니 다.
5.onDraw 방법 을 다시 쓰 고 링 을 그립 니 다.
1.사용자 정의 클래스 계승 보기
새 워 터 웨 이브 뷰 2 클래스 계승 보기
public class WaterWaveView2 extends View {
//
private ArrayList<Wave> mList;
//
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
invalidate();// , onDraw
}
};
public WaterWaveView2(Context context) {
this(context, null);
}
public WaterWaveView2(Context context, AttributeSet attrs) {
super(context, attrs);
mList = new ArrayList<Wave>();
}
2.실체 클래스 웨 이브 정의
/**
* Created by HongJay on 2016/8/30.
* wave
*/
public class Wave {
public float x;// x
public float y;// y
public Paint paint; //
public float width; //
public int radius; //
public int ranNum;//
public int[] randomColor={Color.BLUE,Color.CYAN,
Color.GREEN,Color.MAGENTA,Color.RED,Color.YELLOW};
public Wave(float x, float y) {
this.x = x;
this.y = y;
initData();
}
/**
* ,
*/
private void initData() {
paint=new Paint();//
paint.setAntiAlias(true);//
ranNum=(int) (Math.random()*6);//[0,5]
paint.setColor(randomColor[ranNum]);//
paint.setStyle(Paint.Style.STROKE);//
paint.setStrokeWidth(width);//
paint.setAlpha(255);// (0-255),0
radius=0;//
width=0;
}
}
3.onTouchEvent 재 작성 방법원심 을 획득 하고 집합 중의 투명도 가 0 인 링 을 삭제 하 며 handler 호출
onDraw()
방법 을 알려 줍 니 다.
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
float x = event.getX();
float y = event.getY();
deleteItem();
Wave wave = new Wave(x, y);
mList.add(wave);
//
invalidate();
break;
case MotionEvent.ACTION_MOVE:
float x1 = event.getX();
float y1 = event.getY();
deleteItem();
Wave wave1 = new Wave(x1, y1);
mList.add(wave1);
invalidate();
break;
}
//
return true;
}
// 0
private void deleteItem(){
for (int i = 0; i <mList.size() ; i++) {
if(mList.get(i).paint.getAlpha()==0){
mList.remove(i);
}
}
}
}
4.onDraw()방법 을 다시 쓰 고 링 을 반복 해서 그립 니 다.
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//
if (mList.size() > 0) {
//
for (Wave wave : mList) {
canvas.drawCircle(wave.x, wave.y, wave.radius, wave.paint);
wave.radius += 3;
//
int alpha = wave.paint.getAlpha();
if (alpha < 80) {
alpha = 0;
} else {
alpha -= 3;
}
//
wave.paint.setStrokeWidth(wave.radius / 8);
wave.paint.setAlpha(alpha);
//
mHandler.sendEmptyMessageDelayed(1, 100);
}
}
}
총결산이상 은 안 드 로 이 드 가 사용자 정의 물결 무늬 효 과 를 실현 하 는 모든 내용 입 니 다.어 떻 습 니까?실현 효과 가 좋 죠?관심 있 는 친구 들 은 빨리 스스로 실천 하 세 요.이 글 이 여러분 의 학습 과 업무 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.