android - 触摸画圆

标签 android android-layout

我想在用户触摸屏幕的地方画一个圆圈。

public class MainActivity extends Activity implements OnTouchListener {

LinearLayout layout;
float x=0;
float y=0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_main);
    layout=(LinearLayout)findViewById(R.id.layout);
    layout.addView(new CustomView(MainActivity.this));
}

public class CustomView extends View {

    Bitmap mBitmap;
    Paint paint;
    public CustomView(Context context) {
        super(context);
        mBitmap = Bitmap.createBitmap(400, 800, Bitmap.Config.ARGB_8888);
        paint=new Paint();
        paint.setColor(Color.RED);
        paint.setStyle(Style.FILL);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.setBitmap(mBitmap);
        canvas.drawCircle(x, y, 50, paint);
        Toast.makeText(MainActivity.this, "DDD", 1).show();
    }
}

@Override
public boolean onTouch(View v, MotionEvent event) {

    if (event.getAction() == MotionEvent.ACTION_DOWN) {
    layout.invalidate();

    }
    return false;
}}

最佳答案

我会这样做:

public class TestActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new DrawingView(this));
    }

    class DrawingView extends SurfaceView {

        private final SurfaceHolder surfaceHolder;
        private final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

        public DrawingView(Context context) {
            super(context);
            surfaceHolder = getHolder();
            paint.setColor(Color.RED);
            paint.setStyle(Style.FILL);
        }

        @Override
        public boolean onTouchEvent(MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN) {
                if (surfaceHolder.getSurface().isValid()) {
                    Canvas canvas = surfaceHolder.lockCanvas();
                    canvas.drawColor(Color.BLACK);
                    canvas.drawCircle(event.getX(), event.getY(), 50, paint);
                    surfaceHolder.unlockCanvasAndPost(canvas);
                }
            }
            return false;
        }
    }
}

关于android - 触摸画圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11796357/

相关文章:

android - 如何扩展行?

Android MotionLayout setGuidelinePercent 不适用于 alpha4 版本

php - 在 Android 中显示来自 MySQL 的复选框字段

java - Android如何检查php消息以验证登录

android - 防止 ImageView 将 View 推离屏幕

android - 应用程序在底部留出空白

Android 按钮等宽

android - 以编程方式访问 Verizon HTC Droid Incredible (Android) 上的内部存储(不是 SD 卡)

安卓 : Is possible to add calendar event without calling the Google Calendar API or Starting Native Calendar activity?

java - 在 Android 中使用 strings.xml 资源文件存储大文本是否可以?