绘制圆的触摸 [英] Draw Circle on touch
本文介绍了绘制圆的触摸的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在这里用户触摸屏幕上画一个圆。
公共类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屋!
查看全文