Android,从主要 Activity 中绘制

标签 android paint android-canvas

我在主 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/

相关文章:

java - 如何区分android中的手指触摸和手写笔触摸

java - 如何使用 Random 使 Java 中生成的数字全部不同?

java - JLayeredPane 不绘图

java - 保存时从自定义绘图 View 中裁剪透明空间

java - 为什么油漆不起作用?

android - 将编辑后的图像发送到下一个 Activity

Android:自定义圆形ProgressBar,中间有空格

java - Firestore - 按降序排序

android - 显示位于列表底部

java - 在 if 语句中使用 getIntent 函数