绘制圆的触摸 [英] Draw Circle on touch

查看:122
本文介绍了绘制圆的触摸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在这里用户触摸屏幕上画一个圆。

 公共类MainActivity扩展活动实现OnTouchListener {

的LinearLayout布局;
浮X = 0;
浮动Y = 0;

@覆盖
公共无效的onCreate(包savedInstanceState){
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.layout_main);
    布局=(的LinearLayout)findViewById(R.id.layout);
    layout.addView(新CustomView(MainActivity.this));
}

公共类CustomView扩展视图{

    位图mBitmap;
    涂料粉刷;
    公共CustomView(上下文的背景下){
        超(上下文);
        mBitmap = Bitmap.createBitmap(400,800,Bitmap.Config.ARGB_8888);
        油漆=新的油漆();
        paint.setColor(Color.RED);
        paint.setStyle(Style.FILL);
    }

    @覆盖
    保护无效的OnDraw(帆布油画){
        super.onDraw(画布);
        canvas.setBitmap(mBitmap);
        canvas.drawCircle(X,Y,50,油漆);
        Toast.makeText(MainActivity.this,DDD,1).show();
    }
}

@覆盖
公共布尔onTouch(视图V,MotionEvent事件){

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

    }
    返回false;
}}
 

解决方案

我会做这种方式:

 公共类TestActivity延伸活动{

    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(新DrawingView(本));
    }

    类DrawingView扩展了SurfaceView {

        私人最终SurfaceHolder surfaceHolder;
        私人最终涂料粉刷=新的油漆(Paint.ANTI_ALIAS_FLAG);

        公共DrawingView(上下文的背景下){
            超(上下文);
            surfaceHolder = getHolder();
            paint.setColor(Color.RED);
            paint.setStyle(Style.FILL);
        }

        @覆盖
        公共布尔的onTouchEvent(MotionEvent事件){
            如果(event.getAction()== MotionEvent.ACTION_DOWN){
                如果(surfaceHolder.getSurface()。参考isValid()){
                    帆布帆布= surfaceHolder.lockCanvas();
                    canvas.drawColor(Color.BLACK);
                    canvas.drawCircle(event.getX(),event.getY(),50,油漆);
                    surfaceHolder.unlockCanvasAndPost(画布);
                }
            }
            返回false;
        }
    }
}
 

I am trying to draw a circle where user touches screen .

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;
}}

解决方案

I would do it this way:

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;
        }
    }
}

这篇关于绘制圆的触摸的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆