android实现一滴雨(采用onTouchEvent触摸事件和线程)

哈喽大家好,这次为大家分享出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));
}

就这样简简单单的一滴雨滴就做好啦!

之后我会分享出多滴雨和下雨的代码出来~

有了这个思路大家也可以自己试着写出来


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值