android 多点触摸(实现按下画圆,抬起消失的dome)
来源:互联网 发布:mac teamviewer 编辑:程序博客网 时间:2024/05/21 08:39
这次呢,我们来做一个dome,使用多点触摸实现按下画圆,抬起消失的效果
我们先来缕一下思路:我们可以有一个圆的实体类,里面定义好圆的圆心坐标,半径,颜色,透明度的属性,具体代码如下:
package com.example.g160628_15;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.view.View;import java.util.Random;/** * Created by Administrator on 2017/7/9 0009. */public class Circle { public float x; public float y; public int r = 100; public int pointId; int red; int green; int blue; Random random=new Random(); public Circle(float x, float y, int pointId) { this.x = x; this.y = y; this.pointId = pointId; red=random.nextInt(255); green=random.nextInt(255); blue=random.nextInt(255); } public void drawSelf(Canvas canvas, Paint paint){ paint.setColor(Color.rgb(red,green,blue)); canvas.drawCircle(x,y,r,paint); }}
我们有了这个实体类之后就是需要自定义UI来实现效果了,我们的思路是这样的,判断你的手指行动是按下,还是抬起,还是移动,然后分别执行不同代码即可,具体代码如下:
package com.example.g160628_15;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/7/9 0009. */public class MyView extends View{ List<Circle> circles=new ArrayList<>(); public MyView(Context context) { super(context); } public MyView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint = new Paint(); for (Circle circle : circles) { circle.drawSelf(canvas,paint); } } @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); int action_code = action&0xff; int pointIndex=action>>8; float x = event.getX(pointIndex); float y = event.getY(pointIndex); int pointId = event.getPointerId(pointIndex); if(action_code>=5){ action_code-=5; } switch (action_code){ case MotionEvent.ACTION_DOWN: //实例化圆 Circle circle=new Circle(x,y,pointId); //将圆添加到集合中 circles.add(circle); break; case MotionEvent.ACTION_UP: circles.remove(get(pointId)); break; case MotionEvent.ACTION_MOVE: for (int i = 0; i <event.getPointerCount() ; i++) { int id=event.getPointerId(i); get(id).x=event.getX(i); get(id).y=event.getY(i); } break; } invalidate(); return true; } public Circle get(int pointId){ for (Circle circle : circles) { if(circle.pointId==pointId){ return circle; } } return null; }}
然后是主Activity
package com.example.g160628_15;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); }}
至此,我们的效果就实现了,你还可以用这个dome检测你的手机有多少个触摸点哦
阅读全文
0 0
- android 多点触摸(实现按下画圆,抬起消失的dome)
- Android多点触摸的实现(1)
- Android多点触摸的实现(2)
- Android多点触摸的实现(3)
- Android多点触摸的实现
- Android多点触摸的实现
- Android多点触摸实现
- Android多点触摸的实现 (转)
- Android点击屏幕实现圆慢慢变大然后消失---多点触摸
- Android多点触摸的判断
- android的多点触摸效果
- 19.实现多点触摸画圆(拖动+检测手机多点触摸的点数+随机颜色)
- Android开发中实现多点触摸的方法
- Android开发中实现多点触摸的方法
- Android开发中实现多点触摸的方法
- 解析Android开发中多点触摸的实现方法
- android 多点触摸图片缩放的具体实现方法
- 解析Android 中多点触摸的实现方法
- 【牛客网】【java并发说法解析】
- Java的招聘和要掌握的技术2017
- hibernate 三种持久化对象的状态
- cocos2dx 2048
- KW代码检查规则-RLK.JNDI
- android 多点触摸(实现按下画圆,抬起消失的dome)
- 回答项目的技术技巧
- oracle中base64编码解码中文
- HDOJ 1508 Humble Numbers
- CF-731c
- 关于电子钱包需要注意的地方
- 17070709计算机组成/数码显示/gcc/gdb/make工程管理器/库文件
- Eclipse中使用Hadoop集群模式开发配置及简单程序示例(Windows下)
- (a+b)/2与a+(b-a)/2的区别