Android_实现水滴效果
来源:互联网 发布:远景能源 张雷 知乎 编辑:程序博客网 时间:2024/06/09 18:20
编写实体类:public class Cricle { float x; float y; int pointIndex; float r=0;//初始半径 int alpha=255;//初始透明度 public Cricle(float x,float y,int pointIndex){ this.x=x; this.y=y; this.pointIndex=pointIndex; }}public class Point { float pointx; float pointy; int pointIndex; public Point(float pointx, float pointy, int pointIndex) { super(); this.pointx = pointx; this.pointy = pointy; this.pointIndex = pointIndex; }}编写控件:public class MyView extends View { public List<Cricle> cs=new ArrayList<Cricle>(); public List<Point> ps=new ArrayList<Point>(); Context context; Thread thread=new Thread(); ViewThread3 thread3=new ViewThread3(); createCircle thread4=new createCircle(); float x=100; float y=100; float x2=80; float y2=80; int i=0; public MyView(Context context) { super(context); this.context=context; thread.start(); thread4.start(); thread3.start(); } @Override public void draw(Canvas canvas) { super.draw(canvas); Paint paint=new Paint(); paint.setColor(Color.GREEN); paint.setStyle(Paint.Style.STROKE); //从list中拿到圆并画出来 for (int i = 0; i < cs.size(); i++) { paint.setStyle(Paint.Style.STROKE); paint.setAntiAlias(true); paint.setStrokeWidth(3); paint.setColor(Color.argb(cs.get(i).alpha, 0, 0, 255)); canvas.drawCircle(cs.get(i).x, cs.get(i).y, cs.get(i).r, paint); } } //线程改变圆的半径和透明度和移除圆 public class ViewThread3 extends Thread { @Override public void run() { super.run(); while(true){ try { thread.sleep(300); for(int i = 0; i < cs.size(); i++){ cs.get(i).r+=3; cs.get(i).alpha-=8; if(cs.get(i).alpha<0){ cs.remove(cs.get(i)); } postInvalidate(); } } catch (InterruptedException e) { e.printStackTrace(); } } } } //线程创建圆 public class createCircle extends Thread { @SuppressWarnings("static-access") @Override public void run() { super.run(); while(true){ try { thread.sleep(200); for(int i = 0; i < ps.size(); i++){ Cricle c=new Cricle(ps.get(i).pointx, ps.get(i).pointy, ps.get(i).pointIndex); cs.add(c); } } catch (InterruptedException e) { e.printStackTrace(); } } } }}编写Activity:public class MainActivity extends Activity { MyView view; GestureDetector gs=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); view=new MyView(MainActivity.this); setContentView(view); } @Override public boolean onTouchEvent(MotionEvent event) { int action=event.getAction(); int actionCode=(action&0x000000ff)>=5?(action&0x000000ff)-5:(action&0x000000ff); int pointIndex=action>>8; int pointId=event.getPointerId(pointIndex); switch(actionCode){ case MotionEvent.ACTION_DOWN: Point cp=new Point(event.getX(pointIndex), event.getY(pointIndex), pointIndex); addPoint(cp); break; case MotionEvent.ACTION_CANCEL: case MotionEvent.ACTION_OUTSIDE: case MotionEvent.ACTION_UP: removePoint(pointId); break; case MotionEvent.ACTION_MOVE: for(int i=0;i<event.getPointerCount();i++){ int id=event.getPointerId(i); Point p=getPoint(id); if(null!=p){ p.pointx=event.getX(i); p.pointy=event.getY(i); } } break; } return true; } public void addCircle(Cricle circle){ view.cs.add(circle); } public void addPoint(Point p){ view.ps.add(p); } public void removePoint(int id){ Iterator<Point> it= view.ps.iterator(); while(it.hasNext()){ Point p=it.next(); if(p.pointIndex==id){ it.remove(); } } } public void removeCircle(int id){ Iterator<Cricle> it= view.cs.iterator(); while(it.hasNext()){ Cricle c=it.next(); if(c.pointIndex==id){ it.remove(); } } } public Cricle getCircle(int id){ for(int i=0;i<view.cs.size();i++){ if(view.cs.get(i).pointIndex==id){ return view.cs.get(i); } } return null; } public Point getPoint(int id){ for(int i=0;i<view.ps.size();i++){ if(view.ps.get(i).pointIndex==id){ return view.ps.get(i); } } return null; }}
阅读全文
0 0
- Android_实现水滴效果
- ppt实现水滴效果
- ppt实现水滴效果
- 单点触摸实现水滴效果
- 水滴效果
- Android 露珠/水滴 拖拽 效果实现
- H5 实现酷炫水滴效果
- Android 实现IOS上的水滴效果控件
- 下拉水滴效果
- android_实现EditText的抖动效果
- Android 水滴下落效果View
- 从左上角到右下角的水滴效果实现(基于贝塞尔曲线)
- Android 仿IOS版QQ实现下拉刷新水滴的效果
- 水滴
- android_文本框实现搜索和清空效果
- android_文本框实现搜索和清空效果
- Android_按钮被按下效果的实现(selector选择器)
- Android_实现activity之间切换的动画效果(overridePendingTransition)
- Java读取txt文件和写入txt文件
- 什么是SCM?
- 我所理解的面向对象
- [SourceInsight]打开当前文件目录
- 漫谈操作系统7 -- 一切皆为文件
- Android_实现水滴效果
- PLC寻址应注意的问题
- angular2概述
- Visual Studio2017中编写ASP.NET程序时使用C# 7.0元组Tuple新特性的一点注意事项
- 自定义注解的步骤
- springmvc-学习总结-拦截器
- 我的第一篇博客
- Linux常用命令整理
- 差分约束系统