Android 맞춤형 물결 무늬
효과를 실현하다
아날로그 물결무늬 효과: 화면을 클릭하면 원환이 나타나고 반경은 작은 것에서 큰 것, 투명도는 큰 것에서 작은 것(0은 투명)
생각을 실현하다
1.사용자 정의 클래스 상속 View.
2.각 도넛의 솔리드 클래스 Wave를 정의하고 도넛을 그리는 펜의 데이터를 초기화합니다.
3.온터치 이벤트를 다시 쓰는 방법,down을 쓸 때 좌표점을 얻어 원환원심으로 만든다.
4.handler 정보를 보내고 데이터를 수정하며 페이지를 새로 고칩니다.
5.onDraw 방법을 다시 쓰고 원환을 그립니다.
1. 클래스 상속 뷰 사용자 정의
새 WaterWaveView2 클래스 상속 View
public class WaterWaveView2 extends View {
//
private ArrayList 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();
}
2. 솔리드 클래스 Wave 정의
/**
* 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
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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.