我在主 Activity 中创建了一个名为 DrawView
的自定义 View 。我在 DrawView
类中实现了 onDraw()
方法,它最初绘制了一个圆。然后我添加了一个触摸监听器,这样当用户单击时,它就会绘制一个正方形。我负责用户点击并绘制正方形的部分。我不确定该怎么做。
public class TestActivity extends Activity {
DrawView drawing;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ViewGroup myLayout = (ViewGroup) findViewById(R.id.mainLayout);
drawing = new DrawView(this);
myLayout.addView(drawing);
drawing.setOnTouchListener(new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
// draw a square
}
return true;
}
});
}
private class DrawView extends View {
public DrawView(Context context) {
super(context);
}
protected void onDraw(Canvas canvas) {
Paint myPaint = new Paint();
myPaint.setColor(Color.BLACK);
// draw a circle
}
}
}
非常感谢您的帮助。
最佳答案
这里是当用户向下、移动和向上触发触摸监听器时绘制矩形的简单 fragment ,只需在 DrawView 类中覆盖而不是通过 setOnTouchListener()
在 DrawView 类中定义 Rect r = new Rect() 然后在 DrawView 类中实现此代码
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
sx = event.getX();
sy = event.getY();
r.set(sx,sy,sx,sy);
}else if(event.getAction==MotionEvent.ACTION_UP){
r.set(sx,sy,event.getX(),event.getY());
}else if(event.getAction==MotionEvent.ACTION_MOVE){
r.set(sx,sy,event.getX(),event.getY());
}
invalidate();
return true;
这里是onDraw()
public void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawRect(r, new Paint());
}
关于Android,从主要 Activity 中绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8987632/