- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让用户使用触摸在我的 ImageView 上绘制多个圆圈。到目前为止,我一次只画了一个。我知道我必须在调用 invalidate() 后存储触摸点并重新绘制每个圆圈,但还没有想出办法来做到这一点。
这是我的代码,如果有人能指出我必须添加/更改的内容或就如何实现此代码提供任何建议,我将不胜感激:
public class ImageView1 extends ImageView {
public int x;
public int y;
ImageView1 img = (ImageView1) findViewById (R.id.imageView1);
public ImageView1(Context context, AttributeSet attrs) {
super(context, attrs);
setFocusable(true);
}
public boolean onTouchEvent(MotionEvent event){
x = (int) event.getX();
y = (int) event.getY();
return true;
}
@Override
public void onDraw(Canvas canvas){
super.onDraw(canvas);
Paint p = new Paint();
p.setAntiAlias(true);
p.setColor(Color.RED);
p.setStyle(Paint.Style.STROKE);
p.setStrokeWidth(1);
canvas.drawCircle(x, y, 20, p);
invalidate();
}
}
最佳答案
我通常以指针 ID 作为键将指针位置信息收集到 SparseArray
中;
private SparseArray<PointF> mPointers = new SparseArray<PointF>();
@Override
public boolean onTouchEvent(MotionEvent me) {
switch (me.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_POINTER_DOWN: {
int ai = me.getActionIndex();
PointF pt = new PointF(me.getX(ai), me.getY(ai));
mPointers.put(me.getPointerId(ai), pt);
return true;
}
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP: {
int pid = me.getPointerId(me.getActionIndex());
mPointers.remove(pid);
return true;
}
case MotionEvent.ACTION_MOVE: {
for (int i = 0; i < me.getPointerCount(); ++i) {
PointF pt = mPointers.get(me.getPointerId(i));
pt.set(me.getX(i), me.getY(i));
}
return true;
}
}
return false;
}
然后为了呈现单独的触摸点,您可以迭代 mPointers
值。
关于android - 如何通过触摸聆听绘制多个圆圈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126752/
我正在尝试侦听变量更改以执行一些代码。因此,该变量是一个名为reset的 bool(boolean) 值。动画结束或按下(来自另一个小部件的)按钮后,我想执行一些操作(例如重置动画 Controlle
我想实现的是: 呈现模板后绑定(bind)到表单提交以添加微调器 在呈现模板之前移除微调器(如果存在) 我想如果有一种方法可以绑定(bind) Handlebars 的渲染,就很容易实现。我还没有找到
我正在为我的计算机科学老师制作一个 Java 应用程序,该应用程序允许他通过从 Google Drive 文件夹加载大量 PDF 并使用 Java Swing 将它们显示到 JScrollPane 上
Java Lambda 客户端应用程序是否可以“监听”Lambda 的结果?例如,客户端应用程序不会调用 lambda,而是说 lambda 是从 SNS 主题触发的。我希望客户端应用程序能够获取 S
我有一个 iOS 市场应用程序,我在其中监听该市场上出售的每件商品的变化。更准确地说,我会倾听该项目上的 child 是否发生变化或被删除。 问题是我也想听听何时添加 child 。在 Firebas
我正在使用 Juggernaut、Redis、SQLite 和 Rails 3.1 构建一个简单的实时聊天 我想在另一个用户断开连接时(例如他关闭了窗口)向每个用户写入一条新消息,这是为了监听 Jug
我编写了一个函数,可以成功测试 componentDidMount 何时触发。但由于某种原因,使用相同的逻辑来测试其相邻方法是否已被触发是行不通的。不知道为什么?谁能告诉我我的误解是什么? //Acc
有谁知道如何监听 IBM Cloud Object Storage 中特定存储桶(数据库)的更改?我已阅读文档并检查了所有相关链接,但找不到任何 atm。我想要一个函数来响应对象存储中所做的更改,例如
我是一名优秀的程序员,十分优秀!