gpt4 book ai didi

android - 用android绘制可触摸层

转载 作者:行者123 更新时间:2023-11-30 03:55:02 26 4
gpt4 key购买 nike

我想创建一个简单的绘图应用程序。我希望能够添加一些线、圆和矩形。我想选择任何形状并移动它。我试过这种方式:
- 为每个形状添加一个 View ,并在 View 的 onDraw 方法中绘制形状
- 将每个 View 添加到相对布局

我可以看到所有的形状,但我只能触摸第一个 View ,因为它填满了整个屏幕。我在示例中搜索了一个“分层”应用程序的示例,但没有成功

谢谢 :)

编辑 : 添加代码。
如果我点击矩形,我可以看到日志,但如果我点击圆圈,则没有日志。

编辑 2:糟糕,我忘了在圆圈中附加监听器...:( 抱歉

布局:

public class DrawingView extends RelativeLayout {

public DrawingView(Context context) {
super(context);
this.setBackgroundColor(0xFFFFFFFF);
this.addView(new Circle(context));
this.addView(new Rectangle(context));
}
}

圆圈:

public class Circle extends View implements View.OnTouchListener {

private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

public Circle(Context context) {
super(context);
this.paint.setStyle(Paint.Style.STROKE);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
this.setMeasuredDimension(100, 100);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(50, 50, 50, this.paint);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("myApp", "cercle");
return false;
}

}

和矩形:

public class Rectangle extends View implements View.OnTouchListener {

private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);


public Rectangle(Context context) {
super(context);
this.paint.setStyle(Paint.Style.STROKE);
this.setOnTouchListener(this);
this.setX(50);
this.setY(50);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
this.setMeasuredDimension(100, 100);
}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawRect(0, 0, 100, 100, this.paint);
}

@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("myApp", "Rectangle");
return false;
}

}

最佳答案

您想在同一 View 中创建形状。使用 ShapeDrawable 包装器并在创建时将每个包装器放入同一个数组列表中。然后检查arraylist中的位置,找出重叠时他们想移动哪个形状。

关于android - 用android绘制可触摸层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13481430/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com