如何激活从按钮绘制的方法?
How to activate the method to draw from a button?
我是 android 的新手。我有这段代码可以在我的应用程序中绘制,但我想用一个按钮激活它。如果我单击操作栏按钮,我应该绘制,否则我不应该这样做。我该怎么做?
//DRAW
public class CustomView extends View {
Bitmap mBitmap;
Paint paint;
Path path;
public CustomView(Context context) {
super(context);
mBitmap = Bitmap.createBitmap(640, 1024, Bitmap.Config.ARGB_8888);
paint = new Paint();
path= new Path();
paint.setColor(Color.YELLOW);
//paint.setStyle(Style.FILL); //if I want to fill but I don't
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(3);
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path,paint);
canvas.drawCircle(x, y, 25, paint);
}
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action){
case MotionEvent.ACTION_DOWN:
path.moveTo(event.getX(), event.getY());
path.lineTo(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
x = event.getX();
y = event.getY();
path.lineTo(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
path.lineTo(event.getX(), event.getY());
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;}
return true;
}}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_edit:
Log.i("ActionBar", "Edit");
// FROM HERE I WANT TO ACTIVATE
return true;
case R.id.menu_save:
Log.i("ActionBar", "Guardar!");;
return true;
default:
return super.onOptionsItemSelected(item);
}
编辑:我的应用程序由文本组成。我想让用户在这些文本下划线,为此您必须首先启用触摸操作栏按钮。如果您不想添加更多下划线,请再次单击该按钮。
您在要重绘的视图上调用了 invalidate()
如果我明白你的意思,你需要做一些简单的任务。
首先,OnDraw() 方法是自己调用的,因此如果您在 onDraw() 方法中执行此操作,则无法手动执行该操作。我建议创建一个处理这些操作的方法。所以尝试删除这两行:
canvas.drawPath(path,paint);
canvas.drawCircle(x, y, 25, paint);
其次,您必须添加一个 onClickListener
附加到要对这些操作负责的按钮。如果您不知道如何操作 post 请向我提问,我将在此处创建一个教程。
如果这些不起作用,我将不胜感激为您提供其他解决方案。
我是 android 的新手。我有这段代码可以在我的应用程序中绘制,但我想用一个按钮激活它。如果我单击操作栏按钮,我应该绘制,否则我不应该这样做。我该怎么做?
//DRAW
public class CustomView extends View {
Bitmap mBitmap;
Paint paint;
Path path;
public CustomView(Context context) {
super(context);
mBitmap = Bitmap.createBitmap(640, 1024, Bitmap.Config.ARGB_8888);
paint = new Paint();
path= new Path();
paint.setColor(Color.YELLOW);
//paint.setStyle(Style.FILL); //if I want to fill but I don't
paint.setStyle(Style.STROKE);
paint.setStrokeWidth(3);
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawPath(path,paint);
canvas.drawCircle(x, y, 25, paint);
}
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action){
case MotionEvent.ACTION_DOWN:
path.moveTo(event.getX(), event.getY());
path.lineTo(event.getX(), event.getY());
break;
case MotionEvent.ACTION_MOVE:
x = event.getX();
y = event.getY();
path.lineTo(x, y);
invalidate();
break;
case MotionEvent.ACTION_UP:
path.lineTo(event.getX(), event.getY());
break;
case MotionEvent.ACTION_CANCEL:
break;
default:
break;}
return true;
}}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_edit:
Log.i("ActionBar", "Edit");
// FROM HERE I WANT TO ACTIVATE
return true;
case R.id.menu_save:
Log.i("ActionBar", "Guardar!");;
return true;
default:
return super.onOptionsItemSelected(item);
}
编辑:我的应用程序由文本组成。我想让用户在这些文本下划线,为此您必须首先启用触摸操作栏按钮。如果您不想添加更多下划线,请再次单击该按钮。
您在要重绘的视图上调用了 invalidate()
如果我明白你的意思,你需要做一些简单的任务。
首先,OnDraw() 方法是自己调用的,因此如果您在 onDraw() 方法中执行此操作,则无法手动执行该操作。我建议创建一个处理这些操作的方法。所以尝试删除这两行:
canvas.drawPath(path,paint);
canvas.drawCircle(x, y, 25, paint);
其次,您必须添加一个 onClickListener
附加到要对这些操作负责的按钮。如果您不知道如何操作 post 请向我提问,我将在此处创建一个教程。
如果这些不起作用,我将不胜感激为您提供其他解决方案。