哈喽大家好!经上次给大家分享了一滴雨
这次推出了多滴雨的分享
话说多滴雨通俗一点就是想办法让他多画几遍
所以我们需要写一些工具和限制来
这里就创建了一个Rian类
代码如下:
package com.example.helloworld;
import android.graphics.Canvas;
import android.graphics.Paint;
public class Rain {
private float x = 50;
private float y = 50;
private int r = 10;// 半径
private int alpha = 225;// 透明度
public int getAlpha() {
return alpha;
}
public Rain(float x, float y) {
super();
this.x = x;
this.y = y;
}
/**
* 相当于自定义画圆
* @param canvas 画板
* @param paint 画笔
*/
public void draw(Canvas canvas, Paint paint) {
r += 5;//半径加加
alpha -= 5;//透明度减减
if (alpha < 0) {//如果透明度小于0就让它为0
alpha = 0;
}
//设置透明度
paint.setAlpha(alpha);
//画出雨滴
canvas.drawCircle(x, y, r, paint);
}
}
然后还是需要一个继承了View类的自定义类
代码如下:
package com.example.helloworld;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Random;
import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.os.SystemClock;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
public class MyView3 extends View{
//设置画笔
Paint paint=new Paint();
//集合用来保存rain对象
private List<Rain> rains=new ArrayList<Rain>();
public MyView3(Context context) {
super(context);
//设置画笔的属性
paint.setStyle(Style.STROKE);// 空心
paint.setStrokeWidth(1);
paint.setAntiAlias(true);
paint.setColor(Color.parseColor("#103864"));
//启动线程
new MyThead().start();
}
//触摸事件
@Override
public boolean onTouchEvent(MotionEvent event) {
//当激发手指下按事件时
if(event.getAction()==MotionEvent.ACTION_DOWN){
//获得点击的坐标
float x=event.getX();
float y=event.getY();
//给rain对象赋值
Rain rain=new Rain(x, y);
//附好值添加到集合中
rains.add(rain);
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//获得迭代器
Iterator<Rain> it=rains.iterator();
Rain rain=null;
while(it.hasNext()){//判断里面是否有值
rain=it.next();//取出对象
if(rain.getAlpha()==0){//如果透明度为0就将其移除
it.remove();
}
//画出集合中里面的对象
rain.draw(canvas, paint);
}
}
class MyThead extends Thread{
@Override
public void run() {
while(true){
//安卓系统的休眠时间
SystemClock.sleep(100);
//通知主线程进行修改
MyView3.this.postInvalidate();
}
}
}
}
然后在MainActivity类里面的应用就和上次分享出来的一滴雨一样
就是改成你自己写的继承了View的工具类就可以了。
好啦这次的分享就到这里了!