哈喽大家好,这次为大家分享出android实现一滴雨
像这种学习到开发为app的是很好玩的事情
好啦话不多说
分享出今天的一滴雨
首先我们自己写个类继承view
代码如下:
package com.example.helloworld;
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.view.MotionEvent;
import android.view.View;
public class MyView2 extends View{
//设置画笔
Paint paint=new Paint();
private float x=50;
private float y=50;
private int r=10;//半径
private int alpha=225;//透明度
public MyView2(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){
//获得坐标
x=event.getX();
y=event.getY();
//半径重新开始 透明度恢复
r=10;
alpha=225;
//通知系统重新画
invalidate();
}
return true;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setAlpha(alpha);
canvas.drawCircle(x, y, r, paint);
}
class MyThead extends Thread{
@Override
public void run() {
while(true){
//安卓系统的休眠时间
SystemClock.sleep(100);
//设置让半径和透明度的变化
r+=10;
alpha-=10;
if(alpha<=0){//如果透明度小于等于0就让他等于0
alpha=0;
}
//通知主线程进行修改
MyView2.this.postInvalidate();
}
}
}
}
然后在MainActivity里面就很简单的一句代码搞定在onCreate方法里面改代码
如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView2(this));
}
就这样简简单单的一滴雨滴就做好啦!
之后我会分享出多滴雨和下雨的代码出来~
有了这个思路大家也可以自己试着写出来